Unix

bhs2007 Messages postés 10 Statut Membre -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Bonjour,
j'aimerais avoir un idée sur la cmd vi
elle fait koi, elle sert a la programmation?
2)comment je peu creer un fichier ensuite mettre bonjour ds cet fichier
3)kel est le role de find et grep et kel est la diff illustré par des exemple
merci

6 réponses

sergenk Messages postés 14 Statut Membre 12
 
vi est un éditeur de texte
Permet évidemment de crée ou éditer des "shell" qui est un fichier comportant un ensemble de commandes.
0
bhs2007 Messages postés 10 Statut Membre
 
et les autres questions?
0
Ssylvainsab Messages postés 2892 Statut Modérateur 825
 
2)comment je peu creer un fichier ensuite mettre bonjour ds cet fichier
$ vi monfichier
bonjour

3)kel est le role de find et grep et kel est la diff illustré par des exemple
find sert à trouver des fichiers, grep sert à utiliser des expressions rationnelles
Exemple :
find .-name "azerty"
Dans le dossier courant, cherche un dossier dont le nom est exactement "azerty".
grep azerty[^u] monfichier
Retourne toutes les lignes du fichier "monfichier" qui contiennent "azerty", mais pas suivi de la lettre u (c'est à dire pas "azertyu")
Exemple plus compliqué :
find mondossier -iname "bla*" -exec grep ^[^r] {} \;
Dans le dossier "mondossier", cherche tous les fichiers dont le nom commence par "bla", puis pour chaque fichier affiche les lignes qui ne commence pas par la lettre r.

Si tu veux des informations sur d'autres commandes, tapes man commande
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

3)kel est le role de find et grep et kel est la diff illustré par des exemple

find

find c'est une commande qui permet de faire de recherche dans l'arborescence de système de fichiers sous les systèmes de la famille Unix et GNU/Linux

find detiens beaucoup des options.
pour que find soit utiliser de façon efficace il y a beaucoup des notions à apprendre

Avec find on peut chercher
- par nom (sensibles ou pas à la casse de caractère)
- par motif (expression régulière)
- par date
- par permissions
etc.

Avec find on peut aussi regrouper des options, exécuter des actions sur les fichiers ou répertoires trouvés, et encore beaucoup des choses que je ne vais pas les citer ici.
Lit man find pour savoir tout sur find

grep

GlobalRegularExpressionPrint
Je préfère d'utiliser le terme Regular Expression et pas Expression Rationnelle.
Il y a une vrai polémique entre Expression Régulière et Expression Rationnelle, et je ne vais pas entrer dans les détails (Perso je préfère Expression Régulière ;-)

En fait il s'agit d'un mini langage qui permet de créer de motifs en utilisant certains caractères spéciaux, qui permettrons de trouver dans un fichiers texte les occurences littérales correspondant au motif donné

Petit survol sur le langage

. - le point veut dire n'importe quel caractère
[a-z] - c'est une classe de caractère qui contient les lettres de a à z
[A-Z] - idem, mais du A à Z
[0-9] - idem, mais de 0 à 9
[^a-z]
[^A-Z]
[^0-9]
- ce sont des classe complémentaires

+ - c'est un quantificateur qui actionne sur le caractère qui le précéde dans le motif. Il reconnaît une fois ou autant de fois qu'il peut
* - idem, mais il reconnaît zéro fois, une fois ou autant de fois qu'il peut
? - c'est une caractère qui rend le caractère précédent dans le motif, facultatif

| - représente une alternative
\b représente un assertion nulle - limite de mot
\< assertion nulle - début mot
\> assertion nulle - fin mot
^ assertion nulle - début chaîne (ligne)
$ assertion nulle - fin chaîne (ligne)

A savoir que les regex (REGularEXpressions) sont utiliser par plusieurs utilitaires (grep, egrep,sed,awk, vi(vim),perl, python,php,java, etc.)
Chaque utlilitaire a son implantation des regex. Donc une regex qui fonctionne peut être avec Perl ne fonctionnera pas avec grep

Une confusion ce fait au niveau de .* qui peut avoir 2 explications, en fonctions d'environnement utiliser

Dans le shell .* veut dire un point suit de n'importe caractères et n'importe combien
Dans les regex .* veut dire n'importe quel caractère tu le reconnais zéro fois (donc une chaîne vide est acceptée), une fois ou combien de fois tu peux

Une autre chose importante avec regex c'est qu'il faut savoir les lires et savoir penser en regex.

si je mets 'lettre' comme regex alors malgré le fait qu'il s'agit de mot littéraire lettre en regex il faut penser comme ça
Nous cherchons le motif suivant
l suit de e suit de t suit de t suit de r suit de e

Un autre exemple d'interprétation ce sont les classes complémentaires de caractères
[^a-z]
- veut dire reconnaître les caractères qui ne se trouve pas dans la classe et pas ne pas reconnaître les caractères qui se trouve dans classe

L'interprétation est très importante.

Les caractères de a à z , de A à Z , de 0 à 9 et le caractères souligné (underscore) _ sont considéré des caractès mot (qui peuvent former un mot)
Et voici quelque exemples
J'ai utiliser l'option -E du grep qui permets de traiter les regex etendues et l'option -o qui permets d'afficher que les chaînes correspondant au motif (regex) proposé

Prenons un fichier comme exemple
lami20j@debserv:~/trash/c_exercices$ cat regex.txt
15/02/2008
16/02/2008
15/02/08
16/02/2008
-n'importe quoi 1234- sur cette ligne
"entre guillemets" je veux récupérer
et aussi
(entre parenthèses) je veux récupérer
foot : 11 joueurs
rugby : 15 joueurs
handball : 7 joueurs
volleyball : 6 joueurs


1. trouver les dates au format jj/mm/aa
lami20j@debserv:~/trash/c_exercices$ grep -Eo '[0-9]+/[0-9]+/[0-9][0-9]\b' regex.txt
15/02/08
2. trouver les dates au format jj/mm/aaaaa
lami20j@debserv:~/trash/c_exercices$ grep -Eo '[0-9]+/[0-9]+/[0-9][0-9][0-9]+' regex.txt
15/02/2008
16/02/2008
16/02/2008
3. trouver les groupes de 2 chiffres
lami20j@debserv:~/trash/c_exercices$ grep -Eo '[0-9][0-9] ' regex.txt
11
15
3. trouver les groupes d'un seul chiffre
lami20j@debserv:~/trash/c_exercices$ grep -Eo '[^0-9][0-9] ' regex.txt
 7
 6
lami20j@debserv:~/trash/c_exercices$
4. trouver que les chaines entre guillemets
lami20j@debserv:~/trash/c_exercices$ grep -Eo '"[^"]*"' regex.txt
"entre guillemets"
5. entre les tirets
lami20j@debserv:~/trash/c_exercices$ grep -Eo '\-[^-]*-' regex.txt
-n'importe quoi 1234-
6 entre les paranthèses
lami20j@debserv:~/trash/c_exercices$ grep -Eo '\([^()]*\)' regex.txt
(entre parenthèses)



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Re,

j'aimerais avoir un idée sur la cmd vi

regarde
http://www.commentcamarche.net/faq/sujet 7961 petit tuto sur vi vim
et
http://www.commentcamarche.net/faq/sujet 8400 raccourcis clavier vi m
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
2)comment je peu creer un fichier ensuite mettre bonjour ds cet fichier

il y a plusieurs façon de le faire

1. Utiliser un editeur de texte (en mode texte - vi, vim, emacs,nano ou graphique - gedit, kedit, xemacs,kwrite,scite)
2. Créer le fichier vide avec la commande touch et ensuite l'edtion (voir 1.)
3. Créer le fichier à la volée avec la commande echo
4. Créer le fichier à la volée avec la commande cat
5. Créer le fichier à la volée avec la commande cat et les Here Documents du Shell
etc.
0