C'est possible, même sans se déloguer, même en mode graphique. Pour
«devenir» root, il suffit de taper su
; pour
«devenir» un autre utilisateur, su nom_d_utilisateur
. Le
mot de passe correspondant vous sera demandé. Ceci pour la console ou un Xterm.
Par su - nom_d_utilisateur
, on récupère en plus les
variables d'environnement dudit utilisateur. Pour passer en root,
taper su -
su
est indispensable avec une distribution qui interdit les
connections root
en mode graphique, c'est le cas de la
Debian 3.1 Sarge et... c'est préférable quel que soit le système ! Si
des applications graphiques doivent être lancés par root
,
il y a deux biais : soit taper la commande xhost +
en tant
qu'utilisateur normal avant d'utiliser su
, soit utiliser le
programme sux
. Sous Debian, il est disponible mais pas
installé d'office (dans ce cas, apt-get install sux
).
Ne pas oublier l'existence d'interface graphiques à su
ou à sux
; il y a Kdesu prévu pour KDE et Gksu pour GNOME, encore que tous deux puissent être utilisés quels que soit le bureau.
Après, ce n'est qu'une question de choix. Si l'on ne souhaite pas toutes les dépendances liées à KDE par exemple.
*
: prend la place de n'importe quelle chaîne de
caractères, même vide ou constituée d'un seul caractère.
?
: prend la place d'un unique caractère quelconque (N.B. :
ne peut remplacer une chaîne vide).
!$
: rappelle le dernier argument, quel qu'il fut,
commande, option ou fichier, de la ligne de commande précédente.
!!
: rappelle la totalité de la ligne de commande
précédente.
.
: représente le dossier courant ; utile pour lancer un
script si le dossier courant ne se trouve pas dans le PATH :
./script_a_lancer
..
: représente le dossier supérieur.
~
: représente le dossier personnel de l'utilisateur actuel
; en général /home/nom_d_utilisateur
--
: une option vide. Sert (pas si) accessoirement (que ça)
à signaler la fin des options. Utile pour traiter des fichiers comportant un
tiret en début de nom.
Le shell Bash permet le complètement des éléments suivants et dans l'ordre suivant :
Ce qui correspond à l'ordre dans lequel on tape les commandes habituellement.
Ainsi, si vous hésitez sur la frappe d'un nom de programme ou de
commande, tapez le début et pressez deux fois la touche TAB, des
complètements vous seront proposés. S'ils sont trop nombreux, on vous
demandera confirmation avant de les afficher (y
ou
n
). Même chose pour les noms de fichiers ou de dossiers
possibles.
Tout ceci est valable en console et dans un émulateur de terminal comme Xterm.
Ctrl c : stoppe l'application console en cours. Astuce à connaitre : permet de stopper une requéte DHCP au démarrage d'un système Linux. Utile pour éviter une recherche inutile, notamment avec une carte réseau sans fil. Conseil : ne pas taper ce raccourci plusieurs fois, afin d'éviter de perturber le démarrage d'un autre service.
Ctrl d : pour se déloguer, y compris suite à un changement
d'utilisateur par su
; peut s'utiliser autant de fois que
nécessaire s'il y a eu des su
successifs.
Ctrl r : effectue une recherche dans les commandes précédentes. très agréable pour retrouver ou se dispenser de réécrire en entier une commande longue. On peut lancer la recherche en tapant n'importe quelle partie de la commande voulue !
Ctrl w : effacement du mot précédent.
Ctrl u : effacement de la ligne complète.
Shift + ou Shift - : augmente la taille de la police dans un Xterm. Attention : + et - du pavé numérique (il faut combiner avec la touche Fn sur un portable).
La console ou le Xterm dans lequel vous travaillez semble
inexplicablement bloqué ? Peut-être que vous avez inopinément pressé le
raccourci Ctrl s qui stoppe le défilement. Pressez à tout
hasard Ctrl q pour revenir à la normale. Si vous êtes en
root
, quittez sans plus rien taper... Enfin... C'est mon
conseil...
Début, Home ou Ctrl a : aller au début de la ligne de commande.
Fin, End ou Ctrl e : aller à la fin de la ligne de commande.
Shift PagePréc. / Shift PageSuiv. : reculer/avancer d'une page.
Tous ces raccourcis sont fonctionnels tant en console qu'en Xterm, dans les distributions que j'ai essayées récemment : Slackware 10.1, SuSE 9.2, Debian 3.1 et Etch, (x)Ubuntu 5.10 et 6.06.
C'est faisable par l'habituel raccourci console pour stopper une application lancée à partir d'elle : Ctrl c. Conseil : ne le taper qu'une fois (le résultat devrait d'ailleurs être immédiat).
Premier cas : si vous souhaitez lancer
commande1
suivie de commande2
sans vous
soucier de l'échec ou de la réussite de commande1
, il vous
faut taper :
commande1 ; commande2
Deuxième cas : si vous souhaitez exécuter
commande1
suivie de commande2
seulement si commande1
réussit, il vous faut taper
:
commande1 && commande2
Troisième cas : si vous souhaitez exécuter
commande2
seulement si commande1
échoue, il vous faut taper :
commande1 || commande2
(utilisation de deux caractères pipe |
obtenus sur
un clavier PC franéais par AltGr 6 )
L'exécution d'une commande vous jette à la gueule^W^W^Wsur la sortie standard un flot de texte que vous aimeriez bien examiner à téte reposée ? Là encore, deux solutions au moins.
première solution : utilisation du pipe pour visualiser directement la sortie de la commande :
commande | less
Un inconvénient, toutefois : une fois le pager
less
quitté (touche q
), vous n'aurez plus de
trace de l'exécution de la commande.
Deuxième solution : envoyer la sortie de la commande
commande
vers le fichier en texte brut machin
:
commande > machinIl vous reste à examiner le contenu du fichier
machin
en
texte brut soit avec l'éditeur de texte de votre choix, soit avec un
pager comme more
ou less
(ce dernier
est nettement plus riche en
fonctions) :
less machin
On peut évidemment taper tout cela d'une seule traite :
commande > machin && less machin
Deuxième solution (bis) : par
commande >> machinvous envoyez la sortie de la commande vers le fichier
machin
, non en le remplaçant mais en rajoutant la sortie
standard à la fin du fichier en question. D'une seule traite encore,
commande >> machin && less machin
less
Comme on va le voir, éless is more than moreé.
La fonction de base de less
est la visualisation de
fichiers texte. Principal avantage par rapport à more
,
less
permet de revenir sur du texte déjà vu : soit par
utilisation de la molette de la souris, soit par utilisation des fléches
de déplacement, soit par les deux touches Page suivante et
Page précédente ; on peut aussi aller en début de texte (taper
Début ou g
) ou en fin de texte (taper Fin
ou G
).
Recherche de texte : Pour chercher du texte en avant,
taper /
suivi du texte ou de l'expression régulière à
chercher. Pour chercher du texte en arriére, taper ?
suivi
du texte ou de l'expression régulière à chercher. Une fois la recherche
aboutie, on peut la relancer dans le même sens (taper n
) ou
en sens contraire (taper N
). Nous retrouvons exactement
la même façon de faire que dans Vim.
On quitte less
ou more
par la touche
q
.
rename
On renomme des fichiers de la façon suivante :
rename motif1 motif2 *.mpeg
Ce qui veut dire que tous les fichiers MPEG du dossier seront renommés
en remplaçant la première apparition de motif1
dans leur nom par motif2
. C'est là la seule fonction de
cette version de rename
que je connaisse, version présente
notamment dans les SuSE 7.3 et 9.2, à ma connaissance.
rename
Les possibilités sont beaucoup plus importantes et permettent l'utilisation d'expressions régulières. Cette version était déjà présente dans la Debian 3.0 Woody et sa syntaxe est sensiblement la même que celle utilisée pour effectuer des substitutions dans Vim. Commençons par décrire comment réaliser exactement le même travail que ci-dessus :
rename s/motif1/motif2/ *.mpegTous les fichiers MPEG du dossier seront renommés en remplaçant la première apparition de
motif1
dans leur nom par
motif2
.
Par contre, si l'on tape :
rename s/motif1/motif2/g *.mpegtoute apparition de
motif1
dans leur nom sera
remplacée par motif2
.
Changement d'extension : si l'on veut changer toutes
les extensions .txt
des fichiers d'un dossier en
.tex
:
rename s/.txt/.tex/ *.txt
Suppression des espaces : dans tous les noms de
fichiers PDF (extension .pdf
ou .PDF
) d'un
dossier, on souhaite remplacer les espaces par des underscores
(le étiret 8é ou tiret bas) :
rename s/\ /_/g *.pdf *.PDF
La suppression des espaces sans les remplacer se ferait par :
rename s/\ //g *.pdf *.PDF
(espace remplacé par... rien !). Ne pas oublier l'option g
car sans elle, vous ne remplaceriez que le premier espace dans chaque
nom de fichier.
Noter que l'antislash empêche d'interpréter l'espace comme passage
à l'argument suivant dans cette commande Unix. Il est conseillé de protéger les espaces et les caractères spéciaux : tirets de début (-machin
peut signaler une option), doubles tirets isolés (--
, servent à signaler la
fin des options dans une commande), ?
, *
, ^
, >
,
<<
, |
, &
, ;
, !
, etc... En résumé, tout ceux qui jouent
habituellement un rôle dans les lignes de commandes.
Passage en minuscules : (sur tous les fichiers possédant une extension, quelle qu'elle soit)
rename 'y/A-Z/a-z/' *.*
Passage en majuscules : (sur tous les fichiers
possédant une extension .tif
ou .PNG
)
rename 'y/a-z/A-Z/' *.tif *.PNG
Cette modification est applicable à n'importe quel couple d'ensemble de
symboles. Par exemple, pour remplacer chacune des lettres
a
, b
, c
et d
par
w
, x
, y
et z
respectivement, on taperait :
rename 'y/a,b,c,d/w,x,y,z/' *.tif *.PNG
Il vous faut simplement connaitre le nom de votre périphérique CD/DVD :
vous pouvez tester la commande eject /cdrom
(ou
/dev/cdrom
ou /dev/dvd
ou
/dev/hdc
ou /dev/hdd
, etc...)
Si cela ne marche toujours pas (c'est peut-être un autre utilisateur qui
s'est délogué en laissant le CD monté), tentez la même manœuvre
sous le compte root
.
Par la commande ls
, on liste le contenu d'un dossier ; par
la commande wc
(word count), on compte le nombre
de mots d'un texte.
Donc, si en bon Unixien, vos noms de fichiers ne comportent pas
d'espaces, vous aurez le nombre de fichiers de votre dossier par :
ls | wc
Avec wc -l
on compte le nombre de mots sans être
perturbé par les espaces (parfait pour compter le nombre de fichiers,
donc) ; avec wc -w
, le nombre réel de mots, à éviter pour ce qui
nous préoccupe.
De toute façon, à vous de voir ce qui vous convient le mieux, sachant
que ls | wc
donné sans argument vous donnera les deux
résultats plus le nombre de lettres. Et wc
tout seul donne
dans l'ordre : le nombre de lignes, le nombre de mots d'un fichier, le
nombre de mots sans compter les espaces.
...vraiment vide. C'est à dire pas un fichier vide avec un éditeur de texte, qui ferait de ce fichier... un fichier texte ! Ni avec un logiciel de dessin qui donnerait aussi un type particulier à ce fichier.
Il faut taper dans une console ou un Xterm :
touch nom_du_fichier
man -k motclé
Si cela ne convient pas, tentez aussi : apropos motclé
Inutile d'expliquer à quoi sert find
. Il fonctionne de la
façon suivante : find dossier_de_départ options_de_recherche
motif_de_recherche
. Ajoutez un pipe avec
less
si l'affichage défile sur plusieurs pages :
find dossier_de_départ options_de_recherche motif_de_recherche | less
Une des options les plus intéressantes est l'option -exec
qui permettra d'exécuter une commande sur chacun des fichiers trouvés,
la notation du fichier actuellement traité dans la commande étant alors
{}
. Voyons quelques exemples.
Pour copier les fichiers du dossier actuel ou d'un de ses sous-dossiers
et dont les noms comprennent un tiret au début (par ex :
-fichier.ext
) dans un dossier a-renommer
où on les traitera plus tard :
find . -name "-*.*" -exec cp -- {} a-renommer \;
Mises en garde et précisions :
*
,
--
après cp
pour
signaler la fin des options, au cas où d'autres noms de fichiers
bizarres seraient trouvés,
\
en
fin de commande. En effet, si plusieurs fichiers sont trouvés,
tout se déroulera comme si plusieurs commandes se succédaient,
donc séparées par des points-virgules. La protection de
;
par un antislash fait qu'il sera interprété comme
séparateur dans la commande cp
mais pas dans la
commande find
. Logique, non ?
find
vous retournera et donc sur lesquels il
effectuera peut-être des commandes irréversibles, il peut étre
judicieux de taper d'abord la commande find
sans
l'option -exec
, afin de voir la liste des fichiers
trouvés. Si l'affichage comporte plusieurs pages, ajoutez
less
en pipe :
find dossier_de_départ motif-de-recherche | less
find blabla
-exec
avec une commande qui ne risque pas d'altérer
lesdits fichiers, par exemple ls
:
find . -name "-*.*" -exec ls -- {} \;
-v
(comme --verbose
) aux
commandes cp
, rm
, mv
,
etc... Vous verrez alors la catastrophe en question se dérouler
devant vos yeux horrifiés. Un grand nombre de commande Unix
possèdent une option ébavardeé ; cherchez dans les pages de
manuel.
Pour voir les variables systèmes ou variables d'environnement, taper
set
Pour disposer des variables d'environnement de l'utilisateur visé par la
commande su
, taper su - nom_d_utilisateur
(ne
pas oublier le tiret).
Pfff...