Estoy escribiendo un .sh para hacer un trabajo por mí, pero ahora estoy en el punto donde tengo que cd al directorio donde está el archivo /path/to/file.end. Terminal no permite
cd /path/to/file.end
bash: cd: /path/to/file.end: Not a directory
lamentablemente no conozco ninguna solución alternativa, por lo que sería bueno que pudieras ayudar.
command-line
bash
files
directory
Azsgy
fuente
fuente
cd /path/to
? Eso cambiará el directorio al directorio en el que se encuentra el archivofile.end
.Respuestas:
Tipo
cd $( dirname /path/to/file.end)
. Eso le llevará a/path/to
.Explicación:
dirname
devuelve la ruta completa de un archivo (sin el nombre de archivo, con el que obtendríabasename
), es decir,dirname /etc/apt/apt.conf.d/99update-notifier
devuelve/etc/apt/apt.conf.d
$(anything)
se reemplaza por el resultado del comando entre paréntesis. Entoncescd $( dirname /etc/apt/apt.conf.d/99update-notifier)
se ejecuta comocd /etc/apt/apt.conf.d
Otra notación (pero antigua y desanimada) para el mismo era
fuente
No puedes
cd
ingresar a un archivo. Aquí está una (línea de comandos) la función que automáticamentecd
en una ruta para una ruta de archivo plenamente cualificado proporcionado:fuente
pwd
, y si está definiendo una función en una línea, necesita un punto y coma despuéspwd
.echo $?
: ¿cuál es el estado de salida?Si agrega "/ .." al nombre de archivo que lo llevará al directorio correcto, por ejemplo
cd /path/to/file.end/..
. Funciona en Cygwin de todos modos.fuente
touch test && cd /home/test/test/..
dicebash: cd: /home/test/test/..: No such file or directory