LINUX.ORG.RU

Использовать выхлоп прошлой комманды без перезапуска последней. Кто умеет?

 , ,


0

4

Как (и где это возможно) можно использовать выхлоп предыдущей комманды без её перезапуска? Например в bash'е можно так:

~$ which pip
/usr/bin/pip

~$ nano $(!!)
nano $(which pip)
но он перезапускает (which pip) предыдущую комманду, а не просто использует её выхлоп. Кто так умеет? Как можно такое?


Переменная:

$ A=$( date ) ; echo "$A"

Временный файл:

$ FILE=$( mktemp ) ; date > "$FILE" ; cat "$FILE" ; rm "$FILE"

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

Добавлю xargs. Простой пайп с nano не сработает.

Bfgeshka ★★★★★
()

Команда, начинающаяся с !, относится к истории команд. Можно делать много интересного, не только !!, т.е. вызов последней команды. ИМХО, с выхлопом bash не работает, разве что писать его в переменную.

iVS ★★★★★
()

А теперь представьте, что предыдущей командой была, скажем, dd if=/dev/sda. Где вы предлагаете хранить её выхлоп для последующего использования?

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 3)
Ответ на: комментарий от slon

Действительно, неправильно иметь столько шеллов без полезных для полутора толстячков фич! Тебе жалко двух строк скрипта на временный файл потратить?

thriller ★★
()
Ответ на: комментарий от slon

неужели нельзя проще?

~$ nano `which pip`

// in b4 это не использование выхлопа предыдущей команды

shrub ★★★★★
()
Последнее исправление: shrub (всего исправлений: 1)

можно накатать на somelang утилитку «store», которая с аргументами «store cmd args» ведёт себя как «cmd args | tee $TMPFILE» а без аргументов аналогична cat $TMPFILE.

но потом поимев секс с логинами, сессиями, параллельными инстансами, интерактивными приложениями и лимитами махнуть рукой - проще то что надо самому направить в /tmp с запоминаемыми именами

MKuznetsov ★★★★★
()

which pip >/tmp/which_output 2>&1

cat /tmp/which_output

r0ck3r ★★★★★
()

Самое очевидное:

1. (.*)term умеет, copy+paste называется.

2. Вероятно можно что-то получить посредством script:

$ exec script -afq $TMPFILE
$ trap "cp $TMPFILE $TMPFILE.1 ; echo -n >$TMPFILE" DEBUG
$ команда1
$ cat $TMPFILE.1 | команда2

вместо последнего cat может понадобиться парсер выхлопа script, т.к. там, вероятно, «мусора» много.

Ещё 2 потенциальных способа кажутся сильно более костыльными, лень углубляться.

DonkeyHot ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.