
Às vezes esqueço meus caminhos relativos e, no momento em que localizo o arquivo, digitei:
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
Para executar este script agora, pressiono ←até voltar ao início do comando e, em seguida, substituo python
por ls
.
Quando faço essa espera longa ←(o que parece ser frequente), estou sempre pensando:deve haver uma maneira mais rápida de editar a sequência de comandos ou executar a saída do comando anterior.
Então, não me qualificando realmente como superusuário do bash, tenteicanoa saída de ls para python, que não funcionou como esperado:
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$
Então minha pergunta: como colocar a STDOUT
saída de um comando anterior, na posição de argumento de um novo comando?
Responder1
^ls^python
irá realizar sua necessidade imediata (repita o comando anterior, substituindo python
o ls
)
Responder2
Não tenho certeza se você está realmente perguntando
Mas acho que o que eu realmente quero é saber como colocar a saída STDOUT de um comando na posição de argumento de outro comando, na linha de comando.
Acho que o que você pode achar útil é usar$_
$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_
O $_
é substituído pelo argumento final do comando anterior que você executou.
Verhttp://tldp.org/LDP/abs/html/internalvariables.html
No entanto, se você realmente quiser usar o stdout como argumento para outro comando, você pode usar xargs
para isso (vejahttp://linux.die.net/man/1/xargs)
$ ls /tmp/long/path/which/contains/file | xargs python
Responder3
Você já usou crases?
python `ls ../../../somefile`
Chamará python
com a saída de ls
como argumento.
Não tenho certeza se é isso que você está perguntando.
Responder4
Além da resposta de Andrew, um bom truque para saber é que Ctrl+ asalta o cursor para o início da linha.