Не комментируйте команду.
Вместо этого поместите :
впереди, а не #
. Это сделает текстовые аргументы вашей команды для нулевой утилитой :
, которая ничего не делает при запуске . Аргументы размечаются и анализируются, потому что это все еще команда, но с ними больше ничего не делается.
Бывают случаи, когда это не подходит :, в частности, когда выяснение самой команды имеет побочные эффекты. Простой пример: подстановка команды:
$ : log $(find -print -delete) --target /var/run/cache
В этом случае команда внутри $(...)
будет запущена и подставлена в аргументы :
, даже если исходная команда никогда не запустится. Менее -деструктивным случаем будет${foo:=default}
раскрытие параметра , побочным эффектом которого является присвоение значения $foo
.
Наконец, перенаправления или конвейеры по-прежнему будут иметь место:
$ : foo > outfile
$ : bar | grep x |...
в обоих случаях отправит пустой вывод в место назначения, что приведет к усечению или созданию файла или запуску последующих команд, которым может не понравиться полученный пустой ввод.
Если у вас нет особых проблем с вашей командой, это совершенно безопасно и работает в zsh , Bash и любой POSIX -совместимой оболочке (через альт -. впоследствии поведение не будет работать везде ).
Если вам нужно именно последнее слово, zsh предоставляет настраиваемые привязки клавиш и команды, которые можно использовать для управления командной строкой. Если вы bindkey '^K' kill-region
, то вы можете перейти назад до слова, Ctrl-K , чтобы стереть до начала строки, :,а затем получите безопасную команду, оставив только одно слово, которое вам нужно.