Инструменты терминала Linux для начинающих. Часть вторая
Рассказываем об инструментах терминала Linux, таких как мультиплексор tmux, шифровальщик GnuPG и командная оболочка Bash.
10К открытий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/collab
chmod 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 << END
echo "Hello World"
END <нажмите enter>
Использование heredoc позволяет:
- создавать многострочные сообщения с использованием
cat
; - использовать переменные для подключения к созданным файлам, что позволяет, например, тестировать несколько конфигураций для программ.
В следующей части мы поговорим о сборке программ и утилитах терминала Linux.
10К открытий11К показов