Quelle commande trouvez vous pratique ou astucieuse?

Plus une aide qu’une commande : l’utilisation de ! - [Tab] dans zsh

!text- [Tab] trouvera les dernières commandes qui contiennent la chaîne text

Par exemple !ssh trouvera pour moi l’accès ssh à l’un de mes serveurs que j’utilise une fois toutes les 3 semaines :

ssh -p 54321 admin@91.91.123.000 (exemple)

Sans cela je dois remonter dans mon historique ou utiliser [Ctrl] - [Cap] - [F] et c’est fastidieux.

!n récupérera la ligne de commande numéro n dans history

Pour bash, c’est Ctrl + R

3 J'aime

Pour moi sshpass est vraiment utile.
Ca permet de ne pas rentrer le mot de passe ssh a chaque fois, par exemple pour ta commande il faut écrire :

sshpass -p password ssh -p 54321 admin@91.91.123.10

un autre exemple utile que j’utilise :

sshpass -p aaaa ssh root@192.168.122.211 "bash -s" < ./update.sh

Ca permet d’exécuté un script local dans la machine distante sans avoir a le copier et donc évité les doublons.

2 J'aime

Sinon il existe d’autre applicatif qui accélère le travail sur linux comme locate et grep. Avec ces 2 outils tu peut trouver n’importe quel fichier et n’importe quel chaîne de texte.

Une dinguerie qui permet d’arrêter de cherché les paramètres de config dans des fichiers perdu car la doc pas jour :

grep -rin "texthere" "path"

https://www.malekal.com/exemples-de-commande-grep-sous-linux/

2 J'aime

J’utilise rev pour pallier l’absence de découpe par la fin dans cut.

1 J'aime

Bonjour

En utilisant (à peu près) la même méthode avec le shell bash :
si, en utilisant la commande shopt, j’ai positionné à on l’option histverify :

mic@deb12:~$ shopt -s histverify
mic@deb12:~$ shopt histverify
histverify     	on
mic@deb12:~$ 

Pour rappeler la dernière ligne de commande(s) que j’ai entrée
qui contiendrait la chaîne de caractère Logic
j’entre :
!?Logic?
et en retour de commande, la ligne de commande entière s’affiche en dessous :

mic@deb12:~$ !?Logic?
mic@deb12:~$ cat /home/mic/.local/share/applications/Logic-2.4.9-master.desktop

Je n’ai plus qu’à appuyer sur Entrée pour lancer l’exécution de la ligne de commande proposée.


je rappelle la dernière ligne de commande(s) entrée dont je propose les premiers caractères
de la façon suivante.

j’entre :
!zgr
et la ligne de commande entière s’affiche en dessous :

mic@deb12:~$ !zgr
mic@deb12:~$ zgrep -h 'Commandline: apt install' /var/log/apt/history.log{,.[0-9]*.gz} | sed ':a;N;$!ba;s/\n\|Commandline: apt install/ /g; s/\( \)*/\1/g;s/ -y / /;'

Je n’ai plus qu’à appuyer sur Entrée pour lancer l’exécution de la ligne de commande proposée.

3 J'aime

pourquoi ne pas faire :

history | grep "text"

Ca fait la même chose en plus de sortir toute les lignes ou tu a déjà utilisé cette commande

2 J'aime

Pas tout-à fait puisque avec ta proposition (qui utilise 3 commandes supplémentaires), tu seras en plus obligé de sélectionner une des lignes retournée par grep pour pouvoir la copier/coller dans une ligne de commande de façon à pouvoir ensuite lancer son exécution.


Voir aussi :

  • le chapitre HISTORIQUE dans le manuel du shell bash :
man --pager='less -p "^HISTORIQUE"' bash
  • le chapitre DÉVELOPPEMENT DE L'HISTORIQUE dans le manuel du shell bash :
man --pager='less -p "^DÉVELOPPEMENT DE "' bash