Введение
В этой лабораторной работе вы приобретете необходимые навыки для управления текстовыми файлами и настройки вашей среды оболочки в Linux. Вы узнаете, как перенаправлять стандартный вывод и потоки ошибок в файлы, объединять различные потоки и строить мощные конвейеры команд для автоматизации задач.
Кроме того, вы изучите основы редактирования текстовых файлов с помощью Vim, широко используемого и мощного текстового редактора. Наконец, вы научитесь настраивать и использовать переменные и псевдонимы (aliases) оболочки для персонализации работы с командной строкой и повышения производительности.
Перенаправление стандартного вывода в файлы
На этом шаге вы узнаете, как перенаправлять стандартный вывод команд в файлы. Это фундаментальный навык в администрировании системы Linux, позволяющий захватывать результаты команд для последующего анализа, ведения журналов или дальнейшей обработки.
Оболочка использует специальные дескрипторы файлов для управления вводом и выводом. Наиболее распространенными являются:
0: Стандартный ввод (stdin) - Обычно с клавиатуры.1: Стандартный вывод (stdout) - Обычно на экран терминала.2: Стандартный вывод ошибок (stderr) - Обычно на экран терминала для сообщений об ошибках.
В этом разделе мы сосредоточимся на перенаправлении stdout.
Перезапись файла с помощью >
Оператор > перенаправляет стандартный вывод команды в указанный файл. Если файл не существует, он будет создан. Если файл уже существует, его содержимое будет перезаписано.
Давайте начнем с создания простого текстового файла с текущей датой и временем.
Сначала убедитесь, что вы находитесь в каталоге
projectвашей домашней директории.cd ~/project[labex@host project]$Теперь используйте команду
dateи перенаправьте ее вывод в новый файл с именемcurrent_datetime.txt.date > current_datetime.txtЭта команда выполнит
date, но вместо вывода даты в ваш терминал, она сохранит ее вcurrent_datetime.txt.Проверьте содержимое файла с помощью команды
cat.cat current_datetime.txtMon Day XX HH:MM:SS AM/PM TimeZone YYYYВывод покажет текущую дату и время, аналогично приведенному выше примеру.
Теперь давайте попробуем перенаправить вывод
echoв тот же файл. Это перезапишет предыдущее содержимое.echo "This is a new line of text." > current_datetime.txtСнова проверьте содержимое файла.
cat current_datetime.txtThis is a new line of text.Как видите, исходная дата и время были заменены новой строкой текста.
Добавление в файл с помощью >>
Оператор >> перенаправляет стандартный вывод команды в указанный файл, добавляя новое содержимое в конец файла. Если файл не существует, он будет создан.
Давайте добавим больше содержимого в наш файл current_datetime.txt.
Добавьте еще одну строку текста в
current_datetime.txt.echo "This line is appended." >> current_datetime.txtПросмотрите содержимое файла.
cat current_datetime.txtThis is a new line of text. This line is appended.Обратите внимание, что новая строка была добавлена после существующего содержимого.
Давайте снова добавим текущую дату и время.
date >> current_datetime.txtПроверьте содержимое файла еще раз.
cat current_datetime.txtThis is a new line of text. This line is appended. Mon Day XX HH:MM:SS AM/PM TimeZone YYYYДата и время теперь находятся в конце файла.
Перенаправление вывода других команд
Вы можете перенаправить вывод практически любой команды. Давайте попробуем перенаправить вывод ls и wc.
Перенаправьте вывод
ls -l(формат длинного списка) в файл с именемfile_list.txt.ls -l > file_list.txtПроверьте содержимое
file_list.txt.cat file_list.txttotal 4 -rw-r--r-- 1 labex labex 80 Jun 4 07:04 current_datetime.txt -rw-r--r-- 1 labex labex 0 Jun 4 07:04 file_list.txtЭтот файл теперь содержит подробный список файлов в вашем текущем каталоге. Точные размеры файлов и метки времени будут различаться в зависимости от того, когда вы запускаете команды.
Теперь давайте посчитаем количество строк в
file_list.txtс помощьюwc -lи перенаправим этот подсчет в другой файл,line_count.txt.wc -l file_list.txt > line_count.txtПросмотрите содержимое
line_count.txt.cat line_count.txt3 file_list.txtВывод показывает, что
file_list.txtсодержит 3 строки (включая строкуtotalи две записи файлов).
На этом завершается первая часть перенаправления стандартного вывода. Вы узнали, как создавать и перезаписывать файлы с помощью > и добавлять в них данные с помощью >>.
Перенаправление стандартного потока ошибок и объединение потоков
На этом шаге вы узнаете, как перенаправлять стандартный вывод ошибок (stderr) и как объединять stdout и stderr в один поток. Это имеет решающее значение для управления сообщениями об ошибках, генерируемыми командами, позволяя вам регистрировать их или отбрасывать по мере необходимости.
Напомним, что stderr - это дескриптор файла 2. Мы используем 2> для перенаправления сообщений об ошибках.
Перенаправление стандартного вывода ошибок в файл
Иногда команды выдают сообщения об ошибках, которые вы хотите захватить отдельно от их стандартного вывода.
Убедитесь, что вы находитесь в каталоге
~/project.cd ~/project[labex@host project]$Давайте попробуем вывести список содержимого несуществующего каталога. Это сгенерирует сообщение об ошибке.
ls non_existent_directoryls: cannot access 'non_existent_directory': No such file or directoryВы можете увидеть сообщение об ошибке, напечатанное непосредственно в терминале.
Теперь давайте перенаправим это сообщение об ошибке в файл с именем
errors.log.ls non_existent_directory 2> errors.logНа этот раз вы не увидите сообщение об ошибке в своем терминале.
Проверьте содержимое
errors.log.cat errors.logls: cannot access 'non_existent_directory': No such file or directoryСообщение об ошибке теперь сохранено в файле.
Отбрасывание стандартного вывода ошибок
Часто вам может понадобиться запустить команду, которая выдает шумные сообщения об ошибках, которые вам не важны. В таких случаях вы можете перенаправить stderr в /dev/null. /dev/null - это специальный файл устройства, который отбрасывает все данные, записанные в него.
Попробуйте команду
lsс несуществующим каталогом снова, но на этот раз отбросьте ошибку.ls non_existent_directory 2> /dev/nullВы не увидите вывода в терминале, и сообщение об ошибке не будет сохранено в файл.
Объединение стандартного вывода и стандартного вывода ошибок
Существуют ситуации, когда вы хотите захватить и stdout, и stderr в один и тот же файл. Это можно сделать несколькими способами.
Метод 1: > file 2>&1
Этот метод перенаправляет stdout в файл, а затем перенаправляет stderr в то же место, что и stdout. Порядок 2>&1 важен: это означает «перенаправить дескриптор файла 2 (stderr) в то же место, что и дескриптор файла 1 (stdout)».
Давайте создадим команду, которая выдает как стандартный вывод, так и стандартный вывод ошибок. Мы будем использовать
findдля поиска файла в каталоге, где у нас есть разрешения, и в каталоге, где у нас их нет.find ~/project /root -name "current_datetime.txt" > combined_output.log 2>&1Здесь
find ~/project -name "current_datetime.txt"выдастstdout(если найдено), аfind /root -name "current_datetime.txt", вероятно, выдастstderrиз-за проблем с разрешениями.Проверьте файл
combined_output.log.cat combined_output.log/home/labex/project/current_datetime.txt find: ‘/root’: Permission deniedВы можете видеть, что и успешный вывод (путь к файлу), и сообщение об ошибке захватываются в одном и том же файле.
Метод 2: &> file (специфично для Bash)
Bash предоставляет сокращенный способ объединения stdout и stderr в файл: &>. Это эквивалентно > file 2>&1.
Давайте попробуем ту же команду
find, используя сокращение&>.find ~/project /root -name "file_list.txt" &> combined_output_shorthand.logПроверьте содержимое
combined_output_shorthand.log.cat combined_output_shorthand.log/home/labex/project/file_list.txt find: ‘/root’: Permission deniedРезультат такой же, как и в предыдущем методе, демонстрируя удобство
&>.
Добавление объединенных потоков
Как и в случае с stdout, вы можете добавлять объединенные stdout и stderr в файл, используя >> file 2>&1 или &>> file.
Добавьте больше вывода и ошибок в
combined_output.log.find ~/project /root -name "line_count.txt" >> combined_output.log 2>&1Просмотрите обновленный
combined_output.log.cat combined_output.log/home/labex/project/current_datetime.txt find: ‘/root’: Permission denied /home/labex/project/line_count.txt find: ‘/root’: Permission deniedНовый вывод и ошибки добавлены к существующему содержимому.
Теперь вы успешно узнали, как перенаправлять стандартный вывод ошибок и как объединять стандартный вывод и стандартный вывод ошибок в один файл. Эти знания необходимы для надежного написания сценариев и задач администрирования системы.
Построение и понимание конвейеров команд
На этом шаге вы узнаете о конвейерах команд, мощной функции в оболочке Linux, которая позволяет объединять несколько команд вместе. Вывод одной команды становится вводом следующей, что позволяет выполнять сложную обработку и манипулирование данными.
Оператор конвейера | (вертикальная черта) используется для соединения команд в конвейере. Он перенаправляет стандартный вывод (stdout) команды слева на стандартный ввод (stdin) команды справа.
Основные конвейеры
Давайте начнем с простого примера, чтобы понять, как работают конвейеры.
Убедитесь, что вы находитесь в каталоге
~/project.cd ~/project[labex@host project]$Сначала давайте перечислим файлы в текущем каталоге.
lscombined_output.log combined_output_shorthand.log current_datetime.txt errors.log file_list.txt line_count.txtТеперь давайте передадим вывод
lsв командуwc -l, которая подсчитывает количество строк, которые она получает.ls | wc -l6Команда
lsвыводит список файлов, а ее вывод (каждое имя файла в новой строке) подается в качестве ввода вwc -l, которая затем подсчитывает эти строки, эффективно сообщая вам, сколько файлов/каталогов находится в текущем местоположении.Давайте попробуем еще один распространенный вариант использования: передача
ls -lвlessдля постраничного вывода. Это полезно, когда команда выдает слишком много вывода, чтобы поместиться на одном экране.ls -l /usr/bin | lesstotal 200000 -rwxr-xr-x 1 root root 12345 Jan XX HH:MM [filename] ... (press 'q' to quit less) ...Команда
ls -l /usr/binвыводит список всех файлов в/usr/binс подробной информацией. Этот вывод затем отправляется вless, позволяя вам прокручивать его страницу за страницей. Нажмитеq, чтобы выйти изless.
Фильтрация вывода с помощью grep
Команда grep часто используется в конвейерах для фильтрации строк, соответствующих определенному шаблону.
Давайте перечислим все процессы, запущенные в системе, используя
ps aux, а затем отфильтруем процессы, связанные сbash.ps aux | grep bashlabex 1234 0.0 0.1 12345 6789 ? Ss HH:MM 0:00 /usr/bin/bash labex 5678 0.0 0.0 9876 5432 pts/0 S+ HH:MM 0:00 grep bashКоманда
ps auxвыводит список всех запущенных процессов. Ее вывод передается вgrep bash, который затем отображает только строки, содержащие слово «bash». Вы можете увидеть две строки: одну для вашей текущей оболочки bash и одну для самой командыgrep.Чтобы исключить команду
grepиз вывода, вы можете использоватьgrep -v(инвертировать соответствие) или уточнить свой шаблон. Давайте попробуемgrep -v grep.ps aux | grep bash | grep -v greplabex 1234 0.0 0.1 12345 6789 ? Ss HH:MM 0:00 /usr/bin/bashТеперь отображается только фактический процесс bash.
Использование sort и uniq
sort используется для сортировки строк текста, а uniq используется для сообщения или пропуска повторяющихся строк. Они часто используются вместе.
Давайте создадим файл с некоторыми несортированными, повторяющимися словами.
echo -e "apple\nbanana\napple\norange\nbanana" > fruits.txtПросмотрите содержимое
fruits.txt.cat fruits.txtapple banana apple orange bananaТеперь давайте отсортируем строки в
fruits.txt.cat fruits.txt | sortapple apple banana banana orangeЧтобы получить только уникальные отсортированные слова, передайте вывод
sortвuniq.cat fruits.txt | sort | uniqapple banana orangeЭтот конвейер сначала сортирует строки, затем
uniqудаляет повторяющиеся смежные строки.
Команда tee
Команда tee особенная в конвейерах. Она читает стандартный ввод, записывает его в стандартный вывод и одновременно записывает его в один или несколько файлов. Это как «T»-образное соединение в трубе, позволяющее данным течь в двух направлениях.
Давайте перечислим файлы и сохраним вывод в
ls_output.txt, а также отобразим его на экране.ls -l | tee ls_output.txttotal 24 -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output_shorthand.log -rw-r--r-- 1 labex labex 123 Jan XX HH:MM current_datetime.txt -rw-r--r-- 1 labex labex 123 Jan XX HH:MM errors.log -rw-r--r-- 1 labex labex 123 Jan XX HH:MM file_list.txt -rw-r--r-- 1 labex labex 123 Jan XX HH:MM fruits.txt -rw-r--r-- 1 labex labex 123 Jan XX HH:MM line_count.txt -rw-r--r-- 1 labex labex 0 Jan XX HH:MM ls_output.txtВы увидите вывод
ls -lв своем терминале, и будет создан файл с именемls_output.txtс тем же содержимым.Проверьте содержимое
ls_output.txt.cat ls_output.txttotal 24 -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log ... (same as above) ...Вы также можете использовать
tee -a, чтобы добавить вывод в файл.echo "--- End of list ---" | tee -a ls_output.txt--- End of list ---Строка "--- End of list ---" печатается в терминале и добавляется в
ls_output.txt.Проверьте обновленный
ls_output.txt.cat ls_output.txttotal 24 ... (previous ls -l output) ... --- End of list ---
Конвейеры невероятно универсальны и составляют основу многих мощных сценариев оболочки и однострочных команд. Объединяя простые команды, вы можете эффективно выполнять сложные преобразования данных.
Редактирование текстовых файлов с основами Vim
На этом шаге вы изучите основные операции Vim, мощного и широко используемого текстового редактора в среде Linux. Vim работает в разных режимах, что может быть немного сложно для начинающих, но освоение основ значительно повысит вашу производительность.
Vim - это модальный редактор, то есть у него разные режимы для разных задач:
- Normal Mode (Command Mode): Это режим по умолчанию при открытии Vim. В этом режиме нажатия клавиш интерпретируются как команды (например, перемещение курсора, удаление текста, копирование текста).
- Insert Mode: В этом режиме все, что вы печатаете, вставляется в файл. Вы входите в Insert Mode из Normal Mode, нажимая
i(вставить в курсор),a(добавить после курсора),o(открыть новую строку ниже) и т. д. Чтобы вернуться в Normal Mode, нажмитеEsc. - Visual Mode: Этот режим позволяет вам выбирать блоки текста для таких операций, как копирование, вырезание или удаление. Вы входите в Visual Mode из Normal Mode, нажимая
v(посимвольно),Shift+V(построчно) илиCtrl+V(поблочно). НажмитеEsc, чтобы вернуться в Normal Mode. - Command-Line Mode (Ex Mode): Этот режим используется для выполнения команд, которые обычно начинаются с двоеточия (
:), таких как сохранение (:w), выход (:q) или поиск (/). Вы входите в этот режим из Normal Mode, нажав:.
Открытие и базовая навигация
Убедитесь, что вы находитесь в каталоге
~/project.cd ~/project[labex@host project]$Откройте новый файл с именем
my_document.txtс помощьюvim.vim my_document.txtВаш терминал теперь отобразит интерфейс Vim. Вы находитесь в Normal Mode.
В Normal Mode вы можете перемещаться, используя клавиши со стрелками или
h(влево),j(вниз),k(вверх),l(вправо). Поскольку файл пуст, пока нечего особо перемещать.
Insert Mode: Добавление текста
Чтобы начать печатать, вам нужно войти в Insert Mode. Нажмите
i(для вставки). Внизу слева вашего терминала должно появиться-- INSERT --, указывающее, что вы находитесь в Insert Mode.Введите следующие строки:
This is the first line. This is the second line. This is the third line.Чтобы выйти из Insert Mode и вернуться в Normal Mode, нажмите клавишу
Esc. Индикатор-- INSERT --должен исчезнуть.
Сохранение и выход
В Normal Mode, чтобы сохранить файл, введите
:wи нажмитеEnter.:wВнизу вы должны увидеть
my_document.txt[New]3L, 60B written, подтверждающее сохранение.Чтобы выйти из Vim, введите
:qи нажмитеEnter.:qВы вернетесь к приглашению оболочки.
Проверьте содержимое
my_document.txtс помощьюcat.cat my_document.txtThis is the first line. This is the second line. This is the third line.
Редактирование существующих файлов
Откройте
my_document.txtснова.vim my_document.txtВ Normal Mode переместите курсор в начало второй строки (используя
jили клавиши со стрелками).Нажмите
Shift+V, чтобы войти в Visual Line Mode. Вся вторая строка будет выделена.Нажмите
y, чтобы «yank» (скопировать) выбранную строку.Переместите курсор в конец третьей строки (используя
jили клавиши со стрелками).Нажмите
p, чтобы «put» (вставить) скопированную строку под текущей строкой. Вторая строка теперь снова появится в качестве четвертой строки.Теперь давайте удалим строку. Переместите курсор на четвертую строку (ту, которую вы только что вставили).
Нажмите
dd(двойноеd), чтобы удалить всю строку.Чтобы отменить последнее изменение, нажмите
u. Удаленная строка появится снова.Чтобы сохранить и выйти одной командой, введите
:wqи нажмитеEnter.:wqСнова проверьте содержимое
my_document.txt.cat my_document.txtThis is the first line. This is the second line. This is the third line. This is the second line.Теперь в файле должно быть четыре строки, со второй строкой, дублированной.
Отмена изменений
Иногда вы вносите изменения и решаете, что не хотите их сохранять.
Откройте
my_document.txtснова.vim my_document.txtВойдите в Insert Mode, нажав
i.Добавьте новую строку в конце:
This line should not be saved.Нажмите
Esc, чтобы вернуться в Normal Mode.Попробуйте выйти, используя
:q.:qVim предупредит вас:
E37: No write since last change (add ! to override). Это означает, что у вас есть несохраненные изменения.Чтобы выйти без сохранения, введите
:q!и нажмитеEnter.:q!Вы вернетесь к приглашению оболочки, и ваши изменения будут отброшены.
Проверьте содержимое
my_document.txt.cat my_document.txtThis is the first line. This is the second line. This is the third line. This is the second line.Последняя добавленная вами строка не должна присутствовать.
Теперь вы охватили самые основные операции в Vim: открытие файлов, вставка текста, навигация, сохранение, выход и отмена изменений. Это основные навыки для начала работы с Vim.
Настройка и использование переменных окружения и алиасов в Shell
На этом шаге вы узнаете, как настраивать и использовать переменные и псевдонимы оболочки. Это мощные функции, которые позволяют вам настраивать среду оболочки, хранить данные и создавать ярлыки для часто используемых команд, что значительно повышает эффективность работы в командной строке.
Переменные оболочки
Переменные оболочки - это именованные сущности, которые хранят данные. Они могут хранить числа, текст или другие данные, которые могут использоваться оболочкой или программами, выполняемыми в оболочке.
Убедитесь, что вы находитесь в каталоге
~/project.cd ~/project[labex@host project]$Установка локальной переменной: Давайте создадим простую переменную с именем
MY_MESSAGE.MY_MESSAGE="Hello, LabEx!"Обратите внимание, что вокруг знака
=нет пробелов.Доступ к переменной: Чтобы получить доступ к значению переменной, вы добавляете перед ее именем знак
$.echo $MY_MESSAGEHello, LabEx!Разворачивание переменной с фигурными скобками: Иногда вам нужно четко разграничить имя переменной, особенно когда за ним следуют другие символы. Используйте фигурные скобки
{}для этого.echo "The message is: ${MY_MESSAGE}."The message is: Hello, LabEx!.Если вы опустите скобки, оболочка может интерпретировать
MY_MESSAGE.как имя переменной, которой не существует.Вывод списка всех установленных переменных: Вы можете использовать команду
set, чтобы вывести список всех текущих переменных и функций оболочки. Этот вывод может быть очень длинным, поэтому его часто передают вless.set | lessBASH=/usr/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath ... (press 'q' to quit less) ...Нажмите
q, чтобы выйти изless.Удаление переменной: Чтобы удалить переменную, используйте команду
unset.unset MY_MESSAGEУбедитесь, что переменная больше не установлена.
echo $MY_MESSAGEВы должны увидеть пустую строку, указывающую на то, что переменная удалена.
Переменные среды
Переменные среды - это особый тип переменных оболочки, которые наследуются дочерними процессами. Это означает, что любая программа или скрипт, запущенные из вашей текущей оболочки, будут иметь доступ к этим переменным. Они обычно используются для настройки среды для приложений.
Установка переменной среды: Используйте команду
export, чтобы сделать переменную переменной среды.export EDITOR=vimЭто устанавливает переменную среды
EDITOR, которую многие программы используют для определения вашего предпочтительного текстового редактора.Вывод списка переменных среды: Используйте команду
env, чтобы вывести список только переменных среды.env | grep EDITOREDITOR=vimОтмена экспорта переменной: Вы можете отменить экспорт переменной, не удаляя ее, используя
export -n. Это снова делает ее локальной переменной.export -n EDITORУбедитесь, что это больше не переменная среды.
env | grep EDITORВы не должны видеть никакого вывода. Однако это все еще локальная переменная:
echo $EDITORvimЧтобы полностью удалить ее, используйте
unset.unset EDITOR
Псевдонимы оболочки
Псевдонимы - это ярлыки для команд. Они позволяют вам определить новую команду, которая разворачивается в более длинную команду или последовательность команд. Это очень полезно для часто используемых команд со многими параметрами.
Создание псевдонима: Давайте создадим псевдоним для
ls -l, чтобы сделать его короче.alias ll='ls -l'Обратите внимание на одинарные кавычки вокруг команды, чтобы убедиться, что она обрабатывается как одна строка.
Использование псевдонима: Теперь вы можете просто ввести
llвместоls -l.lltotal 24 -rw-r--r-- 1 labex labex 123 Jan XX HH:MM combined_output.log ... (output of ls -l) ...Вывод списка псевдонимов: Используйте команду
aliasбез каких-либо аргументов, чтобы увидеть все определенные псевдонимы.aliasalias ll='ls -l'Вы можете увидеть другие псевдонимы по умолчанию в зависимости от конфигурации вашей оболочки.
Создание более сложного псевдонима: Вы также можете создавать псевдонимы для команд с аргументами или нескольких команд.
alias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'Здесь
myipпокажет ваш основной IP-адрес. Обратите внимание на\$2, чтобы экранировать знак$, чтобы он передавался вawk, а не интерпретировался оболочкой при определении псевдонима.Протестируйте псевдоним
myip.myip172.17.0.2(Ваш IP-адрес может отличаться)
Удаление псевдонима: Чтобы удалить псевдоним, используйте команду
unalias.unalias llУбедитесь, что псевдоним удален.
aliasalias myip='ip a | grep "inet " | grep -v "127.0.0.1" | awk "{print \$2}" | cut -d/ -f1'llбольше не должен быть в списке.
Переменные и псевдонимы оболочки являются временными и будут потеряны при закрытии сеанса терминала. Чтобы сделать их постоянными, вам нужно добавить их в файлы конфигурации вашей оболочки (например, ~/.bashrc или ~/.profile), что будет рассмотрено в более продвинутых темах.
Резюме
В этой лабораторной работе вы изучили основные навыки работы с командной строкой Linux, необходимые для управления текстовыми файлами и средой оболочки. Вы начали с освоения перенаправления вывода, в частности, используя > для перезаписи файлов и >> для добавления содержимого, что позволяет вам захватывать результаты команд для ведения журналов или дальнейшей обработки. Вы также изучили перенаправление стандартной ошибки (2>) и объединение стандартного вывода и ошибки (&>) для эффективного управления всем выводом команд.
Кроме того, вы приобрели навыки построения и понимания конвейеров команд с использованием оператора |, что позволяет вам объединять команды и обрабатывать данные последовательно. Вы были ознакомлены с базовым редактированием текста с помощью Vim, охватывающим основные команды для вставки, сохранения и выхода из файлов. Наконец, вы узнали, как настраивать и использовать переменные оболочки для хранения данных и создавать псевдонимы для упрощения часто используемых команд, повышая эффективность работы с командной строкой и ее настройку.



