Используйте вместо него pkill
:
alias killguake='pkill guake'
Это намного безопаснее, чем пытаться проанализировать таблицу процессов, выведенную ps
.
Сказав это, я теперь объясню, почему ваш псевдоним не делает то, что вы хотите, но на самом деле используйте pkill
.
Ваш псевдоним
alias killguake="kill -9 $(ps aux | grep guake | head -n -1 | awk '{print $2}')"
заключен в двойные кавычки. Это означает, что когда оболочка анализирует эту строку в сценарии инициализации оболочки, она выполняет подстановки команд ( $ (...)
). Таким образом, каждый раз, когда файл запускается, вместо того, чтобы давать вам псевдоним для уничтожения guake
позже, он будет давать вам псевдоним, чтобы убить процесс guake
, запущенный прямо сейчас .
Если вы перечислите свои псевдонимы (с псевдонимом
), вы увидите, что этот псевдоним выглядит примерно как
killguake='kill -9 91273'
или, возможно, даже просто
killquake='kill -9'
, если guake
не был выполняется во время запуска оболочки.
Чтобы исправить это (но на самом деле просто используйте pkill
), вам нужно использовать одинарные кавычки и экранировать $
в скрипте Awk (который теперь находится в двойных кавычках. ):
alias killguake='kill -9 $(ps aux | grep guake | head -n -1 | awk "{print \$2}")'
Одна проблема с этим подходом в целом заключается в том, что вы будете сопоставлять процессы, принадлежащие другим пользователям. Во-вторых, вы, возможно, просто найдете команду grep guake
вместо предполагаемого процесса. Другой заключается в том, что он выдаст ошибку, если процесс не был найден. Другой заключается в том, что вы вызываете пять внешних утилит для выполнения работы одной.