
Есть идеи, почему есть разные выходные данные. Некоторые из них вводят в заблуждение
-bash-4.2$ mkdir -p new_dir/sub_dir/under_dir
-bash-4.2$ touch new_dir/sub_dir/under_dir/file.txt
-bash-4.2$
-bash-4.2$ ls -rlt
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rlt *
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltd
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 .
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltd *
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rtlR
.:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 new_dir
./new_dir:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
./new_dir/sub_dir:
total 4
drwxrwxr-x 2 kony kony 4096 Oct 21 20:53 under_dir
./new_dir/sub_dir/under_dir:
total 0
-rw-rw-r-- 1 kony kony 0 Oct 21 20:53 file.txt
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$
-bash-4.2$ ls -rltR *
new_dir:
total 4
drwxrwxr-x 3 kony kony 4096 Oct 21 20:53 sub_dir
new_dir/sub_dir:
total 4
drwxrwxr-x 2 kony kony 4096 Oct 21 20:53 under_dir
new_dir/sub_dir/under_dir:
total 0
-rw-rw-r-- 1 kony kony 0 Oct 21 20:53 file.txt
-bash-4.2$
решение1
Я не знаю, какой вывод вы ожидали, и что вводит вас в заблуждение. Вы получили другой вывод, потому что каждый раз предоставляли другой ввод.
Соответствующие факты:
ls
без операндов работает так, как если бы единственным операндом был.
. Примечание-rltd
и т.п. являются опциями, а не операндами.- Обычно, если операнд — каталог,
ls
выводит записи в каталоге. Это особый подход, поскольку в большинстве случаев (если операнд — обычный файл, специальный файл, fifo, …)ls
просто выводит информацию об операнде. -d
отключает это особое поведение для каталогов.-R
рекурсивно выводитls
список обнаруженных подкаталогов.*
в ваших примерах был расширен вашей оболочкойls
еще до того, как был запущен.*
расширяется на все записи в текущем рабочем каталоге с именами, не начинающимися с.
. По-видимому, в вашем случае была только одна соответствующая запись в текущем каталоге:new_dir
.
Это введенные вами команды, я собрал их для удобства чтения:
ls -rlt
ls -rlt *
ls -rltd
ls -rltd *
ls -rltR
ls -rltR *
Вот что вы действительно запускаете после расширения оболочкой; соответственно:
ls -rlt
ls -rlt new_dir
ls -rltd
ls -rltd new_dir
ls -rltR
ls -rltR new_dir
Это эквивалентные команды с явными операндами; соответственно:
ls -rlt .
ls -rlt new_dir
ls -rltd .
ls -rltd new_dir
ls -rltR .
ls -rltR new_dir
А это описательные запросы (распространенные варианты -rlt
не объясняются, поскольку я понимаю, что они не являются проблемой):
ls -rlt .
- то, что находится внутри.
?ls -rlt new_dir
- то, что находится внутриnew_dir
?ls -rltd .
- что.
?ls -rltd new_dir
- чтоnew_dir
?ls -rltR .
– что находится внутри.
и все встреченные подкаталоги?ls -rltR new_dir
– что находится внутриnew_dir
и все встреченные подкаталоги?
У вас есть ответы на эти вопросы. Вопросы разные, как и ответы.