`echo test?` печатает `test2`, но` ls test? 'ничего не печатает

Недавно я играл с bash, и я заметил следующее:

Сначала сделайте 2 dirs:

$ mkdir test $ mkdir test2 

Затем:

 $ echo test? 

Выходы (правильно):

 test2 

Но:

 $ ls test? 

Не выводит ничего …

Но, если вы создадите еще один каталог (test3), echo и ls работают так, как предполагалось.

Кто-нибудь знает, почему это происходит?

  • BASH: цикл через ls
  • Как имена в базе данных dircolors сопоставляются с именами в LS_COLORS?
  • Список файлов в подкаталоге с определенным разрешением
  • Как определить количество подкаталогов и файлов из команды ls -ld?
  • Настройте bash, чтобы всегда включать определенный параметр
  • Возможно ли изменить поведение команды по умолчанию?
  • Как получить то же самое с цветами, работающими как на OSX, так и на Ubuntu?
  • Почему моя петля над выходом ls не работает?
  • One Solution collect form web for “`echo test?` печатает `test2`, но` ls test? 'ничего не печатает”

    Давайте попробуем и поймем из основного.

     mkdir test touch file mkdir test1 mkdir test2 

    ? ищет один и только один символ.

    Теперь, когда мы выдаем команду ls tes? выход будет, file .

    Это сработало, потому что мы создали файл внутри каталога. Из man-страницы ls ,

     NAME ls - list directory contents 

    Тест каталога содержит file внутри, поэтому команда ls фактически перечисляет файлы, которые находятся внутри каталога.

    Теперь давайте создадим файл, как показано ниже.

     touch ramesh ls rames? ramesh 

    Причина, по которой эта команда работала, заключается в том, что ramesh является файлом, и он присутствует в текущем каталоге (в соответствии с работой ls он перечисляет содержимое каталога, а в текущем каталоге на самом деле есть файл с именем ramesh ).

    Теперь давайте создадим каталог с именем ram1 как ram1 ниже.

     mkdir ram1 ls ram? 

    Вышеизложенное ничего не дает. Это связано с тем, что в каталоге ram1 нет файлов внутри него. Теперь, если мы создаем другой каталог с именем ram2 и try, он работает, потому что он сначала проверяет, есть ли в каталоге ram1 какие-либо файлы, а затем проверяет, есть ли в ram2 какие-либо файлы. Помните, что работает над сортировкой.

    Если вы хотите больше узнать о внутренней работе, выполните команду stat .

    В этом случае stat ram? будет производить выход как,

      File: `ram1' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 805h/2053d Inode: 6743976 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2014-06-30 18:17:06.000000000 -0500 Modify: 2014-06-30 18:17:03.000000000 -0500 Change: 2014-06-30 18:17:03.000000000 -0500 
    Interesting Posts

    Как определить, работает ли программа при запуске оболочки и запустить эту программу, если она еще не запущена?

    Где хорошее место для размещения приложений, которые собираются заранее?

    использование переменных среды в файлах tmux.conf

    Удерживать несколько пробелов, содержащих аргументы в одной переменной?

    Как запустить команду перед загрузкой с помощью apt-get?

    Как определить, когда оболочка принадлежит удаленному сеансу SSH?

    Как вы: компилируете код на linux с gcc и запускаете в Windows?

    Использовать символическую ссылку для перемещения каталога, созданного пакетом .deb – что-нибудь сломается?

    Awk: расширение первого поля вдоль столбца

    вставить запятую после последней буквы

    Почему find -exec du суммируется по-разному?

    dhclient – Применение изменений конфигурации без перезагрузки

    Установка Fedora рядом с Ubuntu

    Соединение wlan перестает работать, когда запущено соединение ppp 3g

    arch Linux загружается в командной строке grub

    Linux и Unix - лучшая ОС в мире.