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

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

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

$ mkdir test $ mkdir test2 

Затем:

 $ echo test? 

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

 test2 

Но:

 $ ls test? 

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

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

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

  • что означает @ в ls -l?
  • Как использовать оператор if для изменения выходного сообщения
  • Определить количество файлов в каталоге, только глядя на `ls -ald`
  • `ls / | wc -l` указывает больше строк, чем `ls /` показывает
  • Msgstr "Показать все возможности <num>? (y или n) "для команды ls
  • Где «документально подтверждается вывод команды« ls »по вертикали»?
  • команда $ (ls / usr / bin / * | grep zip) дает мне ошибки. Что не так?
  • Необходимо проанализировать вывод ls -Al и получить имя файла или каталога
  • 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

    Как уменьшить размер initrd при компиляции вашего ядра?

    Почему некоторые процессы передают свое использование процессора другому процессу, когда он заканчивается?

    Есть ли контрольный список для того, чтобы программа «beep» работала?

    Распечатайте все «конкретные» строки в txt-файле с помощью сценария bash

    Использование именованных каналов в Bash, созданных в программе C

    тайм-аут не работает с оболочкой accumulo в сценарии bash

    Как восстановить grub после установки Windows

    удобный инструмент для измерения потребления памяти программой

    Невостребованное устройство в lshw

    Из bash, создайте два процесса и выйдите из обоих, если выйдет один из братьев

    Как отформатировать петлю bash с помощью sed, awk, grep и wc

    Почему `bash -c somecommand` иногда не оставляет процесс bash?

    Debian 8.2 зависание компьютера + сбои случайным образом

    Вырезать любую произвольную программу с помощью динамического компоновщика?

    Что это означает, что на частной странице VM нет ни одной из `rwx`?

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