Unix
bhs2007
Messages postés
10
Statut
Membre
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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
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
vi est un éditeur de texte
Permet évidemment de crée ou éditer des "shell" qui est un fichier comportant un ensemble de commandes.
Permet évidemment de crée ou éditer des "shell" qui est un fichier comportant un ensemble de commandes.
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
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
$ 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
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
1. trouver les dates au format jj/mm/aa
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/082. 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/20083. trouver les groupes de 2 chiffres
lami20j@debserv:~/trash/c_exercices$ grep -Eo '[0-9][0-9] ' regex.txt 11 153. 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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
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.