Запуск команды linux по ее абсолютному пути к файлу

Честно говоря, я думаю, что | grep ''просто отлично. Вы уже использовали кучу программ в конвейере, так что не помешает еще одна. И вы уже знаете, что делает grep, так что нет никакой отладки в отношении написания какого-то «умного» фрагмента оболочки для этого.

В комментариях упоминается также | grep., что может быть еще одной возможностью. grep.не соответствует пустой строке, grep ''соответствует, поэтому выбирайте в зависимости от того, какой из них вы хотите.

Тем не менее, использование grepтаким образом может быть неочевидным для случайного читателя, поэтому в любом случае вы можете добавить комментарий о его назначении.

-2
08.09.2019, 19:15
1 ответ

Предоставление команды lsв приглашении сделает немного больше, чем просто вызов /bin/ls. Если бы lsбыл псевдонимом или функцией, вызывался бы этот псевдоним или функция. Если это не было ни тем, ни другим, и если это не было встроенным -в команде(lsочень редко является встроенным -в команде ), тогда поиск пути был бы выполнен для lsв каждом каталоге в список с разделителями:-в переменной окружения $PATH.

Будет выполнен ls, который был первым , найденным в $PATH. Потенциально это может быть ls, а не /bin/ls, если каталог, содержащий такое имя, находится раньше, чем /bin, в списке $PATH.

Использование /bin/shпозволит обойти поиски псевдонимов и функций, а также любые поиски в $PATHи вместо этого будет запускать эту команду напрямую.

Разница в цвете вывода между lsи /bin/ls, возможно, может быть объяснена тем, что lsявляется псевдонимом, который добавляет дополнительные параметры командной строки при вызове утилиты ls(проверьте с помощью alias lsили type -a lsв bash).

8
28.01.2020, 05:14

Теги

Похожие вопросы