Si estoy ~/blob
y tengo un archivo en~/blob/a_long_directory_name/c/x.x
puedo teclear
mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y
¿Hay algún atajo por el cual pueda escribir algo más corto que use la ruta del directorio en el primer parámetro (aunque no es mi directorio actual), por ejemplo
mv blob/a_long_directory_name/c/x.x $same_dir/y.y
donde algo así $same_dir
apunte al directorio de param 1
command-line
rename
cp
Michael Durrant
fuente
fuente
even_more
ruta relativa ...Con bash, puedes usar la expansión de llaves
fuente
Puede usar las capacidades de sustitución de texto de su shell. En
bash
, podrías usar una bestia como:Para desglosarlo:
!#
es la línea actual escrita hasta ahora:$
pide elegir la última palabra (reemplazar con un númeron
para elegirn
la palabra) de la cadena en consideración (!#
en este caso). La última palabra de la línea escrita hasta ahora sería la palabra anterior.:gs^xx^yy
realizag
la sustitución textual global ( )s
en la palabra resultante, reemplazando 'xx' con 'yy'.^
es solo un delimitador para que els
comando permita su uso/
en sus patrones.Este método es un poco más general, ya que le permite reemplazar cualquier parte de la ruta ('xx') con cualquier otra palabra ('yy').
Finalmente, como con cualquier manipulación de historial, es bueno tener las opciones de shell apropiadas establecidas (por ejemplo, en
~/.bashrc
). En este casomostrará la línea editada después de presionar Intro, por lo que aún puede editarla y verificar si hay errores.
No estoy seguro de por qué usarías una construcción como esa, pero funciona en este caso.
fuente
c/x.x
conevenmore/y.y
mantener el prefijo de ruta original.$PWD
). Claro, tal vez no sea el más elegante, pero señala el hecho de que el shell tiene sustituciones textuales y designadores de palabras, que algunos usuarios aún pueden encontrar útiles para investigar.