
가끔 상대 경로를 잊어버리고 파일 위치를 추적할 때쯤에는 다음과 같이 입력했습니다.
Cris-Mac-Book-2:weird cris$ ls ../../../
Icon? Research Support
Cris-Mac-Book-2:weird cris$ ls ../../../Support
Fourganizical PicoCryptical SupportPlan.txt
MoneyProjectical Qwontical Testcomms
OSICAL StanTechStatistical todo
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical
S cs mini php py readme
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py
이제 이 스크립트를 실행하려면 ←명령 시작 부분으로 돌아갈 때까지 키를 누른 python
다음 ls
.
내가 이렇게 길게 홀드할 때 ←(자주 그런 것 같다) 나는 항상 생각한다.명령 문자열을 편집하거나 이전 명령의 출력을 실행하는 더 빠른 방법이 있어야 합니다.
그래서 저는 bash 슈퍼유저로서의 자격을 갖추지 못했기 때문에파이프의도한 대로 작동하지 않는 Python에 대한 ls의 출력:
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py | python
File "<stdin>", line 1
../../../Support/PicoCryptical/py/StanTechPico.py
^
SyntaxError: invalid syntax
Cris-Mac-Book-2:weird cris$
STDOUT
그래서 내 질문 : 이전 명령의 출력을 새 명령의 인수 위치에 넣는 방법은 무엇입니까 ?
답변1
^ls^python
python
즉시 필요한 작업을 수행합니다( 을 대신 하여 이전 명령을 반복 ls
).
답변2
당신이 실제로 묻는 것인지 확실하지 않습니다
하지만 제가 정말로 원하는 것은 명령줄에서 한 명령의 STDOUT 출력을 다른 명령의 인수 위치에 넣는 방법을 아는 것입니다.
내 생각에 당신이 유용하다고 생각하는 것은$_
$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_
는 $_
실행한 이전 명령의 마지막 인수로 대체됩니다.
보다http://tldp.org/LDP/abs/html/internalvariables.html
그러나 실제로 stdout을 다른 명령의 인수로 사용하려는 경우 xargs
이를 사용할 수 있습니다(참조http://linux.die.net/man/1/xargs)
$ ls /tmp/long/path/which/contains/file | xargs python
답변3
백틱을 사용해 본 적이 있나요?
python `ls ../../../somefile`
python
출력을 ls
인수로 사용 하여 호출합니다 .
하지만 그것이 당신이 요구하는 것인지 완전히 확실하지 않습니다.
답변4
Andrew의 답변 외에 알아두면 좋은 요령은 Ctrl+가 a커서를 줄의 시작 부분으로 이동한다는 것입니다.