Как выполнить выходную строку без замены команды bash?

Как выполнить выходную строку без замены команды bash?

Например, если я tshark терминал tshark и программа еще не установлена, я получу сообщение об ошибке, например:

 _some text_ sudo apt-get install tshark 

Теперь я хочу выполнить эту последнюю строку без копирования и вставки или транскрипции.

Если я попробую

 $ tshark 2> >(tail -1) sudo apt-get install tshark 

Я получу последнюю строку, которую хочу выполнить.

И если я хочу выполнить эту строку, то, конечно, подстановка команды bash работает и устанавливает все правильно:

 $ $(tshark 2> >(tail -1)) 

Но если я не использую подстановку команд bash и не связываю это с xargs как

 $ tshark 2> >(tail -1) | xargs sudo apt-get install tshark 

Мне интересно, почему трубопровод для xargs, кажется, не имеет никакого эффекта.

Но если я попробую

 $ tshark 2> >(tail -1) | xargs xargs 

sudo подскажет мне правильный пароль, а не apt-get abbort после Y / N для установки или нет.

Тот же результат возникает, если я подключаюсь к bash .

Любой ответ или подсказка приветствуются.

  • Пропустить входной файл через трубу в качестве аргумента?
  • Как передать строки с одинарными кавычками в grep?
  • Импортировать SQL-файлы с помощью xargs
  • Почему xargs -I подразумевает -L 1
  • Добавить суффикс ко всем файлам без определенного расширения и сохранить расширение файла
  • Какова цель команды xargs -I?
  • Найти, сочетание xargs и grep вызывает ошибку
  • find, xargs и mv: переименование файлов с двойными кавычками, расширение и проблема с приоритетом bash
  • 2 Solutions collect form web for “Как выполнить выходную строку без замены команды bash?”

    Ответ

    Вы не можете повторно использовать вывод команды, которая не была явно записана (трубы и т. Д.), Если вы не выполните повторную команду и не зафиксируете результат самостоятельно.

    Bash не сохраняет вывод команд в любых переменных, в отличие от того, как он хранит коды выхода команд и историю команд. У вашего терминала есть выход, и bash не беспокоится о сохранении копии для себя.

    Поэтому, если вы хотите избежать подстановки команд вместе, я собираюсь заключить, что вы не можете добраться туда отсюда.

    Опции

    Если реальный вопрос: «Как я могу легко получить вывод, который я вижу в строке выше в терминале, и пощелкать его в командной строке в виде команды без большого набора текста?» вы можете решить это несколькими способами.

    1. Используйте быстрые клавиши readline чтобы сделать команду более безболезненной.

    Например, ваш ответ на тонкое предложение @ choroba в другом месте заключается в том, что для редактирования последней команды слишком много ввода. Ярлыки readline CTRL-a и CTRL-e могут сделать редактирование последней команды (достигнутой с CTRL-p вместо UP waaaay справа) намного быстрее.

    1. Используйте терминальный мультиплексор, такой как screen или tmux . Я предпочитаю tumx . Копирование и вставка довольно безболезненны с помощью простого CTRL- CTRL- [ для перехода в режим копирования и еще нескольких клавиш VI, и вы просто скопировали строку, которую хотите прямо в следующее приглашение (с настройкой tmux с помощью CTRL- лидера ключ.

    Надеюсь, это предложит некоторые другие перспективы.

    xargs выполняет команду, xargs в аргументах, считанных со стандартного ввода. Если команда не указана, она использует echo .

    С xargs xargs первые xargs считывают команды и запускают

     xargs sudo apt-get install tshark 

    но нет больше stdin, поэтому больше аргументов не добавляется. Но, поскольку нет никакого stdin, нет также ответов на интерактивные вопросы – они читают от stdin, который связан с трубой, теперь исчерпан. Вы можете попробовать запустить apt-get с помощью --yes . (Запрос пароля работает, поскольку пароли не считываются из stdin по соображениям безопасности).

    Interesting Posts

    Интерфейс настройки NM_CONTROLLED для да, используя nmcli в CentOS 7

    Как использовать клавиши-повторы клавиш со стрелками при отключении клавиш-повторов?

    Как отключить SSLv2 и SSLv3 в ssl.conf от Apache на CENTOS 6.5?

    При каждом перезагрузке придется переустанавливать драйвер NVidia

    Как перезагрузить правила udev без перезагрузки?

    Переустановка файла tar или tar.gz в файлы меньшего размера tar / tar.gz

    Не удалось загрузить операционную систему

    Элементы в контекстном меню в Lubuntu

    Клонирование USB-накопителя в VMware с помощью partclone

    Что более эффективно, ls или ls -l?

    service vsftpd restart: не работает

    Каковы минимальные требования для запуска графического приложения?

    Как отключить сетевые интерфейсы от загрузки при загрузке без Network Manager?

    файл формата для удаления "символов

    Каков правильный способ резервного копирования древовидной структуры и метаданных файлов раздела?

    Linux и Unix - лучшая ОС в мире.