web-dev-qa-db-fra.com

Comment actualiser le répertoire dans BASH?

J'ai un répertoire contenant des fichiers générés par le compilateur. Lors de chaque reconstruction, ce répertoire est nettoyé et, après le processus de construction, ls me fournit une sortie vide. Après avoir quitté cd du répertoire et y revenir, cela fonctionne correctement. Les questions sont:

  1. Existe-t-il un autre moyen plus élégant d’actualiser le répertoire?
  2. Que se passe-t-il lorsque des fichiers sont supprimés et recréés? Pourquoi ai-je besoin de cd pour voir le contenu réel du répertoire?
21
Roman

Votre script est probablement en train de supprimer le répertoire, et pas seulement les fichiers qui s'y trouvent. Donc, quand vous avez cd 'd dedans et que le répertoire est supprimé, vous faites ls sur un répertoire qui n'existe pas réellement.

Par cd .. et cd (directory), vous vous déplacez dans le répertoire (nouvellement créé) et les fichiers y sont comme vous le souhaitez.

La meilleure alternative consiste à ajouter le nom du répertoire à votre commande cd au lieu de lset entrer et sortir du répertoire, puis de l'exécuter à partir du répertoire parent. Donc, ls YourSubdirectory au lieu de simplement ls.

10
Kent

Il y a même un moyen plus court: cd .

42
wjr

Cela semble étrange, mais il est court et actualise le répertoire:

cd `pwd`

Notez que ce sont des ticks arrières, pas des guillemets simples autour du pwd.

10
user339088

créer un alias refresh = "cd .. && cd -" qui ouvrira un répertoire puis cd dans le répertoire précédent

si vous êtes sûr d’avoir besoin d’une liste, vous pouvez avoir

alias refresh="cd .. && cd - && ls -lrt"

une fois que les ailas sont créés, stockez l’alias dans votre fichier ~/.bashrc en faisant

alias | grep refresh >> ~/.bashrc

afin qu'il soit disponible lors de votre prochaine connexion.

2
SK176H

Ce que @Kent a dit ou: ne supprimez pas le répertoire mais seulement son contenu, vous pourrez ainsi rester dans le répertoire (sans "cd .. && cd -") et "ls" fera ce que vous attendiez.

2
ckujau

Ce serait mieux si vous ne supprimiez pas le répertoire, mais au lieu de cd ..; cd -, vous pourriez faire cd $PWD.

2
Teddy