Posible duplicado:
reutilizar texto en un comando bash
Si quiero cambiar el nombre de un archivo a unos pocos directorios de profundidad, ¿cómo puedo evitar repetir la ruta?
Por ejemplo:
mv path/to/old_filename.txt path/to/new_filename.txt
Me pregunto si hay una manera de hacer esto:
mv path/to/old_filename.txt (?)new_filename.txt
¿Dónde (?)
habría alguna forma de decir "en el mismo directorio"?
Puede usar la expansión de llaves:
mv path/to/{old_filename.txt,new_filename.txt}
Aquí hay un enlace a la guía de GNU sobre la expansión de llaves en el shell bash, que define una lista de sustitutos y le dice a bash que repita el parámetro usando un sustituto diferente cada vez que se repite.
Por ejemplo,
se ampliará a
La única advertencia es que las repeticiones expandidas deben poder seguirse entre sí como argumentos para el programa de destino.
fuente
mv path/to/{old,new}_filename.txt
. Esto también ayuda a la reversión u otros tipos de cerca de la repetición del comando. Muchas veces lo he hechomv /etc/X11/xorg.conf{,.backup}
, por ejemplo , poder revertir el proceso con el simple cambiomv /etc/X11/xorg.conf{.backup,}
.La respuesta de Darth anterior es inteligente, pero si desea utilizar un enfoque con
cd
, también podría considerar usar una subshell:Debido a que el cambio de directorio tiene lugar en el subshell, en realidad no cambiará los directorios en su shell interactivo.
fuente
old_filename.txt
.Otra alternativa que es útil, si va a hacer varios comandos en el directorio, es esta:
fuente
Me gusta la respuesta de @ Darth . Aquí hay una alternativa:
cd path/to && mv oldfile newfile && cd -
fuente
mv
falla (por ejemplo, sin permisos), quedará en elpath/to
directorio. Puede intentarcd path/to && mv oldfile newfile ; cd -
asegurarse decd -
que siempre se ejecute, excepto sicd path/to
(sin permisos) falla, seguirá ejecutándosecd -
e irá al directorio anterior que no es deseado. La respuesta de subshell mlc (+1) es mejor. Supongocd . && cd path/to && mv oldfile newfile ; cd -
que funcionaría el 99.9% del tiempo (concd .
solo fallar si usted o sus permisos de directorios actuales cambiaron; y en ese caso, ir a un directorio diferente no es un mal resultado.