Bash 의 기본 특성

7379 단어
   shell       :      shell     distribution    ;             ; shell     Linux          ,   Linux          shell    。

Shell         ,             ,                   。

Linux Shell    ,    :
Bourne Shell(/bin/sh)
Bourne Again Shell(/bin/bash)Linux     shell
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)

Bash     

1     
2     
3    
4          
5      
6        
7 glob   
8 I/O      
9   
10     

11 bash         

1 명령 기록
shell                   ,      1000     ;
             .bash_history   。
           shell ,   shell           .bash_history   。
   shell                ;          “  ”        
         bash,             ,       bash         (                bash      ) 
      :       ~/.bash_logout     history    ,    date       

history

-c:        
-d:            
 #:        #    
-a:                       
-n:                  
-r:              
-w:                
-p:            ,         
-s:           ,        

          

HISTSIZE :         
HISTFILE :      ,   ~/.bash_history
HISTFILESIZE :             
HISTTIMEFORMAT=“%F %T“     
HISTIGNORE=“str1:str2:… “    string1,string2   

           

    :HISTCONTROL
ignoredups    ,         ,       “  ”
ignorespace               
ignoreboth ignoredups, ignorespace
erasedups        
export     ="  “
    /etc/profile     ~/.bash_profile

     

       , 4    :
•               ,     
•     !!       
•      !-1       
•     Ctrl+p       

Ctrl + n :         
!num:   history               
!-n :   n           

!string        “string ”     
!?string         string    
!string:p         ,    
!$:p        !$     
!*:p        !*) (    )     
^string           string
^string1^string2          string1    string2
!!:gs/string1/string2            string1     string2

  up (  ) down (  )             
ctrl-r            
• ( (reverse-i-search )`’: :
Ctrl+g :         
                 :
!$   
Esc, . (  Esc      ,     .   )
Alt+ . (  Alt         .   )

      

command !^ :                cmd    
command !$ :                 cmd    
command !* :               cmd    
command !:n :           n     cmd    
command !n:^     n           
command !n:$     n            
command !n:m     n        m      
command !n:*     n         
command !string:^             string       ,            
command !string:$             string       ,              
command !string:n             string       ,      n      
command !string:*             string       ,           

2 명령 별명
                 ,                      -- rm

              :
# alias
    :
# alias  NAME='COMMAND'
    :  shell  ;          ,    shell
    :
# unalias NAME

       ,         
      :~/.bashrc
       :/etc/bashrc

                

bash           
source /path/to/config_file
. /path/to/config_file

    :unalias
unalias [-a] name [name ...]
-a        

          ,        ,   
“\COMMAND”
’COMMAND’
/PATH/COMMAND

3 단축 키
Ctrl + l   ,   clear   
Ctrl + o       ,        
Ctrl + s       ,  
Ctrl + q       
Ctrl + c     ,    
Ctrl + z     
Ctrl + d   exit
Ctrl + u     ,     
Ctrl + m Enter

Ctrl + a       
Ctrl + e       
Ctrl + f      (  )
Ctrl + b      (  )
Alt + f      (  )
Alt + b      (  )
Ctrl + xx              
Ctrl + u            
Ctrl + k            

Ctrl + w             
Ctrl + d         
Ctrl + h         
Ctrl + y             
Ctrl + t            

Alt + d            
Alt + c                
Alt + u               
Alt + l               
Alt + t            
Alt + N          ,       N   

  :Alt        ,          

4 명령 완성 과 경로 완성
    :
shell                      ,               ;
    :
(1)       ;
(2)       :
1、 $PATH          ,                ;
2、                           ,     ;
3、      ,  tab    ;
4、  :                ;

    :
              ,                           :
    :tab  ;
      :tab, tab    ;
    :    ;

5 명령 행 전개
     :$( )     ``
                   
$ echo "This system's name is $(hostname ) "
This system's name is server1.example.com
$echo "i am `whoami ` "
i am root

~:           ,          ;
                         ;
~:           ;
~USERNAME:             ;

{}:               ,             ;
            
  : 
/tmp/{a,b,c} /tmp/a /tmp/b /tmp/c 
/tmp/{a,b}/z /tmp/a/z /tmp/b/z 

6 명령 실행 상태 코드
         :
  :0
  :1-255

bash     $?                :echo $?

7 glob 어댑터 man 7 glob
glob   :     ;        ;          ;    

*:           ;
?:        ;
[ ]:              ;
[a-z0-9]:         
[0-9]:      
[a-zA-Z]:             
[a-z], [A-Z]:        ;,        
[^]:               ,  
   
[[:upper:]]:      ;
[[:lower:]]:      ;
[[:digit:]]:     ;
[[:alpha:]]:    ;
[[:alnum:]]:       ;
[[:space:]]:    ;
[[:punct:]]:    ;

  :
1、  /etc   ,      ,                         ; 
    ls  -d  /etc/[^[:alpha:]][a-z]*        -d           
2、  /etc   ,  n  ,             /tmp/etc   ;
    mkdir /tmp/etc 
    cp  -r  /etc/n*[^0-9]  /tmp/etc/
3、  /usr/share/man   ,   man  ,              ;
    ls  -d  /ur/share/man/man[0-9]
4、  /etc   ,  p,m,r   ,  .conf         /tmp/conf.d   ;
    mkdir  /tmp/conf.d/
    cp  -r  /etc/[pmr]*.conf   /tmp/conf.d/

8 I / O 리 셋 과 파이프
   :
          ,              ;
        ,                ;
          (     /etc/crontab     )      ,         ;
                ,   2> /dev/null      ;
                。

      (stdin) : 0 ,   <   <<
      (stdout): 1 ,   >   >>
      (stderr): 2 ,   2>   2>> 

fd:file descriptor,     ,         ,          (     )

shell       :
# set -C
                ;
  :        “>|”     ; 
# set +C
      ;

            :
(1) &>, &>> 2>&1  2>>&1 
      :/dev/null
       :/dev/zero

() :       STDOUT
( cal 2007 ; cal 2008 ) > all.txt

Here Document
COMMAND << EOF
COMMAND > /PATH/TO/SOMEFILE << EOF

 :  stdin                   
$ cat > catfile < ~/.bashrc

 :       standard error output       
$ echo "error message" 1>&2
$ echo "error message" 2> /dev/null 1>&2

 :cat           catfile  ,         eof  ,       
$ cat > catfile << "eof"
> This is a test.
> OK now stop
> eof <==      ,            [ctrl]+d

    |

COMMAND1 | COMMAND2 | COMMAND3 | …
         standard output,   standard error output      
                        standard input       

STDERR           ,   2>&1     |& 
          shell     shell        

     -    
    ,             stdout    stdin ,             (   tar)       ,  stdin   stdout        "-"    , 

# tar -cvf - /home | tar -xvf - -C /tmp/homeback  #-C   -C                
  /home          ,             ,      stdout;      ,  tar -cvf - /home        tar -xvf -       -            stdout,   ,         filename 

9 변수
    shell     

10 bash 환경 에서 의 특수 기호
#           :         script   ,    !         
\           : 『        』       
|          (pipe):           (     );
;                :         (  !         )
~             
$              :                
&            (job control):          
!               『 』 not    !
/           :       
>, >>         :    ,   『  』 『  』

좋은 웹페이지 즐겨찾기