
Si lo hago cd "user/Dropbox/foo.txt"
, lo obtengo -bash: cd: user/Dropbox/foo.txt: Not a directory
. Pero mi intención en este caso es siempre la misma: quiero cd
ir al directorio en el que se encuentra el archivo.
Probé esto:
function smartcd
{
dirname=$(dirname "$1");
cd $dirname;
}
Pero no funciona porque cuando $1 es un directorio, dirname "$1"
devuelve el directorio principal, no el directorio en sí.
¿Cómo puedo crear un comando que vaya al directorio mismo si $1
es un directorio, o al directorio en el que se encuentra el archivo si $1
es un archivo?
Respuesta1
Creo que lo que quieres es probar primero $1 para un archivo:
si prueba -f "$1"; luego cd dirname ...
else cd "$1" fi