웹사이트 검색

Linux VPS에서 Bash 기록 명령 및 확장을 사용하는 방법


소개

서버 환경에서 작업하는 동안 명령줄에서 많은 시간을 보내게 됩니다. 아마도 대부분의 배포판에서 기본값인 bash 셸을 사용하게 될 것입니다.

터미널 세션 중에 일부 명령을 자주 반복하고 해당 명령에 대한 변형을 훨씬 더 자주 입력할 수 있습니다. 각 명령을 반복해서 입력하는 것은 처음에는 좋은 습관이 될 수 있지만 어느 시점에서 그것은 선을 넘어 방해가 되고 성가신 일이 됩니다.

운 좋게도 bash 셸에는 상당히 잘 개발된 히스토리 기능이 있습니다. bash 기록을 효과적으로 사용하고 조작하는 방법을 배우면 입력하는 시간을 줄이고 실제 작업을 수행하는 데 더 많은 시간을 할애할 수 있습니다. 많은 개발자는 반복하지 마십시오라는 DRY 철학에 익숙합니다. bash의 기록을 효과적으로 사용하면 이 원칙에 더 가깝게 작업할 수 있고 작업 속도를 높일 수 있습니다.

전제 조건

이 가이드를 따라 하려면 Linux 기반 운영 체제를 실행하는 컴퓨터에 액세스해야 합니다. 이것은 SSH 또는 로컬 시스템으로 연결한 가상 사설 서버일 수 있습니다. 이 튜토리얼은 Ubuntu 20.04를 실행하는 Linux 서버를 사용하여 검증되었지만 주어진 예제는 모든 Linux 배포 버전을 실행하는 컴퓨터에서 작동해야 합니다.

이 가이드를 따르기 위해 원격 서버를 사용할 계획이라면 먼저 초기 서버 설정 가이드를 완료하는 것이 좋습니다. 이렇게 하면 sudo 권한이 있는 루트가 아닌 사용자와 UFW로 구성된 방화벽을 포함하여 보안 서버 환경을 설정하여 Linux 기술을 구축하는 데 사용할 수 있습니다.

기록 기본값 설정

명령 기록을 실제로 사용하기 전에 일부 bash 설정을 조정하여 더 유용하게 만드는 것이 도움이 될 수 있습니다. 이러한 단계는 필요하지 않지만 이전에 실행한 명령을 더 쉽게 찾고 실행할 수 있습니다.

Bash를 사용하면 기록에 저장하는 명령 수를 조정할 수 있습니다. 실제로 이에 대한 두 가지 개별 옵션이 있습니다. HISTFILESIZE 매개변수는 히스토리 파일에 보관되는 명령 수를 구성하고 HISTSIZE는 현재 세션에 대해 메모리에 저장된 수를 제어합니다. .

즉, 현재 세션에 대한 메모리의 기록 크기에 대한 합당한 상한선을 설정할 수 있으며 나중에 검토할 수 있도록 더 큰 기록을 디스크에 저장할 수 있습니다. 기본적으로 bash는 이러한 옵션에 대해 매우 보수적인 값을 설정하지만 더 큰 기록을 활용하도록 확장할 수 있습니다. 일부 배포판은 이미 약간 더 관대 한 값으로 기본 bash 기록 설정을 늘립니다.

이 설정을 변경하려면 선호하는 텍스트 편집기로 ~/.bashrc 파일을 여십시오. 여기서는 nano를 사용합니다.

  1. nano ~/.bashrc

HISTSIZEHISTFILESIZE 매개변수를 모두 검색합니다. 설정되어 있으면 자유롭게 값을 수정하십시오. 이러한 매개변수가 파일에 없으면 지금 추가하십시오. 이 가이드의 목적을 위해 10000줄을 디스크에 저장하고 마지막 5000줄을 메모리에 로드하면 문제 없이 작동합니다. 이것은 대부분의 시스템에 대한 보수적인 추정치이지만 성능에 영향이 있는 경우 이러한 수치를 조정할 수 있습니다.

. . .

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=5000
HISTFILESIZE=10000

. . .

기본적으로 bash는 각 세션이 끝날 때 기록을 작성하여 기존 파일을 업데이트된 버전으로 덮어씁니다. 즉, 여러 bash 세션으로 로그인한 경우 마지막으로 종료한 세션에만 기록이 저장됩니다.

기록을 덮어쓰는 대신 추가되는 histappend 설정을 지정하여 이 문제를 해결할 수 있습니다. 이미 설정되어 있을 수 있지만 그렇지 않은 경우 다음 줄을 추가하여 활성화할 수 있습니다.

. . .
shopt -s histappend
. . .

bash가 각 세션이 끝날 때까지 기다리지 않고 바로 히스토리에 명령을 추가하도록 하려면(한 터미널의 명령을 다른 터미널에서 즉시 사용할 수 있도록 하기 위해) history -a를 설정하거나 추가할 수도 있습니다. 명령을 PROMPT_COMMAND 매개 변수에 추가합니다. 여기에는 각각의 새 명령 프롬프트 전에 실행되는 명령이 포함되어 있습니다.

이를 올바르게 구성하려면 bash의 PROMPT_COMMAND를 사용자 지정하여 기록 파일과 현재 셸 세션의 메모리에 명령이 기록되는 방식을 변경해야 합니다.

  • 먼저 history -a를 사용하여 기록 파일에 즉시 추가해야 합니다.
  • 다음으로 history -c를 사용하여 셸 세션의 현재 기록을 지워야 합니다.
  • 마지막으로 업데이트된 기록을 쉘 세션으로 다시 로드하려면 history -r 명령을 사용하십시오.

이 모든 명령을 PROMPT_COMMAND 셸 변수에 순서대로 넣으면 다음과 같은 결과가 나오며 .bashrc 파일에 붙여넣을 수 있습니다.

. . .
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
. . .

완료되면 파일을 저장하고 종료합니다. nano.bashrc 파일을 편집한 경우 CTRL + X, Y를 누른 다음 <코드>입력.

변경 사항을 구현하려면 로그아웃했다가 다시 로그인하거나 다음을 실행하여 파일을 소싱하십시오.

  1. source ~/.bashrc

이를 통해 쉘이 명령 기록을 처리하는 방법을 조정했습니다. 이제 history 명령을 사용하여 이전 명령을 찾는 연습을 할 수 있습니다.

이전 Bash 기록 검토

bash 기록을 검토하는 방법은 history 명령을 사용하는 것입니다. 그러면 최근 명령이 한 줄에 하나씩 출력됩니다. 이렇게 하면 HISTSIZE 변수에 대해 선택한 줄 수가 기껏해야 출력됩니다. 이 시점에서 아마도 더 적을 것입니다.

  1. history
Output
. . . 43 man bash 44 man fc 45 man bash 46 fc -l -10 47 history 48 ls -a 49 vim .bash_history 50 history 51 man history 52 history 10 53 history

history가 반환하는 각 명령은 쉽게 참조할 수 있도록 숫자와 연결되어 있습니다. 이 가이드는 나중에 이것이 어떻게 유용할 수 있는지에 대해 설명합니다.

명령 뒤에 숫자를 지정하여 출력을 자를 수 있습니다. 예를 들어, 실행된 마지막 5개의 명령만 반환하려면 다음을 입력할 수 있습니다.

  1. history 5
Output
50 history 51 man history 52 history 10 53 history 54 history 5

특정 문자열이 포함된 모든 history 명령을 찾으려면 주어진 문자열에 대해 각 행을 검색하는 grep 명령으로 결과를 파이프할 수 있습니다. 예를 들어 다음을 입력하여 cd가 있는 행을 검색할 수 있습니다.

  1. history | grep cd
Output
33 cd Pictures/ 37 cd .. 39 cd Desktop/ 61 cd /usr/bin/ 68 cd 83 cd /etc/ 86 cd resolvconf/ 90 cd resolv.conf.d/

이전에 실행한 명령 목록을 검색할 수 있는 것이 도움이 될 수 있는 많은 상황이 있습니다. 이러한 명령 중 하나를 다시 실행하려는 경우 본능적으로 출력에서 명령 중 하나를 복사하여 프롬프트에 붙여넣을 수 있습니다. 이것은 작동하지만 bash에는 기록에서 명령을 검색한 다음 자동으로 실행할 수 있는 여러 가지 바로 가기가 있습니다.

Bash 기록에서 명령 실행

명령 기록을 인쇄하는 것은 유용할 수 있지만 실제로는 참조용이 아닌 다른 명령에 액세스하는 데 도움이 되지 않습니다.

앞에 느낌표(!)가 붙은 번호로 history 작업에서 반환된 모든 명령을 호출하고 즉시 실행할 수 있습니다. history 결과가 이전 섹션의 결과와 일치한다고 가정하면 다음을 입력하여 history 명령에 대한 매뉴얼 페이지를 빠르게 확인할 수 있습니다.

  1. !51

이것은 히스토리 번호 51과 관련된 명령을 즉시 호출하고 실행합니다.

!-n 구문을 사용하여 현재 위치를 기준으로 명령을 실행할 수도 있습니다. 여기서 "n\은 호출하려는 이전 명령의 수로 대체됩니다.

예를 들어 다음 두 명령을 실행했다고 가정해 보겠습니다.

  1. ls /usr/share/common-licenses
  2. echo hello

가장 최근에 실행한 명령(ls 명령)을 기억하고 실행하려면 !-2를 입력하면 됩니다.

  1. !-2

실행한 마지막 명령을 다시 실행하려면 !-1을 실행할 수 있습니다. 그러나 bash는 가장 최근 명령을 대체하고 실행하는 두 개의 느낌표로 구성된 바로 가기를 제공합니다.

  1. !!

많은 사람들이 명령을 입력할 때 이것을 사용하지만 실행하려면 sudo 권한이 필요하다는 사실을 잊었습니다. sudo !!를 입력하면 앞에 sudo가 있는 명령이 다시 실행됩니다.

  1. touch /etc/hello
Output
touch: cannot touch `/etc/hello': Permission denied
  1. sudo !!
Output
sudo touch /etc/hello [sudo] password for sammy:

이것은 이 구문의 또 다른 속성을 보여줍니다. 이러한 바로 가기는 순수한 대체이며 마음대로 다른 명령에 통합될 수 있습니다.

Bash 기록 스크롤

bash 히스토리를 스크롤할 수 있는 몇 가지 방법이 있으며 각 연속 명령을 명령줄에 입력하여 편집합니다.

이를 수행하는 가장 일반적인 방법은 명령 프롬프트에서 위쪽 화살표 키를 누르는 것입니다. 위쪽 화살표 키를 추가로 누를 때마다 명령줄 기록에서 더 뒤로 이동합니다.

다른 방향으로 이동해야 하는 경우 아래쪽 화살표 키를 누르면 기록이 반대 방향으로 이동하여 마지막으로 현재 비어 있는 프롬프트로 돌아갑니다.

화살표 키까지 손을 끝까지 옮기는 것이 번거롭다면 CTRL + P 조합을 사용하여 명령 기록에서 뒤로 이동하고 CTRL + N 조합을 사용하여 기록을 다시 앞으로 이동합니다.

현재 명령 프롬프트로 돌아가려면 META + >를 누르면 됩니다. 대부분의 경우 "meta\ 키는 ALT 키이므로 META + >ALT + SHIFT + .를 누르는 것을 의미합니다. 당신이 당신의 기록에서 자신을 발견하고 빈 프롬프트로 돌아가고 싶을 때 유용합니다.

반대 조작을 수행하고 META + <를 입력하여 명령 기록의 첫 번째 줄로 이동할 수도 있습니다. 이것은 일반적으로 ALT + SHIFT + ,를 누르는 것을 의미합니다.

요약하자면 다음은 기록을 스크롤하고 양쪽 끝으로 이동하는 데 사용할 수 있는 몇 가지 키와 키 조합입니다.

  • 위쪽 화살표 키: 기록에서 뒤로 스크롤
  • CTRL + P: 기록에서 뒤로 스크롤
  • 아래쪽 화살표 키: 기록에서 앞으로 스크롤
  • CTRL + N: 기록에서 앞으로 스크롤
  • ALT + SHIFT + .: 기록의 끝으로 이동(가장 최근)
  • ALT+ SHIFT + ,: 기록의 시작 부분으로 이동(가장 먼)

Bash 기록을 통한 검색

grep을 통해 history 명령을 파이핑하면 결과 범위를 좁힐 수 있는 유용한 방법이 될 수 있지만 많은 상황에서 이상적이지 않습니다.

Bash에는 기록에 대한 검색 기능이 포함되어 있습니다. 이를 사용하는 일반적인 방법은 CTRL + R 키 조합을 사용하여 기록에서 뒤로 검색(가장 최근 결과가 먼저 반환됨)하는 것입니다.

예를 들어 CTRL + R을 입력하고 이전 명령의 일부를 입력하기 시작할 수 있습니다. 명령의 일부만 입력하면 됩니다. 원하지 않는 명령과 일치하는 경우 CTRL + R을 다시 눌러 다음 결과를 얻을 수 있습니다.

원하는 명령을 실수로 통과한 경우 CTRL + S를 입력하여 반대 방향으로 이동할 수 있습니다. 마지막 섹션의 키를 사용하여 기록의 다른 지점으로 이동하고 앞으로 검색하려는 경우에도 유용할 수 있습니다.

많은 터미널에서 CTRL + S 조합은 터미널 세션을 일시 중단하도록 매핑됩니다. 이렇게 하면 CTRL + S를 bash로 전달하려는 모든 시도를 차단하고 터미널을 "정지\합니다. 고정을 해제하려면 CTRL + Q를 입력하여 세션 일시 중단을 해제합니다.

이 일시 중지 및 재개 기능은 대부분의 최신 터미널에서 필요하지 않으며 다음 명령을 실행하여 문제 없이 끌 수 있습니다.

  1. stty -ixon

stty는 명령줄에서 터미널 설정을 변경할 수 있는 유틸리티입니다. 이 stty -ixon 명령을 ~/.bashrc 파일 끝에 추가하여 이 변경 사항을 영구적으로 만들 수도 있습니다.

지금 다시 CTRL + S로 검색을 시도하면 앞으로 검색할 수 있도록 예상대로 작동해야 합니다.

명령의 일부를 입력한 후 검색

자신을 찾을 수 있는 일반적인 시나리오는 명령의 일부를 입력한 다음 이전에 실행한 것을 깨닫고 기록을 검색할 수 있다는 것입니다.

이미 명령줄에 있는 항목을 사용하여 검색하는 올바른 방법은 CTRL + A를 사용하여 커서를 줄의 시작 부분으로 이동하고 CTRL + R 를 사용하여 역 기록을 호출하는 것입니다. , CTRL + Y를 사용하여 현재 줄을 검색에 붙여넣은 다음 다시 CTRL + R을 사용하여 역방향으로 검색합니다.

예를 들어 Ubuntu 시스템에서 패키지 캐시를 업데이트한다고 가정합니다. 최근에 이것을 이미 입력했지만 프롬프트에 sudo를 다시 입력하기 전까지는 그것에 대해 생각하지 않았습니다.

  1. sudo

이 시점에서 당신은 이것이 당신이 지난 하루 정도에 확실히 한 작업이라는 것을 깨닫습니다. CTRL + A를 눌러 커서를 줄의 시작 부분으로 이동할 수 있습니다. 그런 다음 CTRL + R을 눌러 역 증분 기록 검색을 호출합니다. 이는 커서 위치 뒤에 있는 명령줄의 모든 내용을 복사하여 클립보드에 넣는 부작용이 있습니다.

그런 다음 CTRL + Y를 눌러 방금 명령줄에서 복사한 명령 세그먼트를 검색에 붙여넣습니다. 마지막으로 CTRL + R을 눌러 기록에서 뒤로 이동하여 방금 붙여넣은 내용이 포함된 명령을 검색합니다.

이와 같은 단축키를 사용하는 것은 처음에는 지루해 보일 수 있지만 익숙해지면 꽤 유용할 수 있습니다. 복잡한 명령의 절반을 입력하고 나머지를 완료하려면 기록이 필요하다는 것을 알고 있는 위치에 있을 때 매우 유용합니다.

이들을 별도의 키 조합으로 생각하기보다는 단일 복합 작업으로 생각하는 것이 도움이 될 수 있습니다. CTRL 키를 누른 상태에서 A, R, Y를 누른 다음 >R 키를 연속으로 누릅니다.

고급 히스토리 확장에 익숙해지기

이 가이드는 bash가 제공하는 가장 기본적인 히스토리 확장 기술 중 일부를 이미 다뤘습니다. 지금까지 다룬 내용 중 일부는 다음과 같습니다.

  • !!: 마지막 명령으로 확장
  • !n: 히스토리 번호가 "n\인 명령을 확장합니다.
  • !-n: 히스토리에서 현재 명령 이전의 "n\개의 명령이었던 명령으로 확장합니다.

이벤트 지정자

위의 세 가지 예는 이벤트 지정자의 인스턴스입니다. 이들은 일반적으로 특정 기준을 사용하여 이전 히스토리 명령을 불러오는 방법입니다. 사용 가능한 작업의 선택 부분입니다.

예를 들어 다음과 같이 입력하여 마지막으로 실행한 ssh 명령을 실행할 수 있습니다.

  1. !ssh

명령 기록에서 ssh로 시작하는 줄을 검색합니다. 명령의 시작 부분이 아닌 문자열을 검색하려면 ? 문자로 묶을 수 있습니다. 예를 들어 이전 apt-cache search 명령을 반복하려면 다음 명령을 실행하여 찾고 실행할 수 있습니다.

  1. !?search?

시도할 수 있는 또 다른 이벤트 지정자는 마지막 명령 내의 문자열을 다른 문자열로 대체하는 것입니다. 이렇게 하려면 캐럿 기호(^) 다음에 바꾸려는 문자열을 입력한 다음 바로 뒤에 다른 캐럿, 대체 문자열 및 마지막 캐럿을 입력합니다. 교체하려는 문자열의 일부이거나 교체로 사용하려는 문자열의 일부가 아닌 한 공백을 포함하지 마십시오.

  1. ^original^replacement^

이것은 이전 명령을 호출하고(!!와 동일) 명령 문자열 내에서 original의 인스턴스를 검색하고 <로 바꿉니다. 코드>교체. 그런 다음 대체 문자열을 사용하여 명령을 실행합니다.

맞춤법 오류와 같은 문제를 처리하는 데 유용합니다. 예를 들어 /etc/hosts 파일의 내용을 읽으려고 할 때 실수로 이 명령을 실행했다고 가정해 보겠습니다.

  1. cat /etc/hosst
Output
cat: /etc/hosst: No such file or directory

전체 명령을 다시 작성하는 대신 다음을 대신 실행할 수 있습니다.

  1. ^hosst^hosts^

이렇게 하면 이전 명령의 오류가 수정되고 성공적으로 실행됩니다.

단어 지정자

이벤트 지정자 뒤에 콜론(:)과 단어 지정자를 추가하여 일치하는 명령의 일부를 선택할 수 있습니다.

이것은 명령을 공백으로 구분된 덩어리로 정의되는 "단어\로 나누어 수행합니다. 이를 통해 명령 매개변수와 상호 작용할 수 있는 몇 가지 흥미로운 기회를 얻을 수 있습니다.

단어 번호 매기기는 초기 명령에서 "0\으로 시작하고 첫 번째 인수는 "1\로 시작하여 계속됩니다.

예를 들어, 디렉토리의 내용을 나열한 다음 동일한 디렉토리로 이동하기로 결정할 수 있습니다. 다음 작업을 연달아 실행하여 그렇게 할 수 있습니다.

  1. ls /usr/share/common-licenses
  2. cd !!:1

이와 같이 마지막 명령을 사용하는 경우 두 번째 !와 콜론을 제거하여 단축할 수 있습니다.

  1. cd !1

이것은 같은 방식으로 작동합니다.

캐럿(^)으로 첫 번째 인수를 참조하고 목적에 맞는 경우 달러 기호($)로 마지막 인수를 참조할 수 있습니다. 특정 숫자 대신 범위를 사용할 때 더 유용합니다. 예를 들어 이전 명령의 모든 인수를 새 명령으로 가져올 수 있는 세 가지 방법이 있습니다.

  1. !!:1*
  2. !!:1-$
  3. !!:*

고독한 *는 초기 명령 외에 호출되는 명령의 모든 부분으로 확장됩니다. 마찬가지로 숫자 다음에 *를 사용하여 지정된 단어 이후의 모든 항목이 포함되어야 함을 의미할 수 있습니다.

수식어

불러오는 히스토리 라인의 동작을 보강하기 위해 할 수 있는 또 다른 작업은 텍스트 자체를 조작하기 위해 불러오기 동작을 수정하는 것입니다. 이렇게 하려면 확장 끝에 콜론(:) 문자 뒤에 수정자를 추가하면 됩니다.

예를 들어 h 수정자("head\를 나타냄)를 사용하여 파일로 이어지는 경로를 잘라낼 수 있습니다. 그러면 마지막 슬래시(/ ) 문자. 이것을 사용하여 디렉토리 경로를 자르고 경로가 슬래시로 끝나면 원하는 방식으로 작동하지 않는다는 점에 유의하십시오.

이에 대한 일반적인 사용 사례는 파일을 수정하고 관련 파일에 대한 작업을 수행하기 위해 파일의 디렉터리로 변경하려는 경우입니다.

예를 들어 다음 명령을 실행하여 오픈 소스 소프트웨어 라이선스의 내용을 출력에 인쇄한다고 가정해 보겠습니다.

  1. cat /usr/share/common-licenses/Apache-2.0

라이선스가 귀하의 요구에 적합하다고 판단되면 라이선스가 있는 디렉토리로 변경할 수 있습니다. 인수 체인에서 cd 명령을 호출하고 끝에서 파일 이름을 잘라내어 이를 수행할 수 있습니다.

  1. cd !!:$:h

현재 작업 디렉터리를 인쇄하는 pwd를 실행하면 이전 명령에 포함된 디렉터리로 이동한 것을 확인할 수 있습니다.

  1. pwd
Output
/usr/share/common-licenses

해당 위치에 있으면 해당 라이센스 파일을 다시 열어 이번에는 less와 같은 호출기에서 다시 확인해야 할 수 있습니다.

이렇게 하려면 경로를 잘라내고 "tail\을 나타내는 t 수식어와 함께 파일 이름만 사용하여 이전 조작의 역순으로 수행할 수 있습니다. 마지막 <cat 작업을 수행하고 t 플래그를 사용하여 파일 이름만 전달합니다.

  1. less !cat:$:t

전체 절대 경로 이름을 쉽게 유지할 수 있으며 이 명령은 이 인스턴스에서 올바르게 작동합니다. 그러나 이것이 사실이 아닌 다른 경우가 있을 수 있습니다. 예를 들어, 상대 경로를 사용하여 현재 작업 디렉토리 아래의 몇 개의 하위 디렉토리 내에 중첩된 파일을 본 다음 "h\ 수정자를 사용하여 하위 디렉토리로 변경할 수 있습니다. 이 경우 신뢰할 수 없습니다. 더 이상 파일에 도달하기 위해 상대 경로 이름에.

매우 유용한 또 다른 수정자는 후행 확장자를 제거하는 r 수정자입니다. 이것은 tar를 사용하여 파일을 추출하고 나중에 결과 디렉토리로 변경하려는 경우에 유용할 수 있습니다. 생성된 디렉토리가 파일과 동일한 이름이라고 가정하면 다음과 같이 할 수 있습니다.

  1. tar xzvf long-project-name.tgz
  2. cd !!:$:r

tarball이 tgz 대신 tar.gz 확장자를 사용하는 경우 수정자를 두 번만 전달할 수 있습니다.

  1. tar xzvf long-project-name.tgz
  2. cd !!:$:r:r

유사한 한정자 e는 후행 확장자를 제외한 모든 것을 제거합니다.

불러온 명령을 실행하지 않고 찾기만 하려면 p 수정자를 사용하여 bash가 명령을 실행하는 대신 명령을 에코하도록 할 수 있습니다.

이것은 올바른 조각을 선택했는지 확실하지 않은 경우에 유용합니다. 이렇게 하면 인쇄할 뿐만 아니라 수정하려는 경우 추가 편집을 위해 기록에 저장됩니다.

예를 들어, 홈 디렉토리에서 find 명령을 실행한 다음 루트(/) 디렉토리에서 실행하고 싶다는 것을 깨달았다고 가정해 보십시오. 다음과 같이 올바른 대체를 수행하고 있는지 확인할 수 있습니다(원래 명령이 기록의 숫자 119와 연결되어 있다고 가정).

  1. find ~ -name "file1"
  2. !119:0:p / !119:2*:p
Output
find / -name "file1"

반환된 명령이 올바른 경우 CTRL + P 키 조합으로 실행할 수 있습니다.

s/original/new/ 구문을 사용하여 명령에서 대체할 수도 있습니다.

예를 들어 다음과 같이 입력하면 됩니다.

  1. !119:s/~/\//

이렇게 하면 검색 패턴(~)의 첫 번째 인스턴스가 대체됩니다.

g 플래그를 s와 함께 전달하여 일치하는 모든 항목을 대체할 수 있습니다. 예를 들어 file1, file2file3이라는 이름의 파일을 만들고 dir1 이라는 디렉토리를 만들려는 경우 , dir2, dir3, 다음과 같이 할 수 있습니다.

  1. touch file1 file2 file3
  2. mkdir !!:*:gs/file/dir/

물론 이 경우 mkdir dir1 dir2 dir3를 실행하는 것이 더 직관적일 수 있습니다. 그러나 수정자와 다른 bash 기록 확장 도구를 사용하는 데 익숙해지면 명령줄에서 기능과 생산성을 크게 확장할 수 있습니다.

결론

이 가이드를 읽으면 사용 가능한 기록 작업을 활용할 수 있는 방법에 대한 좋은 아이디어를 얻었을 것입니다. 이 중 일부는 다른 것보다 더 유용할 수 있지만 bash에 이러한 기능이 있다는 것을 아는 것이 좋습니다.

다른 것이 없다면 history 명령, 역방향 검색 및 기본 히스토리 확장만으로도 작업 속도를 높이는 데 많은 도움이 될 수 있습니다.