6

Приятно скопировать и вставить серию команд Bash, которые вы найдете на веб-сайте. Но в зависимости от команд иногда вы теряете несколько. Может быть, они поглощены программами, которые читают со стандартного ввода, или, возможно, есть другое объяснение.

Поэтому я иногда делаю это:

$ bash <<EOF
cmd2
...
EOF

Есть ли способ лучше? Какой-то вариант Bash? Вариант SSH? (Моя установка - это Bash, работающий на сервере Ubuntu, к которому я использую SSH со стандартного терминала OS X. Не уверен, насколько это актуально.)

РЕДАКТИРОВАТЬ

пример

В ответ на запросы о конкретном примере, вот один. Я вставил следующие четыре строки в оболочку SSH (с моего рабочего стола Snow Leopard), подключенную к стандартной Ubuntu Quantal, работающей на виртуальной машине OpenStack, в оболочке Bash.

sudo apt-get install -y r-base gdebi-core
sudo apt-get install -y libapparmor1 # Required only for Ubuntu, not Debian
wget http://download2.rstudio.org/rstudio-server-0.97.314-amd64.deb
sudo gdebi rstudio-server-0.97.314-amd64.deb

Первые две команды были выполнены (успешно), в то время как последние две, по-видимому, никогда не были получены сервером (или, по крайней мере, никогда не обрабатывались Bash).

3 ответа3

5

Вы также можете использовать что-то вроде pbpaste | bash И edit-and-execute-command (\C-x\C-e) также работает с несколькими командами.

Если для некоторых команд требуются права root, вы можете использовать sudo -v для проверки метки времени в течение 5 минут.

2

Быстрое и грязное решение - запустить это:

bash -c '<paste commands here>'

Это работает, даже если вставка содержит символы новой строки. Может произойти сбой, если вставка содержит одинарные кавычки. Если вам известны правила цитирования bash, вы сможете изменить этот метод для конкретных команд, которые вы пытаетесь запустить.

1

Я делаю такие вырезки и вставки в свой любимый текстовый редактор, названный соответствующим образом, где я могу затем тщательно искать посторонние символы и убедиться, что я буду работать так, как я ожидаю. Я категорически против вырезания и вставки фрагментов кода в интерактивную оболочку: кто знает, какие дополнительные команды могут быть выбраны операцией вырезания и вставки?

Как только в вашем текстовом файле сохранены проверенные команды, их можно выполнить с помощью встроенной команды.

source <filename>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .