Réponses:
Parlez-vous d'une expansion de l'histoire classique ou d'un traitement Readline? cd !$
sur la ligne d'entrée suivante se substituera dans le dernier argument de la ligne précédente, ou M-.ou le M-_tirera en utilisant Readline.
cd !$
. "Extension de l'histoire classique ou traitement Readline" Je ne comprends pas exactement ce que vous voulez dire ...
!$
est une extension de l'histoire ; le shell le traite pendant qu'il analyse votre commande. M-. est une frappe de ligne de lecture; readline est la bibliothèque qui gère chaque touche sur laquelle vous appuyez et qui voit que vous avez appuyé sur M-. et tape automatiquement le dernier argument de la dernière commande
Si votre question concerne l'accès à l'historique des commandes, essayez cette commande bien nommée
history
Vous pouvez également essayer Ctrl+ ret commencer à taper une commande dont vous essayez de vous souvenir que vous avez récemment tapé.
(reverse-i-search)`cd ': cd mydir/data/
Appuyez sur ESCpour sélectionner la commande ou quitter. Cela fonctionne pour moi sur SuSE au moins; pas sûr des autres distributions.
history | grep ...
!
vi
pour gérer votre ligne de commande. Ça a l'air super cool. utiliser vi pour modifier les commandes shell
C'est aussi simple que Alt+.
$ mkdir lasdfjalsdkjf
$ cd
Alt + .
$ cd lasdfjalsdkjf
<kbd></kbd>
balises pour entourer la clé.
<kbd>
cela a toujours fonctionné pour moi:
mkdir thisismyfolder
cd $_
$!
développe jusqu'au dernier mot que vous avez réellement tapé, se $_
développe jusqu'au dernier mot après l'expansion - de sorte que vous puissiez echo /tmp/tmpfile*
voir un tas de fichiers que vous souhaitez supprimer, mais rm $_
n'en supprimerez qu'un seul.
Reprendre une astuce d'un autre fil, si vous mettez:
bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward
dans votre .bashrc, vous pouvez commencer à taper quelque chose de votre historique, puis appuyer sur la flèche vers le haut, puis plutôt que de parcourir votre historique élément par élément, il passera directement aux entrées précédentes qui commencent par ce que vous avez déjà tapé.
Je suppose que cela n'aide pas beaucoup avec l'exemple particulier donné dans la question, mais c'est une chose qui m'aide à accéder à l'historique à la volée.
Si vous utilisez bash, je suggère pushd
et popd
. Vous pouvez créer une pile de répertoires et le parcourir rapidement. Voir cet exemple:
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:~$
$
est utile lors de la démonstration pushd
, etc.)
Sur une note connexe, je recommande d'utiliser histverify dans bash. Mettez ceci dans votre ~ / .bashrc:
shopt -s histverify
Cela entraînera bash à imprimer la commande après avoir développé! $ Ou d'autres fonctions d'historique, et vous donnera une chance de l'examiner avant d'appuyer de nouveau sur enter pour l'exécuter. Pour moi, le test de santé mentale vaut la pression supplémentaire occasionnelle sur les touches. Je veux m'assurer que j'exécute la cd foo
commande, pas rm -rf foo
celle ...
J'utilise souvent l' Ctrl-Rapproche, ainsi que Alt-.(ce qui convient bien au scénario que vous décrivez). J'utiliserai! $ À l'occasion.
Ce sont des techniques très utiles à usage général.
Mais pour répondre à votre question spécifique:
Créer un répertoire et y insérer directement un CD est une combinaison tellement courante qu'il est utile d'avoir une fonction pour le boucler.
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
}
Usage: mcd thisismyfolder
Si votre shell utilise readline (ce qui est le cas bash
), vous pouvez faire quelque chose comme appuyer sur ATL+ .ensemble?
Dans la documentation GNU Readline :
yank-last-arg (M-. ou M-_)
Insère le dernier argument de la commande précédente (le dernier mot de l'entrée d'historique précédente). Avec un argument, se comporte exactement comme yank-nth-arg. Les appels successifs à yank-last-arg reviennent dans la liste d'historique, insérant tour à tour le dernier argument de chaque ligne.
cd this<TAB>