Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 07/02/2013, à 19:55

baba00000000

[résolu] Prendre dossier (nom) dans un chemin en bash.

Bonjour,

Je m'excuse de déranger tout le monde pour ça. Mais suis au crache de mon HDD, j'ai perdu un petit bout de script qui m'étais bien utile.
On m'avait aidé oralement et donc n'est plus trace de la solution.

Par exemple:

/home/baba/dossier/test/trucmuche

j'aimerai mettre dans une variable baba ou dossier ou test.
en fait je changeais le numéro et sa changeait le dossier.

J'espère avoir été clair. Merci beaucoup.

edit modo : passage en résolu.

Dernière modification par nesthib (Le 09/02/2013, à 02:38)


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#2 Le 07/02/2013, à 20:06

pingouinux

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

Bonjour,
Par exemple :

$ chemin=/home/baba/dossier/test/trucmuche
$ var=$(cut -d/ -f3 <<<"$chemin")

$ echo $var
baba

Hors ligne

#3 Le 07/02/2013, à 20:57

nesthib

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

avec awk :

function extraire () {
  [ $# -ge 2 ] && awk -F/ "{print \$($1+1)}" <<<"$2"
}

ou en pur bash :

function extraire () {
  [ $# -ge 2 ] && ( IFS='/' read -ra chemin <<<"$2" ; echo ${chemin[$1]} ; )
}

s'utilise en faisant :

$ extraire 3 /home/baba/dossier/test/trucmuche
dossier

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 07/02/2013, à 21:47

metalux

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

Bonjour,
Excuses moi baba00000000, mais je profites de l'occasion wink

Pingouinux, tu pourrais m'expliquer pourquoi il faut 3 <<<?
nesthib, si tu as un bon tutoriel sur awk accessible, je suis preneur.


Xubuntu 14.04 LTS sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Voyager 13.04 mise à niveau en 14.04 sur TOSHIBA  Satellite C870-196.
Faîtes la mise à jour de vos P.P.A. automatiquement

Hors ligne

#5 Le 07/02/2013, à 22:07

baba00000000

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

Tu as bien raison l'ami de poser des questions car j'avais la même.

Merci à pingouinux et nesthib pour leur réponse rapide.


http://racketiciel.info

http://racketiciel.info/petition/ Pétition qui ferra peut être changé les installations sur les pc vendu en France.

Hors ligne

#6 Le 07/02/2013, à 22:33

pingouinux

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

metalux #4 a écrit :

tu pourrais m'expliquer pourquoi il faut 3 <<<?

Il faut 3 < mais 1 seul <<< smile
Voici un extrait de man bash :

Here Strings
       A variant of here documents, the format is:

              <<<word

       The word is expanded and supplied to the command on its standard input.

Le contenu du mot à droite de <<< sert d'entrée standard à la commande.
Exemple :

$ cat <<<"Coucou  les  gens"
Coucou  les  gens

Hors ligne

#7 Le 08/02/2013, à 02:25

nesthib

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

metalux : il y a beaucoup de documentation sur awk, du long et du moins long… par exemple cette page de manuel de awk du projet GNU est exhaustive mais je ne pense pas que s'y plonger pour commencer soit forcément stimulant. Cherche plutôt à écrire des petits scripts et à lire le manuel ou à chercher des exemple lorsque tu en as besoin. Une bonne idée pour commencer peut aussi être de lire cette liste de « one liners » en awk, des mini scripts en une ligne. awk est vraiment très puissant, c'est un langage de programmation à part entière et tu peux faire aussi bien des petites commandes courtes que des scripts élaborés, je t'encourage à regarder les deux liens.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 08/02/2013, à 22:23

metalux

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

Merci pingouinux et nesthib, votre expérience et vos conseils sont une mine d'or pour moi. Par contre, l'anglais et moi... roll Effectivement, awk est très puissant d'après ce que j'ai pu voir, il y a du boulot sur la planche!


Xubuntu 14.04 LTS sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Voyager 13.04 mise à niveau en 14.04 sur TOSHIBA  Satellite C870-196.
Faîtes la mise à jour de vos P.P.A. automatiquement

Hors ligne

#9 Le 09/02/2013, à 02:37

nesthib

Re : [résolu] Prendre dossier (nom) dans un chemin en bash.

On te le dira sûrement souvent mais maîtriser un minimum l'anglais est assez indispensable pour faire de la programmation, tellement de documentations sont en anglais…


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

Haut de page ↑