Работа с файлами в Linux

Теперь вы знакомы с основами, и мы можем начинать экспериментировать. Для начала мы научимся создавать файлы и каталоги и перемещать их. В следующих статьях мы поговорим о том, как наполнять их содержимом. 

Как создать каталог

В Linux файловая система организована иерархически. Со временем, как правило, накапливается изрядное количество данных. Важно создать структуру каталогов, которая поможет нам организовать эти данные так, чтобы ими было удобно управлять. 

Иногда пользователи просто сбрасывают все прямо в основной домашний каталог, а потом тратят кучу времени, пытаясь найти то, что им нужно, среди сотен других файлов. Поэтому начинайте прививать себе привычку организовывать файлы в удобную структуру уже сейчас, и вы потом долго еще будете благодарить себя. 

Чтобы создать папку, введите команду mkdir (сокращение от make directory — создать каталог). 

mkdir [параметры] <каталог>

Эту команду можно запустить без параметров, указав только папку, и тогда она создаст его.

1. user@bash: pwd
2. /home/karpaff
3. user@bash: 
4. user@bash: ls
5. bin Documents public_html
6. user@bash: 
7. user@bash: mkdir linuxtutorialwork
8. user@bash: 
9. user@bash: ls
10. bin Documents linuxtutorialwork public_html

Давайте разберемся:

  • Строка 1. Убедимся, что уже не находимся там, где хотим быть. В приведенном выше примере мы находимся в домашнем каталоге. 
  • Строки 2. Перечисляем, что уже есть в нашем каталоге.
  • Строка 7. Запускаем команду mkdir и создаем каталог linuxtutorialwork. В этом каталоге мы будем работать в этой серии статей. 

Помните, что когда мы указываем каталог в приведенной выше команде, мы фактически указываем к нему путь. Вот еще несколько примеров того, как мы можем указать каталог, который нужно создать.

  • mkdir /home/karpaff/foo
  • mkdir ./blah
  • mkdir ../dir1
  • mkdir ~/linuxtutorialwork/dir2

Для mkdir есть еще несколько полезных параметров. Вспомните: где найти параметры командной строки, которые поддерживает конкретная команда?

Первый параметр -p, он позволяет создать родительские каталоги. 

user@bash: mkdir -p linuxtutorialwork/foo/bar
user@bash:
user@bash: cd linuxtutorialwork/foo/bar
user@bash: pwd
/home/karpaff/linuxtutorialwork/foo/bar

Второй параметр -v, он поэтапно выводит на экран процесс работы команды mkdir.

user@bash: mkdir -pv linuxtutorialwork/foo/bar
user@bash: mkdir: created directory 'linuxtutorialwork/foo'
user@bash: mkdir: created directory 'linuxtutorialwork/foo/bar'
user@bash:
user@bash: cd linuxtutorialwork/foo/bar
user@bash: pwd
user@bash: /home/ryan/linuxtutorialwork/foo/bar

Как удалить каталог

Удалить каталог тоже легко. Учтите, что в командной строке Linux нельзя отменять действия, в том числе — удаление. Следите за тем, что вы делаете. 

Для удаления папки используется команда rmdir, сокращение от remove directory (удалить каталог). 

rmdir [параметры] <каталог>

Следует отметить два момента. Во-первых, rmdir поддерживает параметры -v и -p, они работают так же, как и с командной mkdir. Во-вторых, удалять можно только пустые каталоги. Позже мы посмотрим, как это можно обойти. 

user@bash: rmdir linuxtutorialwork/foo/bar
user@bash:
user@bash: ls linuxtutorialwork/foo

Как создать пустой файл

Если попытаться обратиться к несуществующему файлу, Linux автоматически создаст его. Это очень удобно. Этой особенностью можно воспользоваться, чтобы создавать пустые файлы — с помощью команды touch.

touch [параметры] <имя_файла>

user@bash: pwd
user@bash: /home/karpaff/linuxtutorialwork
user@bash:
user@bash: ls
foo
user@bash:
user@bash: touch example1
user@bash:
user@bash: ls
example1 foo

Команду touch можно использовать для изменения времени последнего изменения файла. Студенты иногда пользуются этой командой, чтобы выглядело так, будто их файлы с заданиями не изменялись после установленного срока. Обычно толку от этой особенности мало, но это может быть полезно при тестировании системы, которая основана на правах доступа к файлу и времени его последнего изменения. 

Как скопировать файл или папку

Часто перед тем, как что-то изменить, нам нужно создать копию, чтобы не потерять оригинал на случай, если что-то пойдет не так. 

Для копирования файла или папки используется команда cp, сокращение от copy (скопировать).

cp [параметры] <источник> <место_назначения>

Для команды cp доступно несколько параметров. Вы можете узнать о них в руководстве. Один из них мы разберем чуть ниже. 

user@bash: ls
user@bash: example1 foo
user@bash:
user@bash: cp example1 barney
user@bash: ls
barney example1 foo

Обратите внимание, что и источник, и место назначения — это пути. Мы можем использовать как абсолютные, так и относительные пути. Вот несколько примеров:

  1. cp /home/karpaff/linuxtutorialwork/example2 example3
  2. cp example2 ../../backups
  3. cp example2 ../../backups/example4
  4. cp /home/karpaff/linuxtutorialwork/example2 /otherdir/foo/example5

Когда мы используем команду cp, местом назначения может быть путь к файлу или каталогу. Если это файл (примеры 1, 3 и 4), команда создаст копию источника, но назовет копию именем файла, указанным в месте назначения. Если в качестве места назначения будет указана каталог, команда скопирует файл в этот каталог, и копия будет иметь такое же имя, как и у источника.

По умолчанию cp будет копировать только файл. Есть способ скопировать несколько файлов за один раз, мы познакомимся с ним позже. 

С помощью параметра -r (сокращение от recursive — рекурсивный) можно копировать каталоги. «Рекурсивный» значит, что команда просмотрит каталог и все файлы и каталоги в нем, зайдет в подкаталоги и сделать в них то же самое.

user@bash: ls
barney example1 foo
user@bash: cp foo foo2
cp: omitting directory 'foo'
user@bash: cp -r foo foo2
user@bash: ls
barney example1 foo foo2

В приведенном выше примере любые файлы и подкаталоги в каталоге foo также будут скопированы в foo2.

Как переместить файл или каталог

Для перемещения файлов используется команда mv, сокращение от move (переместить). Она работаете так же, как cp. Чтобы перемещать каталоги, необязательно указывать параметр -r

mv [параметры] <источник> <место_назначения>

1. user@bash: ls
2. barney example1 foo foo2
3. user@bash: mkdir backups
4. user@bash: mv foo2 backups/foo3
5. user@bash: mv barney backups/
6. user@bash: ls
7. backups example1 foo

Давайте разберемся:

  • Строка 3. Создаем новый каталог под названием backups.
  • Строка 4. Перемещаем подкаталог foo2 в каталог backups и переименовываем его в foo3.
  • Строка 7. Перемещаем файл barney в каталог backups. Поскольку мы не указали имя места назначения, оно осталось тем же.

Обратите внимание, что снова источник и место назначения являются путями и могут быть как абсолютными, так и относительными.

Как переименовать файл или каталог

Теперь, как и в случае с командой touch, мы можем использовать базовое поведение команды mv для достижения несколько иного результата. 

Обычно mv используется для перемещения файла или каталога в новый каталог. Но как вы видели в строке 4, мы можем указать новое имя для файла или каталога, и команда mv переименует его, пока будет перемещать. 

1. user@bash: ls
2. backups example1 foo
3. user@bash: mv foo foo3
4. user@bash: ls
5. backups example1 foo3
6. user@bash: cd ..
7. user@bash: mkdir linuxtutorialwork/testdir
8. user@bash: mv linuxtutorialwork/testdir /home/ryan/linuxtutorialwork/fred
9. user@bash: ls linuxtutorialwork
10. backups example1 foo3 fred

Давайте разберемся:

  • Строка 3. Переименовываем файл foo в foo3 (оба пути относительны).
  • Строка 6. Переходим в родительский каталог. Это позволит в следующей строке проиллюстрировать, что мы можем запускать команды для файлов и каталогов, даже если мы в настоящее время не находимся в каталоге, в котором они лежат.
  • Строка 8. Переименовываем каталог testdir в fred (исходный путь был относительным, а конечный — абсолютным).

Как удалить файл

Как и в случае с rmdir, удаление файла — это действие, которое нельзя отменить, поэтому будьте осторожны. 

Для удаления файла используется команда rm, сокращение от remove (удалить).

rm [параметры] <файл>

user@bash: ls
backups example1 foo3 fred
user@bash: rm example1
user@bash: ls
backups foo3 fred

Как удалить непустой каталог

У команды rm есть несколько параметров, которые изменяют его поведение. Почитать о них вы можете в руководстве командной строки. 

Здесь мы разберем полезный параметр -r. Когда мы запускаем команду rm с этим параметром, она удаляет не только каталог, но и все его содержимое: файлы и подкаталоги.

user@bash: ls
backups foo3 fred
user@bash: rmdir backups
rmdir: failed to remove 'backups': Directory not empty
user@bash: rm backups
rm: cannot remove 'backups': Is a directory
user@bash: rm -r backups
user@bash: ls
foo3 fred

Параметр -r можно сочетать с параметром -i (сокращение от interactive — интерактивный). В этом случае вы сможете подтверждать удаление каждого файла и отменить команду. 

Что нужно запомнить

Команды

mkdir
Создать каталог. 

rmdir
Удалить каталог.

touch
Создать пустой файл.

cp
Скопировать файл или каталог.

mv
Переместить файл или каталог. Можно использовать для переименования. 

rm
Удалить файл.

Идеи

Нельзя отменить
В командной строке Linux нет возможности отменить действие. Поэтому 7 раз подумайте, прежде чем что-то удалить.

Параметры командной строки
У большинства команд есть много полезных параметров командной строки. Всегда смотрите, какие параметры доступны для той или иной команды, в руководстве. 

Практические задания

    1. Создайте каталога в вашем домашнем каталоге, в котором можно поэкспериментировать.
    2. В этом каталоге создайте несколько файлов и подкаталогов (а также файлов и каталогов в этих подкаталогах).
    3. Теперь переименуйте несколько файлов и каталогов.
    4. Удалите один из каталогов, в котором есть другие файлы и каталоги.
    5. Вернитесь в свой домашний каталог и скопируйте оттуда файл из одного из своих подкаталогов в исходный каталог, который вы создали.
    6. Переместите этот файл обратно в другой каталог.
    7. Переименуйте несколько файлов.
    8. Переместите файл и одновременно переименуйте его.
    9. Посмотрите на существующие каталоги в вашем домашнем каталоге. У вас, вероятно, есть каталог «Документы», «Загрузки», «Музыка» и «Изображения» и т. д. Подумайте, какие другие каталоги могут помочь вам организовать вашу систему, и создайте их.
codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©