Введение
В этой лабораторной работе вы получите практический опыт управления файлами и каталогами с использованием основных инструментов командной строки в среде RHEL. Вы научитесь исследовать текущее местоположение и выводить содержимое с помощью pwd и ls, перемещаться по каталогам и создавать файлы с помощью cd и touch, а также эффективно организовывать файлы и каталоги с помощью mkdir, cp, mv и rm.
Кроме того, вы узнаете, как создавать ссылки между файлами с помощью ln (как жесткие, так и символические ссылки) и эффективно выбирать файлы с помощью расширений оболочки, что даст вам фундаментальные навыки управления файлами в командной строке.
Исследуйте текущее местоположение и выведите содержимое с помощью pwd и ls
На этом этапе вы научитесь исследовать свое текущее местоположение в файловой системе и выводить ее содержимое с помощью команд pwd и ls. Понимание текущего рабочего каталога и возможность просмотра его содержимого являются фундаментальными навыками для навигации и управления файлами из командной строки.
Сначала определим ваш текущий рабочий каталог с помощью команды pwd. pwd означает "print working directory" (вывести рабочий каталог) и отображает полное имя пути вашего текущего местоположения в файловой системе.
pwd
Вы должны увидеть вывод, похожий на этот, указывающий ваш текущий каталог:
/home/labex
Далее вы используете команду ls для вывода содержимого вашего текущего каталога. ls означает "list" (список) и выводит содержимое каталога для указанного каталога или, если каталог не указан, для текущего рабочего каталога.
ls
Вы должны увидеть вывод, показывающий содержимое вашего домашнего каталога:
project
Команда ls имеет несколько полезных опций для отображения дополнительной информации о файлах и каталогах.
Опция
-l(long listing format - формат длинного списка) предоставляет подробную информацию о каждом файле и каталоге, включая права доступа, количество жестких ссылок, владельца, группу, размер и время последнего изменения.ls -lВы должны увидеть вывод, похожий на этот:
total 0 drwxr-xr-x 2 labex labex 6 Aug 27 2024 projectОпция
-a(all files - все файлы) выводит все файлы, включая скрытые. В Linux имена файлов, начинающиеся с точки (.), считаются скрытыми. Кроме того,.ссылается на текущий каталог, а..ссылается на родительский каталог.ls -aВы должны увидеть вывод, похожий на этот, включая скрытые файлы конфигурации:
. .. .bash_history .bash_logout .bash_profile .bashrc .tmux.conf projectКомбинация
-lи-aкак-laдает длинный список всех файлов, включая скрытые.ls -laЭто покажет подробную информацию обо всех файлах и каталогах, включая скрытые:
total 20 drwx------ 1 labex labex 72 Jun 4 03:12 . drwxr-xr-x 1 root root 19 Aug 27 2024 .. -rw------- 1 labex labex 31 Jun 4 03:13 .bash_history -rw-r--r-- 1 labex labex 18 Feb 15 2024 .bash_logout -rw-r--r-- 1 labex labex 141 Feb 15 2024 .bash_profile -rw-r--r-- 1 labex labex 877 Jun 4 03:12 .bashrc -rw-r--r-- 1 labex labex 68 Aug 27 2024 .tmux.conf drwxr-xr-x 2 labex labex 6 Aug 27 2024 projectОпция
-R(recursive - рекурсивно) рекурсивно выводит содержимое всех подкаталогов. Чтобы продемонстрировать это, сначала создадим подкаталог.mkdir mydirТеперь используйте
ls -Rдля просмотра рекурсивного списка.ls -RВы должны увидеть списки каталогов
mydirиproject, за которыми следует их содержимое:.: mydir project ./mydir: ./project:Наконец, удалим каталог
mydir, чтобы очистить среду для следующих шагов.rmdir mydirЭта команда работает только для пустых каталогов. Вы узнаете больше о
rmdirиrmна следующем шаге.

Перемещение по каталогам и создание файлов с помощью cd и touch
На этом этапе вы научитесь изменять текущий рабочий каталог с помощью команды cd и создавать пустые файлы с помощью команды touch. Эти команды необходимы для эффективной организации файлов и навигации по файловой системе.
Сначала проверим ваше текущее местоположение и перейдем в каталог project, который был показан на шаге 1.
pwd
В качестве вывода вы должны увидеть /home/labex (ваш домашний каталог).
Теперь перейдем в каталог project с помощью команды cd:
cd project
Проверим ваше новое местоположение:
pwd
Теперь в качестве вывода вы должны увидеть /home/labex/project.
Теперь создадим новый каталог с именем documents внутри вашего текущего каталога project. Вы будете использовать команду mkdir, с которой вы кратко познакомились на предыдущем шаге.
mkdir documents
Проверим, что каталог documents был создан:
ls
В выводе вы должны увидеть documents.
Далее вы используете команду cd, чтобы изменить текущий рабочий каталог вашей оболочки на только что созданный каталог documents.
cd documents
После смены каталога хорошей практикой является подтверждение вашего нового местоположения с помощью pwd:
pwd
Вывод теперь должен быть /home/labex/project/documents.
Команда cd предлагает несколько удобных опций для навигации:
cd -: Эта команда переключает вас в предыдущий каталог, в котором вы находились. Давайте попробуем.cd -Вы должны вернуться в
/home/labex/project. Проверьте с помощьюpwd:pwdТеперь снова используйте
cd -, чтобы вернуться в/home/labex/project/documents:cd -И проверьте с помощью
pwd:pwdcd ..: Эта команда использует скрытый каталог..(две точки) для перехода на один уровень вверх к родительскому каталогу, без необходимости знать точное имя родителя.cd ..Теперь вы должны находиться в
/home/labex/project. Проверьте с помощьюpwd:pwdВы можете использовать цепочку
..для перехода на несколько уровней вверх. Например, чтобы перейти в/home/labexиз/home/labex/project:cd ../Проверьте ваше местоположение:
pwdВы должны находиться в
/home/labex.cd(без аргументов): Эта команда всегда вернет вас в ваш домашний каталог, который для пользователяlabexявляется/home/labex.cdПроверьте ваше местоположение:
pwdВы должны находиться в
/home/labex.
Теперь вернемся в ваш каталог ~/project/documents, чтобы создать некоторые файлы.
cd ~/project/documents
Проверьте ваше местоположение:
pwd
Вывод должен быть /home/labex/project/documents.
Теперь вы будете использовать команду touch. Команда touch обновляет временную метку файла до текущей даты и времени, не изменяя его иным образом. Эта команда также очень полезна для создания пустых файлов.
Создадим два пустых файла с именами report.txt и notes.txt в каталоге ~/project/documents.
touch report.txt notes.txt
Проверим, были ли созданы файлы, с помощью ls -l:
ls -l
Вы должны увидеть вывод, похожий на этот, показывающий недавно созданные файлы:
total 0
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM report.txt
-rw-rw-r--. 1 labex labex 0 Mar 7 HH:MM notes.txt
Наконец, создадим новый каталог с именем drafts внутри ~/project/documents, а затем создадим в нем файл.
mkdir drafts
cd drafts
touch draft_v1.txt
Проверим создание файла:
ls -l
Вы должны увидеть draft_v1.txt в списке.
Теперь вернитесь в ваш каталог ~/project с помощью одной команды cd.
cd ~/project
Проверьте ваше местоположение:
pwd
Вывод должен быть /home/labex/project.
Организация файлов и каталогов с помощью mkdir, cp, mv и rm
На этом этапе вы научитесь эффективно организовывать свои файлы и каталоги с помощью команд mkdir (создать каталог), cp (копировать), mv (переместить/переименовать) и rm (удалить). Эти команды имеют решающее значение для поддержания чистоты и структурированности файловой системы.
Сначала убедитесь, что вы находитесь в каталоге ~/project.
cd ~/project
Проверьте ваше текущее местоположение:
pwd
Вывод должен быть /home/labex/project.
mkdir: Создание каталогов
Вы уже использовали mkdir для создания одного каталога. Теперь давайте рассмотрим более продвинутые опции mkdir.
Вы можете создать несколько каталогов одновременно, перечислив их в качестве аргументов:
mkdir reports presentations
Проверьте их создание:
ls
Вы должны увидеть documents, presentations и reports в списке.
Опция -p (parents - родительские) команды mkdir очень полезна для создания любых отсутствующих родительских каталогов для запрошенного назначения. Это предотвращает ошибки, если вы попытаетесь создать подкаталог внутри несуществующего родительского каталога.
Создадим вложенную структуру каталогов: projects/alpha/docs.
mkdir -p projects/alpha/docs
Теперь используйте ls -R, чтобы увидеть недавно созданную вложенную структуру:
ls -R projects
Вы должны увидеть:
projects:
alpha
projects/alpha:
docs
projects/alpha/docs:
cp: Копирование файлов и каталогов
Команда cp копирует файлы и каталоги. При копировании файла она создает дубликат либо в текущем каталоге, либо в другом указанном каталоге.
Скопируем report.txt из documents в каталог reports.
cp documents/report.txt reports/
Проверьте копирование, выведя содержимое каталога reports:
ls reports
Вы должны увидеть report.txt в каталоге reports.
Если в целевом каталоге существует файл с таким же именем, cp по умолчанию перезапишет его.
Чтобы скопировать каталог и его содержимое, необходимо использовать опцию -r (recursive - рекурсивно). По умолчанию cp игнорирует каталоги, если -r не указана.
Скопируем весь каталог documents в projects/alpha/.
cp -r documents projects/alpha/
Проверьте рекурсивное копирование:
ls -R projects/alpha/documents
Вы должны увидеть содержимое каталога documents (включая notes.txt, drafts и drafts/draft_v1.txt), которое теперь дублируется внутри projects/alpha/documents.
projects/alpha/documents:
drafts notes.txt report.txt
projects/alpha/documents/drafts:
draft_v1.txt
mv: Перемещение и переименование файлов и каталогов
Команда mv перемещает файлы из одного места в другое. Ее также можно использовать для переименования файлов или каталогов. Если рассматривать абсолютный путь к файлу как его полное имя, то перемещение файла фактически эквивалентно переименованию файла. Содержимое перемещаемых файлов остается неизменным.
Переименуем notes.txt в каталоге documents в meeting_notes.txt.
mv documents/notes.txt documents/meeting_notes.txt
Проверьте переименование:
ls documents
Теперь вы должны увидеть meeting_notes.txt вместо notes.txt.
Теперь переместим report.txt из каталога reports в documents/drafts.
mv reports/report.txt documents/drafts/
Проверьте перемещение:
ls reports
Каталог reports теперь должен быть пустым.
ls documents/drafts
Вы должны увидеть draft_v1.txt и report.txt в каталоге documents/drafts.
Опция -v для mv отображает подробный вывод операций команды, что может быть полезно для подтверждения.
mv -v documents/meeting_notes.txt documents/final_notes.txt
Вы увидите вывод, подобный этому:
renamed 'documents/meeting_notes.txt' -> 'documents/final_notes.txt'
rm: Удаление файлов и каталогов
Команда rm удаляет файлы. Будьте осторожны с rm, так как удаленные файлы обычно не восстанавливаются из командной строки.
Создадим временный файл для практики использования rm.
touch temp_file.txt
Теперь удалим temp_file.txt:
rm temp_file.txt
Проверьте его удаление:
ls
temp_file.txt больше не должен быть в списке.
По умолчанию rm не удаляет каталоги. Если вы попытаетесь удалить непустой каталог без соответствующей опции, вы получите ошибку.
rm presentations
Вы увидите ошибку:
rm: cannot remove 'presentations': Is a directory
Чтобы удалить каталоги и их содержимое, необходимо использовать опцию -r (recursive - рекурсивно). Команда rm -r сначала обходит каждый подкаталог и индивидуально удаляет его файлы, прежде чем удалить каждый каталог.
Удалим каталог presentations и его содержимое (который в настоящее время пуст, но -r все равно требуется для каталогов).
rm -r presentations
Проверьте его удаление:
ls
presentations больше не должен быть в списке.
Опция -i для rm интерактивно запрашивает подтверждение перед удалением каждого файла. Это хорошая мера безопасности.
Создадим еще несколько временных файлов, а затем удалим их интерактивно.
touch file1.txt file2.txt
rm -i file1.txt file2.txt
Вам будет предложено ввести данные для каждого файла:
rm: remove regular empty file 'file1.txt'? y
rm: remove regular empty file 'file2.txt'? y
Введите y и нажмите Enter для каждого запроса, чтобы подтвердить удаление.
Опция -f (force - принудительно) принудительно удаляет без запроса подтверждения у пользователя. Если вы укажете и -i, и -f, приоритет будет иметь -f. Используйте -f с крайней осторожностью.
Наконец, очистим каталог projects.
rm -r projects
Проверьте, что projects удален:
ls
rmdir: Удаление пустых каталогов
Вы также можете использовать команду rmdir для удаления пустых каталогов. Она завершится ошибкой, если каталог не пуст.
Создадим пустой каталог и удалим его с помощью rmdir.
mkdir empty_dir
rmdir empty_dir
Проверьте его удаление:
ls
empty_dir больше не должен быть в списке.
Если вы попытаетесь удалить непустой каталог с помощью rmdir, это не удастся:
mkdir test_dir
touch test_dir/test_file.txt
rmdir test_dir
Вы увидите ошибку:
rmdir: failed to remove 'test_dir': Directory not empty
Помните, что для непустых каталогов следует использовать rm -r.
rm -r test_dir
Создание ссылок между файлами с помощью ln (жесткие и символические ссылки)
На этом этапе вы узнаете о создании ссылок между файлами с помощью команды ln. Файловые системы Linux поддерживают два типа ссылок: жесткие ссылки и символические (или мягкие) ссылки. Понимание различий между ними имеет решающее значение для эффективного управления файлами.
Сначала убедитесь, что вы находитесь в каталоге ~/project.
cd ~/project
Проверьте ваше текущее местоположение:
pwd
Вывод должен быть /home/labex/project.
Создадим новый файл с именем original_file.txt с некоторым содержимым для работы.
echo "This is the content of the original file." > original_file.txt
Проверьте содержимое файла:
cat original_file.txt
Жесткие ссылки (Hard Links)
Жесткая ссылка — это, по сути, другое имя для существующего файла. Она напрямую указывает на те же данные (inode) на устройстве хранения, что и исходный файл. После создания жесткой ссылки вы не сможете отличить новую жесткую ссылку от исходного имени файла; они являются одинаково действительными способами доступа к одним и тем же данным.
Вы можете определить, имеет ли файл несколько жестких ссылок, используя команду ls -l. Второй столбец в выводе ls -l показывает количество жестких ссылок на файл.
Изначально original_file.txt имеет одну жесткую ссылку (саму себя):
ls -l original_file.txt
Вы должны увидеть вывод, похожий на этот, где число 1 указывает на одну жесткую ссылку:
-rw-rw-r--. 1 labex labex 35 Mar 7 HH:MM original_file.txt
Теперь создадим жесткую ссылку на original_file.txt с именем hard_link.txt с помощью команды ln.
ln original_file.txt hard_link.txt
Проверьте количество жестких ссылок для обоих файлов:
ls -l original_file.txt hard_link.txt
Теперь вы должны увидеть количество жестких ссылок 2 для обоих файлов, что указывает на то, что они ссылаются на одни и те же данные:
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM hard_link.txt
-rw-rw-r--. 2 labex labex 35 Mar 7 HH:MM original_file.txt
Чтобы убедиться, что они указывают на одни и те же данные, вы можете использовать опцию ls -i для вывода номера inode каждого файла. Если файлы находятся в одной файловой системе и их номера inode совпадают, то файлы являются жесткими ссылками, указывающими на одно и то же содержимое файла данных.
ls -i original_file.txt hard_link.txt
Номера inode должны быть идентичны:
1234567 original_file.txt 1234567 hard_link.txt
Если вы измените содержимое одного файла, изменения отразятся и в другом, потому что это одни и те же базовые данные.
echo "Adding new line." >> hard_link.txt
cat original_file.txt
Вы увидите:
This is the content of the original file.
Adding new line.
Даже если исходный файл будет удален, вы все равно сможете получить доступ к содержимому файла при условии, что существует хотя бы одна другая жесткая ссылка. Данные удаляются с носителя только тогда, когда удаляется последняя жесткая ссылка, делая содержимое файла не ссылаемым ни одной жесткой ссылкой.
Удалим original_file.txt:
rm original_file.txt
Теперь попробуем получить доступ к hard_link.txt:
cat hard_link.txt
Вы по-прежнему увидите содержимое:
This is the content of the original file.
Adding new line.
Количество жестких ссылок для hard_link.txt теперь должно быть 1:
ls -l hard_link.txt
Ограничения жестких ссылок:
- Жесткие ссылки можно использовать только с обычными файлами. Вы не можете использовать команду
lnдля создания жесткой ссылки на каталог или специальный файл. - Жесткие ссылки можно использовать только в том случае, если оба файла находятся в одной файловой системе. Вы можете использовать команду
dfдля вывода списка файловых систем.
Символические ссылки (Symbolic Links)
Символическая ссылка (также называемая "мягкой ссылкой" или "symlink") — это специальный тип файла, который указывает на другой файл или каталог по его пути. Это похоже на ярлык в Windows. В отличие от жестких ссылок, символические ссылки не указывают напрямую на данные; они указывают на имя целевого файла или каталога.
Создадим новый файл с именем target_file.txt для нашей символической ссылки.
echo "This is the target file for the symbolic link." > target_file.txt
Теперь создадим символическую ссылку с именем sym_link.txt, указывающую на target_file.txt, используя команду ln -s.
ln -s target_file.txt sym_link.txt
Проверим детали символической ссылки с помощью ls -l:
ls -l target_file.txt sym_link.txt
Вы заметите несколько отличий:
- Первый символ в длинном списке для
sym_link.txt— этоl(букваl), указывающая, что это символическая ссылка. - В выводе показано
sym_link.txt -> target_file.txt, явно указывая, на что она ссылается. - Размер символической ссылки очень мал (это просто длина целевого пути), а не размер целевого файла.
- Количество жестких ссылок для
sym_link.txtравно1.
-rw-rw-r--. 1 labex labex 45 Mar 7 HH:MM target_file.txt
lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txt
Вы можете получить доступ к содержимому target_file.txt через sym_link.txt:
cat sym_link.txt
Вы увидите:
This is the target file for the symbolic link.
Ключевые различия и поведение символических ссылок:
Межфайловые ссылки: Символические ссылки могут связывать два файла в разных файловых системах.
Ссылки на каталоги: Символические ссылки могут указывать на каталог, а не только на обычный файл. Создадим символическую ссылку на ваш каталог
documents.ln -s documents doc_shortcutТеперь вы можете перейти в
doc_shortcut, как если бы это был сам каталогdocuments:cd doc_shortcutПроверьте ваше местоположение. Обратите внимание, что
pwdпо умолчанию показывает путь символической ссылки:pwdВывод:
/home/labex/project/doc_shortcutЕсли вы хотите, чтобы
pwdпоказывал фактический путь каталога, на который указывает символическая ссылка, используйте опцию-P:pwd -PВывод:
/home/labex/project/documentsТеперь вернитесь в
~/project:cd ~/projectВисячие символические ссылки (Dangling symbolic links): Когда исходный обычный файл (цель) удаляется, символическая ссылка остается, но указывает на отсутствующий файл. Это называется "висячей символической ссылкой".
Удалим
target_file.txt:rm target_file.txtТеперь проверьте
sym_link.txtс помощьюls -l:ls -l sym_link.txtВы увидите, что
sym_link.txtвсе еще существует, но его цельtarget_file.txtотображается красным или другим цветом (в зависимости от конфигурации вашего терминала), чтобы указать, что она повреждена:lrwxrwxrwx. 1 labex labex 14 Mar 7 HH:MM sym_link.txt -> target_file.txtЕсли вы попытаетесь выполнить
catдля висячей символической ссылки, это не удастся:cat sym_link.txtВывод:
cat: sym_link.txt: No such file or directory
Наконец, очистим файлы и ссылки, созданные на этом шаге.
rm hard_link.txt sym_link.txt doc_shortcut
ls
Из предыдущих шагов должны остаться только каталоги documents и reports.
Эффективный выбор файлов с помощью расширений оболочки (Shell Expansions)
На этом шаге вы узнаете, как эффективно выбирать файлы и каталоги, используя различные возможности расширения оболочки (shell expansion), включая сопоставление с шаблоном (globbing), расширение тильдой (~), расширение фигурными скобками ({}), расширение переменных и подстановку команд. Эти возможности позволяют выполнять операции над несколькими файлами с помощью лаконичных команд.
Сначала убедитесь, что вы находитесь в каталоге ~/project.
cd ~/project
Проверьте ваше текущее местоположение:
pwd
Вывод должен быть /home/labex/project.
Чтобы продемонстрировать расширения оболочки, давайте создадим набор файлов и каталогов.
mkdir data
cd data
touch file1.txt file2.log file_a.txt file_b.log report_2023.txt report_2024.log
touch image.jpg document.pdf archive.zip
mkdir dir1 dir2 dir3
cd ..
Теперь выведите содержимое каталога data, чтобы увидеть созданные вами файлы:
ls data
Вы должны увидеть:
archive.zip dir1 dir2 dir3 document.pdf file1.txt file2.log file_a.txt file_b.log image.jpg report_2023.txt report_2024.log
Сопоставление с шаблоном (Globbing)
Сопоставление с шаблоном, также известное как globbing, позволяет выбирать файлы на основе шаблонов с использованием специальных символов, называемых метасимволами.
| Метасимвол | Соответствует | Пример |
|---|---|---|
* |
Любая строка из нуля или более символов. | *.txt соответствует всем файлам, оканчивающимся на .txt. |
? |
Любой один символ. | file?.txt соответствует file1.txt, fileA.txt и т.д. |
[abc...] |
Любой один символ из перечисленных в классе. | file[12].txt соответствует file1.txt или file2.txt. |
[!abc...] |
Любой один символ, не входящий в перечисленный класс. | file[!1].txt соответствует fileA.txt, но не file1.txt. |
[[:alpha:]] |
Любой алфавитный символ. | file[[:alpha:]].txt соответствует fileA.txt. |
[[:digit:]] |
Любая одиночная цифра от 0 до 9. | file[[:digit:]].txt соответствует file1.txt. |
Давайте попробуем несколько примеров в каталоге data.
Использование
*: Вывести все файлы, оканчивающиеся на.txt:ls data/*.txtВывод:
data/file1.txt data/file_a.txt data/report_2023.txtВывести все файлы, содержащие
fileв имени:ls data/*file*Вывод:
data/file1.txt data/file2.log data/file_a.txt data/file_b.logИспользование
?: Вывести файлы, у которых ровно один символ перед.log:ls data/file?.logВывод:
data/file2.logИспользование
[]для наборов символов: Вывести файлы, начинающиеся сreport_и содержащие2023или2024в имени:ls data/report_[2][0][2][34].*Вывод:
data/report_2023.txt data/report_2024.logИспользование
{}для расширения фигурными скобками: Вывести файлы, начинающиеся сfileи оканчивающиеся на.txtили.log:ls data/file*.{txt,log}Вывод:
data/file1.txt data/file2.log data/file_a.txt data/file_b.log
Расширение тильдой ~
Символ тильды (~) расширяется до домашнего каталога текущего пользователя (/home/labex). Если за ним следует имя пользователя, он расширяется до домашнего каталога этого пользователя.
echo ~
Вывод:
/home/labex
echo ~root
Вывод:
/root
echo ~/project/data
Вывод:
/home/labex/project/data
Расширение фигурными скобками {}
Расширение фигурными скобками генерирует произвольные строки. Оно полезно для создания списков файлов или каталогов с похожими именами без необходимости вводить каждое имя по отдельности.
Список, разделенный запятыми: Создать файлы
report_jan.txt,report_feb.txt,report_mar.txt:touch data/report_{jan,feb,mar}.txtВывести их:
ls data/report_*.txtВывод:
data/report_2023.txt data/report_jan.txt data/report_feb.txt data/report_mar.txtДиапазон чисел или букв: Создать файлы
doc1.txt,doc2.txt,doc3.txt:touch data/doc{1..3}.txtВывести их:
ls data/doc*.txtВывод:
data/doc1.txt data/doc2.txt data/doc3.txtСоздать каталоги
chapterA,chapterB,chapterC:mkdir data/chapter{A..C}Вывести их:
ls data/chapter*Вывод:
data/chapterA data/chapterB data/chapterC
Расширение переменных
Переменные оболочки хранят значения, которые могут быть раскрыты в командах. Вы определяете переменную с помощью VARNAME=value и получаете доступ к ее значению с помощью $VARNAME или ${VARNAME}.
MY_DIR=data
echo "My directory is: $MY_DIR"
Вывод:
My directory is: data
Вы можете использовать переменные в командах:
ls $MY_DIR
Вывод будет содержать содержимое каталога data.
Подстановка команд (Command Substitution)
Подстановка команд позволяет использовать вывод команды как часть другой команды. Это достигается путем заключения команды в $(command) или обратные кавычки `command`. Синтаксис $(command) обычно предпочтительнее, так как его можно вкладывать.
Получим текущую дату и используем ее в имени файла.
touch data/log_$(date +%Y-%m-%d).txt
Выведите каталог data, чтобы увидеть новый файл:
ls data/log_*.txt
Вывод будет примерно таким:
data/log_2024-03-07.txt
Вы также можете использовать это для подсчета файлов:
echo "There are $(ls data | wc -l) items in the data directory."
Вывод будет примерно таким:
There are 19 items in the data directory.
Защита аргументов от расширения
Иногда необходимо предотвратить раскрытие определенных символов оболочкой. Это можно сделать с помощью:
Обратный слэш (
\): Экранирует следующий одиночный символ.echo "The value of \$HOME is your home directory."Вывод:
The value of $HOME is your home directory.Одинарные кавычки (
''): Предотвращают любое расширение оболочки внутри кавычек.echo 'The current date is $(date +%Y-%m-%d).'Вывод:
The current date is $(date +%Y-%m-%d).Двойные кавычки (
""): Предотвращают большинство расширений оболочки, но разрешают расширение переменных ($VAR) и подстановку команд ($()).MY_DATE=$(date +%Y-%m-%d) echo "Today's date is $MY_DATE."Вывод:
Today's date is 2024-03-07.Сравнение с одинарными кавычками:
echo 'Today is $MY_DATE.'Вывод:
Today's date is $MY_DATE.
Наконец, давайте очистим каталог data.
rm -r data
Резюме
В этой лабораторной работе вы изучили основные инструменты командной строки для управления файлами и каталогами в RHEL. Вы начали с освоения команды pwd для определения текущего рабочего каталога и ls для вывода содержимого каталога, включая использование таких опций, как -l для подробной информации и -a для отображения скрытых файлов. Затем вы перешли к навигации по файловой системе с помощью cd и созданию новых файлов с помощью touch.
Кроме того, вы приобрели навыки организации файловой системы с помощью mkdir для создания каталогов, cp для копирования файлов и каталогов, mv для их перемещения или переименования, и rm для их удаления. Лабораторная работа также охватила создание жестких и символических ссылок с помощью ln, а также эффективный выбор файлов с использованием расширений оболочки, что повысило вашу способность эффективно управлять файлами и каталогами из командной строки.



