Псевдоним для команды для уничтожения остановленных заданий

Правильный поступок здесь должен настроить удар для запроса установку, как объяснено в ответе SamK. Я отвечу строго с точки зрения использования оболочки.

Во-первых, текст, который Вы пытаетесь захватить, находится на стандартной погрешности команды, но канал перенаправляет стандартный вывод, таким образом, необходимо перенаправить stderr к stdout.

htop 2>&1 | tail -1

Для использования вывода команды как часть командной строки используйте замену команды.

$(htop 2>&1 | tail -1)

Результат замены команды разделяется на слова, и каждое слово интерпретируется как подстановочный шаблон. Здесь это, оказывается, делает правильную вещь: это - командная строка со словами, разделенными пробелами, и нет никаких подстановочных символов.

Для оценки строки как команды оболочки использовать eval. Для обработки результата команды как строка, а не список подстановочных шаблонов поместите его в двойные кавычки.

eval "$(htop 2>&1 | tail -1)"

Конечно, прежде, чем оценить команду оболочки как этот, удостоверьтесь, что это действительно, что Вы хотите выполнить.

2
22.10.2014, 00:53
2 ответа

Попробуйте это:

alias kill_stopped="kill \$(jobs -p)"

и убить рабочие места Runnings:

kill_stopped

Если нет никаких рабочих мест, вы получаете сообщение о использовании убийства.

1
27.01.2020, 22:05

Вы были близко, но вы должны использовать отдельные кавычки, не двойные кавычки:

kill_stopped='kill `jobs -p` '

Backticks расширяются внутри двойных кавычек, поэтому он работает задания -P В то время вы определили псевдоним, а не Когда вы использовали это.

2
27.01.2020, 22:05

Теги

Похожие вопросы