В этой заметке мы познакомимся с одной интересной возможностью командной строки Linux — использование символов !$.
Зачем нужны символы !$ ?
Символы !$ заменяются в командной строке на последний аргумент (или последнюю опцию) последней выполненной команды.
То есть, например, вы выполнили какую-нибудь команду: somecommand --option1 --option2 arg1 arg2. Если в следующей команде вы будете использовать символы !$, то они автоматически заменятся на последний аргумент из предыдущей команды, то есть на arg2 в нашем примере.
Если быть более точным, то символы !$ заменяются не на аргумент, а на последнее слово в последней выполненной команде.
Под словом в данном случае понимается последовательность символов, которые командная оболочка рассматривает, как единое целое. Слова не могут содержать метасимволы, если само слово не заключено в кавычки. Метасимвол это один из следующих символов: |, &, ;, (, ), <, >, пробел или символ табуляции.
Проще всего понять, как это работает, на примерах.
Примеры
Пример 1
Предположим, вы выполнили команду mkdir, чтобы создать директорию MyDocuments.
mkdir MyDocuments
Теперь вы хотите перейти в эту директорию. Для этого можно выполнить команду:
cd !$
Символы !$ будут автоматически заменены на последнее слово предыдущей команды. В предыдущей команде у нас был всего один аргумент — это название директории. Таким образом в результате будет выполнена команда:
cd MyDocuments
Пример 2
ls -la mydir/
cd !$
!$ будет заменено на mydir/
В результате будет выполнена команда:
cd mydir/
Пример 3
ls -la -x
ls !$m
!$ будет заменено на -x. В данном случае последнее слово в команде это опция -x.
В результате будет выполнена команда:
ls -x mydir2/
Пример 4
find . -name "file1" 2>/dev/null
uptime>!$
В данном случае !$ будет заменено на /dev/null
В результате будет выполнена команда:
uptime>/dev/null
Комментарии
10:31
После "В результате будет выполнена команда:" должно быть
ls -xm