Sandeman Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 Ce topic présente quelques astuces pour gagner du temps ou résoudre des problèmes mineurs, mais parfois génants. La plupart sont en mode console ... Affichage Si une commande (exemple : cat d'un binaire) affiche des caractères cabalistiques qui laissent la console dans un état tout brouillé : reset va tenter de remettre la console ou le terminal en état. Arborescence Pour indiquer le compte d'un utilisateur : utiliser ~utilisateur (sans nom d'utilisateur, c'est le home de l'utilisateur en cours). Exemples : cd ~ cd ~sandeman cp ~remy/.config-2.6.8-1 ~tuxxx/ scp doc_alex.html gauret@grouik:~gauret/a_lire/ Pour revenir dans le répertoire précédent, suite à une commande cd : cd - Commandes Retrouver les derniers commandes tapées : history Relancer la dernière commande commençant par ... (bash) : !ssh #lance la dernière commande commençant par SSH Fichiers Effacer un fichier ayant un nom spécial : - ou ? par exemple : faire précéder par ./ rm ./- Retrouver rapidement, identifier un fichier S'il est dans le PATH which <fichier> type<fichier> rechercher sur tout le disque (il faut que locate soit installé) locate <fichier> pour mettre à jour la table de locate (la crontab le fait toutes les nuits à 6h) updatedb pour identifier ce que c'est file <fichier> Saisie Clavier dans une mauvaises configuration : loadkeys fr devrait charger la table de caractères "french" L'affichage semble bloqué : vérifier que la touche "Arrêt Defil" n'est pas allumée. Un équivalent peut être obtenu avec Ctrl+Q. Appuyer sur Ctrl+S pour relancer. Surveillance Surveillance d'un fichier en affichant au fur et à mesure les nouvelles lignes : tail -f <fichier> Surveillande d'une commande : afficher le résultat d'une commande toutes les n secondes, éventuellement mettre en valeur les différences watch <commande> -- 2004-08-20 : création, ajout "cd -" 2004-08-21 : ajout tail et watch Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 20 août 2004 Auteur Partager Posté(e) le 20 août 2004 Toute contribution bienvenue ce n'est pas un manuel des commandes de base, non plus (j'ai hésité à mettre ps, kill/killall ...) mais juste les trucs qui décoincent Lien vers le commentaire Partager sur d’autres sites More sharing options...
-rem- Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 si je peux me permettre sandeman : 1. merci pour nous avoir fait de la pub ! 2. j'aurais rajouter set/env pour s'assurer qu'une variable d'environnement est correcte 3. J'ai parle de $LANG Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 Merci Sandeman. Je ne connaissait pas history, mais je ne vois pas vraiment l'avantage par rapport à un (less|tail|head|vim) ./bash_history Peut être peut tu rajouter les apropos/whereis etc. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 question conne : les variables d'environnement c'est pas export ? Je sais pas hein, mais c'est ce qu'il m'a parut Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 C'est ce que je pensait aussi. En fait un "#export" et un "#env" font (presque) la même chose. Je suppose que "#set X=Y" equivaut à un "#export X=Y" Lien vers le commentaire Partager sur d’autres sites More sharing options...
-rem- Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 et meme a X=Y pour certains shells... mais moi je disais ca plutot pour lister les variables d'nevironnement, plutot que de les defniir ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Angel Eyes Posté(e) le 22 août 2004 Partager Posté(e) le 22 août 2004 nan !!! export et set (ou rien), c'est pas pareil export sert à "officialier" la variable set sert à créer/modifier cette variable si tu ne fais pas export, tes scripts/programme ne vont pas forcément tenir compte de cette variable si elle n'a pas déja été exportée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
gauret Posté(e) le 22 août 2004 Partager Posté(e) le 22 août 2004 L'idée, c'est que si tu "exportes" ta variable, elle sera disponible dans les sous-shells. Sinon c'est juste pour le shell courant. Si un jour vous faites de l'insomnie, lisez le man bash. Tout ce que vous aurez réussi à lire avant de sombrer dans les bras de Morphée vous sera très utile :) A+ Gauret Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 22 août 2004 Partager Posté(e) le 22 août 2004 oky, bonne idée ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 19 août 2005 Auteur Partager Posté(e) le 19 août 2005 Un petit up, au cas ou qq idées auraient ressurgi depuis ... un an :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
djuke Posté(e) le 20 août 2005 Partager Posté(e) le 20 août 2005 Effacer un fichier ayant un nom spécial : - ou ? par exemple : faire précéder par ./ rm ./- Methode Alternative: $ rm -- - Pour interompre un process déclenché en mode interactif $ sleep 10000 <ctrl+z> [1]+ Stopped sleep 10000 Poursuivre l'éxecution de ce process en arrière plan $ bg %1 [1]+ sleep 10000 & Ou en interactif $ fg %1 sleep 10000 Lister les jobs $ jobs [1]- Running sleep 10000 & [2]+ Running sleep 1999 & Tuer le job n°1 $ kill %1 $ jobs [1]+ Complété sleep 10000 [2]- Running sleep 1999 & Activer le mode d'edition "à la vi" (pour les habitués du korn comme moi qui se mettent au bash) $ set -o vi Ensuite, echap pour passer en mode commande, puis k = commande précédente j = commande suivante / = rechercher dans l'historique v = ouvrir vi pour editer la commande + toutes les commandes habituelles de vi... Pour revenir en mode d'édition de la commande, i ou shift+a Utiliser une seule fois rm pour effacer plusieurs fichiers trouvés avec find (utilisation de xargs). $ find /var/cache/apt -name *.deb -mtime +30 |xargs rm -f Lister les bibliothèques partagées utilisées par un programme $ ldd `which cp` linux-gate.so.1 => (0xffffe000) libacl.so.1 => /lib/libacl.so.1 (0x40032000) libattr.so.1 => /lib/libattr.so.1 (0x40038000) libselinux.so.1 => /lib/libselinux.so.1 (0x4003c000) libc.so.6 => /lib/tls/libc.so.6 (0x4004b000) /lib/ld-linux.so.2 (0x40000000) Tuer tous les process accédant au fichier /etc/fstab # fuser -k /etc/fstab (-v pour simplement lister ces process) Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 20 août 2005 Partager Posté(e) le 20 août 2005 $ find /var/cache/apt -name *.deb -mtime +30 |xargs rm -f Quand on utilise find+xargs c'est encore mieux d'utiliser "print0" et le mode "-0" correspondant de xargs, cela permet de supprimer les fichiers avec des espaces. Exemple : % touch a\ b\ c d\ e % ls -l total 0 -rw-r--r-- 1 damien users 0 aoû 20 10:49 a b c -rw-r--r-- 1 damien users 0 aoû 20 10:49 d e % find -type f | xargs rm rm: ne peut enlever `./c': Aucun fichier ou répertoire de ce type rm: ne peut enlever `d': Aucun fichier ou répertoire de ce type rm: ne peut enlever `./a': Aucun fichier ou répertoire de ce type rm: ne peut enlever `b': Aucun fichier ou répertoire de ce type rm: ne peut enlever `c': Aucun fichier ou répertoire de ce type % ls -l total 0 -rw-r--r-- 1 damien users 0 aoû 20 10:49 a b c -rw-r--r-- 1 damien users 0 aoû 20 10:49 d e % find -type f -print0 | xargs -0 rm % ls -l total 0 % Lien vers le commentaire Partager sur d’autres sites More sharing options...
djuke Posté(e) le 21 août 2005 Partager Posté(e) le 21 août 2005 Quand on utilise find+xargs c'est encore mieux d'utiliser "print0" et le mode "-0" correspondant de xargs, cela permet de supprimer les fichiers avec des espaces. C'était simplement pour montrer le role de xargs. En temps normal, si je voulais n'utiliser qu'une fois rm, je ferais: find . -type f -exec rm -f -- {} + Car l'option -print0 n'est pas POSIX, ta commande ne fonctionne pas sur du solaris ni sur du AIX (par contre sur du freeBSD ca passe). Enfin il faut toujours se méfier avec ce type de commande on risque de se prendre un "args list too long". Lien vers le commentaire Partager sur d’autres sites More sharing options...
fozzie Posté(e) le 21 août 2005 Partager Posté(e) le 21 août 2005 un petit truc que j'utilise pour copier des répertoires en gardant les droits, la date, les ... : tar cvf - my_liste | "(cd /home/new_dir ; tar xvf -)" ou pour une copie réseau (avec les droits de copie) : tar cvf - myliste | remsh machine2 "(cd /home/new_dir ; tar xvf -)" attention, il y a un piège dans cette commande (ne pas l'utiliser comme ça) : tar cvf resultat.tar * le risque : le fichier resultat.tar peut se sauvegarder lui même avec une taille 0 et on perd le contenu de la sauvegarde lors de la restauration. pour le find, j'utlise une des multiples possibilités, sans problème de "args list too long" : find . -name "exemple*" -exec rm -f {} \; Lien vers le commentaire Partager sur d’autres sites More sharing options...
fozzie Posté(e) le 21 août 2005 Partager Posté(e) le 21 août 2005 vous aurez rectifé : rsh et non pas remsh (spécifique HP-UX) Lien vers le commentaire Partager sur d’autres sites More sharing options...
djuke Posté(e) le 21 août 2005 Partager Posté(e) le 21 août 2005 un petit truc que j'utilise pour copier des répertoires en gardant les droits, la date, les ... :tar cvf - my_liste | "(cd /home/new_dir ; tar xvf -)" ou pour une copie réseau (avec les droits de copie) : tar cvf - myliste | remsh machine2 "(cd /home/new_dir ; tar xvf -)" ou bien tar cf - myliste|ssh user@hote tar xf - -C /home/user/rep Sinon pour find, si je connais '+', tu te doutes que je connais ';'. La différence est que l'un invoque une seule fois la commande , l'autre l'invoque à chaque fois qu'un fichier vérifie les conditions du find (avec un argument à chaque fois donc). Lien vers le commentaire Partager sur d’autres sites More sharing options...
fozzie Posté(e) le 21 août 2005 Partager Posté(e) le 21 août 2005 merci pour l'explication du plus, je ne savais pas. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 22 août 2005 Auteur Partager Posté(e) le 22 août 2005 uhuhu on dirait des petits jeunes de l'Unix qui ne connaissent pas l'ancestrale commande ... bon ok tar c'est pas jeune, mais pour recopier une arborescence au plus propre, je penche plus pour un : find <rep> | cpio -pvm <repdest> sinon merci pour les contributions , j'ai bien fait de le réuper on dirait Je remets le premier post à jour dès que j'ai qq minutes ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
djuke Posté(e) le 22 août 2005 Partager Posté(e) le 22 août 2005 uhuhu on dirait des petits jeunes de l'Unix qui ne connaissent pas l'ancestrale commande ... bon ok tar c'est pas jeune, mais pour recopier une arborescence au plus propre, je penche plus pour un : find <rep> | cpio -pvm <repdest> sinon merci pour les contributions , j'ai bien fait de le réuper on dirait Je remets le premier post à jour dès que j'ai qq minutes ... Si tu veux utiliser cpio, n'oublie pas le -d pour créer les répertoires find <rep> | cpio -pvmd <repdest> Options GNU pour prendre en compte les characyères spéciaux: find <rep> -print0 -depth| cpio -p0vmd <repdest> "-u" : mise à jour des fichiers de destionation même si plus récents Lien vers le commentaire Partager sur d’autres sites More sharing options...
fozzie Posté(e) le 22 août 2005 Partager Posté(e) le 22 août 2005 moi j'aime pas le cpio (hihihi) en fait j'utilise le tar car les gens avec qui je travaille l'utilisent tous (jusqu'au logiciel que j'utilise pour faire mes sauvegardes bootables). mais j'avoue que j'utilisais un max cpio quand je travaillais sur AIX et ou avec des pro IBM. c'est bien ce topic, il y a plein de façons différentes pour faire la même chose. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.