Comment actualiser le répertoire dans BASH?


24

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 génération, lsme donne une sortie vide. Après avoir cdquitté le répertoire, puis y revenir, cela fonctionne correctement. Les questions sont:

  1. Existe-t-il un autre moyen plus élégant de rafraîchir le répertoire?
  2. Que se passe-t-il réellement lorsque les fichiers sont supprimés et recréés? Pourquoi dois-je cdvoir le contenu réel du répertoire?

Réponses:


10

Votre script supprime très probablement le répertoire, et pas seulement les fichiers qui s'y trouvent. Ainsi, lorsque vous y êtes cdentré et que le répertoire est supprimé, vous le faites lssur un répertoire qui n'existe pas réellement.

Par cd ..et cd (directory)vous montez et revenez dans le répertoire (nouvellement créé), et les fichiers sont là comme vous vous y attendez.

La meilleure alternative consiste cdà ajouter le nom du répertoire à votre lscommande et à l'exécuter à partir du répertoire parent au lieu d' entrer et de sortir du répertoire. Donc, ls YourSubdirectoryau lieu de juste ls.


45

Il existe même un moyen plus court: cd .


3
Intéressant. Comme le colibri, cela, logiquement, ne devrait pas fonctionner - et pourtant il semble que oui. Je suppose que vous savez que cela fonctionne parce que vous l'avez essayé. Avez-vous une documentation à ce sujet? C'est à dire, si j'étais dans l'équipe de développement POSIX / bash, je serais tenté de considérer cela comme un bug. Connaissez-vous des documents qui disent qu'il est censé fonctionner de cette façon?
G-Man dit `` Réintègre Monica ''

3
Comme le faucon, celui-ci flotte magnifiquement au-dessus des fleurs - et pourtant il dévore les colibris.
Matt Faus

Oui! si parfait
chrismarx

1
C'est la meilleure réponse.
deddebme

Ah. Je le savais! Il devait y avoir un moyen. Merci!
andersoyvind

10

Cela semble étrange, mais il est court et rafraîchit le répertoire:

cd `pwd`

Notez que ce sont des ticks de retour, pas des guillemets simples autour du pwd


2

Ce que @Kent a dit ou: ne supprimez pas le répertoire mais seulement son contenu, de cette façon vous pouvez rester dans le répertoire (sans " cd .. && cd -") et "ls" fait ce que vous attendiez de lui.


2

Il serait préférable que vous ne supprimiez pas le répertoire, mais que cd ..; cd -vous puissiez le faire cd $PWD.


2

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

si vous êtes sûr d'avoir à nouveau besoin d'une fiche, vous pouvez

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

une fois les ailas créées, stockez l'alias dans votre fichier ~ / .bashrc en faisant

alias | grep refresh >> ~/.bashrc

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


Sous Unix refreshest prêt à l'emploi.
kenorb

Qu'entendez-vous par «out-of-box»? Quand je l'ai vu, je l'ai interprété comme signifiant «standard»; maintenant je me demande ce que tu veux dire. Définissez "UNIX". Cygwin n'a pas de standard de commande "Actualiser" (OK, Cygwin manque beaucoup de choses standard dans POSIX / * nix / peu importe), et mon système Linux non plus.
G-Man dit `` Réintègre Monica ''
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.