Como executar a saída de `ls` na linha de comando?

Como executar a saída de `ls` na linha de comando?

À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 pythonpor 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 STDOUTsaída de um comando anterior, na posição de argumento de um novo comando?

Responder1

^ls^pythonirá realizar sua necessidade imediata (repita o comando anterior, substituindo pythono 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 xargspara 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á pythoncom a saída de lscomo 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.

informação relacionada