/ / Unix-псевдонім не працює як очікується - unix, shell, командний рядок, псевдонім, ksh

Unix alias command не працює як очікується - unix, shell, командний рядок, псевдонім, ksh

Я маю команду, щоб убити деякі процеси, як показано нижче:

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}"`"