Linux 명령줄을 자주 사용하는 경우 기록을 효과적으로 사용하면 생산성이 크게 향상될 수 있습니다. 실제로 제가 여기에 제공한 15가지 예제를 마스터하고 나면 명령줄을 사용하는 것이 더 즐겁고 재미있다는 것을 알게 될 것입니다.
1. HISTTIMEFORMAT을 사용하여 타임스탬프 표시
일반적으로 명령줄에서 기록을 입력하면 명령#과 명령이 표시됩니다. 감사 목적으로 아래와 같이 명령과 함께 타임스탬프를 표시하는 것이 도움이 될 수 있습니다.
# export HISTTIMEFORMAT='%F %T ' # history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release
2. Ctrl+R을 사용하여 기록 검색
나는 이것이 역사에서 가장 자주 사용되는 특징일 것이라고 굳게 믿습니다. 매우 긴 명령을 이미 실행한 경우, 키워드를 사용하여 간단히 기록을 검색하고, 완전히 입력할 필요 없이 동일한 명령을 다시 실행할 수 있습니다. Ctrl+R을 누르고 키워드를 입력하세요 . 다음 예에서는 red를 검색했습니다. , 이전 명령 "cat /etc/redhat-release를 표시했습니다. ” 기록에 빨간색이라는 단어가 포함되어 있습니다.
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`red': cat /etc/redhat-release [Note: Press enter when you see your command, which will execute the command from the history] # cat /etc/redhat-release Fedora release 9 (Sulphur)
때때로 명령을 실행하기 전에 기록에서 명령을 편집하고 싶을 때가 있습니다. 예를 들어 httpd를 검색할 수 있습니다 , service httpd stop이 표시됩니다. 명령 기록에서 이 명령을 선택하고 중지를 시작으로 변경하세요. 그리고 아래와 같이 다시 한번 실행해 보세요.
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`httpd': service httpd stop [Note: Press either left arrow or right arrow key when you see your command, which will display the command for you to edit, before executing it] # service httpd start
3. 4가지 다른 방법을 사용하여 이전 명령을 빠르게 반복하세요
때로는 여러 가지 이유로 이전 명령을 반복하게 될 수도 있습니다. 다음은 마지막으로 실행된 명령을 반복하는 4가지 방법입니다.
- 위쪽 화살표를 사용하세요. 이전 명령을 보려면 Enter를 눌러 실행하세요.
- 을 입력하세요!! 명령줄에서 Enter를 누르세요
- !-1을 입력하세요. 명령줄에서 Enter 키를 누르세요.
- Control+P 누르기 이전 명령이 표시됩니다. Enter를 눌러 실행하세요
4. 기록에서 특정 명령 실행
다음 예에서 명령 #4를 반복하려면 !4를 수행하면 됩니다. 아래와 같습니다.
# history | more 1 service network restart 2 exit 3 id 4 cat /etc/redhat-release # !4 cat /etc/redhat-release Fedora release 9 (Sulphur)
5. 특정 단어로 시작하는 이전 명령 실행
입력하세요! 그 뒤에 다시 실행하려는 명령의 시작 몇 글자가 옵니다. 다음 예에서는 !ps와 Enter를 입력하여 ps로 시작하는 이전 명령인 'ps aux | grep yp'.
# !ps ps aux | grep yp root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp
6. HISTSIZE를 사용하여 기록의 총 줄 수를 제어합니다.
.bash_profile에 다음 두 줄을 추가하고 bash 셸에 다시 로그인하여 변경 사항을 확인하세요. 이 예에서는 bash 기록에 450개의 명령만 저장됩니다.
# vi ~/.bash_profile HISTSIZE=450 HISTFILESIZE=450
7. HISTFILE을 사용하여 기록 파일 이름 변경
기본적으로 기록은 ~/.bash_history에 저장됩니다. 파일. .bash_profile에 다음 줄을 추가하고 bash 셸에 다시 로그인하여 .bash_history 파일 대신 .commandline_warrior 파일에 기록 명령을 저장합니다. 나는 아직 이것에 대한 실제적인 용도를 찾지 못했습니다. 다른 기록 파일 이름을 사용하여 다른 터미널에서 실행된 명령을 추적하려고 할 때 이 기능이 사용되는 것을 볼 수 있습니다.
# vi ~/.bash_profile HISTFILE=/root/.commandline_warrior
기록 파일의 이름을 변경해야 할 타당한 이유가 있는 경우 공유해 주세요. 저는 귀하가 이 기능을 어떻게 사용하고 있는지 알고 싶습니다.
8. HISTControl을 사용하여 기록에서 연속적으로 반복되는 항목을 제거합니다.
다음 예에서는 pwd가 세 번 입력되었습니다. 기록을 수행하면 연속적으로 발생하는 3번의 항목을 모두 볼 수 있습니다. 중복된 항목을 제거하려면 아래와 같이 HISTControl을ignoreups로 설정하세요.
# pwd # pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above] 58 history | tail -4
9. HISTControl을 사용하여 전체 기록에서 중복 항목을 삭제합니다.
위에 표시된 무시된 명령은 연속 명령인 경우에만 중복 항목을 제거합니다. 전체 기록에서 중복을 제거하려면 아래와 같이 HISTControl을 삭제로 설정하세요.
# export HISTCONTROL=erasedups # pwd # service httpd stop # history | tail -3 38 pwd 39 service httpd stop 40 history | tail -3 # ls -ltr # service httpd stop # history | tail -6 35 export HISTCONTROL=erasedups 36 pwd 37 history | tail -3 38 ls -ltr 39 service httpd stop [Note that the previous service httpd stop after pwd got erased] 40 history | tail -6
10. HISTControl을 사용하여 기록이 특정 명령을 기억하지 않도록 강제
명령을 실행할 때 아래와 같이 HISTControl을ignorespace로 설정하고 명령 앞에 공백을 입력하여 명령을 무시하도록 히스토리에 지시할 수 있습니다. 나는 기록에서 명령을 숨길 수 있기 때문에 많은 주니어 시스템 관리자가 이에 대해 흥미를 느끼는 것을 볼 수 있습니다. ignorespace가 어떻게 작동하는지 이해하는 것이 좋습니다. 하지만 가장 좋은 방법은 기록에서 어떤 것도 의도적으로 숨기지 않는 것입니다.
# export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history] # history | tail -3 67 ls -ltr 68 pwd 69 history | tail -3
11. -c 옵션을 사용하여 이전 기록을 모두 지우세요
때로는 이전 기록을 모두 지우고 싶지만 앞으로는 기록을 유지하고 싶을 수도 있습니다.
# history -c
12. 기록 명령에서 단어 대체
기록을 검색할 때 다른 명령을 실행하고 싶을 수도 있지만 방금 검색한 명령과 동일한 매개변수를 사용하세요.
아래 예에서 !!:$ vi 명령 옆에 있는 명령은 이전 명령에서 현재 명령까지의 인수를 가져옵니다.
# ls anaconda-ks.cfg anaconda-ks.cfg # vi !!:$ vi anaconda-ks.cfg
아래 예에서는 !^ vi 명령 옆에 있는 명령은 이전 명령(예:cp 명령)에서 현재 명령(예:vi 명령)의 첫 번째 인수를 가져옵니다.
# cp anaconda-ks.cfg anaconda-ks.cfg.bak anaconda-ks.cfg # vi !^ vi anaconda-ks.cfg
13. 특정 명령을 특정 인수로 대체합니다.
아래 예에서는 !cp:2 cp로 시작하는 기록에서 이전 명령을 검색하고 cp의 두 번째 인수를 가져와 아래와 같이 ls -l 명령으로 대체합니다.
# cp ~/longname.txt /really/a/very/long/path/long-filename.txt # ls -l !cp:2 ls -l /really/a/very/long/path/long-filename.txt
아래 예에서는 !cp:$ cp로 시작하는 기록에서 이전 명령을 검색하고 cp의 마지막 인수(이 경우 위에 표시된 두 번째 인수이기도 함)를 가져와 아래와 같이 ls -l 명령으로 대체합니다.
# ls -l !cp:$ ls -l /really/a/very/long/path/long-filename.txt
14. HISTSIZE를 사용하여 기록 사용을 비활성화합니다.
기록을 모두 비활성화하고 bash 쉘이 입력한 명령을 기억하지 못하게 하려면 아래와 같이 HISTSIZE를 0으로 설정하세요.
# export HISTSIZE=0 # history # [Note that history did not display anything]
15. HISTIGNORE를 사용하여 기록에서 특정 명령을 무시합니다.
때로는 pwd 및 ls와 같은 기본 명령으로 기록을 복잡하게 만들고 싶지 않을 수도 있습니다. 기록에서 무시하려는 모든 명령을 지정하려면 HISTIGNORE를 사용하십시오. HISTIGNORE에 ls를 추가하면 ls -l이 아닌 ls만 무시됩니다. 따라서 기록에서 무시하고 싶은 정확한 명령을 제공해야 합니다.
# export HISTIGNORE="pwd:ls:ls -ltr:" # pwd # ls # ls -ltr # service httpd stop # history | tail -3 79 export HISTIGNORE="pwd:ls:ls -ltr:" 80 service httpd stop 81 history [Note that history did not record pwd, ls and ls -ltr]
추천 도서
Bash 101 해킹, 작성자:Ramesh Natarajan . 저는 대부분의 시간을 Linux 환경에서 보냅니다. 그래서 당연히 저는 Bash 명령줄과 쉘 스크립팅의 열렬한 팬입니다. 15년 전, 저는 *nix의 다양한 버전을 작업할 때 C 쉘과 Korn 쉘에서 많은 코드를 작성했습니다. 나중에 시스템 관리자로 Linux 작업을 시작했을 때 Bash 쉘 스크립팅을 사용하여 가능한 모든 작업을 거의 자동화했습니다. 내 Bash 경험을 바탕으로 Bash 명령줄과 쉘 스크립팅 모두에 대한 101개의 실제 예제가 포함된 Bash 101 Hacks eBook을 작성했습니다. Bash를 마스터할 생각을 하고 계시다면 이 책을 읽어 보십시오. 이 책은 Bash 명령줄과 쉘 스크립팅을 제어하는 데 도움이 될 것입니다.
멋진 Linux 기사
다음은 몇 가지 멋진 15가지 예입니다. 도움이 될만한 기사입니다.
- Unix LS 명령:15가지 실제 예
- Grep을 살펴보세요! – 15가지 실용적인 Grep 명령 예
- Linux Crontab:15가지 멋진 Cron 작업 예
- 엄마, 찾았어요! — 15 실용적인 Linux Find 명령 예