Unix

bhs2007 Messages postés 13 Date d'inscription   Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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
Configuration: Linux Suse
Firefox 2.0.0.6

6 réponses

  1. 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
  2. bhs2007 Messages postés 13 Date d'inscription   Statut Membre
     
    et les autres questions?
    0
  3. 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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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