
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 python
con 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 STDOUT
salida de un comando anterior en la posición del argumento de un nuevo comando?
Respuesta1
^ls^python
realizará su necesidad inmediata (repita el comando anterior, sustituyendo python
el 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á python
con la salida de ls
como 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.