¿Cómo ejecutar la salida de `ls` desde la línea de comando?

¿Cómo ejecutar la salida de `ls` desde la línea de comando?

A veces olvido mis rutas relativas y cuando localizo dónde está el archivo, he escrito:

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 ejecutar ahora este script, me encuentro presionando hasta volver al inicio del comando y luego reemplazándolo pythoncon ls.

Cuando hago esta espera prolongada (que parece ser frecuente), siempre pienso:Debe haber una forma más rápida de editar la cadena de comando o ejecutar la salida del comando anterior.

Entonces, al no calificar realmente como superusuario de bash, intentétubola salida de ls a python, que no funcionó como se esperaba:

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$

Entonces mi pregunta: ¿cómo poner la STDOUTsalida de un comando anterior en la posición del argumento de un nuevo comando?

Respuesta1

^ls^pythonrealizará su necesidad inmediata (repita el comando anterior, sustituyendo pythonel ls)

Respuesta2

No estoy seguro de que realmente estés preguntando

Pero supongo que lo que realmente quiero es saber cómo poner la salida STDOUT de un comando en la posición del argumento de otro comando, desde la línea de comando.

Creo que lo que te puede resultar útil es usar$_

$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_

Se $_reemplaza con el argumento final del comando anterior que ejecutó.

Verhttp://tldp.org/LDP/abs/html/internalvariables.html

Sin embargo, si realmente desea utilizar la salida estándar como argumento para otro comando, puede utilizarla xargs(consultehttp://linux.die.net/man/1/xargs)

$ ls /tmp/long/path/which/contains/file | xargs python

Respuesta3

¿Alguna vez has usado comillas invertidas?

python `ls ../../../somefile`

Llamará pythoncon la salida de lscomo argumento.

Sin embargo, no estoy totalmente seguro de si eso es lo que estás preguntando.

Respuesta4

Aparte de la respuesta de Andrew, un buen truco es saber que Ctrl+ ahace saltar el cursor al inicio de la línea.

información relacionada