No bash (e alguns outros shells, como zsh), você pode usar $_
, que contém o último argumento para o comando anterior:
mkdir /path/to/file
cd "$_"
Esta é uma situação em que frequentemente me encontro:
mkdir /Some/really/long/path/to/a/directory/
cd /Some/really/long/path/to/a/directory/
Sei que idealmente você usaria cd /Some/...etc.../a/
e, em seguida, mkdir directory
, mas eu executei mkdir
primeiro e depois tive cd
no final do mesmo caminho de arquivo que acabei de criar.
Sem fazer ...
var="/Some/...etc.../a/"
mkdir $var/directory; cd $var
... o que é ainda pior, existe alguma maneira de reutilizar o parâmetro passado para o comando anterior ? Estou ciente do curso da conclusão da tabulação, mas em uma série de diretórios aninhados com nomes semelhantes isso nem sempre ajuda muito. Idealmente, estou esperando por um atalho como $#
ou $@
.
Se isso não for feito, a próxima melhor solução para economia de tempo será igualmente apreciada!
Ao trabalhar interativamente, você pode usar a expansão do histórico para isso:
mkdir /Some/really/long/path/to/a/directory/
cd !$
Existem imensas variantes para isso que permitem acessar outros parâmetros do comando anterior ou de qualquer outro comando em seu histórico. Veja Bash, insira o último argumento usado do comando atual para detalhes ...
Existem respostas anteriores que sugerem que você use $_
e !$
. Enquanto isso funciona, acho bastante perigoso, pois eles não são expandidos e você não pode ver o valor deles antes de pressionar enter e executar o comando. Imagine usar rm $_
sem ter certeza do que você vai excluir!
Se você estiver usando o bash (provavelmente com o modo emacs do readlines, que é o padrão), sugiro que você pressione ESC , libere-o e pressione . .
Este atalho lembra o último argumento do último comando executado. Portanto, escrever cd <ESC> <.>
trará seu caminho / arquivo longo.
A tecla de atalho ALT + . (pressionada simultaneamente) funciona da mesma maneira.
Se você estiver usando o modo bash vi em vez do modo emacs do padrão, você pode simular esse comportamento com ALT + . se você alterar o arquivo ~\.inputrc
com :
set keymap vi-insert
$if mode=vi
"\e.": yank-last-arg
$endif