배쉬 : 마지막 명령에서 모든 단어를 교체


14

거의 실수로, 나는 당신이 다음과 같은 것을 할 수 있다고 생각했습니다.

$ cp foo.data bar1.data
$ ^bar1^bar2

그리고 bar2.data대신에 같은 명령을 실행합니다 bar1.data. 이제 대상 단어가 여러 번 나타나는 경우는 어떻습니까? 예를 들면 다음과 같습니다.

$ cp foo.data bar.data
$ ^data^index

첫 번째 data확장자 만 대체합니다 . 둘 다 바꾸려면 어떻게해야합니까?

답변:


22

나는 ^data^index에 해당 한다고 생각 !!:s/data/index하므로 첫 단어 만 대체합니다. 전체 줄을 대체하고 싶다면 사용해야한다고 생각합니다.!!:gs/data/index/


이 대체 (: gs / data / index)는 bash 기능이거나 다른 프로그램을 암시 적으로 호출합니까?
JohnTortugo


7

끝에 ^ : &를 추가하면됩니다.
^ : &는 두 가지 발생
을 대체합니다. ^ : g &는 모두를 대체합니다.

$ cp foo.data bar.data
$ ^ 데이터 ^ 색인 ^ : &
$ cp foo.index bar.index
$ cp foo.data bar.data joe.data doe.data
$ ^ 데이터 ^ 색인 ^ : g &
$ cp foo.index bar.index joe.index doe.index

sidenote : 'command line kungfu'책에서
^ : &는


1
실제로, ^:&대체를 두 번 수행합니다 . 모든 어커런스 를 수행하려면 ^:g&( g"global"을 나타냄)를 사용하십시오.
G-Man은 'Reinstate Monica'라고

Tnx! 나는 그것을 두 번 이상 시험하지 않았다. 책에서 명령을 읽으십시오.
Note89
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.