.png)
Muitas vezes quero mudar para o diretório de um arquivo no meu sistema de arquivos, mas não tenho certeza de onde o arquivo está.
Eu procuro assim:
find -type f -name "myfile.txt"
Digamos, por uma questão de simplicidade, que isso retorne um resultado, por exemplo.
/some/super/long/path/that/eu não/quero/to/type/myfile.txt
Eu geralmente digito isto:
cd $(dirname $(!!))
Para mudar para o diretório do arquivo que eu estava procurando....
Existe alguma maneira de colocar isso em um script de shell ou alias, para que eu possa basicamente digitar:
cdlast
e ele executa:
cd $(dirname $(!!))
usando o HISTÓRICO do shell? Eu tentei e o histórico do shell parece estar faltando nos scripts bash.
Responder1
fc -s
executa o comando anterior novamente:
alias cdlast='cd "$(dirname "$(fc -s 2> /dev/null)")"'
Ou use eval "$(history -p !!)"
:
alias cdlast='cd "$(dirname "$(eval "$(history -p !!)")")"'
Responder2
Você pode usar um alias.
alias cdlast='cd "$(dirname "$(eval $(history -p !!))")"'
Certifique-se de ter aspas duplas ali. Eles evitam que os resultados das substituições de comando sejam divididos em palavras separadas se tiverem espaços e interpretados como padrões curinga se tiverem caracteres especiais como *
e ?
.
Responder3
Eu usaria uma função:
gotofile () { pushd "$(find . -name "$1" -printf "%h\n")"; }
Mudar "." para algum diretório conforme apropriado ("~" talvez)