Когда в командной строке LInux мы вводим какие-то команды и аргументы, весь вводимый текст предварительно обрабатывается оболочкой, в частности, выполняется Подстановка значений в различные выражения. Групповые символы- пример подстановки, но есть также целый синтаксис, с помощью которого подстановкой можно управлять.
Подстановка пути
(суть команды echo в том, чтобы просто вывести в консоль переданные аргументы, она удобна для проверки интерпретации оболочкой аргументов команд)
echo */usr*
echo ~
echo ~username
echo [[:lower:]]*
echo .[!.]&*
Ls -d .[!.]&* – вывести все скрытые файлы
Подстановка арифм выражений
echo $(выражение)
echo $((2+2))
+ – * / % ** (** – степень) (/ – целочисленное деление)
Выражения могут содержать вложенные
echo $($(2+2)-3)
Подстановка фигурных скобок
создает несколько текстовых строк из шаблона
echo some-{a, b , c}-thing
some – преамбула, thing – эпилог
some-a-thing some-b-thing some-c-thing
echo {1..5}
echo {Z-A}
echo {A{1,2},B{3,4}}
A1 A2 B3 B4
УДОБНО!! – Пачками создавать файлы и каталоги
mkdir {2017..2020}-{1..12}-{1..31}
Подстановка параметров
echo $USER
(при ошибке в имени переменной не выводится ошибка, но пустая строка)
Вывести список всех доступных переменных
printenv | less
Подстановка команд
Поток вывода команд, как аргумент для других команд
echo $(ls)
ls -l $(which someinterestingcomand) – получить информацию о команде не зная пути к ней
Можно использовать конвеер внутри
file $(ls /usr/bin/* | grep zip)
Экранирование
В двойных кавычках “ “ все кроме $ и \ интерпретируется как обычные символы, пробелы и переносы между слов также не будут считаться отдельными аргументами, а одним, тем что заключен в кавычки
Одиночные кавычки подавляют все подстановки, даже $ и \
\ – экранирует один символ