Você está falando sobre expansão clássica de histórico ou processamento Readline? cd !$
na próxima linha de entrada substituirá no último argumento da linha anterior, ou M -. ou M -_ irá utilizá-lo usando Readline.
Por exemplo, se eu fizer um
mkdir thisismyfolder912
Eu lembro que há uma maneira mais fácil de mudar para thisismyfolder912
do que ter que fazer um
cd thisismyfolder912
O que é isso e como funciona? Além disso, quais são as outras maneiras de usar isso?
Se a sua pergunta for sobre como acessar o histórico de comandos, tente este comando bem-nomeado
history
Você também pode tentar Ctrl + r , e começar a digitar um comando que você está tentando lembrar que você digitou recentemente.
(reverse-i-search)'cd ': cd mydir/data/
Pressione ESC para selecionar o comando ou sair. Isso funciona para mim no SuSE, pelo menos; não tenho certeza sobre outras distros.
É tão simples quanto Alt + .
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
isso sempre funcionou para mim:
mkdir thisismyfolder
cd $_
Pegando uma dica de outro tópico, se você colocar:
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
no seu .bashrc, você pode começar a digitar algo do seu histórico e, em seguida, pressionar a seta para cima e, em vez de percorrer seu histórico item por item, ele pulará para as entradas anteriores que começam com o que você já digitei.
Eu acho que isso não ajuda muito com o exemplo específico dado na pergunta, mas é uma coisa que me ajuda a acessar o histórico em tempo real.
Se você usar bash eu sugiro pushd
e popd
. Você pode criar uma pilha de diretórios e navegar rapidamente. Veja este exemplo:
PWD:~$ pushd /opt/google/chrome/resources/
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/
/opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~
PWD:/opt/pac/lib/method$ popd
/etc/cron.daily /opt/google/chrome/resources ~
PWD:/etc/cron.daily$ popd
/opt/google/chrome/resources ~
PWD:/opt/google/chrome/resources$ popd
~
PWD:~$
Em uma nota relacionada, recomendo usar o histverify no bash. Coloque isso no seu ~ / .bashrc:
shopt -s histverify
Isso fará com que o bash imprima o comando depois de expandir! $ ou outras funções do histórico, e dar a você uma chance de olhar para ele antes de pressionar Enter novamente para executá-lo. Para mim, o teste de sanidade vale a pena a pressão extra ocasional. Quer ter certeza de que estou executando o comando cd foo
, não o rm -rf foo
one ...
Eu freqüentemente uso a abordagem Ctrl-R , bem como Alt -. (que é uma boa opção para o cenário que você descreve). Eu vou usar! $ Ocasionalmente.
Estas são técnicas de uso geral muito úteis.
Mas para abordar sua pergunta específica:
Criar um diretório e fazer o cd diretamente nele é uma combinação tão comum que é útil ter uma função para envolvê-lo.
function mcd {
local newdir='_mcd_command_failed_'
if [ -d "$1" ]; then # Dir exists, mention that
echo "$1 exists..."
newdir="$1"
else
if [ -n "$2" ]; then # We've specified a mode
command mkdir -p -m $2 "$1" && newdir = "$1"
else # Plain old mkdir
command mkdir -p "$1" && newdir="$1"
fi
fi
builtin cd "$newdir" # No matter what, cd into it
}
Uso: mcd thisismyfolder
Se seu shell usa readline (que é o caso de bash
) você pode fazer algo como pressionar ATL + . juntos?
Na documentação do GNU Readline :
yank-last-arg (M-. or M-_)
Insert last argument to the previous command (the last word of the previous history entry). With an argument, behave exactly like yank-nth-arg. Successive calls to yank-last-arg move back through the history list, inserting the last argument of each line in turn.
Tags shell command-history