Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/02/2007, à 21:40

gameboy

Commandes les plus utilisés !

Plop à tous,

Je sais qu'il ya une commande qui liste les commandes les plus utilisées sur le systeme, mais je ne la retrouve plus...
Je ne parle pas d'un simple "history", c'est enfait un history qui classe les commandes par frequence d'utilisation.

Quelqu'un aurait une idée ? SVP (cette commande me rend ma boule, je crack du slip...)

++

Hors ligne

#2 Le 18/02/2007, à 21:54

Yannick_LM

Re : Commandes les plus utilisés !

 history | cut -b8- | cut -d' ' -f1 | sort | uniq -c | sort -rg | head

Ce n'est qu'une idée...

EDIT : explications (tant qu'à faire, un peu de pédagogie)

Tout programme éxécutable sur le terminal peut prendre des arguments depuis une "entrée standard", et affiche les résultats sur la "sortie standard" : ce qui s'affiche sur l'écran du terminal, en gros.
Le pipe | permet de renvoyer de la sortie standard vers l'entrée.
En quelque sorte, cela permet d'enchaîner les fonctions.

Au début, on affiche la liste des commandes passées ( grâce à history)
Le format est celui ci "  XXX  nom_de_la_commande", où XXX est le numéro de la commande.
XXX est un numéro aligné à droite (c'est plus joli)
En gros, le nom de la commande commence au 8ème caractère si on affiche moins de 1000 commandes avec history (par défaut, c'est 500)

On commence par enlever sur chaque ligne tous les caractères à partir du 8ème (avec cut)
Ensuite, on découpe chaque ligne avec en plusieurs champs (fields), en prenant l'espace comme délimiteur : cela permet de récupérer le nom de chaque commande, sans les arguments :
(Exemple : "sudo apt-get install" devient "sudo" : ça peut valoir le coup de modifier la formule pour enlever les sudo, je ne sais pas )

Ensuite, on trie, avec sort.
On remplace chaque ligne qui apparaît plusieurs fois de la manière suivante :

ls
ls

devient

2 ls

A ce moment-là, on retrie les lignes, mais de manière numérique (sinon, 20 vient avant 2), et à l'envers, pour avoir les plus utilisées.

On prend la tête (head) du résultat pour afficher seulement les dix plus utilisées.

----------

@ gameboy

Un petit man sur les commandes utilisées te permettra de modifier la ligne précédente pour l'adapter à tes besoins ...



EDIT 2 :

Voilà le code pour ne pas tenir compte de sudo :

history | cut -b8- | sed -e "s/sudo //" | cut -d' ' -f1 | sort| uniq -c | sort -rg | head

Un bout d'explication : avec, le programme on cherche / remplace simplement la chaîne "sudo ", par la chaîne vide ligne par ligne. (man  sed pour plus de détails)

Dernière modification par Yannick_LM (Le 18/02/2007, à 23:39)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#3 Le 18/02/2007, à 23:34

gameboy

Re : Commandes les plus utilisés !

Merci Yannick_LM mais c'est pas ce que je veux, je me suis mal exprimer.
Il existe deja une commande autre qu'history, c'est pas que je rechigne à utiliser les pipes, mais je crois qu'il ya beaucoup beaucoup plus simple.

Hors ligne

#4 Le 18/02/2007, à 23:43

Yannick_LM

Re : Commandes les plus utilisés !

Bon, bon.

C'est pas grave, ça m'a fait plaisir de me replonger là-dedans. (Ca m'amuse de concevoir des lignes de commandes pareilles : on a les jeux qu'on peut)

Et puis ça fait une bonne pub pour les possibilités de la ligne de commande ...

Sinon, pas d'infos pour un logiciel plus simple, désolé.


EDIT :
J'ai trouvé plus simple !

history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}'| sort | uniq -c | sort -rg | head

Non, je plaisante...

Dernière modification par Yannick_LM (Le 18/02/2007, à 23:53)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#5 Le 18/02/2007, à 23:46

Arkaon

Re : Commandes les plus utilisés !

Merci pour le cours Yannick_LM, moi aussi ce genre de commande m'amuse tongue

Hors ligne

#6 Le 19/02/2007, à 07:42

szdavid

Re : Commandes les plus utilisés !

ben c'est malin, grâce à toi, je me suis rendu compte que mes commandes les "plus" utilisées étaient killall et kill    lol

Hors ligne

#7 Le 19/02/2007, à 09:19

ferreol

Re : Commandes les plus utilisés !

Yannick je n´ai pas la solution a ta question mais une espèce de dérive. Moi qui n ´aime pas trop la ligne de commande car souvent trop long , j ´utilise désormais les alias. ( wiki alias)

En fait pour les commandes les plus courrantes du genre

sudo apt-get update && sudo apt-get upgrade
j ai raccrourci cela par exemple:
maj

Idem pour backup du sources.list au lieu de se tapper un cp /etc/apt/sroucres.list /etc/apt/sources.list.back

un simple :

savesoft

Voila j en i fait une dizaine comme cela des commandes les plus utilisées et les plus longues.

De plus j ai fait un petit script qui a chaque ouverture de termnial me rappelle tous les alias crées.

Voila

Hors ligne

#8 Le 19/02/2007, à 21:33

teke

Re : Commandes les plus utilisés !

Très sympa ce genre de fil !!! on apprends plein de chose...

perso j'ai mis dans mon ~/bash_aliases :

hy() {
history | grep -vE -e "[0-9]{1,4}  hy |history" | grep -iE -e $1 | less
}

cela me permet de retrouver facilement toute les occurrences comportant certains mot :
  hy ce_que_je_cherche

un truc me chicanait beaucoup... le fait qu'il y ait une quantité de doublon... je vais tenter de faire un truc avec ta commande uniq

Une question :
Comment fait-on pour modifier le nombre d'entrées de l'historique ?

#9 Le 19/02/2007, à 22:00

ferreol

Re : Commandes les plus utilisés !

pour en revenir aux alias , j'aimerai savoir comment faire un script qui au lieu de m'aficher tout mes alias a chaque session de terminal, m'en affiche un en mode random?

Hors ligne

#10 Le 19/02/2007, à 23:35

glattering

Re : Commandes les plus utilisés !

szdavid a écrit :

ben c'est malin, grâce à toi, je me suis rendu compte que mes commandes les "plus" utilisées étaient killall et kill    lol

argh, ça y est, je suis un geek pour de vrai, j'ai rigolé en lisant cette phrase. roll


Membre de l'APRIL - « promouvoir et défendre le logiciel libre » -

Hors ligne

#11 Le 27/02/2007, à 03:21

Yannick_LM

Re : Commandes les plus utilisés !

@ ferreol : Un petit script pas très propre qui répond à la question :

#!/bin/bash


cat $HOME/.bash_aliases | grep alias > list
RANGE=`cat list | wc -l`
nu_ligne=$RANDOM
let "nu_ligne = $nu_ligne % $RANGE + 1"

sed -n "$nu_ligne"p list


rm -f list

Allez, une ch'tite explication...

Déjà, on suppose que les alias sont rangés dans un fichier à part, $HOME/.bash_aliases.

Ensuite, on affiche le contenu de bash_alias, et on récupère les lignes contenant alias. (avec un pipe et une grep, voir plus haut pour ceux qui suivent pas tongue)
Comme ça, le script marche aussi si l'utilisateur a rajouté des commentaires un peu partout ...

On range tout ça dans un fichier qu'on appelle list. (avec : > , qui écrit directement le résultat d'une commande dans un fichier). Le fichier list, s'il n'existe pas, sera créé, dans le répertoire où l'on exécute le script. C'est pour ça que ce n'est pas très propre...

Ensuite, on prende une commande qui affiche le contenu de list, et on compte le nombre de ligne avec wc, on la met entre backquotes, et on range le résultat dans une variable, qu'on appelle RANGE.

`commande ` est remplacé par le résultat de la commande, facile...
/!\ : ce sont des backquotes : altgr + 7 sur mon clavier.


On crée une variable aléatoire nommée nu_ligne, avec nu_ligne=$RANDOM
/!\ : pas d'espace autour du signe égal ...

Par défaut, les nombres aléatoires varient dans un grand intervalle, on utilise un modulo (avec %), pour tirer nu_ligne dans le bon intervalle, et on rajoute 1 (sinon, on va de 0 à $RANGE-1 )

On affiche la ligne qui va bien avec sed (encore lui).

Enfin, on supprime le fichier list, avec un -f pour être sûr de n'afficher aucun message du genre "êtes-vous sûr de vouloir supprimer ...?"

Voilà.

Dernière modification par Yannick_LM (Le 27/02/2007, à 03:23)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#12 Le 27/02/2007, à 11:12

ferreol

Re : Commandes les plus utilisés !

@Yannick:
Super merci cependant j'ai un petit probleme . J'ai juste remplacé le nom de ton fichier : .bash_aliases par mon .bashrc et placé ton script dans KDE Autostart.

Mais rien ne se passe à l'ouverture de terminal . Qu'est ce que j'ai fait de mal?

Hors ligne

#13 Le 27/02/2007, à 11:19

naholyr

Re : Commandes les plus utilisés !

Je ne pense pas que KDE lance les scripts dont le nom commence par un point dans ~/.kde/Autostart
Ces fichiers sont censés être cachés

Dernière modification par naholyr (Le 27/02/2007, à 11:19)

Hors ligne

#14 Le 27/02/2007, à 11:34

ferreol

Re : Commandes les plus utilisés !

mon script a pour nom Alias.sh dans ~/.kde/Autostart pas de probèmes, il va chercher dans ~/.bahsrc (p.s pour conky les .conkyrc et cela marche), je nepense pas que cela vienne de la , remarque je suis un Noob.

Hors ligne

#15 Le 27/02/2007, à 11:47

Yannick_LM

Re : Commandes les plus utilisés !

Hum, je pense qu'il s'agit d'un autre problème.
Le script s'exécute bien à l'ouverture de ta session, mais tu ne vois rien car tu n'as pas ouvert de console.
Justement, lorsque tu ouvres une console, c'est le fichier .bashrc qui est exécuté.

Moi, j'essaierai en mettant juste

/chemin/vers/Alias.sh

à la fin du .bashrc.


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#16 Le 27/02/2007, à 13:05

ferreol

Re : Commandes les plus utilisés !

ok c'était bien cela yannick mais c'est assez etrange

j'ouvre un terminal

bash: alias: /media/stuff/sounds/*.mp3
# enable programmable completion features (you dont: not found
bash: alias: need: not found
bash: alias: to: not found
bash: alias: enable: not found
alias upgrade='sudo apt-get upgrade'
debian@fefe:~$

Hors ligne

#17 Le 27/02/2007, à 13:26

Yannick_LM

Re : Commandes les plus utilisés !

C'est rigolo, on dirait qu'il essaye d'exécuter au lieu d'afficher...

Vérifie la syntaxe du .bashrc. On dirait que tu as viré quelques # de trop vers la fin.

------

Je suppose que tu as mis tes alias directement dans le .bashrc. Ce n'est pas un tort, mais tu risques de voir s'afficher des lignes comme :

if [ -f ~/.bash_aliases ]; then

(Ben oui )


Dans ce cas, il vaudrait déplacer tous tes alias dans un fichier .bash_aliases (*), et mieux décommenter les lignes suivantes dans le .bashrc,

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

(*) :
Le fichier .bash_alias ressemble à ça chez moi :

# Alias

# Pour éviter les bêtises :
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

Voilà ce que je peux te conseiller pour l'instant.


EDIT :
Surtout, prends le temps de bien comprendre tout ce que tu fais.
Il n'y a rien d'insurmontable dans tout ça...

Dernière modification par Yannick_LM (Le 27/02/2007, à 13:27)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#18 Le 27/02/2007, à 14:01

ferreol

Re : Commandes les plus utilisés !

ok oui tu as raison on dirait qu'il essaye de les executer donc je vais faire comme tu dis créer un fichier spécial . c'est plus sur.
lol

Hors ligne

#19 Le 27/02/2007, à 15:08

ferreol

Re : Commandes les plus utilisés !

Ben merde alors j'ai fait donc un script bash_alias dans mon home

#!/bin/bash
echo alias edit='sudo kwrite'
echo alias boot='sudo kwrite /boot/grub/menu.lst'
echo alias saveboot='sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.back'
echo alias backboot='sudo cp /boot/grub/menu.lst.back /boot/grub/menu.lst'
echo alias soft='sudo kwrite /etc/apt/sources.list'
echo alias savesoft='sudo cp /etc/apt/sources.list /etc/apt/sources.list.back'
echo alias backsoft='sudo cp /etc/apt/sources.list.back /etc/apt/sources.list'
echo alias xorg='sudo kwrite /etc/X11/xorg.conf'
echo alias savexorg='sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.back'
echo alias backxorg='sudo cp /etc/X11/xorg.conf.back /etc/X11/xorg.conf'
echo alias update='sudo apt-get update'
echo alias upgrade='sudo apt-get upgrade'
echo alias remove='sudo apt-get remove'
echo alias newip='sudo /etc/init.d/networking restart'
echo alias instal='sudo apt-get install'
echo alias remove='sudo apt-get remove'
echo alias autoremove='sudo apt-get autoremove'
echo alias maj='sudo apt-get update && sudo apt-get upgrade'
echo alias clean='sudo apt-get clean && sudo apt-get autoclean'
echo alias splash='sudo update-alternatives --config usplash-artwork.so'
echo alias partoch='sudo kwrite /etc/fstab'
echo alias savepartoch='sudo cp /etc/fstab /etc/fstab.back'
echo alias backpartoch='sudo cp /etc/fstab.back /etc/fstab'
echo alias franceinter='mplayer -playlist http://viphttp.yacast.net/V4/radiofrance/franceinter_hd.m3u

exit 0

Puis ma ligne dans bashrc a la fin:

# Affiche la liste des allias
/home/debian/bash_alias

et mon scipt au lancement dans .kde/Autostart :

#!/bin/bash


cat $HOME/.bash_alias | grep alias > list
RANGE=`cat list | wc -l`
nu_ligne=$RANDOM
let "nu_ligne = $nu_ligne % $RANGE + 1"

sed -n "$nu_ligne"p list


rm -f list

Au final il m'affiche tous les alias

Dernière modification par ferreol (Le 27/02/2007, à 15:09)

Hors ligne

#20 Le 27/02/2007, à 15:43

eldadou38

Re : Commandes les plus utilisés !

En s'appuyant sur le script de Yannick_LM ( merci wink ), voilà ce que l'on peut obtenir :

je l'ai à peine modifié :

# !/bin/bash
awk '$1 ~ /alias/ {print $0 } ' .bash_aliases > list_alias.txt
RANGE=`cat list_alias.txt | wc -l`
nu_ligne=$RANDOM
let "nu_ligne = $nu_ligne % $RANGE + 1"
# Un peu de couleur pour faire resortir l'alias
echo " `printf '\033[01;32m'` Alias du jour : `printf '\033[01;34m'` `sed -n "$nu_ligne"p list_alias.txt` `printf '\033[00m'`"
rm list_alias.txt

Résultat :

16e49c511e8a1bb93c976c6fa11ct.jpg

Voiloù wink

Dernière modification par eldadou38 (Le 27/02/2007, à 20:54)


In Ubuntu I trust

Hors ligne

#21 Le 27/02/2007, à 19:10

Yannick_LM

Re : Commandes les plus utilisés !

@eladou :

Plus joli, plus concis, que dire...

Bravo !

@ferreol :
Prends les choses calmement.
Je n'ai pas dit qu'il fallait avoir un script pour afficher les alias. J'ai dit qu'il fallait juste mettre les commandes "alias machin=truc" dans un fichier, c'est différent.

Alors après, forcément, si tu crées un script qui affiche tous tes alias, (dans ton bash_alias, avec tous les echo, c'est ce qui ce passe), le résultat c'est que tu ... affiches tous tes alias !


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#22 Le 27/02/2007, à 19:27

ferreol

Re : Commandes les plus utilisés !

big_smile

Moral de l'histoire je ne fais que des conneries car meme en virant tout maintenant quand j'ouvre une console il me dit :

bash: alias: need: not found
bash: alias: to: not found
bash: alias: enable: not found

Hors ligne

#23 Le 27/02/2007, à 20:10

ferreol

Re : Commandes les plus utilisés !

Ok j'ai tout repris depuis le début et cela marche.
Cependant bien que mon script est dans ~/.kde/Autostart  il ne se lance pas auômatiquement

debian@fefe:~/.kde/Autostart$ ./alias.sh
  Alias du jour :  alias franceinter='mplayer -playlist http://viphttp.yacast.net/V4/radiofrance/franceinter_hd.m3u'
debian@fefe:~/.kde/Autostart$

Pourquoi

Dernière modification par ferreol (Le 27/02/2007, à 20:19)

Hors ligne

#24 Le 27/02/2007, à 20:32

ferreol

Re : Commandes les plus utilisés !

ça maaaaaaaaaaaaarrrrrrrrrrrrrrrrccccccccccccchhhhhhhhhhhheeeeeeeeeee:lol:
Merci Yannick j'ai finalement réussi

@eldadou38

Faut il juste inclure dans le script?

rm list_alias.txt

Dernière modification par ferreol (Le 27/02/2007, à 20:34)

Hors ligne

#25 Le 27/02/2007, à 20:54

eldadou38

Re : Commandes les plus utilisés !

Oui, en fait j'ai oublié de le mettre correctement dans les bannières 'quote'. tongue (je modifie mon poste)

Sinon, content que cela fonctionne wink

@Yannick : Merci à toi d'avoir pondu le script en premier wink

Dernière modification par eldadou38 (Le 27/02/2007, à 20:54)


In Ubuntu I trust

Hors ligne