Для обращения к определенному файлу или каталогу вам нужно указать путь, ведущий к этому каталогу или файлу. Как вы, наверно, уже знаете из MS DOS или Mac OS, существуют два способа указания пути:
- Абсолютный путь
Введите полный путь от корневого каталога к соответствующему файлу или каталогу.
- Относительный путь
Введите путь к соответствующему файлу или каталогу, используя текущий каталог как точку отправления. Подразумевается, что нужно указать уровни, по которым вы должны перемещаться вверх и вниз в дереве файловой системы для достижения целевого каталога файла, начиная с текущего каталога.
Пути содержат имена файлов, каталогов или обоих, разделенные символами наклонной черты (слешами). Абсолютный путь всегда начинается со слеша. Относительные пути не имеют слеша в начале, но могут иметь одну или две точки.
При вводе команд вы можете выбрать любой из двух способов указания пути—в зависимости от ваших предпочтений и количества печати—оба приведут в одному результату. Для смены каталога используйте команду cd и укажите путь к каталогу.
![]() | Обращение с пробелами в именах файлов и каталогов |
|---|---|
Если имя файла или каталога содержит пробел, либо заблокируйте пробел, используя обратный слеш ( | |
При указании путей следующие «сокращения» могут значительно сократить объем печати:
Символ тильды (
~) является сокращением для домашних каталогов. Например, для получения списка содержимого вашего домашнего каталога используйте ls~. Для получения списка содержимого домашнего каталога другого пользователя введите ls~(конечно, это будет сработает только если у вас есть права просмотра содержимого, смотрите Раздел 7.3, «Права доступа файлов»). Например, ввод ls ~tux выдаст список содержимого домашнего каталога пользователя под именемимя_пользователяtux. Вы можете использовать символ тильды как сокращение для домашних каталогов и тогда, когда вы работаете в сетевом окружении и где ваш домашний каталог может не назваться/home, но может соответствовать любому каталогу в файловой системе.Из любого места файловой системы вы можете достичь вашего домашнего каталога введя cd
~или даже короче, просто введя cd без каких-либо параметров.При использовании относительных путей обращайтесь к текущему каталогу при помощи точки (
.). Это в основном полезно для таких команд, как cp или mv, которыми вы можете копировать или перемещать файлы или каталоги.Следующий верхний уровень в дереве представлен двумя точками (
..). Для того, чтобы перейти в родительский каталог вашего текущего каталога, введите cd .., для того, чтобы перейти двумя уровнями выше текущего каталога введите cd ../.. и т.д.
Для применения ваших знаний поищите некоторые примеры ниже. Они касаются основных задач, которые вы, возможно, хотите выполнять с файлами или каталогами, используя Bash.
Предположим, вы хотите скопировать файл, расположенные где-то в вашем домашнем каталоге, в подкаталог /tmp.
Сначала создайте подкаталог
/tmpв вашем домашнем каталоге:Введите
mkdir /tmp/test
mkdir означает «создать каталог». Это команда создает новый каталог под названием
testв каталоге/tmp. В этом случае вы используете абсолютный путь для создания каталогаtest.Для проверки того, что произошло, введите теперь
ls -l /tmp
Новый каталог
testдолжен появиться в содержании каталога/tmp.Перейдите в новый каталог при помощи
cd /tmp/test
Теперь создайте новый файл в подкаталоге вашего домашнего каталога и скопируйте его в
/tmp/test. Используйте относительный путь для этой задачи.![[Important]]()
Перезапись существующих файлов Перед копированием, перемещением или переименованием файла, проверьте не содержит ли уже целевой каталог файл с таким же именем. Если так, то подумайте над изменением имени одного из файлов или используйте cp или mv с параметрами типа
-i, которые спросят перед тем, как перезаписать существующий файл. В противном случае Bash перезапишет существующий файл без запроса.Для получения списка содержимого вашего домашнего каталога введите
ls -l ~
По умолчанию, он должен содержать подкаталог под именем
Documents. Если его нет, создайте этот подкаталог при помощи команды mkdir, которую вы уже знаете:mkdir ~/Documents
Введите
touch ~/Documents/myfile.txt
Эта команда создаст новый пустой файл под именем
myfile.txtв каталогеDocuments.Обычно команда touch обновляет данные изменения и доступа для существующего файла. Если вы используете touch с именем файла, который не существует в целевом каталоге, она создаст новый файл.
Введите
ls -l ~/Documents
Новый файл должен появиться в содержании.
Введите
cp ~/Documents/myfile.txt .
Не забудьте точку в конце.
Это команда говорит Bash пойти в ваш домашний каталог и скопировать
myfile.txtиз подкаталогаDocumentsв текущий каталог,/tmp/test, без изменения имени файла.Проверьте результат, введя
ls -l
Файл
myfile.txtдолжен появиться в содержании для/tmp/test.
Теперь предположим, вы хотите переименовать myfile.txt в tuxfile.txt. Окончательно, вы решили удалить переименованный файл и подкаталог test.
Для переименования файла введите
mv myfile.txt tuxfile.txt
Для проверки того, что произошло, введите
ls -l
Вместо
myfile.txtв содержании должен появитьсяtuxfile.txt.mv означает
переместитьи используется с двумя параметрами: первый параметр указывает источник, второй параметр указывает цель операции. Вы можете использовать mvлибо для переименования файла или каталога,
либо для перемещения файла или каталога в новое положение,
либо для обоих действий сразу.
Придя к заключению, что вам больше не нужен файл, вы можете удалить его, введя
rm tuxfile.txt
Bash удалит файл без запроса.
Перейдите на уровень выше при помощи cd .. и проверьте при помощи
ls -l test
, пуст ли теперь каталог
test.Если так, удалите каталог
test, введяrmdir test
![[Note]](/books/opensuse/admon/note.png)
![[Important]](/books/opensuse/admon/important.png)