21

У меня есть каталог, содержащий файлы, сгенерированные компилятором. Во время каждой перестройки этот каталог очищается и после процесса сборки ls выдает пустой вывод. После того, как я cd вне каталога и затем вернусь к нему, ls работает правильно. Вопросы:

  1. Есть ли другой, более элегантный способ обновить каталог?
  2. Что на самом деле происходит, когда файлы удаляются и воссоздаются? Зачем мне нужен cd чтобы увидеть фактическое содержимое каталога?

6 ответов6

42

Есть даже более короткий путь:cd .

10

Это выглядит странно, но это коротко и обновляет каталог:

cd `pwd`

Обратите внимание, что это обратные тики, а не одиночные кавычки вокруг pwd

10

Ваш скрипт, скорее всего, удаляет каталог, а не только файлы, которые там находятся. Итак, когда у вас есть cd 'd и каталог удален, вы делаете ls для каталога, который на самом деле не существует.

С помощью cd .. и cd (directory) вы перемещаетесь вверх и обратно в (недавно созданный) каталог, и файлы там, как вы ожидаете.

Лучшая альтернатива вместо cd Инг в и из каталога, чтобы добавить имя каталога в вашу команду ls и запустить его из родительского каталога. Итак, ls YourSubdirectory вместо просто ls .

2

создайте псевдоним refresh = "cd .. && cd -", который перейдет в каталог вверх, а затем снова перейдет в предыдущий каталог

если вы уверены, что вам снова понадобится список, вы можете иметь

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

как только ailas будет создан, сохраните псевдоним в файле ~/.bashrc, выполнив

alias | grep refresh >> ~/.bashrc

чтобы он был доступен при следующем входе в систему.

2

Что сказал @Kent или: не удаляйте каталог, а только его содержимое, так что вы можете остаться в каталоге (без « cd .. && cd - »), а "ls" сделает то, что вы ожидали.

2

Было бы лучше, если бы вы не удаляли каталог, а вместо cd ..; cd - вы могли бы сделать cd $PWD .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .