24 сентября 2013

Некоторые особенности терминальных команд в Ubuntu/Linux Mint


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




Теперь более конкретно.

Очень часто в поиске по установке каких-то программ мы находим инструкцию, состоящую из нескольких команд, которые нужно выполнить в терминале последовательно, т.е. одну за другой после завершения предыдущей (пример, просьба не выполнять):

Откройте терминал, скопируйте и выполните эту последовательность команд, на свой страх и риск:

1. Переходим в папку tmp, чтобы при следующем входе в систему после установки ядра, данные пакеты были удалены автоматически:

cd /tmp

2. Загрузка deb пакетов:

Для 32-bit (одной командой)

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-headers-3.9.6-030906-generic_3.9.6-030906.201306131535_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-headers-3.9.6-030906_3.9.6-030906.201306131535_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-image-3.9.6-030906-generic_3.9.6-030906.201306131535_i386.deb


3. После загрузки, выполните команду на их установку в системе.

sudo dpkg -i *.deb


Но можно эти же команды объединить в одну и выполнить её за один раз:

cd /tmp && wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-headers-3.9.6-030906-generic_3.9.6-030906.201306131535_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-headers-3.9.6-030906_3.9.6-030906.201306131535_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.9.6-saucy/linux-image-3.9.6-030906-generic_3.9.6-030906.201306131535_i386.deb && sudo dpkg -i *.deb

Как видно во втором варианте вся разница в объединении команд в одну  состоит в том, что данные команды следуют одна за другой в неизменном виде после пробела, двух разделительных знаков && (амперсандов) и вновь пробела. Т.е. в данном случае сдвоенный знак амперсанд && в команде даёт терминалу понять, что до тех пор пока не будет выполнена до конца предыдущая команда, не выполнять следующую и т.д. Как правило используется когда в общей команде присутствуют команды с правами администратора, а именно с sudo.

Скопируйте и выполните эти две безобидные команды раздельно:

sudo apt-get update
sudo apt-get upgrade

А теперь одной командой:

sudo apt-get update && sudo apt-get upgrade

И, как говорится, почувствуйте разницу.

Вот и всё.

Удачи.

4 комментария :

  1. Нужный пост. Описание человеческим языком очень продвигает в понимании.

    ОтветитьУдалить
  2. Кстати, в связке sudo apt-get update && sudo apt-get upgrade, лучше использовать параметр -y
    sudo apt-get -y upgrade
    Тогда программа не будет спрашивать разрешение на установление новых пакетов, а сразу их поставит.

    ОтветитьУдалить
    Ответы
    1. В данном случае речь не шла о команде sudo apt-get upgrade, как таковой, а о связке команд в одну общую команду. Поэтому думаю не стоит смешивать всё в одну "кучу". Иначе пользователь забудет зачем открыл данную страницу сайта.

      Удалить