Cela élargit quelque peu le !!
truc mentionné dans cette réponse . Il y a en fait un tas de commandes liées à l'histoire qui ont tendance à être oubliées (les gens ont tendance à poignarder Up100 fois au lieu de chercher une commande qu'ils savent qu'ils ont tapée).
- La
history
commande affichera une liste des commandes récemment exécutées avec un indicateur d'événement à gauche
!N
remplacera la commande associée à l'indicateur d'événement N
!-N
remplacera la commande N
la plus récente; par exemple !-1
, substituera la commande la plus récente, !-2
la deuxième la plus récente, etc.
- Comme mentionné dans l'autre réponse,
!!
est un raccourci pour !-1
, pour remplacer rapidement la dernière commande
!string
remplacera la commande la plus récente qui commence par string
!?string?
remplacera la commande la plus récente qui contient string
Des indicateurs de mot peuvent être ajoutés à une !
commande d'historique pour modifier les résultats. Les deux points séparent les désignateurs d'événement et de mot, par exemple !!:0
. Le désignateur d’événement !!
peut être abrégé uniquement !
lorsque vous utilisez un désignateur de mot, ce qui !!:0
équivaut à !:0
.
!:0
obtiendra la commande qui a été exécutée
!:1
recevra le premier argument (et !:2
le second, etc.)
!:2-3
recevra les deuxième et troisième arguments
!:^
est un autre moyen d'obtenir le premier argument. !:$
obtiendra le dernier
!:*
obtiendra tous les arguments (mais pas la commande)
Les modificateurs peuvent également être ajoutés à une !
commande d'historique, chacun précédé d'un deux-points. N'importe quel nombre peut être empilé (par exemple !:t:r:p
).
h
- Aligner le nom du fichier de base
t
- Seul le nom de fichier de base
r
- Aligner à l'extension du nom de fichier
e
- Seulement l'extension de nom de fichier
s/search/replacement
- Remplacer la première occurrence de search
avecreplacement
gs/search/replacement
- Remplacer toutes les occurrences de search
avecreplacement
!-#
non plus. J'avais l'habitude!string
d'exécuter la dernière commande qui commence par string, mais je la complète généralement par tabulation (zsh) pour m'assurer que la bonne chose est exécutée!N
lancera la commande ..." est une description trop étroite; en fait,!N
sera remplacé par la commande ...; et ainsi de suite pour toutes les descriptions dans la réponse. Plus correct et ouvrant des possibilités beaucoup plus utiles! Par exemple, le mentionnésudo !!
.bash
; Dans Emacs, pour parcourir l'historique des commandes d'entrée et des valeurs (pour Mx ou d'autres valeurs lues), on utilise Meta-R à la place (Meta-R est également utiliséeshell
dans Emacs). Alors je les gâche souvent.bash - insère le dernier paramètre de la ligne précédente
alt- . La combinaison de touches la plus utile à ce jour, essayez-la et voyez, pour une raison quelconque, personne ne la connaît.
appuyez encore et encore pour sélectionner les derniers paramètres plus anciens.
super quand vous voulez faire quelque chose de plus avec l'argument / le fichier que vous avez utilisé il y a un instant.
la source
alt
,.
la commande précédente est extraite de la commande précédente. Donc , si vous voulez que le dernier argument il y a trois commandes, vient de frapperalt
-.
trois fois.yank-last-arg
commande readline. Elle devrait donc fonctionner avec tout programme lié à readline, pas seulement BASH ou ZSH.Mon favori est
Simple et très utile.
Jetez un coup d'œil à ce site Web commandlinefu.com .
Vous pouvez également consulter ces quatre articles de Peteris Krumins sur son blog
la source
ascii
programme séparé est également utile. Outre l'impression d'une table, il vous permet de rechercher un ou plusieurs caractères individuels.Exécutez la dernière commande en tant que root:
la source
Je ne sais pas si cela compte comme un "truc", mais les gens ne semblent pas très conscients des raccourcis clavier ReadLine standard. D'utilisation particulière dans les coquilles:
la source
Ctrl+L
correspond au caractère ascii FormFeed. Il va généralement redessiner l'écran dans les applications texte avec une fenêtre d'écran (par exemple, vim, less, mc, etc.). Bien si l'écran a été "pollué" par une sortie d'un autre programme.Ctrl+W
pour supprimer un mot en arrière,Alt+F
pour avancer d'un mot,Alt+B
pour reculer d'un mot dans une ligne. J'aimeCtrl+Y
etShift+Insert
parce que vous pouvez avoir deux lignes copiées. Un avecCtrl+U
(coller avecCtrl+Y
) et en même temps vous pouvez copier un autre mot (sélectionner la ligne) coller avec (Shift+Insert
).CTRL+ Rdans BASH pour rechercher / activer des commandes précédemment exécutées (le contenu de ~ / .bash_history).
Ceci est souvent extrêmement utile. L'exécution de cet alias servira la PWD jusqu'à HTTP (indexée) sur le port 8000:
Et parce que je cours constamment, que je tape trop vite et que je tape trop vite, ces alias sont probablement les plus utilisés (sérieusement):
Et mon morceau BASH le plus fréquemment utilisé est probablement un script simple que j'appelle uploader. Je l'utilise pour intégrer n'importe quel type de contenu à mon Linode, et il copie l'URL HTTP résultante dans mon presse-papiers (clic du milieu). Très utile pour coller des choses aux gens dans IRC:
Juste un couple. Je peux poster beaucoup plus tard, je dois retourner au travail!
la source
alias mk=make
Plus rapide à taper et moins susceptible de se tromper. Ou compilez à partir de votre éditeur à l'aide d'un raccourci clavier ...alias m=make
, ou mêmem=make -j6
ou similaire - sauf que j'utilise déjàalias m=mutt
☺diff
la sortie de deux commandes sans créer manuellement un fichier temporaire (bash):la source
comm
car cela ne prend que des fichiers, mais dans de nombreux cas, c'est un gaspillage d'inodes.Assez basique, mais les gens ne semblent pas savoir, vous ramène à la phrase précédente:
la source
cd..
de DOS est enraciné dans ma mémoire musculaire ...cd
(sans argument) ce qui vous amène à votre répertoire personnel.Expansion De Brace :
Il vous permet de remplacer des lignes fastidieuses comme:
avec une instance plus courte
quelques autres utilisations
Expansion arithmétique :
la source
foo[123]
laquelle évoluerfoo1 foo2 foo3
, mais ils doivent être des noms de fichiers pour pouvoir fonctionner dans ce casC’est généralement dans mon script de démarrage (.bashrc, .profile, peu importe)
shopt
bonté, vérifiez les commentaires:Un alias qui sauve les frappes au clavier:
mkdir
etcd
dans celui-ci:Et enfin, j'ai renoncé à la mémorisation de la syntaxe tar, donc:
la source
mkcd
celle que je nomme idmd
. Cependant, l’utilisation de "$ @" en tant qu’argument de cd n’a aucun sens car vous ne pouvez pas cd dans plus d’un répertoire. "$ @" fonctionnera pour mkdir, mais ensuite vous manipulerez les arguments différemment pour mkdir et cd, je suggérerais donc plutôtmd () { mkdir -p "$1"; cd "$1" }
Deux fonctions bash qui me permettent d’économiser beaucoup de touches.
Faites automatiquement une lecture après chaque disque réussi:
Montez n niveaux:
la source
builtin foo
pour définir une fonctioncd
. Je l'utilisechdir
dans mes fonctions. Handycd() { builtin cd -- "$@" && { [ "$PS1" = "" ] || ls -hrt --color; }; }
Comme je suis généralement à mi-chemin d'une ligne de commande avant de vouloir effectuer une recherche (CTRL-R sous bash), j'ai les éléments suivants dans mon .bashrc
Cela signifie que si je tape cd puis appuie en haut / en bas, je peux voir toutes les options que j'ai enregistrées. Fondamentalement, je l’utilise pour les répertoires souvent utilisés. Comme "cd w" et je finis par parcourir tous les espaces de travail que j'utilise beaucoup.
la source
Une chose qui me fait gagner beaucoup de temps, ce sont les commandes pushd / popd. Ces gars-là vous permettent de créer une pile de répertoires et de réduire considérablement la saisie:
la source
u
eto
représentent ici?setopt autopushd
modifier automatiquement tous les changements de répertoire.La
screen
commande . Il enregistre essentiellement votre session en ligne de commande pour votre retour. C'est un peu un gestionnaire de terminal, comme un gestionnaire de fenêtres. De cette façon, dans une session de terminal unique, vous pouvez avoir plusieurs terminaux virtuels actifs. C'est vraiment cool.Si on utilise
screen
, cette fonction shell.bashrc
est extrêmement utile:lors de la saisie
scr
, il vérifiera si votre session principale existe et s’y attachera. Sinon, ça va le créer.la source
Si vous avez besoin de modifier une ligne de commande particulièrement longue dans bash
l'ouvrira dans l'éditeur ($ EDITOR).
En zsh, vous pouvez obtenir le même comportement en ajoutant ceci à .zshrc:
la source
Si vous êtes un dactylographe rapide, ceux-ci sont utiles:
Cette macro vous aide à calculer les totaux d'une colonne de sortie: tailles de fichier, octets, paquets, il vous suffit de spécifier la colonne que vous souhaitez ajouter:
Vous l'utilisez comme ceci par exemple, sans arguments, il ajoute le total de la première colonne:
Si vous fournissez l'argument, la somme de cette colonne sera ajoutée, par exemple, cela vous donnera le nombre total d'octets utilisés par tous les fichiers C # de / tmp:
Parfois, votre console est perturbée parce que vous avez accidentellement consulté un fichier binaire (cat / bin / ls par exemple), vous pouvez restaurer le terminal avec cette fonction shell:
J'aime que mon ls utilise des caractères pour distinguer la classe de fichiers, mais aussi pour masquer les fichiers de sauvegarde générés par mon éditeur (les fichiers de sauvegarde se terminent par le caractère ~):
la source
s/fast/sloppy/
reset
où vous utilisezrestaura
.Un de mes favoris quand j'oublie
s
:la source
bindkey -s '\e[12~' "sudo !!\n"
lier (dans ce cas) F2 pour exécuter cette commande. J'ai cette liaison, donc quand je lance quelque chose et que je vois le message d'erreur "tu as oublié 'sudo', imbécile", je peux juste poignarder F2 avec contrariétéSi une commande prend une entrée stdin, vous pouvez lire l'entrée d'un fichier avec
<filename
. Cela peut apparaître n'importe où dans la commande, donc ces lignes sont équivalentes:Ceci est particulièrement utile pour grep, car il vous permet de placer l'expression à la fin de la ligne. Vous pouvez ainsi modifier rapidement une commande grep en appuyant dessus Up, sans avoir à faire défiler à gauche pour aller au-delà du nom de fichier:
la source
<input foo | bar | baz >output
, cela ne fonctionne pas si vous essayez de mélanger certaines primitives de bouclage de shell telles quewhile
oufor
au milieu. J'ai donc abandonné et je l'ai mis à la fin, conformément à la convention.Vous pouvez utiliser
CDPATH
pour configurer l’équivalent répertoire dePATH
; si vous essayezcd foo
et qu'il n'y a pas defoo
dans le répertoire en cours, le shell vérifiera chacun des répertoires enCDPATH
cherchantfoo
dans ceux-ci, et basculera vers le premier trouvé:la source
Pour quand vous ne savez pas où quelque chose vit, et vous ne vous souciez pas non plus.
la source
which
automatiquement = foovi =scriptname
$(scriptname)
Le esperluette . Il met votre commande en arrière-plan pour que vous puissiez continuer à taper.
En travaillant, et après un moment, vous voyez:
Et votre processus est terminé! Idéal pour les choses où vous n'avez pas besoin d'attendre qu'elles se terminent.
la source
&!
en arrière-plan le travail et le désavoue du shell!bash
.nohup
accomplit ceci.Complétez l'onglet . Comment serait-il nul de devoir taper tous les caractères de chaque chemin?
la source
rm -fr /
. Donc oui, la fin des onglets est assez vitale ...ls /usr/lib/game-d*/rott*
rm -rf /
désactivé dans la plupart des systèmes Linux?Umount dernier appareil monté:
!mo
étend la dernière commande qui a commencé avecmo
(au moins en bash). Parfois, on le faitmv
au milieu, alors çau!m
ne marche pas aussi souvent.la source
J'ai ceci dans mon .bashrc
Et quand j'ai le code source HTML dans le presse-papier et que je veux trouver tous les liens que j'utilise
Et j'ai toutes les urls dans le presse papier
J'ai aussi cette fonction
quelle taille d'affichage (lisible par l'homme) et nom de fichier.
cet alias est pour afficher la température
avec cette fonction, je peux calculer le produit ou la somme des arguments.
C'est une fonction utile qui scinde l'entrée standard séparée par regex puis joint le résultat.
fonction factorielle
Cette fonction affiche le texte du wiki sur DNS
J'ai aussi trois funcions de couleurs
Cette fonction valide le fichier hash md5.
cela affichera un message d'erreur pour un code donné
Vous pouvez imprimer tous les messages avec
la source
Une autre astuce utile ZSH:
Traiter la sortie d'une commande en tant que fichier:
Ceci ouvre une ancienne version d’un fichier suivi par Mercurial dans emacs pour la visualisation avec mise en surbrillance de la syntaxe. Sans cela, je dois mess avec
hg revert
,hg archive
ou envoyer explicitement lahg cat
sortie à un fichier temporaire.Bien entendu, cela fonctionne avec tout programme qui ouvre des fichiers et tout programme qui imprime sur une sortie standard.
la source
Une fonctionnalité spécifique à ZSH est un alias de suffixe, défini en donnant à
alias
l'-s
indicateur:Si une extension donnée a un suffixe alias, vous pouvez exécuter directement un fichier portant cette extension, et ZSH lancera le programme donné et transmettra le nom du fichier en tant qu'argument. Donc si l'alias ci-dessus est en vigueur, ces lignes sont équivalentes:
la source
Une de mes fonctionnalités ZSH préférées de tous les temps est les répertoires nommés. Vous pouvez exporter une variable avec un nom donné, avec une valeur qui pointe vers un certain chemin:
Vous pouvez maintenant utiliser
~foo
une commande pour faire référence à/usr/bin
:la source
Voir cette question .
Quand tu cours
ps ax | grep string
:la dernière ligne contenant
grep
est quelque chose d'un peu anoyantVous pouvez vous en débarrasser en exécutant
ps ax | grep '[s]tring'
:update : ou tout simplement courir
pgrep string
la source
'[o]penbox'
). Les crochets fonctionneront comme une sorte de glob, donc s'il y a openbox dans votre répertoire (disons que vous êtes dedans/usr/bin
) bash utilisera simplement openbox, ce qui empêchera l'astuce de grep.La commande ne rien faire
:
comme dansExtension de brace en combinaison avec les boucles for:
!
opérateur et opérateurs de court-circuit||
et&&
utiliser des sous-coquilles au lieu de pop / push (très pratique dans les scripts)
le genre de- what-is commande
type
aussi très sympa: here-strings
et mon préféré: redirection sur une liste de commandes
la source
J'adore mettre autant de choses que je peux sur ma PS1. Quelques choses utiles à retenir:
\e[s
et\e[u
enregistrez et enregistrez la position du curseur, respectivement. J'utilise ceci pour créer une "barre d'informations" en haut de l'écran, d'une longueur de deux lignes, qui peut contenir plus de choses. Exemple:Combinez avec
alias clear='echo -e "\e[2J\n"'
. Essaye le!En outre, la
PROMPT_COMMAND
variable définit une commande à exécuter avant la PS1 à chaque fois.Un autre est la
bg
commande. Si vous oubliez de mettre&
à la fin d'une commande, appuyez simplement sur ^Zet tapezbg
, et elle s'exécute en arrière-plan.la source
bg
, quand j'ai un programme en arrière-plan et appuyez accidentellement surfg
je ne sais pas comment le repousser: DPS1
alors je mets la plupart des choses que je veux dans mon écran ...