Я маю команду, щоб убити деякі процеси, як показано нижче:
kill -9 `psu|grep MF1pp|grep -v grep|awk "{print $2}"`
команда працює чудово
>psu|grep MF1pp|grep -v grep|awk "{print $2}"
29390
29026
$>kill -9 `psu|grep MF1pp|grep -v grep|awk "{print $2}"`
$>psu|grep MF1pp|grep -v grep|awk "{print $2}"
коли я створюю псевдонім, як показано нижче, і запускаю його:
alias killaf="kill -9 `psu|grep MF1pp|grep -v grep|awk "{print $2}"`"
$> psu|grep MF1pp|grep -v grep|awk "{print $2}"
5487
5272
$>killaf
ksh: kill: bad argument count
дає вказану вище помилку.
Чи може хто-небудь сказати мені, що може стати проблемою?
Відповіді:
5 за відповідь № 1Командний рядок, за допомогою якого ви встановлюєтепсевдонім не вказано коректно. Зокрема, вбудована підкоманда зворотного виклику виконується під час налаштування псевдоніма, а не пізніше, коли ви дійсно хочете запустити псевдонім.
Спробуйте налаштувати це таким чином:
alias killaf="kill -9 `psu|grep MF1pp|grep -v grep|awk """{print $2}"""`"
редагувати: Я зафіксував котирування навколо awk
команда - це складно вставляти одиночні котирування, коли ви вже кожен цитування.
1 для відповіді № 2
Ось що для xargs це:
alias killaf="ps -fu $USER | awk "/[M]F1pp/ {print $2}" | xargs kill -9"
(неперевірені)
BTW: я не знаю, чому bash
підтримує псевдоніми. Я вважаю за краще використовувати функції:
killaf() { ps -fu $USER | awk "/[M]F1pp/ {print $2}" | xargs kill -9; }
0 для відповіді № 3
чому ви хочете використовувати псевдонім? замість цього використовуйте підпрограму. І я припускаю, що ти маєш на увазі ps
команди як я не знаю що psu
є
killmyprocess(){
ps -eo pid,comm |awk "$2~/MF1pp/{
cmd="kill -9 "$1
print cmd
# system(cmd) #uncomment to use
}"
}
-1 для відповіді № 4
Спробуйте уникнути функції $ у awk, зазвичай його потрібно уникнути, щоб воно працювало нормально:
alias killaf="kill -9 `psu|grep MF1pp|grep -v grep|awk "{print $2}"`"