Инструменты терминала Linux для начинающих. Часть вторая
Рассказываем об инструментах терминала Linux, таких как мультиплексор tmux, шифровальщик GnuPG и командная оболочка Bash.
11К открытий11К показов
Мы уже разобрали команды терминала Linux, а в этой статье рассмотрим инструменты, среди которых tmux, Bash, шифровальщик GnuPG и многое другое.
Управление сеансами: tmux
Управление рабочим пространством с помощью tmux
tmux — это один из инструментов терминала Linux, а точнее терминальный мультиплексор, который позволяет создавать несколько постоянных терминалов в рамках одного входа в систему. Другими словами, tmux — это программа, которая даёт возможность вам работать с несколькими «вкладками» в одном окне терминала.
tmux будет полезен в следующих случаях:
- если компиляция или другая аналогичная операция в перспективе может занять много времени;
- для интерактивной многозадачности;
- в необычных случаях, например, при парном программировании;
- с целью экономии времени и одновременного осуществления нескольких операций.
Краткое руководство по tmux
Стандартный рабочий tmux-процесс:
tmux new -s s1 # запуск нового сеанса
Ctrl+B :detach — позволяет прервать сеанс, выйти из системы, вернуться домой.
Позже снова можете зайти в систему. Для того нужно:
tmux a-t s1
Дополнительные полезные команды tmux:
Ctrl+B (— возврат к предыдущей сессии;Ctrl+B )— переход к следующей сессии;tmux ls— получение списка всех сессий;tmux kill-session -t s1— окончание сессии.
Непосредственная коллаборация в tmux:
#user1#tmux -S /tmp/collabchmod 777 /tmp/collab
#user2#tmux -S /tmp/collab attach
Создание частей окна и их синхронизация
tmux new -s s2— начать новую сессию;Ctrl+B "— горизонтальное разделение;Ctrl+B %— вертикальное разделение;Ctrl+B :setw— для включения и выключения синхронизации;Ctrl+B o— прокрутить окна;Ctrl+B x— убрать активные окна.
ssh-конфигурация и туннелирование
Ssh-конфигурация (~/.ssh/config)
Host login1 hostname login1.ornl.gov User km0
Host cades Port 22 hostname or-slurm-login.ornl.gov ProxyJump login1 User km0 ServerAliveCountMax=3 # максимальное количество сообщений, отправленных без ack ServerAliveInterval=15 # отправка нулевого сообщения каждые 15 секунд
Чтобы перейти на ssh/scp, необходимо использовать команду ssh/scp cades.
Преимущества ssh-конфигурации
Конфигурация облегчает запоминание ssh-команд при наличии нескольких хостов. При этом настройка подключения к отдельным хостам выполняется автоматически. Для дополнительной информации касательно данного типа конфигурации смотрите man 5 ssh_config.
Например: ssh summit достаточно для подключения к summit.olcf.ornl.gov со всеми свойствами, упомянутыми в этом разделе:
Host summit Port 22 hostname summit.olcf.ornl.gov User ketan2 ServerAliveCountMax=3 ServerAliveInterval=15
Переадресация порта с помощью SSH-туннелирования:
Чтобы запустить HTTP-сервер на удаленном узле и просмотреть его через локальный веб-браузер, нужно:
remote$ python2 -m SimpleHTTPServer 25000 OR;remote$ python3 -m http.server 25000;local$ ssh -L 8000:localhost:25000 id@remote -N;- Откройте браузер на локальном компьютере и перейдите на
http://localhost:8000.
Инкрементное удалённое копирование с помощью rsync
Такое копирование позволяет синхронизировать данные между локальным и удалённым хранилищем. При этом можно использовать набор опций, а именно: -а и -v как наиболее часто используемые.
rsync -av localdir/ remotehost:~/remotedir.
Также есть лайфхак для применения rsync: быстрое удаление большого каталога можно осуществить посредством этой команды:
mkdir empty && rsync -a --delete empty/ large_dir/.
Безопасная связь через GnuPG
Основы использования GNU Privacy Guard
GnuPG — это инструмент командной строки Linux для безопасной связи. Она имеет следующие функции:
- создание пар ключей;
- обмен ключами и верификация;
- шифровка и расшифровка документов;
- аутентификация документов с помощью цифровых подписей.
При всех вышеперечисленных плюсах, данная программа не предполагает:
- концепцию криптографии с открытым ключом;
- сложные и продвинутые варианты использования.
Создание новой пары ключей
Для начала используйте gpg --gen-key, после чего нужно будет ответить на предложенные вопросы.
- Укажите имя и адрес электронной почты в качестве идентификатора, потом выберите фразу-пароль.
- «Артефакты» ключей можете посмотреть по адресу
$HOME/.gnupg dir.
Далее необходимо создать сертификат аннулирования:
gpg --output revoke.asc --gen-revoke <ID>.
Для чего используйте электронную почту в качестве идентификатора. Также стоит включить функцию уведомления, если пара ключей больше не может быть использована. Например, если вы забыли свою фразу для восстановления пароля, потеряли ключи и т. д.
Обмен ключами и верификация
Экспорт открытого ключа:
gpg --output pub.gpg --export— бинарный код;gpg --armor --export > pubtxt.gpg— кодировка ASCII.
Импорт открытого ключа:
gpg --import billpub.gpg — импорт по умолчанию.
После чего проверьте и подпишите импортированный ключ, для чего есть следующая команда:
gpg --edit-key b@ms.us — здесь указывается ключевая информация и подсказка.
command> fpr — отпечатки пальцев, проверка по телефону.
Остаётся лишь пройти верификацию в командной строке — command> sign.
Шифрование и расшифровка документов
Ниже приведён пример шифрования документа с помощью открытого ключа пользователя (пусть это будет Билл):
gpg --output doc_pdf.gpg --encrypt --recipient.
b@ms.us doc.pdf — как вы уже поняли, у вас должен быть ключ Билла в свободном доступе.
Билл расшифровывает документ (то есть у него должен быть его персональный ключ и фраза-пароль):
gpg --output doc.pdf --decrypt doc_pdf.gpg.
Документы могут быть зашифрованы без ключа, просто посредством фразы-пароля:
gpg --output doc_pdf.gpg --symmetric doc.pdf.
Аутентификация документов с помощью цифровых подписей
Документы с цифровой подписью подтверждают тот факт, что они являются подлинными и что они не подвергались чьим-либо посторонним изменениям:
gpg-output doc.signed-sign doc.pdf.
Помните, что у вас должен быть закрытый ключ для создания цифровой подписи.
Подписанный документ можно проверить и расшифровать следующим образом:
gpg --ouput doc.pdf --decrypt doc.signed.
Инструменты Bash
Это оболочка командной строки Linux. В данном случае могут быть применены такие команды и утилиты, как grep, sed, awk и определены переменные, константы, условные обозначения, циклы и функции. Bash также предполагает использование арифметических операций и логических операций: && (и) и || (или):
wget ...|| curl ...— выполнитьcurl iff wgetне удается;make install && make test— срабатывает командаtest iff install.
Файлы Shell «Startup» устанавливают среду при запуске оболочки.
.bashrc — файл, который запускается в каждой новой создаваемой оболочке.
.bash_profile — файл, который запускается только в «оболочке входа в систему», а не во всех оболочках. Например, он не запустится, если вы вызовете сценарий оболочки, который создает «подоболочку».
Псевдонимы и функции
Псевдонимы — это короткие и удобные имена для длинных команд. Как правило, они определяются в .bashrc или отдельном файле .aliases. Чтобы временно обойти псевдоним (скажем, поменять псевдоним ls на ls -a), используйте \: \ ls.
Также необходимо помнить о том, что функции Bash обычно определяются в файле .bashrc/.bash_profile и что функции более выразительны по сравнению с псевдонимами. Поэтому, обычно, следует отдавать предпочтение именно им.
Примеры псевдонимов:
alias s=ssh;alias c=clear;alias cx='chmod +x';alias ls='ls -thor‘;alias more=less;alias ps='ps auxf';alias psg='ps aux | grep -v grep | grep -i -e USER -e';alias ..='cd ..';alias myp='ps -fjH -u $USER';alias cleanup='rm -f *.tmp *.aux *.log'.
Примеры полезных функций:
mcd() { mkdir -p $1; cd $1 };cdl() { cd $1; ls};backup() { cp "$1"{,.bak};};gfind() { find / -iname $@ 2>/dev/null };lfind() { find . -iname $@ 2>/dev/null };rtfm() { help $@ || man $@ || $BROWSER "http://www.google.com/search?q=$@"; };- Смотрите
/usr/share/doc/bash-*/examples/functionsдля поиска дополнительных примеров функций.
Переменные и подстановка команд
Переменные являются неявно типизированными, они могут представлять собой буквальное значение или замену команды.
vname = value — присвоить значение переменной vname.
$vname — прочесть значение переменной vname.
Подстановка команды:
curdir=$(pwd);curdate=$(date +%F);echo "There are $(ls -1 | wc -l) items in the current dir".
Условная инструкция
В данном случае используется конструкция if-then-else (условного оператора), а именно — управляющая структура программы с ветвлением, аналогичная языкам программирования.
Существуют две формы механизмов условной оценки:
$ if test $USER = 'km0'; then echo 'I know you'; else echo 'Who are you'; fi;$ if [ -f /etc/yum.conf ]; then echo 'yum.conf exists'; else echo 'file do not exist'; fi.
Условные инструкции:
- Строка-z строка — если длина строки равна 0;-n строка — если длина строки не равна 0;string1 = string2 — если строки идентичны (обратите внимание на одиночный знак =).
- Числаint1 -eq int2 — если первое целое число равно второму;-ne, -gt, -ge, -lt, -le — если не равно; больше, чем; больше или равно.
- Файл-r имя_файла — если файл существует и доступен для чтения;-w имя_файла — если файл существует и доступен для записи;-f, -d, -s — если файл или каталог существует и не пуст.
- Логические операции!, -a, -o — отрицание, логическое И, логическое ИЛИ.
Циклы
Тут циклы представлены в 3 различных формах:
for i in {0..9}; do echo $i; done;for ((i=0;i<10;i++)){ echo $i;} # аналогично С++;for var in list; do comand; done # в стиле Python.
Также такая схема может применяться при параллельной замене команд:
for i in $(\ls -1 *.txt); do echo "$i"; done;for i in $(get_files.sh); do upload.sh "$i"; done.
Heredoc-синтаксис
Данный синтаксис позволяет создавать «встроенные» файлы.
Пример команды:
sh << ENDecho "Hello World"END <нажмите enter>
Использование heredoc позволяет:
- создавать многострочные сообщения с использованием
cat; - использовать переменные для подключения к созданным файлам, что позволяет, например, тестировать несколько конфигураций для программ.
В следующей части мы поговорим о сборке программ и утилитах терминала Linux.
11К открытий11К показов




