Risposte:
Stai parlando dell'espansione della cronologia classica o dell'elaborazione Readline? cd !$
nella riga di input successiva sostituirà l'ultimo argomento della riga precedente M-.o M-_lo strapperà utilizzando Readline.
cd !$
. "Espansione cronologia classica o elaborazione Readline" Non capisco esattamente cosa intendi ...
!$
è un'espansione della storia ; la shell lo elabora mentre analizza il tuo comando. M-. è una sequenza di tasti readline; readline è la libreria che gestisce ogni tasto premuto e vede che hai premuto M-. e digita automaticamente l'ultimo argomento dell'ultimo comando
Se la tua domanda riguarda l'accesso alla cronologia dei comandi, prova questo comando ben noto
history
Puoi anche provare Ctrl+ re iniziare a digitare un comando che stai cercando di ricordare di aver digitato di recente.
(reverse-i-search)`cd ': cd mydir/data/
Premi ESCper selezionare il comando o uscire. Questo funziona per me almeno su SuSE; non sono sicuro di altre distro.
history | grep ...
!
vi
per gestire la tua riga di comando. Sembra fantastico. usando vi per modificare i comandi della shell
È semplice come Alt+.
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
<kbd></kbd>
tag per circondare la chiave.
<kbd>
questo ha sempre funzionato per me:
mkdir thisismyfolder
cd $_
$!
espande all'ultima parola che hai effettivamente digitato, si $_
espande all'ultima parola dopo l'espansione - così potresti echo /tmp/tmpfile*
e vedere un mucchio di file che vuoi rimuovere, ma rm $_
rimuoverà solo uno di essi.
Raccogliendo un suggerimento da un altro thread, se inserisci:
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
nel tuo .bashrc, quindi, puoi iniziare a digitare qualcosa dalla tua cronologia, quindi premere la freccia su e quindi, anziché passare attraverso la cronologia elemento per elemento, salterà direttamente alle voci precedenti che iniziano con ciò che hai già digitato.
Immagino che questo non sia di grande aiuto con il particolare esempio fornito nella domanda, ma è una cosa che mi aiuta ad accedere alla cronologia al volo.
Se usi bash ti suggerisco pushd
e popd
. È possibile creare una pila di directory e sfogliarla rapidamente. Vedi questo esempio:
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:~$
$
essere utile solo durante la dimostrazione pushd
, ecc.)
Su una nota correlata, raccomando di usare histverify in bash. Inserisci questo nel tuo ~ / .bashrc:
shopt -s histverify
Questo farà sì che bash stampi il comando dopo l'espansione! $ O altre funzioni della cronologia e ti darà la possibilità di guardarlo prima di premere nuovamente Invio per eseguirlo effettivamente. Per me, il controllo di integrità vale la pressione occasionale del tasto extra. Vuoi assicurarti di eseguire il cd foo
comando, non rm -rf foo
quello ...
Uso frequentemente l' Ctrl-Rapproccio, nonché Alt-.(che si adatta bene allo scenario che descrivi). Userò! $ In occasione.
Queste sono tecniche di utilità generale molto utili.
Ma per rispondere alla tua domanda specifica:
Creare una directory e registrarla direttamente in essa è una combinazione così comune che è utile avere una funzione per racchiuderla.
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 la tua shell usa readline (che è il caso bash
) puoi fare qualcosa come premere ATL+ .insieme?
Dalla documentazione di GNU Readline :
yank-last-arg (M-. o M-_)
Inserisci l'ultimo argomento nel comando precedente (l'ultima parola della voce della cronologia precedente). Con una discussione, comportati esattamente come yank-nth-arg. Le chiamate successive a yank-last-arg tornano indietro nell'elenco cronologico, inserendo a turno l'ultimo argomento di ogni riga.
cd this<TAB>