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) *** mise à jour 12/10/2014 ***

#1 Le 22/09/2013, à 00:01

Nietzsche14

Script cd

Bonjour,

Je voudrais réaliser un script qui me permette de me rendre dans un dossier.
J'essaie donc cela

 cd /home/pierre/travail/info/

Le problème est que sur mon terminal, l'invite de commande n'est pas modifié. Je ne sais pas comment faire pour que ce script ait un effet sur mon terminal.

Si vous pouvez m'aider je vous en serais reconnaissant smile

Merci, au revoir.

Hors ligne

#2 Le 22/09/2013, à 00:43

tiramiseb

Re : Script cd

Salut,

Un script est exécuté dans un nouveau processus et non dans le shell en cours de fonctionnement.
Par conséquent, la commande "cd" utilisée dans un script ne se répercute pas sur le shell utilisateur.

Si tu veux exécuter le contenu d'un script au sein de ton shell en cours, il faut utiliser la commande "source" :

source script.sh

Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

En ligne

#3 Le 22/09/2013, à 03:34

nesthib

Re : Script cd

Est-il bien utile de faire un script juste pour changer de dossier ? Voici plusieurs solutions alternatives :

  • Utiliser l'autocomplétion grâce à la touche TAB : cd ~/i[tab]

  • Utiliser un alias :

    alias go='cd /home/pierre/travail/info/'

    (à placer dans le fichier ~/.bash_aliases. Puis utiliser la commande « go »)

  • utiliser une fonction s'il y a plusieurs dossiers

    function go {
    case $1 in
      tmp) cd /tmp ;;
      im) cd ~/Images ;;
      doc) cd ~/Documents ;;
      *) cd ~ ;;
    esac
    }

    Puis « go im » pour aller dans ~/Images, etc. (la fonction est à placer dans ~/.bash_aliases)

  • Une dernière solution, un peu plus élaborée et évolutive :

    function ADD {
    if [[ $1 == "-l" ]]; then
      cat ~/.CD
      return 0
    elif [ -d "$1" ]; then
      echo "$1" >> ~/.CD
    else
      echo "$PWD" >> ~/.CD
    fi
    sort ~/.CD -o ~/.CD
    }
    function CD {
      [ $# -eq 0 ] && cd ~/ || cd "$(grep -m1 -- $1 ~/.CD 2>/dev/null)"
    }

    qui te permettra de gérer dynamiquement une liste de dossiers favoris. Par exemple si tu fais :

    ADD /home/pierre/travail/info/

    Tu pourras à l'avenir te rendre dans le dossier en tapant :

    CD tra

    ou

    CD inf

    (le script cherche dans la liste des favoris le premier nom qui correspond au motif donné en argument)
    les fonctions sont à placer dans ~/.bash_aliases

J'espère que ces quelques pistes te seront utiles.


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