Пример 1: Объявление и чтение переменной
Объявляем две переменные и выводим их значения. Значение читается через $.
export MY_VAR=hello
export var=world
echo $MY_VAR $var
hello world
Без $ bash выведет не значение, а буквальный текст:
echo MY_VAR
MY_VAR
$ перед именем переменной при чтении значения: echo $MY_VAR, а не echo MY_VAR.
Пример 2: Просмотр PATH
PATH — список каталогов через :. Bash ищет программы слева направо.
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Проверим, где bash находит команду ls:
which ls
/bin/ls
Пример 3: Добавление каталога в PATH
Добавляем свой каталог в PATH — чтобы скрипты из него запускались без указания полного пути.
export PATH=/opt/mybin:$PATH
echo $PATH
/opt/mybin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Чтобы изменение сохранялось после перезагрузки — добавьте строку в ~/.bashrc:
# ~/.bashrc
export PATH=/opt/mybin:$PATH
Пример 4: Просмотр всех переменных окружения (env)
Команда env выводит все переменные текущей сессии.
env
SHLVL=1
HOME=/home/ec2-user
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/home/ec2-user
TERM=xterm-256color
TZ=UTC
Найти конкретную переменную через фильтр:
env | grep MY_VAR
export MY_VAR=hello):
MY_VAR=hello
Пример 5: Сброс переменной (unset)
export MY_VAR=hello
echo $MY_VAR
unset MY_VAR
echo $MY_VAR
hello
После unset переменная пуста — echo выводит пустую строку.
Пример 6: Управление процессами
Посмотреть все процессы и найти нужный:
ps -ef
Найти процессы ssh (исключая сам grep):
ps -ef | grep ssh | grep -v grep
root 123 1 0 10:00 ? 00:00:00 /usr/sbin/sshd -D
ec2-user 456 123 0 10:05 ? 00:00:00 sshd: ec2-user@pts/0
Завершить процесс:
kill 456
Память и диски
# Свободная оперативная память в MB
free -m
# Дисковое пространство
df -h
# Информация о дистрибутиве
cat /etc/os-release
Пример 7: Конвейеры ДЗ (из источника)
Точные конвейеры, которые используются в домашнем задании:
Общий объём RAM (в MB):
free -m | grep Mem | awk '{print $2}'
Количество процессов пользователя root (исключая сам grep):
ps -ef | grep root | grep -v grep | wc -l
Найти свою переменную ANDREW_VARIABLE:
export ANDREW_VARIABLE=my_group
env | grep ANDREW
ANDREW_VARIABLE=my_group
PID и PPID процесса sshd:
ps -ef | grep '[s]shd -D' | awk '{print "PID", $2, "PPID", $3}'
PID 123 PPID 1
Квадратные скобки [s]shd — трюк для исключения самого grep из результатов (вместо grep -v grep).