Base de connaissances CCM
Systèmes d'exploitation - Linux - Shell




Sujet 902 - Shell - Créer d'un fichier d'une taille précise

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Il peut être utile à des fins de tests, de créer des fichiers arbitrairement lourds, la commande dd permet de créer des fichiers "vides" d'une taille voulue:
dd if=/dev/zero of=fichier_à_créer bs=1k count=1000
Cette commande crée un fichier "vide" d'un méga !
(1000 blocks de 1Ko)

Note : on peut également remplacer /dev/zero par /dev/urandom pour remplir le fichier avec des bits aléatoires et pas des zéro.

Lire la suite

[Shell] Transferer des fichiers via ssh »
Publié par asevere - Dernière mise à jour le 5 novembre 2009 à 19:59 par marlalapocket




Sujet 904 - [Shell] Transferer des fichiers via ssh

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


SSH - Secure SHell





Utilisation


SSH permet d'utiliser des pipelines de commandes, et d'utiliser des tubes d'entrées/sorties comme toute autre commande, a ceci prêt que la redirection se fait vers, ou depuis la machine distante.

Celà peut, entre autre, servir à transférer des fichiers:
ssh serveur "cat fichier_distant" > fichier_local 
L'utilité d'une telle commande est discutable, la commande scp faisant exactement la même chose.
Maintenant, imaginons un fichier de plusieurs mégas, et une bande passante assez limitée:
ssh serveur "gzip -c fichier_distant" > fichier_local.gz 
ici, le serveur compresse le fichier, la commande écrit le fichier compressé sur le client.

On peut pousser encore plus loin, si l'on ne veut pas récupérer un fichier gzipé, mais diminuer quand même l'utilisation de la bande passante:
ssh serveur "gzip -c fichier_distant" |gunzip > fichier_local 

Informations complémentaires


SSH - SecureSHell
Documentation sur CCM

LOGICIELS


Sous Linux/Unix


La majorité des Unix/Linux sont fournis en standard avec un client ssh, et la plupart avec un serveur ssh.

Sous Windows


Client ssh gratuit :

Client scp/sftp graphique gratuit :

Serveurs ssh gratuits :

Avertissement


Notez que l'installation d'un serveur ssh sous Windows 95/98/ME n'est pas recommandé pour des raisons de sécurité.

Lire la suite

[Shell] Récupérer son IP publique »
Publié par asevere - Dernière mise à jour le 2 novembre 2009 à 19:04 par marlalapocket




Sujet 917 - [Shell] Récupérer son IP publique

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Finalité


Pour plusieurs raisons, on peut avoir besoin de récupérer son adresse IP publique dans un script.
Le problème qui se pose alors si l'on est sur un LAN, est de trouver cette IP sans interventions humaine.

Mise en œuvre


Le moyen le plus simple que j'ai trouvé jusqu'à présent est une simple commande recherchant une ip dans une page web choisie :
GET www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'
ou
lynx --source www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'
ou encore
w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }'

Merci à dubcek pour la solution avec "w3m" (voir ce thread)

Explications


GET


La commande GET (lwp-request) se trouvre dans la libwww de Perl (package perl-libwww-perl-version).
Comme son nom l'indique elle fait un GET sur une page, cela renvoie le code source de la page.

Lynx


Lynx est un navigateur en mode texte présent dans la plupart des distributions Linux, plus simple à installer que lwp-request (Perl) si besoin.

Sed


La commande sed :

La ligne contenant l'adresse IP est donc remplacée par l'adresse IP elle même ;)

A vous de trouver quoi faire du résultat !

Lire la suite

[Shell] Accès aux dernières commandes de l'historique »
Publié par asevere - Dernière mise à jour le 3 novembre 2009 à 13:58 par marlalapocket




Sujet 971 - [Shell] Accès aux dernières commandes de l'historique

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Le shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps.

Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut.

Mais il y a moyen d'accéder encore plus rapidement aux commandes présentes dans l'historique ! En effet, en saisissant un point d'exclamation (!) suivi des premières lettres de la commande, le shell exécute automatiquement la dernière commande commençant par ces lettres :

Soit l'historique suivant :
systeme:/home/user$tail /var/log/syslog
systeme:/home/user$vi /etc/apache/httpd.conf
systeme:/home/user$/etc/init.d/mysql restart
systeme:/home/user$apachectl restart
systeme:/home/user$tail /var/log/apache/error.log


La commande suivante permettra d'accéder à la commande n-4 dans l'historique (vi /etc/apache/httpd.conf) :
!vi
Quelques autres utilisations:
!! //Rappel de la dernière commande
!23 //La 23ème commande
!-2 //L'avant-dernière commande
!?profile //La dernière commande contenant le mot "profile"
^13^14^ //Substitution dans la dernière commande

L'historique des commandes est enregistré à chaque fermeture de session dans le fichier:
~/.bash_history
Pour éviter les doublons dans ce fichier, et donc dans l'historique accessible à la ligne de commande, rajoutez cette ligne dans ~/.bash_profile:
export HISTCONTROL=ignoredups


Enfin, pour des recherches plus détaillées, il existe une commande de recherche permettant de rechercher une commande spécifique avec un mot-clé. Pour activer la fonction de recherche, il suffit d'appuyer sur CTRL+R !

Lire la suite

[Shell] Affichage d'un fichier binaire: Terminal illisible »
Publié par Jeff - Dernière mise à jour le 6 novembre 2009 à 13:49 par marlalapocket




Sujet 972 - [Shell] Affichage d'un fichier binaire: Terminal illisible

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Lorsque vous affichez par mégarde le contenu d'un fichier binaire (par exemple cat /bin/mount | more), il peut arrivé que le terminal affiche des caractères non imprimables, ce qui provoque un affichage totalement illisible avec des caractères spéciaux.
Dans ce genre de cas, si un CTRL-L ne permet pas d'y remédier, il suffit de taper :

echo [CTRL]+v [Echap] c [Entrée]

Lire la suite

[Shell] Tester une variable numérique »
Publié par Jeff - Dernière mise à jour le 22 novembre 2009 à 16:46 par marlalapocket




Sujet 4605 - Shell - Tester une variable numérique

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

« PrécédentSuivant »
Sommaire

Tester une variable numérique

Préambule


Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères".

De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à fait vrai, mais nous verrons ça en fin d'article).

Donc jusqu'à présent il fallait user de petites astuces plus ou moins "alambiquées" pour parvenir à définir si oui ou non une variable était de type "entier".




Exemples de tests


En voici trois faisant appel respectivement à la commande "grep", à la commande "expr" et à la commande "test" couplée à certaines instructions de contrôle comme le code retour d'une commande.

Note : Dans les exemples suivants, nous considèrerons que la variable "$var" est initialisée d'après le paramètre "$1" passé directement sur la ligne de commande à la suite de l'appel de chaque script.

grep


Note : Dans l'exemple qui suit, l'expression "[ [:digit:] ]" doit s'écrire sans les espaces entres les double-crochets.
#!/bin/bash 
# script_grep.sh 

var=$1 
if [ "$(echo $var | grep "^[ [:digit:] ]*$")" ] 
then 
 echo "La chaîne est numérique" 
fi 


Retour sommaire

expr


Évaluation du code retour (ici dans la variable "$statut") après un test sur une opération arithmétique à l'aide de la commande "expr".
#!/bin/sh  
# script_expr.sh 

var=$1 
expr $var + 0 1>/dev/null 2>&1 
statut=$?  
if test $statut -lt 2  
then  
 echo "$var" numérique  
fi 

Test


On évalue à l'aide de la commande "test" (représentée ici par les crochets "[" et "]") si la valeur de la variable "$var" est égale à zéro (0), puis on évalue le code retour ($?) pour ses 2 états de sortie (vrai ou faux, autrement dit 0 ou 1), qui dans un cas comme dans l'autre serait donc de type entier. Dans tout autre cas, code retour supérieur à 1, échec de l'évaluation.
#!/bin/bash 
# script_test.sh 

var=$1 
[ $var -eq 0 ] 2> /dev/null 
if [ $? -eq 0 -o $? -eq 1 ] 
then 
 echo "La chaîne est numérique" 
fi 

Variable de type "entier"


Comme souligné en tout début d'article, il est tout a fait possible d'initialiser une variable de type "entier" grâce au shell "POSIX".

La création d'une variable de type entier doit au préalable être déclarée à l'aide de la commande "typeset -i" ou "let".

Voici donc un exemple implémentant la commande "let" pour déterminer si une variable est bien de type "entier"
#!/bin/sh 
# script_let.sh 

var=$1 

if let $var 2>/dev/null  
then 
 echo "$var numérique" 
else 
 echo "$var non numérique" 
fi 
Noter que la ligne "if let $var 2>/dev/null" aurait très bien pu s'écrire sous l'une ou l'autre de ces formes :
if let var 2>/dev/null
ou
if ((var)) 2>/dev/null

Remerciement


Je tiens à remercier lami20j pour son astuce avec la commande "expr" et surtout pour la déclaration de variable de type entier.
Publié par jipicy - Dernière mise à jour le 19 juin 2011 à 18:18 par @ntoine
Ce document intitulé « Shell - Tester une variable numérique » issu de CommentCaMarche.net (CCM) (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.




Sujet 4627 - Exécuter un script shell

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Exécution d'un script


Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités :








Premièrement, rendez votre script exécutable : voir l'article Attributions et droits sous GNU/Linux

Ex:
chmod +x /home/lami20j/mes_scripts/script.sh
chmod 0755 /home/lami20j/mes_scripts/script.sh

1. Le chemin absolu


Quel que soit l'emplacement où vous vous trouvez, tapez
/home/lami20j/mes_scripts/script.sh

2. Le chemin relatif


Dans ce cas, il faut aller dans le répertoire qui contient l'exécutable
cd /home/lami20j/mes_scripts/
Pour exécuter le script, tapez
./script.sh
Si vous êtes trop descendu dans l'arborescence, il faut utiliser . et ..

Ex:

Le script se trouve toujours dans /home/lami20j/mes_scripts/
Je me trouve dans /home/lami20j/bin/perl_scripts/
Pour exécuter le script à partir de cet emplacement, je dois taper
../../mes_scripts/script.sh

3. Modifier la variable PATH


Pour faire ça, on va ajouter le chemin qui contient le script à la variable PATH
export PATH=$PATH:/home/lami20j/mes_scripts
Pour exécuter le script, tapez
script.sh
Pour plus de détails, regardez variable PATH

Note: Le Sha-Bang


Il est aussi important de définir un interpréteur pour votre script, car ce peut être un script destiné à un shell particulier (Bash, Csh, Python, Perl, etc....).
Par défaut, le script sera executé par le shell courant, mais vous pouvez forcer l'interprétation par un shell précis.
Pour cela, il suffit d'ajouter ce qu'on appelle un Sha-Bang, c'est-à-dire les caractères #! suivis du chemin vers l'interpréteur.

Exemple avec python:
#!/usr/bin/python

print "Je suis un script python!"

Lire la suite

Guide d'utilisation du Shell pour débutant »
Publié par lami20j - Dernière mise à jour le 11 novembre 2009 à 21:15 par marlalapocket




Sujet 4801 - Guide d'utilisation du Shell pour débutant

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


SHELL BASH - GUIDE D'UTILISATION - Niveau Débutant





Introduction


Appel aux membres CCM


J'invite les membres contributeurs CCM, à faire les corrections nécessaires ainsi que de modifier ou ajouter des trucs utiles pour un débutant en ligne de commande (en évitant quand même les choses trop compliquées, ce n'est pas le but de ce tuto :-)).
J'invite aussi les membres non contributeurs CCM, à me faire part d'éventuelles erreurs et de leurs suggestions par le biais de "Messages Privés".
Merci


Le but de ce tuto est de permettre à un débutant de la ligne de commande de s'en sortir de façon honorable.
Loin d'être complet, ce petit tuto vous permettra de faire connaissance avec le Shell en tant que logiciel et pas en tant que langage de programmation.

Je vais essayer d'être assez court au niveau de chaque chapitre (des explications concises et claires), en revanche ce tuto risque d'être assez long, d'où l'idée de créer plusieurs chapitres.

Il n'est pas nécessaire de parcourir le tuto du début à la fin. Vous pouvez accéder directement au chapitre qui vous intéresse en fonction de vos besoins.

II. C'est quoi le shell ?


Pour avoir une réponse plus exacte je vous recommande de visiter ce site SHELL

Le shell c'est un programme qui se trouve dans le répertoire /bin.

On distingue plusieurs shells
- le /bin/sh   shell Bourne
- le /bin/bash shell Bourne Again SHell
- le /bin/csh  C shell 
- le /bin/ksh  Korn shell
- le /bin/tcsh C shell amélioré
- le /bin/zsh/ Z shell


La suite de ce tutoriel traite uniquement shell du shell bash qui est le shell par défaut pour les distributions GNU/Linux.

Le shell permet d'exécuter des commandes, d'explorer l'arborescence du système, de créer, d'éditer et de supprimer des fichiers, etc.

III. Comment accéder à la ligne de commande


Pour accéder à la ligne de commande, il est possible d'utiliser un terminal (xterm, kterm, gterm) ou encore konsole.

kterm - est un terminal émulateur multilingue basé sur le xterm.
Les différences principales entre kterm et xterm sont :

Pour ce faire, deux possibilités sont offertes :

IV. Les consoles virtuelles


La console virtuelle (tty1 à tty6) est un écran noir où une invite de commande apparaît, de la forme login :

Depuis l'interface graphique, il est possible de se connecter à une console virtuelle en utilisant la combinaison de touches Ctrl+Alt+FN, où N est un chiffre de 1 à 6

Exemple : Accéder à la console 3 depuis l'interface graphique


CTRL+ALT+F3

Une fois dans une console virtuelle, la navigation entre les différentes consoles virtuelles se fait avec la combinaison de touches Alt+FN, où N est un chiffre de 1 à 6

V. Connexion dans une console virtuelle


A l'invite login:, saisir l'identifiant (login) de l'utilisateur, puis valider en appuyant sur Entrée, l'invite Password: s'affichera. Saisir le mot de passe de l'utilisateur et valider.


Exemple:



VI. L'invite de commande du shell après la connexion


L'invite de commande (ou prompt) du shell a en général la forme suivante :

nom@machine ~ $

Si au lieu de $ le signe # apparaît, alorsvous êtes connecté en tant que superutilisateur (root).
Gardez à l'ésprit que les systèmes Gnu/Linux utilisent par convention # pour root et $ pour un utilisateur autre que root.
Ce comportement peut être changé en modifiant la variable d'environnement PS1, mais cela est vivement déconseillé!

VII. Revenir au mode graphique depuis une console virtuelle


Pour revenir au mode graphique depuis une console virtuelle, utiliser la combinaison de touches ALT+F7

VIII. L'environnement shell


Après connexion, l'utilisateur est connecté dans son environnement. Cela signifie que le shell met à sa disposition des variables d'environnement, c'est-à-dire un conteneur mémoire dans lequel des données sont stockées.
Pour afficher le contenu d'une variable d'environnement, la commande echo $NOM_VARIABLE peut être utilisée.

Le nom des variables d'environnement est par convention en majuscules, il est donc nécessaire de respecter la casse.

IX. Variables d'environnement à connaître


HOME, USER, GROUPS, UID, PWD, SHELL, PATH, HOSTNAME

Exemple d'affichage :




La commande set permet d'afficher les variables et leur contenu.


X. Fichiers de configuration


Au moment de la connexion, dans une console virtuelle ou à l'ouverture d'un terminal en mode graphique, le shell utilise des informations qui se trouvent dans certains fichiers (.bashrc, .bash_profile, etc)



Le comportement du shell peut être modifié en éditant ces fichiers.
Le fichier .bashrc est par exemple utilisé dans le chapitre sur les alias.

Pour ce qui est de la configuration de votre shell vous devez attendre un peu, ça ne sera pas pour tout de suite. Vous allez apprendre à le faire avec le temps, donc ne soyez pas si impatients.

XI. Pourquoi utiliser la ligne de commande ?


Beaucoup de solutions sont données en ligne de commande, non pas que GNU/Linux n'ait pas d'interface graphique, mais pour certaines tâches, l'utilisation de la ligne de commande s'avère bien plus pratique et plus puissante que la fameuse souris.

XII. Notions de commande


Une commande est un fichier exécutable. L'exécution d'une commande peut être différente suivant le cas.
Les commandes utilisées dans ce chapitre sont données à titre d'exemple, donc ne vous obstinez pas à les comprendre si jamais vous aviez du mal avec certaines d'entre elles. Les commandes de base sont détaillées ultérieurement.

Exemple : la commande ls


La commande ls affiche le contenu d'un répertoire. Voir man ls pour plus de détails.

XIII. Où se trouvent les commandes ?


Les commandes que vous pouvez exécuter depuis votre terminal se trouvent dans certains répertoires de votre système.

La variable PATH (en français : "chemin") contient une liste de répertoires qui contiennent les commandes accessibles. Pour avoir accès à toutes les commandes il faut généralement être root.

Pour trouver l'emplacement d'une commande, on utilise "whereis" (en français "où est") :


ou encore "which" (en français "lequel•laquelle•lesquels•lesquelles•que•qui•ce qui•ce que•quel•quelle ") :


La différence entre whereis et which

Exemple : recherche de l'existance de la commande iptables avec which


1. l'utilisateur yogi cherche si la commande iptables existe sur le système, le résultat pour lui est NON


2. on vérifie en tant que root


En réalité la commande iptables existe sur le système dans /sbin. Le répertoire /sbin ne se trouvant pas dans le PATH d'utilisateur yogi, c'est normal que which ne retourne pas un résultat.
En bref whereis est plus rassurante.

XIV. La documentation (les pages "man")


Accéder à la documentation en ligne de commande
man commande
man N commande
N - le numéro de la page man (vous le verrez en haut à gauche)
En règle générale dans la partie SEE ALSO d'une page de "man", vous trouverez la liste des commandes qu'il est conseillé de consulter ayant un rapport direct avec la commande dont vous lisez le manuel.

Exemples :


1. exécution de la commande man crontab


2. l'invite de commande (le prompt) va disparaître et la page man sera affichée


Regardez la partie SEE ALSO et vous remarquerez les pages qui sont conseillées de consulter. Cela veut dire qu'on peut taper :

man 5 crontab
man 8 cron

3. la touche "q" pour quitter la page man et revenir à l'invite de commande (prompt)


Pour obtenir la description succincte d'une commande, on va utiliser l'option "-f"
man -f commande
whatis commande

Pour connaître les rubriques qui contiennent dans leur présentation un mot clé, l'option "-k" :
man -k commande

XV. La structure d'une page de man


COMMAND(1)        Manuel de l'utilisateur Linux        COMMAND(1)

NAME
     commande - résumé de l'action de la commande

SYNOPSYS
    <syntaxe complète de la commande>

DESCRIPTION
    Des explications concernant l'exécution de la commande

OPTIONS
    Liste des options disponibles et ce qu'elles font

FILES
    Les fichiers utilisés par la commande 

SEE ALSO
    commande_cousine(1), commande_frere(5), etc.

BUGS
    les bugs existants dans la commande

AUTHOR
    Le nom de l'auteur

XVI. Quelques règles pour comprendre SYNOPSYS et/ou OPTIONS


- Tout texte isolé, sans [] (crochet), {} (accolade), <> (chevron), est à taper tel qu'il apparaît
- le texte entre crochets [] est facultatif
- le texte entre accolades {} contient les choix à faire.
  les choix sont séparées par | (pipe) ou par une virgule ,
  commande -{a|b} veut dire commande -a ou commande -b mais pas commande -ab
- le texte entre chevrons <> doit être remplacé par le texte approprié
- les parenthèses (...), utilisées pour les paramètres tels que les noms de fichiers
- les crochets [] et les chevrons <> peuvent être combinés 
  [<nom_fichier>] - facultatif mais si vous les utilisez alors il faut écrire le nom du fichier
- les crochets [] et les accolades {} peuvent être combinés
  [--option={a|b|c}]

XVII. Commandes de base


cat     - Lit (concatène) un ou plusieurs fichier(s), affichage sur la sortie standard
cd      - ChangeDirectory, change de répertoire
chmod   - CHangeMODe - change le mode d'accès (permissions d'accès) d'un ou plusieurs fichier(s)
chown   - CHangeOWNer - change le propriétaire d'un ou de plusieurs fichier(s)
cp      - copier des fichiers
crontab - planification de tâches
cut      - Retire des parties précises de texte dans chaque ligne d'un fichier
date    -Affiche la date selon le format demandé
dd      - DevicetoDevice  - Recopie octet par octet tout ou partie du contenu d'un périphérique (habituellement de stockage) vers un autre péripherique.
df      - affichage de la quantité d'espace libre disponible sur tous les systèmes de fichiers
du      - DiksUsage - l'utilisation de disque
echo    - Affiche du texte sur la sortie standard (à l'écran)
exit    - arrête l'exécution du shell
find    - recherche de fichiers
fsck    - FileSystemChecK - vérification d'intégralité de système de fichiers
grep    - recherche dans un ou plusieurs fichiers les lignes qui correspondent à un motif
groupadd- Ajouter un groupe d'utilisateurs
gunzip  - décompression de fichiers
gzip    - compression de fichiers
head    - affiche les premières lignes (par défaut 10) d'un fichier
help    - affiche une aide sur les commandes internes de bash
kill    - envoyer un signal à un processus
less    - programme d'affichage à l'écran
ln      - création de liens
ls      - liste le contenu des répertoires
man     - affiche les pages de manuel
mkdir   - MaKeDIRectory - crée un répertoire
mkfs    - MaKeFileSystem - création de systèmes de fichiers
more    - programme d'affichage à l'écran
mount   - monter un système de fichiers
mv      - déplacer, renommer un fichier
ps      - affiche les processus en cours d'exécution
pwd     - Print name of current/working directory - affiche le chemin complet du repertoire courant
rm      - suppression de fichiers
rmdir   -Remove empty directories - suppression d'un dossier vide
tail    - affiche les 10 dernières lignes d'un fichier
tar     - création d'archives
su      - Substitute User identity ou Switch User - prendre l'identité d'un utilisateur
uname   - Affiche des informations sur le système.
useradd - ajouter un utilisateur
whereis - localiser une commande

XVIII. Exécution d'une commande


Il y a plusieurs façons d'exécuter une commande.

Une commande peut être exécutée en arrière plan en utilisant l'esperluette (&) après le nom de la commande.
L'exécution d'une commande en arrière plan permet de redonner la main au shell après l'exécution.

Exemple: lancement de firefox depuis la ligne de commande



XIX. Changer d'identité (changer d'utilisateur)


Depuis votre shell vous avez la possibilité de prendre l'identité d'un autre utilisateur existant sur votre système, y compris l'utilisateur "root".

Pour faire cela vous avez à votre disposition la commande su ou su -
Regarder utiliser la commande su pour plus de détails.



XX. La racine


Dans les systèmes de la famille Unix, la racine représente le sommet de l'arborescence des répertoires.
Elle est représentée par le caractère / (slash) et signifie "root" (racine en français)

Tous les répertoires de votre système sont liés à la racine de façon directe ou indirecte.

XXI. Les répertoires "." et ".."





XXII. Où je suis ? (position dans l'arborescence)


Une chose très importante à savoir quand on est connecté dans un shell, c'est de savoir où on se trouve dans l'arborescence

La commande pwd (PrintWorkingDirectory) affiche votre localisation dans l'arborescence.


XXIII. Le chemin absolu


Le chemin absolu représente l'arborescence complète de fichiers, en partant de la racine

Exemple :


Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user/ascii

Le chemin absolu vers b.txt est /home/user/doc/text/b.txt


Quelque soit votre localisation dans l'arborescence l'utilisation du chemin absolu est le moyen le plus sûr pour accéder au fichier désiré.

XXIV. Le chemin relatif


Le chemin relatif pour accéder à un fichier c'est l'arborescence rapporté à votre localisation dans le shell.
On utilise les notations . et/ou ..

. nous permet de descendre dans l'arborescence du répertoire courant
.. nous permet dans un 1er temps de monter en arborescence dans le but d'atteindre d'autres répertoires

Exemple : le répertoire courant .


Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user

Le chemin relatif vers b.txt est ./doc/text/b.txt


Exemple : le répertoire parent ..


Le fichier b.txt se trouve dans /home/user/doc/text
Vous vous trouvez dans /home/user/ascii

Le chemin relatif vers b.txt est ../doc/text/b.txt


Le répertoire ascii se trouve dans /home/yogi donc en écrivant .. je vais utiliser le répertoire parent /home/yogi comme point de départ puis ensuite je vais dans doc/text (remarqué que je n'ai pas dit /doc/text - qui aurait lié doc de la racine / )

XXV. Comment se déplacer dans l'arborescence


Pour ce déplacer dans l'arborescence utiliser la commande cd

cd /chemin/vers/répertoire

Avec pwd vous pouvez vérifier votre nouvelle localisation dans la racine


XXVI. Historique


Les commandes exécutées sont enregistrées dans un historique.
La variable HISTSIZE contient le nombre maximal des commandes à enregistrer.
Vous pouvez accéder à l'historique avec la commande history

history [n] | less

XXVII. La complétion des commandes


Tapez une commande dans un terminal n'est pas une chose toujours facile.

Malgré ça, ne vous inquiétez pas trop. Le shell vous permet la complétion des commandes.

Exemple: commande tail en utilisant le chemin absolu


- ça suppose que je dois taper /usr/bin/tail

La complétion nous permet de faire des économies en ce qui concerne l'écriture de la commande et dans le même temps la sûreté de la syntaxe.

La complétion s'obtient en utilisant la touche TAB
Pour ça on va commencer avec le 1er caractère...

ls /u + TAB + b + TAB + ta + TAB + TAB + i + TAB



C'est vrai qu'en expliquant on a l'impression que c'est long.
Rassurez vous, c'est très rapide, même si vous tapez avec un seul doigt :-)

XXVIII. Edition de fichiers (vi,vim)


L'éditeur vi

Très utile surtout quand on a un problème avec le mode graphique.

Etape I - TRÈS FORTEMENT CONSEILLE


Sauvegarde du fichier original, on utilise la commande "cp (copie) suivie du fichier source lui-même suivi du fichier cible (ici inexistant), on décide de rajouter ".original" à la fin du nom de fichier pour distinguer la sauvegarde de son fichier :


Etape II - Ouverture du fichier





Etape III - Édition du fichier


- appuyez sur la touche i pour passer en mode insertion
Dans le coin bas gauche vous verrez --INSERTION--

- utilisez les flêches (droite, gauche, haut, bas) ou Pg Suiv. et Pg Prec. pour naviguer dans le fichier

- l'insertion des caractères se fait au dessus du curseur avec un déplacement à droite du curseur

- la touche suppression permet de supprimer le caractère se trouvant au dessus du curseur


Etape IV - Fin de l'édition du fichier


Appuyez sur la touche Echap dès que vous avez fini l'édition.
--INSERTION-- va disparaître


Etape V - Enregistrement des modifications et quitter vi


- appuyez sur la touche : (vous devez les voir apparaître dans le coin en bas à gauche)
- écrivez wq (pour WriteQuit)
- appuyez sur "Entrée"


Revenir dans le terminal


Voilà pour l'édition en ligne de commande avec vi ou vim

XXIX. Les alias


L'utilisation des alias est très pratique pour les commandes longues qui sont utilisées régulièrement. Ca évite de les retaper.
L'utilisation excessive des alias peut vous faire oublier les commandes et leurs options.
A vous de gérer l'utilisation des alias.

Les alias on les écrit dans le fichier .bashrc de la manière suivante
(voir le chapitre XXVIII Edition de fichiers (vi, vim))

alias nom='commande'

Une fois le fichier /home/user/.bashrc édité, tapez
source /home/user/.bashrc

pour prendre en compte immédiatement les alias.

La commande alias affiche les alias existants

XXX. Les redirections et les pipelines


D'abord on va commencer avec une petite explication concernant les descripteurs des "entrées - sorties" :

Ces descripteurs sont numérotés comme suit :
                    0: entrée standard (STDIN) <---------------- clavier

Processus           1: sortie standard (STDOUT) ---------------> écran

                    2: sortie erreurs (STDERR) ----------------> écran

Les redirections


Ce quoi une redirection ?
C'est la possibilité de diriger le résultat d'une commande en utilisant d'autres destinations que les descripteurs standards.

Pour réaliser une redirection on utilise :

commande > fichier - redirection en mode écriture vers le fichier
le fichier est créé s'il n'existe pas
son contenu sera remplacé par le nouveau si le fichier existe déjà

commande >> fichier - redirection en mode ajout vers le fichier
le fichier est créé s'il n'existe pas
le résultat sera ajouté à la fin de fichier

commande < fichier - la commande lit depuis le fichier

Exemples de redirections :


- envoyer le contenu de fichier1 dans le fichier2
si le fichier2 existe son contenu d'origine sera supprimé, le fichier2 est créé s'il n'existe pas


- envoyer le contenu de fichier1 dans le fichier2 - mode ajout
si le fichier2 existe, le contenu du fichier1 est ajouté à la fin de fichier2, si le fichier2 n'existe pas, il sera créé


- recherche dans la racine le fichier appelé fichier.txt, les erreurs au lieu d'être envoyées sur STDERR (à l'écran) sont envoyées dans /dev/null (sorte de poubelle sans fin)


- recherche dans la racine le fichier appellé fichier.txt, les erreurs au lieu d'être envoyées sur STDERR (à l'écran) sont envoyées dans le fichiers erreur.txt


Les pipelines


commande1 | commande2  - le résultat de la commande1 est utilisé par la commande2
commande1 & commande2  - les commandes sont exécutées simultanément, commande1 s'exécutant en arrière-plan
commande1 && commande2 - si la commande1 réussi la commande2 est executée
commande1 || commande2 - la commande2 s'exécute seulement si la commande1 échoue
commande1;commande2    - les commandes sont exécutées dans l'ordre

Exemple de pipelines


- le tube | (pipe)


Dans un premier temps j'exécute perl -ne 'print unless /^\s*$/' guideshell dans le but d'afficher le fichier à l'écran, les lignes vides étant eliminées.
Au lieu d'afficher à l'écran j'utilise | pour passer le résultat à la commande wc qui va compter le nombre de lignes de ce fichier

- le parallélisme &


Les 2 commandes s'exécutent simultanément.

- la dépendance &&


Vous remarquez que dans le 1er cas les 2 commandes s'exécutent.
En revanche dans le 2ème cas j'ai fait volontairement une erreur de syntaxe pour la 1ère commande.
Le shell ne regarde même pas le 2ème commande et il s'arrête en nous disant que ech n'est pas une commande connue.

- l'alternative ||


Dans le 1èr cas vous remarquez que seulement la 1ère commande s'exécute.
Dans le 2ème cas le shell affiche une erreur pour la 1ère commande mais il exécute quand même la 2ème.

- le séquencement ;


echo a s'exécute
j'attends 1 seconde
echo b s'exécute
j'attends 2 secondes
echo c s'exécute

XXXI. Les métacaractères du Shell


Pour facilier la saisie des commandes le shell met à votre dispositon des métacaractères, appelés également caractères génériques ou jokers.

*     - correspond à n'importe quel caractère et nombre de caractère
?     - correspond à un seul caractère
[...] - correspond à un caractère se trouvant entre les crochets

Avec les crochets on peut aussi utiliser des intervalles.
[0-9]    - tout caractère compris entre 0 et 9
[a-zA-Z] - toute lettre comprise dans l'intervalle (minuscule et majuscule)

XXXII. Trucs et Astuces


cd   : revenir dans le répertoire personnel
cd - : revenir dans le répertoire précédent (uniquement si vous avez exécuter un cd)


Ctrl+l : effacer l'écran
Ctrl+c : arrêt d'une commande 
Ctrl+z : suspendre(mettre en pause) une commande
CTRL+t : corréction d'une erreur de frappe en inversant 2 lettres
Ctrl+a : aller au début de ligne
Ctrl+e : aller à la fin de ligne
Ctrl+s : interruption de la sortie de terminal (masquer la saisie)
Ctrl+q : annuler l'interruption de la sortie (afficher la saisie)
Ctrl+u : efface tout à gauche du curseur
Ctrl+w : efface le mot à gauche du curseur
Ctrl+k : efface le mot à droite du curseur
Ctrl+y : coller la saisie précédente
Ctrl+d : efface le caractère courant, si la ligne est vide deconnexion

Alt+b : se déplacer en avant, mot par mot dans la ligne de commande 
Alt+f : se déplacer en arrière mot par mot dans la ligne de commande 
Alt+d : efface le mot suivant
Alt+t : échange le mot courant avec le mot précédent
Alt+c : met en majuscule la lettre courante, tout le reste dut mot courant en minuscules, puis se deplace au mot suivant
Alt+l : met en majuscules à partir de la lettre courante jusqu'à la fin de mot, puis se deplace au mot suivant
Alt+u : met en minuscules à partir de la lettre courante jusqu'à la fin de mot, puis se deplace au mot suivant

Alt+Backspace : effacer le mot précédent (équivalent Ctrl+w)

XXXIII. Midnight Commander (alias mc)


Midnight Commander - gestionnaire en ligne de commandes et une capture d'écran

Cet utilitaire vous permet de naviguer, créer, éditer, supprimer des fichiers,etc.
Avec mc vous pouvez modifier des droits, changer de propriétaire, faire des recherches, vous connecter à un serveur ftp, etc...
mc peut être utilisé en tant qu'explorateur

XXXIV. Erreur: command not found


Lisez ce tuto (Chapitre IV.3) La variable d'environnement PATH
Une autre origine de cette erreur : vous n'avez pas respecté la casse des caractères

Exemple : Ls au lieu de ls



XXXV. Erreur: Aucun fichier ou répertoire de ce type


Erreur affichée par le shell quand vous essayez d'exécuter une commande sur un fichier qui n'existe pas dans le chemin précisé.

Solutions
- trouvez le fichier avec la commande find pour savoir s'il existe sur le disque afin, si c'est le cas, de connaître son véritable chemin.

XXXVI. Erreur: Permission non accordée


C'est un problème de droits d'accès.
Lisez ce tuto pour les droits d'accès

XXXVII. Conseils de rédaction


Le shell est très exigeant concernant la rédaction de commandes.

Les caractères qui ont un sens spécial pour le shell doivent être échappés pour obtenir le caractère littéral.

Caractères qui ont un sens spécial pour le shell :

En général il faut faire attention aux caractères non-alphanumériques.

1. sensibilité à la casse des caractères

Si la commande s'appelle ls alors soyez sûr que Ls ne va pas fonctionner.
Pareil pour le nom de fichiers et/ou répertoires.

2. l'espace

Prenons l'exemple d'un fichier qui s'appelle : mon fichier.txt

Si vous taper ls -l mon fichier.txt pour voir les attributs de ce fichier alors, prenez garde, puisque vous n'obtiendrez pas le résultat voulu.
Pourquoi?

Par ce que le Shell va lire : Afficher les attributs des fichiers "mon" et "fichier.txt"
Pour obliger le Shell à afficher ce que l'on souhaite, on va utiliser ce qu'il met à notre disposition

ls -l mon\ fichier.txt - syntaxe ok (l'antislash permet de lire l'espace comme un caractère et pas comme un séparateur d'arguments de la commande)
ls -l 'mon fichier.txt' - syntaxe ok (les apostrophes simples traite chaque caractère de façon littérale)

QUESTION : Comment puis-je lire une apostrophe simple de façon littérale entre 2 apostrophes simples ?

L'espace a aussi pour rôle de séparer les arguments en ligne de commande.

Un simple espace utilisé dans un endroit où il ne faut pas peut être fatal pour le système entier

Exemple : suppression de la racine à cause d'un simple espace


Scénario :
Le root veut supprimer un certain dossier . Pour ça il va utiliser la commande rm avec les options f (force) et R (recursif).
Le dossier à supprimmer s'appelle a_supprimer et se trouve dans /home/yogi/a_supprimer

a. commande correcte


b. commande incorrecte (erreur de frappe) => système supprimé


Explication :

Vous remarquez que dans le 2ème cas, par erreur j'ai tapé un espace entre / et home.
Que ce passe-t-il?
Le shell va croire que la commande rm doit supprimer d'abord la racine / et puis home/yogi/a_supprimer.
Je dois vous dire que vous venez d'effacer toutes les données de votre système.
Que "home/yogi/a_supprimmer" n'existe pas, on s'en f**** complétement, votre système n'existe plus.

DONC ATTENTION A CE QUE VOUS TAPER DANS LE SHELL !!!

Une solution pour éviter tout ça c'est d'UTILISER LA COMPLETION des commandes.

Si vous tapez / et ensuite la touche TAB 2 fois, plusieurs choix s'afficheront à l'écran. Normalement ce sont les répertoires de la racine : boot,bin...home...,var.
Vous n'avez qu'à ajouter un h pour home et de nouveau TAB 2 fois et ainsi de suite.

PRENEZ LE TEMPS DE LIRE CET AVERTISSEMENT POUR NE PAS REGRETER PLUS TARD!!!

Un autre exemple avec l'espace


Pour reconnaître l'espace en tant que caractère et pas en tant que séparateur de paramètres il faut le protéger (mettre un antislash devant)

Créer un fichier vide qui s'appelle "aa bb"


On remarque que le résultat obtenu n'est pas conforme à ce qu'on voulait.
On voulait avoir un seul fichier aa bb et pas le fichier aa et le fichier bb
Pourquoi a-t-on obtenu ça?
Puisque le shell, quand on a tapé
touch aa bb 
,
a compris qu'il fallait créer un fichier aa et un fichier bb

Corrigeons ça :


Maintenant vous allez dire : Mais on n'a pas créé aa bb mais aa\ bb !!!
En réalité vous avez créé aa bb
Le caractère \ permet de reconnaître l'espace en tant que caractère littéral.
D'ailleurs la commande ls -l vous montre bien l'existence de fichier aa bb

Au lieu d'antislash vous pouvez utiliser les apostrophes simples touch 'aa bb'

Que peut-on retenir de tout cela?
Chaque fois quand vous voulez utiliser des caractères non alphanumériques, tel que $, espace, \, etc. en tant que caractère littéral alors il faut les antislasher ou les mettres entre des apostrophes simples.


3. Les commandes longues qui tiennent sur plus d'une ligne

Si la commande devienne trop longue vous pouvez passer à la ligne suivante en utilisant le caractère \

XXXVIII. Exécuter un script


shell executer un script

Lire la suite

Accéder directement à un paragraphe d'une page de man »
Publié par lami20j - Dernière mise à jour le 17 novembre 2009 à 19:24 par marlalapocket




Sujet 5974 - Accéder directement à un paragraphe d'une page de man

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Accéder directement à un paragraphe d'une page de man


man commande -P 'less -p "[regex]<paragraphe>]"'


Exemple :

man bash -P 'less -p "^   Remplacement des paramètres"'
Évidemment il serait peut être utile de connaître auparavant le sommaire de la page en question afin de pouvoir accéder à sa requête encore plus facilement. Voilà qui devrait vous faciliter la chose (merci lami20j pour cet astuce) :
man bash | grep -Eo '^((|   )[a-zA-Z]).*' | less

Lire la suite

Convertir une page de man au format PDF »
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 19:30 par marlalapocket




Sujet 5975 - Convertir une page de man au format PDF

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

=Convertir une page de "man" au format "pdf"=

Avec fichier temporaire


man -t bash > bash.ps && ps2pdf bash.ps && rm -f bash.ps

Sans fichier temporaire, lecture depuis STDIN


 man -t bash | ps2pdf - > bash.pdf

Lire la suite

Screen »
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 15:09 par marlalapocket




Sujet 6037 - Screen

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Screen




Présentation


Screen est un gestionnaire de fenêtre plein écran, qui démultiplie un terminal entre plusieurs processus. Vous pouvez notamment grâce à screen reprendre une tâche en cours sur un PC en détachant le processus du terminal auquel il est lié et reprendre cette même tâche depuis un autre terminal (ou PC).

Screen interprète toutes les commandes tapées par l'intermédiaire du shell qui l'a lancé. De ce fait pour pour inter-agir directement avec son gestionnaire de fenêtre, il faudra systématiquement l'interpeller au moyen de la séquence de touches "CTRL-a" suivie d'une touche (ou d'une autre séquence de touches).

Ouverture d'une session "screen"


Pour ouvrir une session "screen" il suffit depuis un terminal (ou d'un Xterm) de taper la commande suivante :

Détacher une session "screen"


Pour détacher une session "screen" et revenir à son shell de connection, il suffit de taper :
Notez bien qu'il s'agit ici d'un "a" et d'un "d" minuscule et non d'un "A" ou d'un "D" majuscule. Les majuscules et minuscules ayant leur importance. "man screen" pour plus de détails

Reprise d'une session "screen"


Pour revenir sur sa session "screen", il suffit de taper :

Fermeture d'une session "screen"


Pour fermer une session "screen", il suffit de taper :
(La touche "\" (backslash) s'obtient par la combinaison des touches "Alt Gr+8" (le 8 du clavier alphanumérique, au-dessus et entre le U et le I))

Séparation d'une fenêtre en deux


La séparation de votre terminal en deux parties se fait en trois phases (notez que vous pouvez en répétant la procédure qui va suivre, séparer votre écran en plus de deux parties).

Scinder le terminal en deux


Passer sur la nouvelle fenêtre


Ouvrir un nouveau terminal


Sélectionner une fenêtre particulière


(si plusieurs fenêtres actives)
ou
ou
"n" est un entier.

Noter que vous ne switchez pas dans la fenêtre sélectionnée, mais que le contenu de celle-ci s'ouvre dans la fenêtre où vous vous trouvez actuellement.

Redimensionner une fenêtre


Pour modifier la taille d'une fenêtre, il suffit de faire (pour agrandir) :
Ou encore (pour diminuer) :
Ou bien encore (pour mettre toutes les fenêtres à la même taille) :
"n" est un entier.

Renommer une fenêtre


Pour renommer une fenêtre il suffit de faire :
Et d'entrer le nouveau nom destiné à la fenêtre, puis de valider par la touche <Entrée>

Exemple d'utilisation de "screen"

Lire la suite

Afficher un fichier à l'envers »
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 19:21 par marlalapocket




Sujet 6051 - Afficher un fichier à l'envers

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Afficher un fichier à l'envers


Vous connaissez tous la commande "cat" qui sert à afficher un fichier (ou à en concaténer plusieurs).

A partir de là, pour afficher un fichier à l'envers (en commençant par la dernière ligne et jusqu'à la première), il existe tout simplement la commande "tac" (cat à l'envers).




Sujet 6458 - La commande tput

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Comment gérer l'adressage du curseur




Introduction


La commande "tput" permet de gérer l'adressage du curseur et les séquences de contrôle du terminal.
Vous pourrez notamment faire une mise en page d'un script interactif (à la manière d'un formulaire par exemple) ou personnaliser votre prompt (voir à cet effet : [ Personnaliser son "prompt"].

Syntaxe


tput commande [argument...]

Exemple


Voici un petit script illustrant les possibilités de la commande "tput", pour l'adressage du curseur.

#!/bin/bash
# script_tput.sh

#### Initialisation des variables ####

#+ Mode normal
ResetColor="$(tput sgr0)"
# "Surligné" (bold)
bold=$(tput smso)
# "Non-Surligné" (offbold)
offbold=$(tput rmso)

# Couleurs (gras)
#+ Rouge
Red="$(tput bold ; tput setaf 1)"
#+ Vert
Green="$(tput bold ; tput setaf 2)"
#+ Jaune
Yellow="$(tput bold ; tput setaf 3)"
#+ Bleue
Blue="$(tput bold ; tput setaf 4)"
#+ Cyan
BlueCyan="$(tput bold ; tput setaf 6)"

#### Fin initialisation variables ####

# Effacement du terminal
clear

# Adressage du curseur ligne 0 colonne 2
tput cup 0 2
echo "Entrez les informations demandées dans le champ ayant le curseur."
# Adressage du curseur ligne 1 colonne 2
tput cup 1 2
echo "Appuyez sur Entrée pour passer au champ suivant."
# Adressage du curseur ligne 3 colonne 20
tput cup 3 30
echo "${bold}Questions/Réponses${offbold}"

# Pré-affichage des champs
tput cup 5 5
echo -e "Nom : \c"
tput cup 7 5
echo -e "Prénom : \c"
tput cup 9 5
echo -e "Age : \c"

# Facultatif
# Pré-affichage des données
tput cup 12 2
echo -e "Votre nom est : "
tput cup 13 2
echo -e "Votre prénom est : "
tput cup 14 2
echo -e "Vous avez  ans. "

#### Interaction du script ####
# Adressage du curseur ligne 5 colonne 5
tput cup 5 5
echo -e "Nom : \c"
read nom
# Adressage du curseur ligne 7 colonne 5
tput cup 7 5
echo -e "Prénom : \c"
read prenom
# Adressage du curseur ligne 9 colonne 5
tput cup 9 5
echo -e "Age : \c"
read age

#### Affichage des réponses ####
# Adressage du curseur ligne 12 colonne 2
tput cup 12 2
echo -e "${Green}Votre nom est : ${ResetColor}"${Red}$nom${ResetColor}
# Adressage du curseur ligne 13 colonne 2
tput cup 13 2
echo -e "${Green}Votre prénom est : ${ResetColor}"${BlueCyan}$prenom${ResetColor}
# Adressage du curseur ligne 14 colonne 2
tput cup 14 2
echo -e "${Green}Vous avez ${Yellow}$age ${Green}ans. ${ResetColor}"
# Adressage du curseur ligne 20 colonne 0
tput cup 20 0

Screenshots


Écran d'accueil



Saisies



Affichage final


Lire la suite

Magic Keys »
Publié par jipicy - Dernière mise à jour le 17 novembre 2009 à 13:58 par marlalapocket




Sujet 6459 - Magic Keys

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Quand le système se gèle




Introduction


Il arrive parfois que le système se gèle et ne réponde plus du tout à aucune sollicitation (clavier/souris), et la seule solution qui vient à l'esprit (réflexe Windowsien sûrement), c'est de presser la touche "reset".

Mais comme nous allons le voir, il existe tout une série de combinaison de touches qui permettent (la plupart du temps) d'arrêter notre système avec un minimum de risque, et à la limite, de restreindre la perte de données. C'est ce qu'on appelle les "Magic Keys".

Pré-requis


Bien entendu pour pouvoir mettre en pratique ces combinaisons magiques, il faut que cette option soit compilée dans le noyau. Commençons donc par vérifier cette condition.
Ouvrez un terminal et tapez la commande suivante :
grep "CONFIG_MAGIC_SYSRQ" /boot/config-$(uname -r)

La sortie doit ressembler à :
CONFIG_MAGIC_SYSRQ=y

Vous l'avez deviné, "y" pour "yes" (oui en français ;-)) )

Mais ce n'est pas tout. Si dans une distribution comme Mandriva l'option est activée par défaut, ce n'est pas le cas de toutes les autres. Il faut donc vérifier que l'option est bien activée. Pour ce faire, taper dans un terminal :
cat /proc/sys/kernel/sysrq

qui doit retourner la valeur "1".
Dans le cas contraire (retour de la valeur "0"), procéder comme suit pour l'activer (en tant que "root") :
echo "1" > /proc/sys/kernel/sysrq
On peut aussi utiliser la commande sysctl au lieu d'echo
sysctl -w kernel.sysrq="1"
Il y a pourtant un inconvénient.
La modification effectuée avec echo ou sysctl sera perdu au redémarrage du système.
Pour que la configuration soit permanente il faut éditer le fichier /etc/sysctl.conf soit en utilisant un editeur de texte et ajouter la ligne kernel.sysrq=1 soit en utilisant la commande
echo 'kernel.sysrq=1' >> /etc/sysctl.conf

Avant d'en arriver là


Lorsque le système se gèle (on supposera qu'on est dans une session X) et avant de mettre en oeuvre l'emploi des touches magiques, si toutefois votre clavier est encore actif, essayez d'abord de :

Si toutes ces tentatives ont échoué, alors il est temps de faire appel aux "Magic Keys".

Les Magic Keys


Les Magic Keys (ou touches SysReq) requièrent l'emploi d'une combinaison de trois touches à la fois.
La touche "ALT" (à gauche de la barre d'espacement, à ne pas confondre avec la touche "ALT Gr"), la touche "SysRq" (System Request), cette touche n'est rien d'autre que la touche appelée et désignée par "Impr écran syst" (en haut à droite des touches F1 à F12), et enfin d'une troisième touche parmi les lettres suivantes :

Il faut bien comprendre que l'emploi des Magic Keys constitue une séquence, que ces combinaisons de touches doivent être employées dans un ordre bien précis :

Raw, tErm, kIll, Sync, Umount, reBoot (REISUB)

Note : Voici une phrase mnémotechnique pour se rappeler l'ordre de la séquence (en anglais) : "Raising Elephants Is So Utterly Boring"

Lire la suite

Le regroupement de commandes »
Publié par jipicy - Dernière mise à jour le 20 avril 2010 à 14:15 par le hollandais volant




Sujet 6555 - Le regroupement de commandes

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Accolades et parenthèses


Introduction


Les accolades et les parenthèses permettent le regroupement de commandes.
Avec des accolades, les commandes sont exécutées par le shell courant, alors qu'avec les parenthèses elles sont exécutées par un sous-shell, appelé aussi shell fils (fork).

Syntaxe


Notes :

Utilisation


Le regroupement de commandes sert principalement à :

Exemple


Voilà un exemple qui j'espère aidera à mieux cerner l'emploi des accolades et des parenthèses :
#! /bin/bash

echo -e "#############################"
echo -e "# Utilisation des accolades #"
echo -e "#############################"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "Initialisation de la variable \"v\" :\nv=\"abc\""
v="abc"
echo -e "\nDébut de l'environnement avec accolades...\n"
{
echo -e "Réaffectation de la variable \"v\" :\nv=\"123\""
v="123"
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo -e "\nChangement de répertoire : "
echo -e "cd /tmp"
cd /tmp
echo -e "\nRépertoire courant : \c"
pwd
}
echo -e "\nFin de l'environnement avec accolades...\n"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo

unset v
cd $HOME

echo -e "Appuyez sur une touche pour continuer..."
read touche

echo -e "###############################"
echo -e "# Utilisation des parenthèses #"
echo -e "###############################"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "Initialisation de la variable \"v\" :\nv=\"abc\""
v="abc"
echo -e "\nDébut de l'environnement avec parenthèses...\n"
(
echo -e "Réaffectation de la variable \"v\" :\nv=\"123\""
v="123"
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo -e "\nChangement de répertoire : "
echo -e "cd /tmp"
cd /tmp
echo -e "\nRépertoire courant : \c"
pwd
)
echo -e "\nFin de l'environnement avec parenthèses...\n"

echo -e "\nRépertoire courant : \c"
pwd
echo -e "\nAffichage de la variable \"v\" : \c"
echo -e "$v"
echo
exit

Lire la suite

Kit de survie Linux »
Publié par jipicy - Dernière mise à jour le 18 novembre 2009 à 16:25 par marlalapocket




Sujet 8386 - Kit de survie Linux

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]


Mémo des commandes usuelles


Vous trouverez ci-dessous un mémento des commandes Linux usuelles (ou pas) qu'on a tous en tête, plus ou moins, mais dont on oublie souvent un bout de syntaxe, quand ce n'est pas la syntaxe entière, et, pour certaines même, dont on avait totalement oublié l'existence, quand ne l'ignorait pas, tout simplement...

Merci à tou(te)s de compléter cette liste ainsi que celle des catégories.

Notes à l'attention des futurs contributeurs :

Notes à l'attention des lecteurs :

Sommaire





Manuel et aide


Les pages de man


Afficher la page de man d'une commande
Rechercher les pages faisant référence à un mot-clé ("mot-clé" peut être un mot simple ou le nom d'une commande)
Documentation supplémentaire avec info (pour certaines pages)

Aide en ligne


Type d'une commande (alias, mot-clé réservé au shell, fonction, commande interne ou simple fichier sur le disque)
Afficher l'aide sommaire d'une commande interne (builtin)
Afficher l'aide sommaire d'une commande externe

Opérations sur les fichiers et répertoires


Affichage


Affichage d'un fichier
Affichage page par page (touche "Espace" avance d'une page, touche "Entrée" avance d'une ligne)
Affichage ligne par ligne (flêche haut <=> flêche bas)
Afficher les 5 dernières lignes d'un fichier
Lire en temps réel les 5 dernières lignes d'un fichier
Afficher le 5 premières lignes d'un fichier
Afficher un fichier à l'envers
Numéroter un fichier en sortie
Connaitre le type d'un fichier

Lister un répertoire
Affichage récursif
Afficher les fichiers cachés
Afficher le fichier en supprimant le caractère '0'
Afficher le fichier en remplaçant le caractère '0' par "gag"

Création


Créer un fichier vide
Créer 10 fichiers vides

Créer un répertoire
Créer un répertoire et ses sous-répertoires

Redirection


Dans un fichier
Dans un fichier mais en ajoutant à la suite
À la fois à l'écran et dans un fichier
À la fois à l'écran et dans un fichier mais en ajoutant à la suite

Copier


Copier un fichier
Copier un ensemble de fichiers
Copier un répertoire

Déplacer


Déplacer un fichier
Déplacer un répertoire

Renommer


Renommer un fichier

Comparer


Comparer 2 fichiers

Comparer 3 fichiers

Trier


Trier alphabétiquement
Trier numériquement
Éliminer les doublons
Afficher uniquement les doublons

Archiver/Désarchiver


Archiver un dossier/répertoire
Désarchiver un dossier/répertoire
Lister le contenu d'une archive

Compresser/Décompresser


Compresser une archive (sans sauvegarde de l'original)
Compresser une archive (avec sauvegarde de l'original)

Décompresser une archive

Décompresser et Désarchiver


Une archive tar.gz
Une archive tar.bz2

Compter


Compter les caractères d'un fichier
Compter les mots d'un fichier
Compter les lignes d'un fichier

Rechercher


Fichiers


Rechercher un fichier
Rechercher un motif dans une arborescence ( en affichant le chemin, le nom du fichier et le numéro de ligne dans ce fichier)
Mettre la base de slocate à jour
Rechercher un fichier indexé
Un motif dans un fichier

Commandes


Localiser une commande
Rechercher les fichiers exécutables
Rechercher le nom du fichier qui sera exécuté à l'appel de commande

Utilisateurs


Qui est connecté ?
Qui est connecté et qui fait quoi ?
Qui suis-je ?
Où suis-je ?

Dépendances


Afficher les bibliothèques nécessaires à un programme

Administration système


Gestion système


Activité du système

État des processus

Taux d'occupation du disque
Taux d'utilisation du disque

Gestion des utilisateurs


Ajouter un utilisateur

Supprimer un utilisateur

Ajouter un groupe

Supprimer un goupe

Changer le propriétaire d'un répertoire

Changer son mot de passe

Changer le mot de passe d'un utilisateur

Afficher les groupes auxquels appartient un utilisateur

Information utilisateur

Réseau


Information matériel


Connaitre le module d'une carte

Plus d'infos

Liste des interfaces détectées par le noyau


Informations pour le sans-fil


Outils supplémentaires

Tests et mesures


Tester l'adresse locale
Pinger une adresse réseau
Vérifier les adresses MAC du LAN

Configuration


Configurer une adresse
Ajouter une passerelle par défaut

Empêcher le ping

Connexion


ssh
telnet
scp

Connaitre son matériel


Système


Noyau
Système d'exploitation

Processeur


Type de processeur
Informations détaillées
Charge moyenne du processeur

Mémoire


Informations détaillées
Afficher l'état

Descriptif matériel


Ressources matérielles
Liste matérielle
Liste des cartes PCI
Liste des périphériques USB
Résolution d'écran

Vérification prise en charge matérielle


Lister les codes fabricants et périphériques PCI
Coller le résultat sur "http://kmuto.jp/debian/hcl/" et cliquer sur "Check"

Périphériques inconnus (unknow) ?


Relever dans le descriptif de l'élément en question, son code "vendor" (0xXXXX) ainsi que son code "device" (0xYYYY, puis rendez vous sur le site "PCIDatabase.com" pour en déterminer le constructeur et le périphérique inconnu.

Bios


Information sur le Bios

Module


Afficher les modules chargés
Afficher la listes des modules
Charger un module
Supprimer un module
Obtenir des infos sur un module

NOTES: insmod charge un module avec partir du chemin vers son fichier. Par exemple si vous voulez charger le module machin.ko situé dans le répertoire courant, alors tapez insmod ./machin.ko
Pour le décharger: rmmod machin (sans ./ko derrière). insmod ne gère pas les dependances, donc si votre module a besoin d'un autre pour se charger, insmod ne le chargera pas pour vous. Insmod est plutôt un outil de développement.
La commande modprobe est plus intelligente. Prenant en paramètre un nom de module (sans le .ko en suffixe), elle va chercher le module dans le répertoire /lib/modules/`uname -r` et le charger ainsi que ses dépendances.

Disque dur


Table des partitions

Informations disque
(si smartmontools est installé)
Test disque

Sauvegarder la table des partitions (MBR)

Sauvegarder la table des partitions de la partition étendue

Restaurer la table des partitions (MBR)

Restaurer la table des partitions de la partition étendue

Déterminer l'UUID d'un disque (Universal Unique IDentifier)

Ajouter/retirer un périphérique de swap

CD/DVD/Graveur


Trouver l'adresse SCSI du graveur
Débloquer le graveur
Si pour une raison ou pour une autre le graveur ne répond plus à aucune commande, renvoie des messages d'erreur et refuse de s'ouvrir même en appuyant sur le bouton d'éjection, alors vous pouvez utiliser cdrdao pour le réinitialiser

Température (lm_sensors)


Recherche des capteurs
Chargement des modules
Affichage température

Multimédia


Conversion de format vidéo


avi => flv
flv => avi
wmv => avi
avi => SVCD

Capture d'écran


Avec ImageMagcik

Conversion de formats graphiques


GIF => PNG

JPG => PNG

etc.

Redimensionnement d'images


Avec ImageMagcik

Dans les exemples ci-dessous, le format d'entrée peut être un autre format que PNG, les dimensions peuvent être modifiées :

Divers


Afficher un calendrier du mois en cours
Afficher un calendrier annuel

Lire la suite

Automatiser des tâches avec init et cron »
Publié par jipicy - Dernière mise à jour le 3 novembre 2009 à 11:50 par marlalapocket




Sujet 8447 - Automatiser des tâches avec init et cron

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Sous Linux, il est facile d'automatiser des tâches, avec init pour lancer une tâche au démarrage, ou bien avec cron pour lancer une tâche à un moment précis.
Il y a plusieurs logiciels gérant les crons, ici le logiciel crontab est présenté.


Créer une nouvelle tâche


Avant tout, il faut créer un nouveau fichier qui exécutera le code que l'on veut.
Pour cela, il suffit d'ouvrir un éditeur (en tant que root), et d'enregistrer le fichier dans le dossier voulu (voir plus bas). N'oubliez pas d'indiquer l'interpréteur à utiliser au début du fichier.
Par exemple (avec bash) :
#!/bin/bash
commande;
...
Il est possible d'utiliser un autre interpréteur, en changeant simplement #!/bin/bash par l'interpréteur choisi : #!/bin/python, #!/bin/perl, etc.

Ensuite, il faut rendre le fichier exécutable :
# chmod 755 /repertoire/monfichier

Lancer une tâche au démarrage : init


Présentation


init est le premier processus, exécuté par le noyau, qui est père de tous les autres (son PID est donc 1).
Au démarrage, il lance divers scripts contenus dans /etc/init.d/ ou /etc/rc*.d/.
C'est dans le dossier /etc/init.d qu'il faut enregistrer les fichiers à lancer au démarrage.
Il faut ensuite ajouter le fichier à la liste des processus lancés au démarrage :
# update-rc.d mon-fichier defaults

Plus d'informations


Tapez dans un terminal :

Lancer une tâche à un moment précis : crontab


Présentation


cron permet de lancer une tâche régulièrement : tous les jours, toutes les semaines, toutes les heures...
Avec crontab, il y a un fichier cron par utilisateur.

Ajouter une tâche


Il existe plusieurs dossiers contenant des tâches exécutées par les crons :
Il suffit de créer un fichier dans le dossier correspondant.

Cependant, il est possible de vouloir lancer des tâches à des moments plus précis.
Pour cela, il faut créer un fichier respectant la syntaxe de crontab (voir chapitre plus bas) dans /etc/cron.d/, qui contiendra lui-même une commande ou qui exécutera un autre fichier.


Il est aussi possible de créer des tâches pour un utilisateur en particulier. Il faut éditer le fichier crontab de l'utilisateur (voir plus bas).

Syntaxe du fichier crontab


Il y a déjà beaucoup de tutoriels sur le web à ce sujet.
Voir :

Lancer une tâche pour un utilisateur seulement


Pour cela, il faut éditer son fichier utilisateur, en tapant dans une console crontab -e.
Si vous voulez créer un fichier crontab pour un autre utilisateur que l'utilisateur courant, il faut passer par la commande # crontab -u utilisateur -e.
Il faut ensuite enregistrer le fichier, sans changer son nom ou son emplacement.
Il faudra toujours passer par la commande crontab -e pour éditer le fichier.

Plus d'informations


Tapez dans un terminal :
Voir :

Cron avec une interface graphique


Il existe divers logiciels graphiques qui permettent de créer des tâches automatisées :

Lire la suite

Transformer des colonnes en lignes dans un fichier »
Publié par Ssylvainsab - Dernière mise à jour le 17 novembre 2009 à 15:12 par marlalapocket




Sujet 13380 - Transformer des colonnes en lignes dans un fichier

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Différents outils de Linux sont très doués pour travailler avec des lignes, mais pas avec des colonnes (c'est leur rôle) Sed, Awk, Grep, etc.

Cependant, il peut arriver pour X raisons que vous ayez un fichier où les données sont à lire en colonnes

Un exemple simple:
$ cat in.txt
2008-09-21|2008-09-22|2008-09-23
Dimanche|Lundi|Mardi

Solution


Voici une méthode "simple" pour transformer ce fichier en un fichier de 3 lignes de deux colonnes (date|nom du jour)
$ split -l1 in.txt tmp_
$ sed -i 's/|/\x0A/g' tmp_
$ paste -d'|' tmp_* >out.txt
$ rm -f tmp_*
$ cat out.txt
2008-09-21|Dimanche
2008-09-22|Lundi
2008-09-23|Mardi
Jetez un oeil aux pages man de split et paste, ce sont deux commandes simples, mais Ô combien pratiques :-)

Limitations

Lire la suite

La gestion du réseau avec le Shell de Linux »
Publié par asevere - Dernière mise à jour le 10 novembre 2009 à 16:29 par marlalapocket




Sujet 29850 - La gestion du réseau avec le Shell de Linux

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Voici quelques commandes utiles pour la gestion du réseau sous Linux :

ping [-n] machine : Envoie un ping à une machine (-n : sans DNS)

traceroute [-n] machine : Fait un traceroute vers une machine (-n : sans DNS)

netstat [-n] : Affiche l'usage du réseau par les processus

netstat [-n] -a : Idem, avec l'affichage des processus serveurs

fuser, fstart, lsof : Liste détaillée de l'usage des fichiers et du réseau

ifconfig -a : Affiche la configuration des interfaces réseaux

ifconfig interface IP masque : Configure une interface réseau

route [-n] show : Affiche la table de routage (-n : sans DNS)

route [-n] add route [gw] passerelle : Ajouter une entrée de routage [gw uniquement]

route add default [gw]passerelle : Ajoute une route par défaut [gw uniquement]

route delete default : Efface la route par défaut

hostname : Affiche et configure le nom de la machine

/etc/resolv.conf : Fichier de configuration de la résolution DNS

whois nom de domaine (whois commentcamarche.net par exemple) : Affiche les informations concernant le nom de domaine

Lire la suite

La compression et la décompression avec le Shell de Linux »
Publié par alex59fr - Dernière mise à jour le 10 octobre 2010 à 14:46 par alex59fr




Sujet 30187 - La compression et la décompression avec le Shell de Linux

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Voici quelques commandes pour compresser et décompresser vos fichiers et dossier sur Linux :

gunzip fichier.gz : Décompresser un fichier ou dossier au format .gz et le format.tgz

unzip fichier.zip : Décompresser un fichier ou dossier au format .zip

uncompress fichier.Z : Décompresse un fichier ou dossier au format .Z

zip arch.zip fichiers : Compresse un fichier ou dossier au format .zip

gzip fichier : Compresse un fichier ou dossier au format .gz

compress fichier : Compresse un fichier ou un dossier au format .Z

tar -cf arch.tar rep : Créer une archive tar du répertoire « rep »

tar -tf arch.tar : Examine le contenu de l'archive arch.tar

tar -xf arch.tar Extrait de l'archive arch.tar

tar -xf arch.tar -C /home : Décompresse un fichier ou dossier dans /home (pour les versions récentes de tar)

cd /home; tar -xf archive.tar : Décompresse un fichier ou dossier dans /home (cas général)

tar -xpf archive.tar Décompresse un fichier ou dossier en conservant le plus possible les droits (drapeaux set-UID notamment)

tar -xzf fichier.tgz : Décompresse un fichier ou dossier au format .tgz ou au format .gz (les versions récentes de tar)

gunzip fichier.tgz | tar -xf- : Décompresse un fichier ou un dossier un dossier au format tgz ou gz (toutes les versions)

tar -xjf fichier.tar.bz2 : Décompresse un fichier ou un dossier au format .tar.bz2 sur GNU

bunzip fichier.bz2 | tar -xf - : Décompresse un fichier ou un dossier au format .tar.bz2 (cas général)

Compression et Décompression sur Linux (source)

Lire la suite

La gestion des disques et des partitions avec le Shell de Linux »
Publié par alex59fr - Dernière mise à jour le 6 novembre 2010 à 20:12 par alex59fr




Sujet 30189 - La gestion des disques et des partitions avec le Shell de Linux

[ Voir ce sujet en ligne ] - [ Catégorie: Systèmes d'exploitation - Linux - Shell ]

Voici les principales commandes pour la gestion des disques & des partitions sur Linux

mount : Affiche la liste des systèmes de fichiers montés

mount device rép : Monte un système de fichiers (depuis un périphérique device) sur un répertoire

mount -t msdos
device rép : Montage d'une partition MS-DOS

df : Affiche l'espace occupé/libre sur les systèmes de fichiers montés.

fdisk device : Modification du partitionnement (MBR)

pdisk device : Modification du partitionnement (Apple Partition Map -> MacOs X & BSD)

disklabel device : Modification du partitionnement (disklabel pour BSD)

newfs device : Formatage d'une partition

mkfs device : Formatage d'une partition

/etc/fstab : Correspondance entre devices et points de montage, et indication des options de montage, permet à mount de retrouver ce que mount /var signifie

Remarque : /etc/fstab est aussi utilisé pour le montage automatique des partitions au démarrage.
Publié par alex59fr - Dernière mise à jour le 7 novembre 2010 à 17:21 par alex59fr





© Tous droits réservés 2010 Jean-François Pillou