Shell command interpreter(shell)의 사용은 과거 unix로 부터 거슬러 올라갑니다. 이러한
shell은 환경 변수, aliase, 프로그래밍을 위한 여러 기능등 많은 명령을 수행합니다. Bourne Again
Shell(bash)이 Linux에서 가장 일반적으로 많이 사용됩니다(sh, csh, ksh, tcsh 등등도 있습니다).
많은 경우, 이러한 shell들은 다른 shell로의 symbolic link를 가지고 있습니다. Ubuntu에서, sh는 /bin/dash에 symbolic link를 가지고 있습니다. 이러한 sh shell은 run script로 실행시킬 shell script를 호출하는데 중요한 역할을 수행합니다.
Shell이 시작될 때 shell environment가 실행시킨 user 기반으로 설정됩니다. bash shell의 모든 user의 설정은 많은 파일에 저장되어 있습니다. 이러한 시스템 세팅을 무시하고 당신만의 버전으로 만들어 사용할 수 있습니다. 이러한 설정을 포함하는 파일은 다음과 같이 두 종류가 있습니다.
- startup files
- initialization files
bash는 로그인 shell으로 부터 startup files를 실행시킵니다. 이 파일은 전체 로그인을 넘나들어 적용되는
설정을 정의합니다. bash는 shell의 초기화를 위해 initialization files를 실행시킵니다. 이는 다시 말하면,
shell script를 실행시키는것은 아닙니다.
bash는 startup files을 /etc/profile(이는 system-wide) 혹은 user home
directory의 .bash_profile, .bash_login, 그리고 .profile와 같이 개인 설정이 저장된 .으로
시작되는 파일을 찾습니다. (다른 linux 시스템에서 system-wide 파일이 /etc/profile과
/etc/profile.d/에 저장이 되어 있는 경우도 있습니다.)
bash는 initialization files를 /etc/bash.bashrc (이는 system-wide)
혹은 user home directory의 .bashrc에서 찾습니다. (다른 linux 시스템에서 system-wide 파일이
/etc/bashrc에 저장되어 있는 경우도 있습니다.)
shell이 끝날 때 user의 ~/.bash_logout 파일이 실행됩니다. 이러한 파일들을 변경하였지만, 이미 동작하고 있는 shell에는 영향을 미치지는 않습니다.
shell environment를 변경하고 나열할 수 있는 여러 가지 방법이 있는데, 가장 흔한 방법은 user를 변경하는 방법입니다.
bash history 사용하기
bash(Bourne Again Shell)은 Linux에서 일반적으로 쓰이는 기본 shell입니다. 다른 shell과 마찬가지로, bash에 의해 설치된 history를 관리하는 기능이 있어, 과거 실행한 command를 보거나 변경하기, 그리고 재사용할 수 있습니다. 이는 매우 길고 복잡한 Linux command을 처리할때 큰 도움을 줍니다.
bash를 시작할 때, ~/.bash_histroy 파일을 읽어 메모리에 로드하게 됩니다. 이 파일은 $HISTFILE 값에 세팅되어 있습니다.
bash session 동안, command는 메모리에 있는 history에 추가하게 됩니다. 그리고 bash가 종료될 때, 메모리에 있는 history는 .bash_history에 저장하게 됩니다. bash session동안 포함할 command 개수는 $HISTSIZE에 세팅되어 있으며, history에 저장될 개수는 #HISTFILESIZE에 세팅되어 있습니다.
$ echo $HISTFILE $HISTSIZE $HISTFILESIZE /home/greenfish/.bash_history 1000 2000 $ history 5 447 ps 448 head .bash_history 449 echo $HISTFILE $HISTSIZE $HISTFILESIZE 450 clear 451 history 5 $ !! history 5 458 ps 459 head .bash_history 460 echo $HISTFILE $HISTSIZE $HISTFILESIZE 461 clear 462 history 5 $ !458 pwd /home/greenfish $ !458 -aux ps -aux Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 2664 1608 ? Ss 16:43 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 16:43 0:00 [kthreadd] ... $ !?aux? ps -aux Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 2664 1608 ? Ss 16:43 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 16:43 0:00 [kthreadd] ... $ !ps ps -aux Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 2664 1608 ? Ss 16:43 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 16:43 0:00 [kthreadd] ... $ !ps:s/aux/A ps -A PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd ... |
- history 5
이전의 command 5개를 보여준다. - !!
바로 직전의 command를 실행한다. - !458
458번째의 command를 실행한다. - !458 -aux
458번째의 command에 -aux를 붙여 실행한다. - !?aux?
이전 command중 aux를 포함하고 있는 것을 실행한다. - !ps
이전 command중 ps인것을 실행한다. - !ps:s/aux/A
이전 command중 ps인것을 실행하되 aux를 A로 치환하여 실행한다.
[출처 : http://greenfishblog.tistory.com/39]
'Academy I > Tech Academy' 카테고리의 다른 글
[Linux]File/Directory 권한 설정하기 (01) (0) | 2015.01.02 |
---|---|
[Linux]File Type 이해하기 (0) | 2014.12.31 |
[Linux]Shell 활용 (03) 간단한 Bash shell script 작성 (0) | 2014.12.31 |
[Linux]Shell 활용 (02) redirect, su(sudo), 환경 변수 (0) | 2014.12.31 |
[Linux]man 활용 (0) | 2014.12.31 |
[Linux]설치된 Command의 경로, 정보를 얻는 명령들 (0) | 2014.12.31 |
Linux Shell Programming (0) | 2014.12.22 |
Linux gdb 사용법 [II] (0) | 2014.12.22 |