Eu acho que o que você quer é testar primeiro $ 1 para um arquivo:
se teste -f "$ 1"; então
cd dirname ...
outro
cd "$ 1"
fi
Esta pergunta já tem uma resposta aqui:
Se eu fizer cd "user/Dropbox/foo.txt"
, receberei -bash: cd: user/Dropbox/foo.txt: Not a directory
. Mas a minha intenção neste caso é sempre a mesma: eu quero cd
para o diretório em que o arquivo está.
Eu tentei isso:
function smartcd
{
dirname=$(dirname "$1");
cd $dirname;
}
Mas não funciona porque quando $ 1 é um diretório, dirname "$1"
retorna o diretório pai, não o próprio diretório.
Como posso criar um comando que copie para o próprio diretório se $1
for um diretório ou para o diretório no qual o arquivo está se $1
for um arquivo?
Eu acho que o que você quer é testar primeiro $ 1 para um arquivo:
se teste -f "$ 1"; então
cd dirname ...
outro
cd "$ 1"
fi
Tags cd-command shell-script