Я использовал для запуска таких команд, как: find / dev | grep sd * для вывода списка всех дисков, подключенных к моему компьютеру. Похоже, что теперь мне нужно добавить любой случайный символ перед звездой, чтобы получить такой же эффект, как показано ниже:
I проверил это на разных серверах Ubuntu 12.04 и получил тот же эффект, так что я не думаю, что это что-то случайное на моем рабочем столе. Это новое изменение, ошибка или это всегда было так, и моя память нуждается в замене?
У вас есть две проблемы:
sudo find /dev | grep sd*
работает не так, как раньше, потому что у вас есть файл или папка в вашем текущем рабочем каталоге, который вызывает глобализацию от bash. Добавьте echo
перед вашей командой, чтобы увидеть, как глобализация делает с вашей командой
echo grep sd*
Добавляя случайный дополнительный символ, глобализация больше не соответствует файлу / папке, и grep продолжает работать как ожидается.
Чтобы предотвратить слипание, вы должны поставить '...'
на срок. (Двойные кавычки также будут работать.) Это заставит grep вести себя как прежде:
sudo find /dev | grep 'sd*'
Теперь, когда регулярное выражение работает, как и ожидалось, давайте Посмотрите, что *
означает в регулярных выражениях, а не в глобальных файлах. Короче говоря, это означает «Этот последний символ ноль или n-раз», и это, скорее всего, не то, что вы хотите. Используя 'sd*'
, вы можете увидеть /dev/stdout
на выходе, так как stdout
начинается с s
, за которым следует ноль или больше d
.
В вашем случае все просто:
sudo find /dev | grep sd
должно быть все, что вам нужно.
Или, конечно, вы можете просто выполнить одну из следующих команд (которые используют шаблоны глобусов файлов, а не регулярные выражения), чтобы получить тот же вывод:
find /dev -name 'sd*'
ls -1 /dev/sd*