Aller au contenu

[TOPIC] SOS : Trucs & Astuces en vrac


Messages recommandés

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

:keskidit: 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

:mad2: 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/ 

:mdr: Pour revenir dans le répertoire précédent, suite à une commande cd :

cd -

Commandes

:-D Retrouver les derniers commandes tapées :

history

:mdr2: Relancer la dernière commande commençant par ... (bash) :

!ssh #lance la dernière commande commençant par SSH

Fichiers

:mdr: Effacer un fichier ayant un nom spécial : - ou ? par exemple : faire précéder par ./

rm ./-

:-D 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

:-D Clavier dans une mauvaises configuration :

loadkeys fr

devrait charger la table de caractères "french"

:eeek2: 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

:eeek2: Surveillance d'un fichier en affichant au fur et à mesure les nouvelles lignes :

tail -f <fichier>

:eeek2: 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

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

  • 11 mois après...
:byebye: 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

$ 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

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

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

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

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 :-D, j'ai bien fait de le réuper on dirait :zarb: Je remets le premier post à jour dès que j'ai qq minutes ...

Lien vers le commentaire
Partager sur d’autres sites

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 :kimouss:, j'ai bien fait de le réuper on dirait :transpi: 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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...