Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

#1 Le 05/04/2011, à 04:25

orAGe

commandes && , > et /dev/null ?

Salut,

j'aime bien comprendre un peu ce que je tape dans le terminal , et la , dans cette ligne trouvée la(la 2ème), je ne comprends pas ce que signifie && , > et /dev/null .

je suppose que

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AB5139

signifie que ça télécharge la clé 98AB5139 sur le serveur keyserver.ubuntu.com ,mais c'est pou la suite que je ne comprends rien ; je sais que "sudo apt-get update" c'est la mise a jour des paquets ; mais que signifie

&&

et

>

ainsi que

/dev/null

??

merci de votre aide .

Dernière modification par awass (Le 05/04/2011, à 04:30)

Hors ligne

#2 Le 05/04/2011, à 04:34

orAGe

Re : commandes && , > et /dev/null ?

et aussi , pourquoi cette clé se télécharge comme ça , et non de cette manière la ??

Hors ligne

#3 Le 05/04/2011, à 05:34

pode

Re : commandes && , > et /dev/null ?

awass a écrit :

que signifie &&

&& permet d'exécuter une deuxième commande après une première commande, à condition que la première commande se soit terminée sans erreur.
Cf. man bash

Exemple :

$ date
mardi 5 avril 2011, 05:13:37 (UTC+0200)
$ date && cal
mardi 5 avril 2011, 05:13:37 (UTC+0200)
     Avril 2011
lu ma me je ve sa di
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
$ datte && cat
Commande « datte » non trouvée, vouliez-vous dire :
 La commande « date » issue du paquet « coreutils » (main)
datte : commande introuvable

=> pas d'appel à la commande cal après l'exécution de la commande datte (qui a échouée)

awass a écrit :

que signifie >

> permet de rediriger la "sortie standard" vers un fichier, plutôt que vers le terminal dans lequl tu as tapé ta commande.
Idem : cf. man bash

Exemple :

$ date > /tmp/toto
$ cat /tmp/toto
mardi 5 avril 2011, 05:15:20 (UTC+0200)
awass a écrit :

que signifie /dev/null

Toutes les données envoyées au (pseudo) fichier /dev/null sont ignorées : elles disparaissent.
Ce fichier est donc une sorte de trou noir ou de poubelle.

Exemple :

$ date
mardi 5 avril 2011, 05:11:47 (UTC+0200)
$ date > /dev/null
$

Sur la récupération de la clé, la commande :

$ wget -q http://packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -

permet : 1) de télécharger la clé GPG avec wget, 2) d'afficher le contenu de la clé sur la sortie standard (option -O- de wget), 3) d'utiliser la sortie standard de la commande wget en tant qu'entrée standard pour la commande apt-key (via le | ; cf. man bash), 4) le - final permettant effectivement de demander à la commande apt-key de lire le fichier contenant la clé depuis l'entrée standard.

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AB513

permet : 1) de télécharger directement la clé via la commande apt-key (grâce à la "commande" adv, qui fait, derrière, appel à la commande gpg : --recv-keys est une option de gpg).
Cela suppose que la clé GPG ait été publiée sur un serveur de clés (ici : keyserver.ubuntu.com) et de connaître le numéro de la clé GPG (ici : 98AB513).

Hors ligne

#4 Le 05/04/2011, à 07:18

orAGe

Re : commandes && , > et /dev/null ?

merci pour ton explication assez complète ;

dans cette commande(la deuxieme) : je la reécrit la :

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AB5139 && sudo apt-get update >/dev/null

pourquoi mettent ils >/dev/null après la commande apt-get update ?

qu'est ce que man bash ; ça indique la totalité des commandes existantes pour le terminal ? y a il un moyen pour chercher sa commande dans man bash ? on m'avais dit de faire /mot a rechercher ,mais ça ne marche pas ni avec > ni avec && ni avec rien d'ailleurs

quand je tape la commande bash ça fait rien ,j'aurai cru que ça m'aurai ouvert un terminal ...

donc la sortie standard c'est la ou se trouve le résultat d'une commande ,et l'entrée standard ,c'est la ou se trouve les données que va traiter cette commande ? donc chaque commande a sa propre sortie et entrée standard ? qu'est ce que la sortie ou l'entrée standard ,un fichier ?

pour comprendre : je suppose que la sortie standard de la commande date est un fichier temporaire ?? je veux dire par la, qu'il s'efface tout seul ,quand on ferme le terminal ?

j'ai l'impression que tu t'y connais pas mal ; je suppose que c'est pas sur des forums que tu as appris tout ça (?) : dans des livres sur linux ? ,des réunions de passionnés ,quels sites internet ... ??

merci , passe une bonne journée .

Dernière modification par awass (Le 05/04/2011, à 07:39)

Hors ligne

#5 Le 05/04/2011, à 10:05

FRUiT

Re : commandes && , > et /dev/null ?

awass a écrit :

j'ai l'impression que tu t'y connais pas mal ; je suppose que c'est pas sur des forums que tu as appris tout ça (?) : dans des livres sur linux ? ,des réunions de passionnés ,quels sites internet ... ??

il a du commencer par man bash ^^

man bash
man cat
man wget

Ces commandes sont à taper dans ton terminal.

man, comme manual (manuel).

Sinon la commande bash, ouvre bien un nouveau shell, mais pas forcément dans une nouvelle fenêtre/onglet, ce qui fait que tu ne t'en rends pas compte. Essaye de taper dans ta console :

exit

La fenêtre va se refermer. Maintenant lance bash 5 fois, et essaye la commande exit. Il te faudra faire 5 exit pour fermer la fenêtre.


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#6 Le 05/04/2011, à 17:14

aduxas

Re : commandes && , > et /dev/null ?

awass a écrit :

y a il un moyen pour chercher sa commande dans man bash ? on m'avais dit de faire /mot a rechercher ,mais ça ne marche pas ni avec > ni avec && ni avec rien d'ailleurs.

Oui, on peut faire des recherches de chaines de caracteres sous "man".  Ca ressemble beaucoup a l'editeur "vi".  Comme on t'a dit, on initie une recherche en tapant un slash, suivi de la chaine a trouver (suivie de "entrer", evidemment)  On saute d'une occurence a l'autre en tapant "n" (next) vers le bas ou N vers le haut. /&& marche, ainsi que />.

Hors ligne

#7 Le 05/04/2011, à 19:34

pode

Re : commandes && , > et /dev/null ?

awass a écrit :

donc chaque commande a sa propre sortie et entrée standard ?

Oui

awass a écrit :

qu'est ce que la sortie ou l'entrée standard ,un fichier ?

On peut dire ça (plus précisément, ce sont des "file descriptor").

awass a écrit :

je suppose que la sortie standard de la commande date est un fichier temporaire ?? je veux dire par la, qu'il s'efface tout seul ,quand on ferme le terminal ?

On écrit dans le "file descriptor" numéro 1.
Le man de la commande bash aborde ces sujets.

awass a écrit :

j'ai l'impression que tu t'y connais pas mal ; je suppose que c'est pas sur des forums que tu as appris tout ça (?) : dans des livres sur linux ? ,des réunions de passionnés ,quels sites internet ... ??

La base (solide) vient des cours en fac.
Après, c'est l'expérience (+ de 15 ans) : stages, boulot, pas mal de bouquins, forums Internet et notre ami à tous : Google !!!

Mais il y en a pas mal d'autres qui traînent sur ce forum et qui touchent pas mal au shell.

Hors ligne

#8 Le 06/04/2011, à 06:31

orAGe

Re : commandes && , > et /dev/null ?

moi a écrit :

pourquoi mettent ils >/dev/null après la commande apt-get update ?

merci pour vos réponses

je ne comprends pas comment vous faites, moi quand je fait

/&&

ça ne réponds que

>

quand je fait

/>

ça  réponds

bash: Erreur de syntaxe près du symbole inattendu « newline »

et quand je fait

/file descriptor

ça réponds

bash: /file: Aucun fichier ou dossier de ce type

Hors ligne

#9 Le 06/04/2011, à 11:49

FRUiT

Re : commandes && , > et /dev/null ?

Ca, ce ne sont pas des commandes à  taper dans le terminal, mais des tokens à rechercher dans man bash. Le caractère / déclenche la saisie des mots à rechercher (sur la dernière ligne), donc quand tu lis /&&, cela signifie d'ouvrir le man de bash, puis déclencher la recherche en tapant / puis saisir le mot && (et valider en tapant entrée).

Pareil pour les autres commandes citées.

Je te conseille ausi de lire ça et le garder sous le coude :
tldp.org/LDP/abs/abs-guide.pdf
Version française :
abs.traduc.org/abs-fr/abs-5.3.pdf

Dernière modification par FRUiT (Le 06/04/2011, à 11:59)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#10 Le 06/04/2011, à 12:59

FRUiT

Re : commandes && , > et /dev/null ?

awass a écrit :
moi a écrit :

pourquoi mettent ils >/dev/null après la commande apt-get update ?

La commande apt-get update écrit normalement dans la sortie standard (/dev/stdout), c'est à dire à la suite de la commande tapée dans ton terminal.

Souvent, on veut exécuter une commande, sans se préoccuper de ce qui sera affiché en console, et même plus exactement, ne rien afficher intentionnellement. Dans ce cas, on redirige '>' la commande dans un 'file descriptor' ou 'descripteur de fichier' spécial appelé /dev/null. Ainsi la commande s'exécute, et l'on ne voit aucun retour dans la console.


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#11 Le 06/04/2011, à 13:25

ehmicky

Re : commandes && , > et /dev/null ?

pode a écrit :
awass a écrit :

qu'est ce que la sortie ou l'entrée standard ,un fichier ?

On peut dire ça (plus précisément, ce sont des "file descriptor").

Précisément, dans une console, ce sont des liens symboliques pointant au bout du compte vers ta console (qui est elle-même un fichier, un character special file) :

# ls -l /dev/std*
lrwxrwxrwx 1 root root 15 1970-01-01 00:00 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 1970-01-01 00:00 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 1970-01-01 00:00 /dev/stdout -> /proc/self/fd/1
# ls -l /proc/self/fd/{0..2}
lrwx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/0 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/1 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/2 -> /dev/pts/0
# ls -l /dev/pts/0
crw--w---- 1 user tty 136, 0 2011-04-06 13:21 /dev/pts/0

/dev/pts/0 est ici ma console. Par exemple, echo "Hello world" imprime sur stdout (fd1) donc utilise le fichier pointé par fd1 : ma console. Mais si je rajoute "> log.txt", alors mes file descriptors seront, le temps de l'exécution de la commande :

lrwx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/0 -> /dev/pts/0
l-wx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/1 -> log.txt
lrwx------ 1 root root 64 2011-04-06 13:21 /proc/self/fd/2 -> /dev/pts/0

et vu que echo imprime sur stdout (fd1), il utilisera alors log.txt et non la console. En d'autres termes, du point de vue technique, les redirections comme <, > ou autres ne font que modifier le fichier vers lequel pointent les file descriptors (et accessoirement aussi les droits de lecture/écriture).

Dernière modification par ehmicky (Le 06/04/2011, à 13:28)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne