однострочная группа команд как индивидуальная?

На снимке экрана показано большинство важных журналов из /var/log. В этом месте часто используются другие папки из других приложений, таких как samba или apache2, если вы его установили.

Для просмотра журнала в реальном времени вы можете использовать gnome-system-log или, например, использовать

 tail -f /var/log/kern.log

Все журналы могут быть легче проанализированы с помощью опции фильтра в [ f7] или с помощью grep для поиска определенного термина. Например, если бы я хотел найти ссылки на мое оборудование SiS, я мог бы ввести:

grep -i SiS /var/log/kern.log

. Большинство журналов на скриншоте само собой разумеется, вот несколько быстрых заметок:

auth.log касается всех привилегированных действий, например, когда вы используете sudo в терминале или запускаете программы gui, такие как synaptic. kern.log записывает всю активность ядра и может быть полезна для диагностики ошибок с помощью аппаратного обеспечения. dpkg.log - очень подробный отчет о установленных пакетах syslog содержит как информацию из информации о ядре, так и информацию о ОС xorg.log, содержит информацию о (в основном автоматической) настройке вашего дисплея udev, особенно полезен, так как содержит некоторые сведения о установка аппаратного обеспечения, которое может быть полезно для записи в будущем. history.log (как показано на скриншоте) от /var/log/apt и содержит историю ваших обновлений и установок.

1
задан 6 August 2013 в 21:17

4 ответа

Вы должны иметь возможность делать то, что вы имеете в виду, используя группировку команд, которая позволяет вам выполнять команды вместе, в этом случае, успешны они или нет, то есть в форме { cmd; cmd; }. Дополнительная информация о группировке команд и использовании & amp; & amp; и || логические операторы доступны в вики Bash и в справочном руководстве Bash.

Первоначально я думал, что форма, которую может использовать ваша командная строка, будет:

{ cmd1; cmd2; cmd3; }; sleep 1; { cmd4; cmd5;}

Команда sleep просто дает вам паузу и может быть удален.

Однако вы говорите, что хотите получить дополнительный возврат или подтверждение для последних двух команд, и поэтому для достижения этого вам необходимо прервать поток команд в примере выше,

Чтобы действительно остановить цепочку команд, вы можете использовать read -p....., для чего требуется вмешательство пользователя для продолжения. Вот что вы могли бы сделать:

1) Выполнить первые три команды, а затем дать пользователю возможность или не выполнить последние. Вы можете увидеть, подходит ли приведенный ниже oneliner:

Однако : Пожалуйста, замените команду id на свои собственные команды.

id; id; id; read -p "Execute final two commands? (Y/N) " ans; if [[ $ans =~ Y|y ]]; then id; id; else echo "Finished"; fi

Теперь первые три команды выполняются, а затем вам нужно нажать y и вернуться для выполнения последних двух, но все команды находятся в одной строке. Это примерно столько, сколько я могу на самом деле изобретать, так как я не совсем уверен, чего вы хотите.

2
ответ дан 24 May 2018 в 19:27
  • 1
    вы дали то, что мне действительно нужно. Спасибо. Я изменю его, как хочу. Спасибо. – Ten-Coin 7 August 2013 в 17:09

& выполняет команду слева в фоновом режиме. Если вы хотите запустить вторую команду только в том случае, если предыдущий успешно запущен, используйте

 command1 && command2

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

[ f2]
3
ответ дан 24 May 2018 в 19:27
  • 1
    Я имею в виду не общую линию. только часть линии. всего несколько команд. не все команды существовали в этой строке. – Ten-Coin 1 August 2013 в 18:57
  • 2
    @Jai: Пожалуйста, дайте более подробную информацию. Я не понимаю. – choroba 1 August 2013 в 19:26

echo "alias get = 'sudo apt-get install'" >> .bashrc & amp; & amp; & amp; & amp; & amp; & amp; bash

Просто поставьте 2 амперсанда, и он работает.

1
ответ дан 24 May 2018 в 19:27
  • 1
    Я имею в виду не общую линию. только часть линии. всего несколько команд. не все команды существовали в этой строке. – Ten-Coin 1 August 2013 в 18:57
  • 2
    вы просто пытаетесь выполнить команду echo в оболочке bash, потому что в настоящее время вы не используете bash? – Phil Lawlor 1 August 2013 в 19:25

Если вы хотите запустить их последовательно, лучшим способом будет использование двойного амперсанда &&. Это часто используется, например, при запуске sudo apt-get update && sudo apt-get upgrade.

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

Один амперсанд полезен, если вы хотите выдать программу из своего терминала, чтобы программа остается открытой, даже если активный терминал закрыт, используя, например, [F4].

1
ответ дан 24 May 2018 в 19:27
  • 1
    Я имею в виду не общую линию. только часть линии. всего несколько команд. не все команды существовали в этой строке. – Ten-Coin 1 August 2013 в 18:58
  • 2
    @Jai Не уверен, что я понимаю. Вы хотите, чтобы он запускал один, а затем дождался, пока вы подтвердите, пока он не запустит второй? – Jez W 1 August 2013 в 19:04

Другие вопросы по тегам:

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