Работа с Linux. Часть 5
Операторы
;
Оператор выполняет последовательно несколько команд. Если текущая команда выполнится неуспешно, то следующая всё равно выполнится.
команда1; команда2; команда3;
sudo apt-get update; sudo apt-get upgrade
&&
Оператор выполняет последовательно несколько команд. Если текущая команда выполнится неуспешно, то следующая не выполнится.
команда1 && команда2 && команда3 &&
sudo apt-get update && sudo apt-get upgrade
||
Оператор выполняет следующую команду, если предыдущая выполнилась неуспешно.
команда1 || команда2 || команда2 || ...
ls -a /there_is_no_dir || echo "error"
&
Запускает выполнение команды в фоновом режиме.
команда1 & команда2 & команда3 & ...
sudo apt-get update & sudo apt-get upgrade &
\
- Отменяет специальное назначение (экранирует) символов, таких как
$
,\
,&
,*
,[
,]
,^
,.
; - «Склеивает» несколько строк команды в одну.
команда1; \ команда2; \ команда3 ...
sudo apt-get update; \ sudo apt-get upgrade
|
Перенаправляет данные из одной команды в другую.
команда1 | команда2 | команда3 | ...
echo '!{"json": ["one", "two"]}' | tr -d '!' | jq -r "." | grep json
"json": [
Оператор перенаправляет вывод команды в файл. Перезаписывает файл при существовании. Для скрытия вывода команды использовать конструкцию > /dev/null
.
команда > файл
echo "Hello, world!" > /dev/null
echo "Hello, world!" > hello.txt cat hello.txt
Hello, world!
| tee
Оператор оставляет вывод команды на экран, при этом записывает его в файл. Перезаписывает файл при существовании.
команда | tee файл
echo "Hello, world!" | tee hello.txt cat hello.txt
Hello, world! Hello, world!
>>
Оператор перенаправляет вывод команды в файл. При существовании файла дописывает в конец.
команда >> файл
cat h.txt echo "H" >> h.txt cat h.txt
Hello, world! Hello, world! H
| tee -a
Оставляет вывод команды на экран, при этом записывает его в файл. При существовании файла дописывает в конец.
команда | tee -a файл
cat hi.txt echo "hello" | tee -a hi.txt cat hi.txt
Hello, world! Hi hello Hello, world! Hi hello
<
Использует данные из файла в качестве источника ввода в команду вместо клавиатуры.
команда < файл
echo "10*10+10" > calc.txt cat calc.txt
10*10+10
bc < calc.txt
110
<<EOF...EOF
Оператор позволяет ввести в команду многострочный текст.
команда <<EOF многострочный текст EOF
cat <<EOF многострочный текст EOF
многострочный текст
<<<
Передаёт указанный текст в команду вместо ввода с клавиатуры.
команда <<< "текст"
bc <<< "10*10+10"
110
<(команды)
Возвращает путь к созданному временному файлу, содержащему результат выполнения одной или нескольких объединённых внутри конструкции команд.
команда <(команда_1; команда_2 && команда_3; ...)
# Путь к временному файлу echo <(uptime)
/dev/fd/63
# Содержимое временного файла cat <(uptime)
00:00:00 up 3 days, 5:20, 1 user, load average: 0.00, 0.00, 0.00
cat <(uptime; date)
00:00:00 up 3 days, 7:27, 1 user, load average: 0.00, 0.00, 0.00 Tue 01 Jan 2024 12:00:00 AM CET
Запуск скриптов
Локальные
Для выполнения скрипта, находящегося на сервере, необходимо:
# Bash chmod +x путь_к_скрипту; \ ./путь_к_скрипту аргументы # Source chmod +x путь_к_скрипту; \ . ./путь_к_скрипту аргументы
# Bash chmod +x script.sh; \ ./script.sh -u -t "hi" "text" 666 # Source chmod +x script.sh; \ . ./script.sh -u -t "hi" "text" 666
Запуск скрипта по ссылке.
Скрипты по ссылке, например из GitHub можно выполнять тремя способами:
Первый вариант:
# Bash bash <(wget -qO- ссылка) аргументы bash <(curl -s ссылка) аргументы # Source . <(wget -qO- ссылка) аргументы . <(curl -s ссылка) аргументы
Второй вариант:
# Bash wget -q ссылка; \ chmod +x путь_к_скрипту; \ ./путь_к_скрипту аргументы curl -sO ссылка; \ chmod +x путь_к_скрипту; \ ./путь_к_скрипту аргументы # Source wget -q ссылка; \ chmod +x путь_к_скрипту; \ . ./путь_к_скрипту аргументы curl -sO ссылка; \ chmod +x путь_к_скрипту; \ . ./путь_к_скрипту аргументы
Третий вариант:
# Bash wget -qO- ссылка | bash -s аргументы -- опции curl -s ссылка | bash -s аргументы -- опции
Установщики ПО
Существуют программы, которые устанавливаются более сложным способом, нежели при помощи пакетного менеджера. Для облегчения процесса установки некоторых из них были созданы скрипты, например: