Escenario simple: estoy buscando un wsdl
archivo perdido en medio de un proyecto.
$ find -name '*.wsdl'
./some/very/very/long/way/to/some/lost/directory/filename.wsdl
Ahora que sé dónde está, quiero hacer algo con este archivo, por ejemplo, editarlo. En lugar de copiar / pegar la ruta detrás de mi comando, ¿es posible usar la ruta devuelta find
anteriormente? Al igual que es posible acceder al último argumento con el que ha escrito !$
o con el último comando !!
.
He leído que era posible con $?
, pero solo me devuelve un error:0: command not found
$ echo $?
0: command not found
Respuestas:
Ejecute el comando en la sustitución del comando:
El resultado ahora se almacena en la
output
variable que puede usar tantas veces como desee.fuente
$?
no contiene las rutas.return
en la pregunta. Su respuesta es absolutamente correcta para la pregunta anterior.$?
contiene el estado de salida del último comandoNo hay una variable bash especial para eso.
$?
contiene el código de salida del último comando (0 = éxito,> 0 = código de error)Puede usar la salida de
find
con la-exec
bandera, así:El
{}
se reemplaza con el nombre de archivo encontrado porfind
. Esto ejecutaría el comando para cada archivo encontrado. Si desea ejecutar un comando con todos los archivos encontrados como argumentos, use un+
extremo como este:Esto abriría una instancia de emacs con todos los archivos .wsdl encontrados abiertos en ella.
Una solución más general es almacenar la salida en una variable:
Esto funciona con todos los comandos, no solo con find. Aunque también podrías usar
xargs
:fuente
$?
devolver el código de salida de otro comando? por ejemplo, ping 1.1.1.1 -w 10; volver $?$?
contiene el código de salida del comando anterior, sea lo que sea. Entonces, la respuesta es sí.Aquí hay un truco rápido que debería hacer lo que quieras con un mínimo de pulsaciones de teclas, si no te importa que el último comando se ejecute dos veces.
Use la tecla de retroceso, ala:
`!!`
p.ej
* editar: veo que la pregunta "posiblemente engañada" vinculada anteriormente también contiene esta respuesta. sigue siendo relevante directamente para este, así que lo dejo, pero lo siento por el engaño.
fuente
git br | grep
en mi caso)!!
es mucho más fácil que presionar la tecla arriba? Y entonces aún puedes ver tu comando. Si ejecutar el comando de nuevo es aceptable, creo que presionar hacia arriba es igual de fácil (y un poco más comprensible y transparente),