%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B5%3F.png)
Если ls выводит список содержимого текущего каталога, существует ли аналогичная команда, которая выводит список содержимого не текущего каталога без использования cd?
решение1
После этого ls
просто введите путь к каталогу, который вы хотите просмотреть, и вы получите его. Представьте, что вы находитесь в своем домашнем каталоге, но хотите просмотреть /etc
. Просто запустите ls /etc
, и вы получите его.
решение2
ls
сделаю это.
Синтаксис ls
:
ls flags file-or-directory-names
За то, что я называюfile-or-directory-names
, вы можете перечислить файлы в текущем каталоге, чтобы получить список только определенных файлов. Например, ls -l foo bar
выведет информацию только о foo
и bar
(в длинной форме, как я указал флаг -l
). ls baz*go
выведет список всех файлов, имена которых начинаются с baz
и заканчиваются на go
(если есть).
Но когда вы даетеимя каталогав ls
, он перечисляет содержимоеэтот каталогвместо текущего каталога.
Итак, чтобы просмотреть содержимое /var/log
, вам просто нужно запустить:
ls /var/log
Если вы дадитеродственникпуть к каталогу -- то есть тот, который не начинается с /
--тогда он будет искать этот каталог внутри текущего каталога (так же, как он ищет файлы). Но он все равно будет перечислятьсодержаниекаталога, как вам удобно.
Кстати, иногда вы можете обнаружить, что не хотите перечислятьсодержаниекаталога, а просто перечислите каталог так же, как будет перечислен файл. Для этого вы можете передать флаг -d
. Например, это показывает /var/log
в длинной форме (не егосодержание, но /var/log
сам):
ls -ld /var/log
решение3
Увидев принятый ответ, я все еще не был удовлетворен. Как Дэниел узнал решение? Вы можете поспорить, что я сам прочитал manpage и все еще не мог понять, как.
На странице руководства ls
написано:
Описание: Вывод информации о ФАЙЛАХ (текущий каталог по умолчанию)...
Ничего полезного там нет. Тогда я проверил POSIX Programmer's Manual:
Для каждого операнда, который именует файл типа каталог, ls запишет имена файлов, содержащихся в каталоге, а также любую запрошенную связанную информацию.
Эта строка объясняет поведение команды в принятом решении. Операнд FILE
МОЖЕТ ls
быть каталогом и ls
выведет содержимое этого каталога. Именно то, что хотел OP. НО реализация в Linux может отличаться от спецификации здесь. Так что мы на правильном пути, но пока не достигли его.
Затем я поискал руководство по coreutils
пакету GNU, который ls
является частью. Вот что я нашел:
Для непараметрических аргументов командной строки, являющихся каталогами, по умолчанию ls выводит список содержимого каталогов...
Это все объясняет.