como cd para o diretório OU arquivo de diretório está em? [duplicado]

0
    

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?

    
por incandescentman 21.04.2017 / 20:25

1 resposta

1

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

    
por 21.04.2017 / 20:49