Алексей Федорчук
Эффективное использование любой командной оболочки предполагает минимизацию нажатия клавиш пальцами. Для этого существует несколько приёмов, одни из которых — общие для всех развитых командных оболочек, другие же специфичны для Zsh. К числу первых относится, например, повторение команд и аргументов.
Для повторения последней введённой команды служит удвоенный символ восклицательного знака — !!
. Например, команда
$ ls /usr/share/fonts
выведет содержимое указанного каталога:
cmap/ fira-mono/ fira-sans/ Input-Font/ …
Если же теперь ввести
$ !!
и нажать Enter, мгновенно последует такой вывод:
ls /usr/share/fonts
cmap/ fira-mono/ fira-sans/ Input-Font/
Символ !!
может быть использован как аргумент другой команды — в этом случае на его место будет подставлена предыдущая команда. Например, если по забывчивости попытаться установить какой-либо пакет от имени обычного пользователя командой
$ apt install apt-file
последует сообщение об ошибке такого содержания:
E: Не удалось открыть файл блокировки /var/lib/dpkg/lock - open (13: Отказано в доступе)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); у вас есть права суперпользователя?
Очевидно, что для установки пакета требуются привилегии администратора, которые в данной ситуации резонно разово получить командой sudo
. А чтобы не вводить вручную предыдущую конструкцию, её можно подменить !!
:
$ sudo !!
sudo apt install apt-file
[sudo] пароль для alv:
Существует и способ повторения аргументов введённых ранее команд, причём повторения последовательного. Так, если вслед за выполнением приведённой ранее команды
$ ls /usr/share/fonts
сразу же набрать в просто ls
последовательно клавишу Escape и клавишу символом точки ., то в командной строке появится тот же путь, что и ранее. Причём перед отправкой команды на исполнение его можно отредактировать, например, дописав в него следующий по вложенности подкаталог:
$ ls /usr/share/fonts/Input-Font/
По исполнении этой команды первое после набора ls
нажатие Escape+. вызовет предыдущий аргумент, второе — предпоследний, то есть /usr/share/fonts
, и так далее. Однако тут надо быть внимательным: комбинации Escape+. до лампочки, к какой команде она подставляет аргументы, и со временем в строке окажется что-то совсем не подходящее, например:
$ ls apt-file
Кстати, в приведённых выше примерах вовсе не обязательно набирать команды и тем более пути к ним целиком, поскольку существует атодополнение, о котором пойдёт речь в следующем наброске.
Моя Cintu. Оглавление