Bash для начинающих: Урок второй
Содержание
Альтернативная установка программ
В конце первой части вы научились устанавливать программы в операционных системах, основанных на Debian с помощью apt. Помимо apt существует очень много пакетных менеджеров, каждый для своей системы, рассматривать их не имеет смысла, так как у всех одинаковый функционал, меняются лишь команды.
Github
Помимо классических пакетных менеджеров вы можете использовать и другие сервисы. Если вы пользуетесь линуксом, то должны знать про сайт github.com, крупнейший в мире хостинг программ с открытым исходным кодом, которые защищены от кражи специальной лицензией. На самом сайте вы можете зайти в нужный вам репозиторий и скачать архив, в которм будут все файлы программы, затем распаковать архив и переместить его в домашнюю папку. Согласитесь, долго и неэффективно. Как раз такие действия удобнее делать из терминала. Чтобы установить программу с гитхаба, введите:
git clone https://github/com/автор/программа
Программа сразу скачается в домашнюю папку под своим названием.
Pip
Также некоторые программы можно установить с помощью пакетного менеджера pip из языка python. Для начала установите его, введя sudo apt-get install python-pip, затем введите pip install имя_программы. В основном с помощью pip устанавливаются зависимости для программ на python, однако нередко выкладываются более свежие версии определенных программ. В качестве примера можно привести proxy-сервер под названием shadowsocks.
AppImage
Вопреки распространенному мнению, в линуксе существуют универсальные монопакетные представления программ. Если говорить проще, в линуксе есть аналог .exe файлов, как в Windows. Самым популярным решением является AppImage. Представляет из себя один файл без других зависимых файлов. В посленее время все больше разработчиков собирают программы для линукс именно в виде appimage программ. Чтобы запустить такую программу, достаточно кликнуть на такой файл, либо ввести в терминале ./программа.AppImage .
Исполняемые файлы .sh
Я уже упоминала, что у линукса есть свои исполняемые файлы, они используют тот же язык, что и терминал, это bash. Запустить такие файлы можно также, как и исполняемые программы, с помощью кода ./имя_программы, если не работает, значит надо выполнить команду от суперпользователя. Также запускать такие файлы можно двойным щелчком мыши. Использовать такие файлы можно для исполнения повседневных действий. Например, вместо того, чтобы каждый раз копировать резервную копию с основного диска на сервер с помощью терминала, можно просто записать эти команды в исполняемый файл и запускать его двойным кликом, когда потребуется.
С помощью shell файлов удобным способом можно записывать в файлы (в основном текстовые) различную информацию. Например, если вы хотите записать в пустой файл строку, можно использовать >file.txt echo ваш_текст. Такая команда будет перезаписывать файл каждый раз, когда ее исполняют. То есть если вы еще раз пропишите такую команду, у вас не будет два ваших текста, все также будет один. Если же вы хотите не перезаписывать файл, а дополнять его следует прописать такую команду >>file.txt echo ваш_текст.
Работа с аккаунтами
В любом дистрибутиве линукса, как и в современных версиях windows присутствует мультиаккаунтность, или, если говорить по-русски, возможность переключения между учетными записями. Чтобы создать новую учетную запись в линуксе, пропишите в терминале от суперпользователя следующую команду:
sudo adduser имя_учетки. На новую учетную запись можно поставить пароль, чтобы защитить ее. Для этого надо ввести passwd имя_учетки, если же вы таким образом меняете пароль уже существующей учетной записи, вас попросят сначала ввести пароль этой записи, если вы его ставили. Чтобы удалить одну из учетных запсей, введите sudo deluser имя_учетки
Программная часть часть языка
Раз уж bash – язык программирования, то давайте пройдемся по его классическим частям. Команда вывода, как вы уже могли видеть, это echo. Операции с числами такие же, как и в калькуляторе, однако возведение в степень будет **, например, чтобы вывести три в квадрате, надо ввести echo $((3 ** 2)), выведется, конечно, 9. Чтобы производить вычисления в команде echo, надо поместить их в двойные круглые скобки. Знак $ показывает команде echo, что символы в скобках также являются командами, и их надо посчитать. Если вы попробуете выполнить команду без знака доллара, вам просто выведет ваш же нерешенный пример. Подобную, хоть и не идентичную, систему вы могли видеть в программе MS Exel.
Циклы здесь похожи на циклы в языке Си, однако они также отличаются. Давайте приведу пример. Надо написать цикл, который в новой строке будет выводить цифры от одного до десяти. Код будет выглядеть вот так:
Опять же, используем двойные скобки, чтобы команда перед ними воспринимала, что мы даем ей параметры, далее указываем начальное значение переменной I, и конечное ограничение, за которое переменная I выходить не должна, третьим параметром будет шаг, на который увеличивается наша переменная. Он будет равен одному, написать коротко это можно командой ++, если вам наоборот надо уменьшить переменную, используйте —. Параметры разделяются не запятыми, как обычно, а точкой с запятой, строка с командой также заканчивается точкой с запятой, далее написана команда вывода этой переменной I на каждом проходе цикла, затем мы заканчиваем цикл командой done. Если вы знаете pyhon, то можете посчитать точки с запятыми и окончания циклов усложняющими код элементами, однако я с вами не соглашусь. Данные элементы кода позволяют писать код в сточку не опосаясь за возникновение разных ошибок, в питоне же все эти элементы также присутствуют, но все они представляют из себя пробелы и переносы строк, что полностью сломает код при печати его в строчку. Пример, в котором нам придется написать код в строчку вы можете увидеть в концу статьи.
Также присутствуют и циклы while. Их код выглядит так:
i=0
while [ $i < 5 ]
do
echo Number: $i
((i++))
done
Циклы являются основным инструментом в языке программирования, поэтому не буду зацикливаться на других аспектах языка, их вы узнаете и без меня ?
Команды времени
Чтобы увидеть полную дату, время и день недели, просто введите date. Чтобы увидеть определенную часть даты, введите date +спецификатор. Спецификаторы представляют собой отдельную часть времени, вот некоторые из них: %Y — год, %m — месяц, %d — день, %H — час, %M — минута, %S – секунда. Например, чтобы вывести текущее время, напишите date +%H:%M:%S, результат можете видеть на экране.
На практике вы можете использовать эту команду, чтобы проверять раз в месяц сохраненную резервную копию, и, в случае отсутствия, сделать ее.
Команда time высчитывает сколько времени будет исполняться команда после нее. Время высчитывается для системы, пользователя, и в реальном времени. Для примера, я вввела команду, которая для каждого целого числа от 1 до десяти миллионов производила возведение в квадрат (то есть во вторую степень).
Спустя некоторое время, компьютер все высчитал и выдал такой результат:
Я использовала циклическое возведение в степень, чтобы компьютер не выполнял ее за доли секунды, а немного задумался, чтобы можно было видеть различия в высчитанном времени. Как можно видеть, система нашла все ответы данной задачи меньше, чем за полминуты, для пользователя эти ответы дошли почти за две минуты, чтобы вывести каждый, компьютер уже выдал их на экран больше, чем за две минуты.
Другие команды
Есть большое количество полезных команд, которые не подойдут ни под одну из представленных ранее категорий, либо которые я не хотел вставлять в те категории по разным причинам.
sudo reboot – перезагрузка системы, полезно, при автоматическом выявлении какой-нибудь угрозы, чтобы сбросить активный процесс.
locate имя_файла – ищет файл на вашем диске
ifconfig – показывает ваши сетевые интерфейсы и их состояние. Аналог ipconfig в windows.
top – покажет все работающие процессы в системе.
du -h – покажет все файлы на вашем диске, а также их вес.
Комбинации клавиш:
ctrl + c Останавливает работающий процесс в терминале
ctrl + l Очищает терминал.
!! Повторяет предыдущую команду.
Теперь вы можете относительно свободно работать с командной строкой в линуксе. Сначала может быть сложно и непривычно, однако с опытом все автоматизируется, и вы сможете свободно набирать команды.