Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

마스터 Linux 명령줄 역사:15가지 강력한 팁 및 예

마스터 Linux 명령줄 역사:15가지 강력한 팁 및 예 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가지 방법입니다.

  1. 위쪽 화살표를 사용하세요. 이전 명령을 보려면 Enter를 눌러 실행하세요.
  2. 을 입력하세요!! 명령줄에서 Enter를 누르세요
  3. !-1을 입력하세요. 명령줄에서 Enter 키를 누르세요.
  4. 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]

추천 도서

마스터 Linux 명령줄 역사:15가지 강력한 팁 및 예 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 명령 예