Esto se moverá foo.cal nuevo directorio bazcon el directorio padre bar.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
La -popción mkdircreará directorios intermedios según sea necesario.
Sin-p todos los directorios en el prefijo de ruta ya debe existir.
Todo lo que está dentro de los backticks ``se ejecuta y la salida se devuelve en línea como parte de su comando.
Como mkdirno devuelve nada, solo la salida de echo $_se agregará al comando.
$_hace referencia al último argumento al comando ejecutado anteriormente.
En este caso, devolverá la ruta a su nuevo directorio ( ~/bar/baz/) pasado al mkdircomando.
Descomprimí un archivo sin dar un destino y quería mover todos los archivos excepto
demo-app.zipde mi directorio actual a un nuevo directorio llamado
demo-app.
La siguiente línea hace el truco:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -Adevuelve todos los nombres de archivo, incluidos los archivos ocultos ( excepto los implícitos .y.. ).
El símbolo de canalización |se utiliza para canalizar la salida del lscomando grep( una utilidad de búsqueda de texto sin formato en la línea de comandos ).
El -vindicador dirige grepa buscar y devolver todos los nombres de archivo, excepto demo-app.zip.
Esa lista de archivos se agrega a nuestra línea de comandos como argumentos de origen para el comando mover mv. El argumento objetivo es la ruta al nuevo directorio pasado a mkdirreferenciado usando $_y salida usando echo.