Команды Linux для работы с файлами и каталогами (директориями) через терминал
Введение
В этом руководстве для начинающих пользователей мы ознакомимся с основными командами для работы с файлами и каталогами (иногда их еще называют директориями) в Linux-системах.
Требования
Cервер с Ubuntu 20.04
Все команды, описанные ниже, будут работать и в других дистрибутивах Linux.
Расположение каталогов в файловой системе
При входе на сервер, вы, как правило, попадаете в домашний каталог вашей учетной записи, отведенный для хранения файлов и создания директорий.
Для того чтобы узнать, где располагается каталог, в котором мы сейчас находимся, используется команда:
pwd
Результат выполнения команды выглядит следующим образом:
/home/demo
Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /demo. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.
Просмотр содержимого каталогов
Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.
Просмотреть содержимое любой директории можно следующими способами:
ls имя_директории
Либо введя команду:
ls /путь _к _директории
В результате выполнения команды отображаются файлы и каталоги, находящиеся внутри данного каталога:
dir1 file1 file2 file3
К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:
ls -l
Результат выполнения команды:
total 16 drwxr-xr-x 2 home demo 4096 Nov 3 17:40 dir1 -rw-r--r-- 1 home demo 13 Nov 8 17:17 file1 -rw-r--r-- 1 home demo 42 Nov 9 13:04 file2 -rw-r--r-- 1 home demo 42 Nov 10 13:04 file3
Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:
ls -a
Результат выполнения команды:
. dir1 file1 .mysql_history .ssh .. .bash_history file2 file3 .nan
Отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип, можно с помощью команды:
ls -F
Результат выполнения команды:
dir1/ file1 file2 file3
Перемещение между каталогами
Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.
Для перехода в домашний каталог пользователя user используется команда:
cd ~user
Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.
В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.
Абсолютный путь указывает на расположение каталога по отношению к этой директории верхнего уровня. Это позволяет обращаться к справочникам однозначным образом из любого места в файловой системе.
Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.
Для перехода в директорию уровнем выше используется команда:
cd ..
Для перехода в директорию двумя уровнями выше:
cd ../..
Операции с файлами и каталогами
У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр —help, например:
ls --help
Далее приведен список основных команд навигации в консоли Linux.
Создание
Создание файлов производится с помощью команды:
touch имя_файла
Создание каталогов выполняется с помощью команды вида:
mkdir имя_директории
Название этой команды является сокращением слов make directory.
Создание двух каталогов одновременно выполняется с помощью команды:
mkdir имя_директории_1 имя_директории_2
Для создания дерева каталогов используется команда следующего вида:
mkdir -p /имя_директории_1/имя_директории_2
Удаление
Для удаления директорий используется команда rmdir имя_директории. Название этой команды является сокращением слов remove directory.
Для удаления файлов используется команда rm. Например, для удаления файла с именем file1 используется команда:
rm file1
Команда rm также позволяет удалять не только файлы, но и каталоги.
Для удаления директории с именем dir1 со всеми подкаталогами и файлами используется опция -r (от слова recursive):
rm -r dir1
Можно удалить одновременно две директории со всем их содержимым:
rm -r имя_директории_1 имя_директории_2
Также можно использовать параметр -f, который означает, что при удалении не будет запрашиваться подтверждение.
Команда для удаления файла будет выглядеть так:
rm -f file1
Команда для удаления каталога:
rm -rf dir1
Перемещение
Для перемещения и переименования файлов и каталогов используется команда mv. Название этой команды является сокращением слова move.
Переименовать файл можно с помощью команды:
mv имя_файла новое_имя
Для того чтобы переместить файл, используется команда:
mv имя_файла путь/
Копирование
Для копирования используется команда cp. Название этой команды является сокращением слова copy.
Чтобы скопировать файл file1 и назвать его file2, используется команда:
cp file1 file2
Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:
cp -a dir1/ dir2/
Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:
cp file1 dir1/
Редактирование файлов
Мы ознакомились с основными командами для работы с каталогами и файлами.
Далее мы изучим, как редактировать файлы и добавлять в них содержание.
Команда nano позволяет работать в одном из самых простых текстовых редакторов командной строки Linux, который занимает весь терминал в течение всего срока его использования. C Cancel
Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.
Если вы решили сохранить изменения, вам будет предложено сохранить их в том же файле, который был отредактирован.
Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.
Заключение
Мы ознакомились с возможностями просмотра доступных файлов и каталогов, с основными командами для работы с файлами, которые позволяют просматривать, копировать, перемещать и удалять файлы, а также с основами редактирования в текстовом редакторе nano.
Работа с файлами в Linux
Теперь вы знакомы с основами, и мы можем начинать экспериментировать. Для начала мы научимся создавать файлы и каталоги и перемещать их. В следующих статьях мы поговорим о том, как наполнять их содержимом.
Как создать каталог
В Linux файловая система организована иерархически. Со временем, как правило, накапливается изрядное количество данных. Важно создать структуру каталогов, которая поможет нам организовать эти данные так, чтобы ими было удобно управлять.
Иногда пользователи просто сбрасывают все прямо в основной домашний каталог, а потом тратят кучу времени, пытаясь найти то, что им нужно, среди сотен других файлов. Поэтому начинайте прививать себе привычку организовывать файлы в удобную структуру уже сейчас, и вы потом долго еще будете благодарить себя.
Чтобы создать папку, введите команду mkdir
(сокращение от make directory — создать каталог).
mkdir [параметры] <каталог>
Эту команду можно запустить без параметров, указав только папку, и тогда она создаст его.
1. [email protected]: pwd
2. /home/karpaff
3. [email protected]:
4. [email protected]: ls
5. bin Documents public_html
6. [email protected]:
7. [email protected]: mkdir linuxtutorialwork
8. [email protected]:
9. [email protected]: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
, он позволяет создать родительские каталоги.
[email protected]: mkdir -p linuxtutorialwork/foo/bar
[email protected]:
[email protected]: cd linuxtutorialwork/foo/bar
[email protected]: pwd
/home/karpaff/linuxtutorialwork/foo/bar
Второй параметр -v
, он поэтапно выводит на экран процесс работы команды mkdir
.
[email protected]: mkdir -pv linuxtutorialwork/foo/bar
[email protected]: mkdir: created directory 'linuxtutorialwork/foo'
[email protected]: mkdir: created directory 'linuxtutorialwork/foo/bar'
[email protected]:
[email protected]: cd linuxtutorialwork/foo/bar[email protected]: pwd
[email protected]: /home/ryan/linuxtutorialwork/foo/bar
Как удалить каталог
Удалить каталог тоже легко. Учтите, что в командной строке Linux нельзя отменять действия, в том числе — удаление. Следите за тем, что вы делаете.
Для удаления папки используется команда rmdir
, сокращение от remove directory (удалить каталог).
rmdir [параметры] <каталог>
Следует отметить два момента. Во-первых, rmdir поддерживает параметры -v
и -p
, они работают так же, как и с командной mkdir
. Во-вторых, удалять можно только пустые каталоги. Позже мы посмотрим, как это можно обойти.
[email protected]: rmdir linuxtutorialwork/foo/bar
[email protected]:
[email protected]: ls linuxtutorialwork/foo
Как создать пустой файл
Если попытаться обратиться к несуществующему файлу, Linux автоматически создаст его. Это очень удобно. Этой особенностью можно воспользоваться, чтобы создавать пустые файлы — с помощью команды touch
.
touch [параметры] <имя_файла>
[email protected]: pwd
[email protected]: /home/karpaff/linuxtutorialwork
[email protected]:
[email protected]: ls
foo
[email protected]:
[email protected]: touch example1
[email protected]:
[email protected]: ls
example1 foo
Команду touch
можно использовать для изменения времени последнего изменения файла. Студенты иногда пользуются этой командой, чтобы выглядело так, будто их файлы с заданиями не изменялись после установленного срока. Обычно толку от этой особенности мало, но это может быть полезно при тестировании системы, которая основана на правах доступа к файлу и времени его последнего изменения.
Как скопировать файл или папку
Часто перед тем, как что-то изменить, нам нужно создать копию, чтобы не потерять оригинал на случай, если что-то пойдет не так.
Для копирования файла или папки используется команда cp
, сокращение от copy (скопировать).
cp [параметры] <источник> <место_назначения>
Для команды cp
доступно несколько параметров. Вы можете узнать о них в руководстве. Один из них мы разберем чуть ниже.
[email protected]: ls
[email protected]: example1 foo
[email protected]:
[email protected]: cp example1 barney
[email protected]: ls
barney example1 foo
Обратите внимание, что и источник, и место назначения — это пути. Мы можем использовать как абсолютные, так и относительные пути. Вот несколько примеров:
- cp /home/karpaff/linuxtutorialwork/example2 example3
- cp example2 ../../backups
- cp example2 ../../backups/example4
- cp /home/karpaff/linuxtutorialwork/example2 /otherdir/foo/example5
Когда мы используем команду cp
, местом назначения может быть путь к файлу или каталогу. Если это файл (примеры 1, 3 и 4), команда создаст копию источника, но назовет копию именем файла, указанным в месте назначения. Если в качестве места назначения будет указана каталог, команда скопирует файл в этот каталог, и копия будет иметь такое же имя, как и у источника.
По умолчанию cp
будет копировать только файл. Есть способ скопировать несколько файлов за один раз, мы познакомимся с ним позже.
С помощью параметра -r
(сокращение от recursive — рекурсивный) можно копировать каталоги. «Рекурсивный» значит, что команда просмотрит каталог и все файлы и каталоги в нем, зайдет в подкаталоги и сделать в них то же самое.
[email protected]: ls
barney example1 foo
[email protected]: cp foo foo2
cp: omitting directory 'foo'
[email protected]: cp -r foo foo2
[email protected]: ls
barney example1 foo foo2
В приведенном выше примере любые файлы и подкаталоги в каталоге foo также будут скопированы в foo2.
Как переместить файл или каталог
Для перемещения файлов используется команда mv
, сокращение от move (переместить). Она работаете так же, как cp
. Чтобы перемещать каталоги, необязательно указывать параметр -r
.
mv [параметры] <источник> <место_назначения>
1. [email protected]: ls
2. barney example1 foo foo2
3. [email protected]: mkdir backups
4. [email protected]: mv foo2 backups/foo3
5. [email protected]: mv barney backups/
6. [email protected]: ls
7. backups example1 foo
Давайте разберемся:
- Строка 3. Создаем новый каталог под названием backups.
- Строка 4. Перемещаем подкаталог foo2 в каталог backups и переименовываем его в foo3.
- Строка 7.
Обратите внимание, что снова источник и место назначения являются путями и могут быть как абсолютными, так и относительными.
Как переименовать файл или каталог
Теперь, как и в случае с командой touch, мы можем использовать базовое поведение команды mv
для достижения несколько иного результата.
Обычно mv
используется для перемещения файла или каталога в новый каталог. Но как вы видели в строке 4, мы можем указать новое имя для файла или каталога, и команда mv
переименует его, пока будет перемещать.
1. [email protected]: ls
2. backups example1 foo
3. [email protected]: mv foo foo3
4. [email protected]: ls
5. backups example1 foo3
6. [email protected]: cd ..
7. [email protected]: mkdir linuxtutorialwork/testdir
8. [email protected]: mv linuxtutorialwork/testdir /home/ryan/linuxtutorialwork/fred
9. [email protected]: ls linuxtutorialwork
10. backups example1 foo3 fred
Давайте разберемся:
- Строка 3. Переименовываем файл foo в foo3 (оба пути относительны).
- Строка 6. Переходим в родительский каталог. Это позволит в следующей строке проиллюстрировать, что мы можем запускать команды для файлов и каталогов, даже если мы в настоящее время не находимся в каталоге, в котором они лежат.
- Строка 8. Переименовываем каталог testdir в fred (исходный путь был относительным, а конечный — абсолютным).
Как удалить файл
Как и в случае с rmdir, удаление файла — это действие, которое нельзя отменить, поэтому будьте осторожны.
Для удаления файла используется команда rm
, сокращение от remove (удалить).
rm [параметры] <файл>
[email protected]: ls
backups example1 foo3 fred
[email protected]: rm example1
[email protected]: ls
backups foo3 fred
Как удалить непустой каталог
У команды rm
есть несколько параметров, которые изменяют его поведение. Почитать о них вы можете в руководстве командной строки.
Здесь мы разберем полезный параметр -r
. Когда мы запускаем команду rm с этим параметром, она удаляет не только каталог, но и все его содержимое: файлы и подкаталоги.
[email protected]: ls
backups foo3 fred
[email protected]: rmdir backups
rmdir: failed to remove 'backups': Directory not empty
[email protected]: rm backups
rm: cannot remove 'backups': Is a directory
[email protected]: rm -r backups
[email protected]: ls
foo3 fred
Параметр -r
можно сочетать с параметром -i
(сокращение от interactive — интерактивный). В этом случае вы сможете подтверждать удаление каждого файла и отменить команду.
Что нужно запомнить
Команды
mkdir
Создать каталог.rmdir
Удалить каталог.touch
Создать пустой файл.cp
Скопировать файл или каталог.mv
Переместить файл или каталог. Можно использовать для переименования.rm
Удалить файл.
Идеи
Нельзя отменить
В командной строке Linux нет возможности отменить действие. Поэтому 7 раз подумайте, прежде чем что-то удалить.Параметры командной строки
У большинства команд есть много полезных параметров командной строки. Всегда смотрите, какие параметры доступны для той или иной команды, в руководстве.
Практические задания
- Создайте каталога в вашем домашнем каталоге, в котором можно поэкспериментировать.
- В этом каталоге создайте несколько файлов и подкаталогов (а также файлов и каталогов в этих подкаталогах).
- Теперь переименуйте несколько файлов и каталогов.
- Удалите один из каталогов, в котором есть другие файлы и каталоги.
- Вернитесь в свой домашний каталог и скопируйте оттуда файл из одного из своих подкаталогов в исходный каталог, который вы создали.
- Переместите этот файл обратно в другой каталог.
- Переименуйте несколько файлов.
- Переместите файл и одновременно переименуйте его.
- Посмотрите на существующие каталоги в вашем домашнем каталоге. У вас, вероятно, есть каталог «Документы», «Загрузки», «Музыка» и «Изображения» и т. д. Подумайте, какие другие каталоги могут помочь вам организовать вашу систему, и создайте их.
Как работать с файлами и папками в интерпретаторе bash 💲
Содержание:
- Работа с файлами и каталогами
- Команды для каталогов
- Команды для файлов
- Перенаправление данных
- Генерация имён файлов в Bash
Bash (Bourne Again Shell) — это командная оболочка, использующаяся в таких UNIX-системах, как Linux или MacOS. Она позволяет управлять компонентами ОС с помощью определённых запросов, которые вводятся в консоль или берутся из скрипта.
Как новичкам, так и опытным пользователям будет полезно узнать или вспомнить основные команды Bash для управления такими важными аспектами системы, как файлы и каталоги. Этот вопрос будет разобран на примере ОС Linux.
Работа с файлами и каталогами
Работа с файлами и каталогами в Linux через Bash осуществляется с учетом иерархического принципа их классификации. Иерархическая структура файловой системы Linux напоминает «дерево». Существует корневой каталог, который является начальным для всей ОС, а в нём, соответственно, масса других подкаталогов.
Такой же принцип используется для командной строки. Файлы и каталоги берут начало из корневого узла «/», который является начальной точкой для всех элементов.
Ниже представлен стандартный перечень подкаталогов, встречающийся в большинстве UNIX-систем.
Каталог | Содержимое |
/bin | Бинарные версии файлов (в том числе для командной оболочки). |
/dev | Псевдофайлы, представляющие собой аппаратные средства, подключённые к устройству. |
/etc | Большая часть конфигурационных файлов. |
/lib | Библиотеки для системных приложений. |
/opt | Необязательные компоненты системы или приложения. |
/tmp | Временные файлы. |
/usr | Пользовательские компоненты. |
/var | Файлы приложений (в том числе системные журналы, кэши и т. д.). |
Команды для каталогов
Существуют конкретные команды, предназначенные для работы с каталогами. Далее будут приведены самые важные из них.
Список основных команд
- pwd — вывод полного пути к текущему каталогу.
- cd — переход с текущего каталога на домашний пользовательский.
- cd dirname — перейти в папку «dirname».
- cd / — переход по директориям относительно корневого каталога.
- ls — просмотреть список файлов в каталоге.
- ls -d */ — просмотреть список папок в текущем каталоге.
- ls dirname — вывод содержимого каталога «dirname» на экран.
- mkdir dirname — создать папку с наименованием «dirname».
- rmdir dirname — удалить папку «dirname».
- rm -rf dirname — удалить папку «dirname» с её содержимым (опция -r) без предупреждения пользователя (опция -f).
- du -h dirname — размер папки «dirname».
Помимо этого, существуют полезные сокращения. Например, текущая директория обозначается с помощью «.». Знак «..» позволяет задействовать родительский каталог. Для представления домашней директории используется «~».
Пример использования сокращений:
root@test:~/dirname/files# cd .. # переход в родительский (предыдущий) каталог root@test:~# du -h . # вывод данных о размере текущего каталога и его элементов 4,0K ./files 8,0K . root@test:~/dirname# cd ~ # переход в домашний каталог root@test:~#
Команды для файлов
Далее приведены основные команды для осуществления взаимодействия с файлами. Начинающим полезно опробовать каждую из них, чтобы лучше понять принцип работы утилит.
Список основных команд
- touch file — создать файл.
- realpath file — узнать абсолютный путь к файлу.
- stat file1 — получение информации о «file1» (размер файла, дата создания файла и т. д.) и проверка существования файла.
- cat > file — запись в файл.
- cat file — чтение файла.
- echo текст >> file — дописать в файл текст.
- find file — поиск файла.
- mcedit file — редактирование файла (также можно использовать редакторы Nano, Vim и другие).
- cat file1 file2 > file12 — объединение файлов.
- sh filename — запустить файл со сценарием Bash.
- ./filename — запустить исполняемый файл.
- cp file1 file2 — копировать файл «file1» с переименованием на «file2». Произойдёт замена файлов, если элемент с таким же названием существует.
- mv file1 file2 — переименовать файл «file1» в «file2».
- mv filename dirname — переместить файл «filename» в каталог «dirname».
- less filename — открыть файл в окне терминала.
- file filename — определение типа файла.
- head filename — вывод нескольких начальных строк из файла на экран (построчное чтение файла). По умолчанию строк 10.
- tail filename — вывод нескольких конечных строк из файла на экран.
- diff file1 file2 — сравнение файлов.
- grep text filename — поиск и вывод строк из файла, содержащих «text».
- rm filename — удалить файл.
Подробную информацию об утилитах можно получить, воспользовавшись справочной службой: «man <название утилиты>».
Пример получения справки по работе с программой rm: «man rm».
Перенаправление данных
Перенаправление ввода-вывода в файл осуществляется с помощью специальных знаков. Для вывода используются «>» и «>>», а для ввода — «<».
Пример вывода «ls» в файл, а не на экран:
root@test:~# ls > files.txt root@test:~# cat files.txt file1.cpp sample.txt
Новый файл создаётся автоматически. В случае существования элемента с таким же наименованием, произойдёт перезапись. Чтобы этого избежать, необходимо использовать «>>». Тогда данные будут дописываться в документ.
Пример ввода, при котором информация выносится из файла с помощью команды «sort»:
root@test:~# echo text > file.txt root@test:~# sort < file.txt text
Генерация имён файлов в Bash
Иногда пользователю приходится работать с несколькими файлами одновременно, например, при выполнении переноса документов в другой каталог. Это станет проблемой, если элементов десятки или сотни и среди них нужно отобрать определённые.
Для решения поставленной задачи можно попробовать использование шаблонного выражения, позволяющего Bash определить необходимые элементы, ориентируясь по наименованию. Этот способ упрощает управление группой файлов путём применения короткой формулировки в команде.
Итак, теперь остаётся разобраться с вопросом составления шаблонов. Сейчас будут приведены основные конструкции для осуществления генерации имён. Чаще всего для отбора файлов применяется символ: «*». В случае использования этого знака в чистом виде, Bash выберет все элементы в каталоге без исключений.
root@test:~# ls * document1.docx document2.docx document3.txt file1.txt file2.docx file3.txt
Для примера, чтобы из этого каталога отобрать файлы: file1, file2, file3, следует воспользоваться шаблоном:
root@test:~# ls file* file1.txt file2.docx file3.txt
Символ звёздочки позволяет командному интерпретатору выделить все файлы, начинающиеся с «file». При этом последующая часть наименования будет проигнорирована.
Знак «*» можно использовать также в начале или с обеих сторон шаблона.
Кроме того, сгенерировать имена можно, взяв за основу расширение файла. Например:
root@test:~# ls .txt* document3.txt file1.txt file3.txt
Работа с файлами
Работа с файламиПред. | Начало | След. |
Наверх | ||
Сведения о документе |
Текущий каталог
Файловая система не только систематизирует данные, но и является основой метафоры «рабочего места» в Linux. Каждая выполняемая программа «работает» в строго определённом каталоге файловой системы. Такой каталог называется текущим каталогом, можно представлять, что программа во время работы «находится» именно в этом каталоге, это её «рабочее место». В зависимости от текущего каталога может меняться поведение программы: зачастую программа будет по умолчанию работать с файлами, расположенными именно в текущем каталоге — до них она «дотянется» в первую очередь. Текущий каталог есть у любой программы, в том числе и у командной оболочки (shell) пользователя. Поскольку взаимодействие пользователя с системой обязательно опосредовано командной оболочкой, можно говорить о том, что пользователь «находится» в том каталоге, который в данный момент является текущим каталогом его командной оболочки.
Все команды, отдаваемые пользователем при помощи shell, наследуют текущий каталог shell, т. е. «работают» в том же каталоге. По этой причине пользователю важно знать текущий каталог shell. Для этого служит утилита pwd
:
[methody@localhost methody]$ pwd /home/methody [methody@localhost methody]$
Пример 1. Текущий каталог: pwd
pwd
(аббревиатура от print working directory) возвращает полный путь текущего каталога командной оболочки, естественно, именно той командной оболочки, при помощи которой была выполнена команда pwd
. В данном примере текущим является каталог «/home/methody
».
Текущий каталог, каков бы ни был полный путь к нему, всегда имеет ещё одно обозначение, «.
», которое можно использовать, если по каким-то причинам требуется, чтобы даже в относительном пути к файлу, находящемуся в текущем каталоге, присутствовал элемент «имя каталога». Так, пути «text
» и «./text
» тоже приводят к одному и тому же файлу, однако в первом случае в строке пути не содержится ничего, кроме имени файла.
Отделить путь к файлу от его имени можно с помощью команд dirname
и basebane
соответственно:
[methody@localhost methody]$ basename /home/methody/text text [methody@localhost methody]$ basename text text [methody@localhost methody]$ dirname /home/methody/text /home/methody [methody@localhost methody]$ dirname ./text . [methody@localhost methody]$ dirname text .
Пример 2. Использование dirname
и basename
Мефодий заметил, что для «
text
» и «./text
» dirname
выдало одинаковый результат: «.
», что понятно: как было сказано выше, эти формы пути совершенно эквивалентны, а при автоматической обработке результатов dirname
гораздо лучше получить «.
», чем пустую строку.Информация о каталоге
В любой момент можно просмотреть содержимое любого каталога при помощи утилиты ls
(сокращение от англ. «list» — «список»):
[methody@localhost methody]$ ls -filename-with- text [methody@localhost methody]$
Пример 3. Команда ls
Поданная без параметров, команда ls
выводит список файлов и каталогов, содержащихся в текущем каталоге1.
Утилита ls
принимает один параметр: имя каталога, содержимое которого нужно вывести. Имя может быть задано любым доступным способом: в виде полного или относительного пути. Кроме параметра, утилита ls
«понимает» множество ключей, которые нужны главным образом для того, чтобы выводить дополнительную информацию о файлах в каталоге или выводить список файлов выборочно. Чтобы узнать обо всех возможностях ls
, нужно, конечно же, прочесть руководство по этой утилите («man ls
»).
[methody@localhost methody]$ ls -F / bin/ dev/ home/ mnt/ root/ swap/ tmp/ var/ boot/ etc/ lib/ proc/ sbin/ sys/ usr/ [methody@localhost methody]$
Пример 4. Команда ls -F
В примере использован ключ-F, чтобы отличать файлы от каталогов. При наличии этого ключа ls
в конце имени каждого каталога ставит символ «/
», чтобы показать, что в нём может содержаться что-то ещё. В выведенном списке нет ни одного файла — в корневом каталоге содержатся только подкаталоги.
Кроме того, можно получить более подробную информацию о содержимом каталога:
[methody@localhost methody]$ ls -aF -filename-with- .bash_history .bashrc .lpoptions .rpmmacros Documents/ ./ .bash_logout .emacs .mutt/ .xemacs/ text ../ .bash_profile .i18n .pinerc .xsession.d/ tmp/ [methody@localhost methody]$
Пример 5. Команда ls -aF
Внезапно обнаружилось, что файлов в домашнем каталоге не два, а гораздо больше. Дело в том, что утилита ls
по умолчанию не выводит информацию об объектах, чьё имя начинается с «.
» — в том числе о «.
» и «..
». Для того, чтобы посмотреть полный список содержимого каталога, и используется ключ «-a
» (all)2. Как правило, с «.
» начинаются имена конфигурационных файлов и конфигурационных каталогов.
«..
» — это ссылка на родительский каталог. Родительский каталог — это тот каталог, в котором находится данный. Родительским каталогом для «/home/methody
» будет каталог «/home
»: он получается просто отбрасыванием последнего имени каталога в полном пути. Иначе можно сказать, что родительский каталог — это один шаг по дереву каталогов по направлению к корню. «..
» — это сокращённый способ сослаться на родительский каталог: пока текущим каталогом является «/home/methody
», относительный путь «..
» (или, что то же самое, «./..
») будет эквивалентен «/home
». С использованием «..
» можно строить сколь угодно длинные пути, такие как «../../usr/../var/log/../run/../../home
»3. Ссылки на текущий и на родительский каталог обязательно присутствуют в каждом каталоге в Linux. Даже если каталог пуст, т. е. не содержит ни одного файла или подкаталога, команда «ls -a
» выведет список из двух имён: «.
» и «..
».
Перемещение по дереву каталогов
Пользователь может работать с файлами не только в своём домашнем каталоге, но и в других каталогах. В этом случае будет удобно сменить текущий каталог, т. е. «переместиться» в другую точку файловой системы. Для смены текущего каталога командной оболочки используется команда cd
(от англ. «change directory» — «сменить каталог»). Команда cd
принимает один параметр: имя каталога, в который нужно переместиться — сделать текущим. Как обычно, в качестве имени каталога можно использовать полный или относительный путь.
[methody@localhost methody]$ cd /home [methody@localhost home]$ ls methody shogun [methody@localhost home]$ cd methody [methody@localhost methody]$
Пример 6. Смена текущего каталога
Для перемещения в родительский каталог («/home
») удобно воспользоваться ссылкой «..
». Необходимость вернуться в домашний каталог из произвольной точки файловой системы возникает довольно часто, поэтому командная оболочка поддерживает обозначение домашнего каталога при помощи символа «~
». Поэтому чтобы перейти в домашний каталог из любого другого, достаточно выполнить команду «cd ~
». При исполнении команды символ «~
» будет заменён командной оболочкой на полный путь к домашнему каталогу пользователя.
[methody@localhost methody]$ cd .. [methody@localhost home]$ cd ~ [methody@localhost methody]$ cd ~shogun [methody@localhost shogun]$ cd [methody@localhost methody]$
Пример 7. Переход в родительский и в домашний каталог
При помощи символа «~
» можно ссылаться и на домашние каталоги других пользователей: «~имя пользователя
». Команда cd
, поданная без параметров, эквивалента команде «cd ~
» и делает текущим каталогом домашний каталог пользователя.
Создание каталогов
Для этого используется утилита mkdir
. Она используется с одним обязательным параметром: именем создаваемого каталога. По умолчанию каталог будет создан в текущем каталоге.
[methody@localhost methody]$ mkdir examples [methody@localhost methody]$ ls -F -filename-with- Documents/ examples/ text tmp/ [methody@localhost methody]$
Пример 8. Создание каталога
Копирование и перемещение файлов
Для перемещения файлов и каталогов предназначена утилита mv
(сокращение от англ. «move» — «перемещать»). У mv
два обязательных параметра: первый — перемещаемый файл или каталог, второй — файл или каталог назначения. Имена файлов и каталогов могут быть заданы в любом допустимом виде: при помощи полного или относительного пути. Кроме того, mv
позволяет перемещать не только один файл или каталог, а сразу несколько. За подробностями о допустимых параметрах и ключах следует обратиться к руководству по mv
.
[methody@localhost methody]$ cd examples [methody@localhost examples]$ mv ../text . [methody@localhost examples]$ ls text [methody@localhost examples]$
Пример 9. Перемещение файлов
Перемещение файла внутри одной файловой системы в действительности равнозначно его переименованию: данные самого файла при этом остаются на тех же секторах диска, изменяются каталоги, в которых произошло перемещение. Перемещение предполагает удаление ссылки на файл из того каталога, откуда он перемещён, и добавление ссылки на этот самый файл в тот каталог, куда он перемещён. В результате изменяется полное имя файла — полный путь, т. е. положение файла в файловой системе.
Иногда требуется создать копию файла: для большей сохранности данных, для того, чтобы создать модифицированную версию файла и т. п. В Linux для этого предназначена утилита cp
(сокращение от англ. «copy» — «копировать»). Утилита cp
требует присутствия двух обязательных параметров: первый — копируемый файл или каталог, второй — файл или каталог назначения. Как обычно, в именах файлов и каталогов можно использовать полные и относительные пути. Есть несколько возможностей при комбинации файлов и каталогов в параметрах cp
— о них можно прочесть в руководстве.
[methody@localhost examples]$ cp text text.bak [methody@localhost examples]$ ls text text.bak
Пример 10. Копирование файлов
Нужно иметь в виду, что в Linux утилита cp
нередко настроена таким образом, что при попытке скопировать файл поверх уже существующего не выводится никакого предупреждения. В этом случае файл будет просто перезаписан, а данные, которые содержались в старой версии файла, бесповоротно потеряны. Поэтому при использовании cp
следует всегда быть внимательным и проверять имена файлов, которые нужно скопировать.
Удаление файлов и каталогов
В Linux для удаления файлов предназначена утилита rm
(сокращение от англ. «remove» — «удалять»).
[methody@localhost methody]$ rm examples/text [methody@localhost methody]$ ls examples test.bak
Пример 11. Удаление файла
Однако удалить командой rm
каталог не получится:
[methody@localhost methody]$ rm examples rm: невозможно удалить `examples': Is a directory [methody@localhost methody]$ rmdir examples rmdir: examples: Directory not empty [methody@localhost methody]$ rm examples/test.bak [methody@localhost methody]$ rmdir examples [methody@localhost methody]$
Пример 12. Удаление каталога
Для удаления каталогов предназначена другая утилита — rmdir
(от англ. «remove directory»). Впрочем, rmdir
согласится удалить каталог только в том случае, если он пуст: в нём нет никаких файлов и подкаталогов. Удалить каталог вместе со всем его содержимым можно командой rm
с ключом «-r
» (recursive). Команда rm -r каталог
— очень удобный способ потерять в одночасье все файлы: она рекурсивно4 обходит весь каталог, удаляя всё, что попадётся: файлы, подкаталоги… а ключ «-f
» (force) делает её работу ещё неотвратимее, так как подавляет запросы вида «удалить защищённый от записи файл», так что rm
работает безмолвно и безостановочно.
Помните: если вы удалили файл, значит, он уже не нужен, и не подлежит восстановлению!
В Linux не предусмотрено процедуры восстановления удалённых файлов и каталогов. Поэтому стоит быть очень внимательным, отдавая команду rm
и, тем более, rm -r
: нет никакой гарантии, что удастся восстановить случайно удалённые данные. Узнав об этом, Мефодий не огорчился, но подумал, что впредь будет удалять только действительно ненужные файлы, а всё сомнительное — перемещать с помощью mv
в подкаталог ~/tmp
, где оно не будет мозолить глаза, и где можно периодически наводить порядок.
1Вот пример утилиты, которая по умолчанию работает с файлами в текущем каталоге.
2Такое поведение ls
напоминает принцип работы файловых менеджеров со скрытыми файлами в системах dos/win. Разница в том, что в dos/win скрытые файлы предусмотрены файловой системой — файл может иметь атрибут «скрытый» и при этом называться как угодно. В Linux скрытые файлы — это не свойство файловой системы, а только соглашение по наименованию файлов.
3Не сразу понятно, что приводит этот путь всё туда же, в «/home
».
4«Рекурсивно» по отношению к каталогам обозначает, что действие будет произведено над самим каталогом, его подкаталогами, подкаталогами его подкаталогов и т. д.
Пред. | Начало | След. |
Наверх | ||
Сведения о документе |
Работа с файлами в каталоге при помощи циклов
21 сентября, 2020 11:38 дп 2 415 views | Комментариев нетLinux | Amber | Комментировать запись
Не все утилиты командной строки позволяют запускать одну команду для нескольких файлов одновременно, но с помощью сценариев оболочки и цикла for вы можете автоматически повторить любую команду.
Цикл – один из самых мощных аспектов в программировании. Он позволяет вам многократно применять одну и ту же логику к группе элементов, требуя при этом минимального количества кода.
В этом мануале мы научим вас перебирать файлы и применять команды с помощью оболочки Bash или zsh.
1: Перебор файлов
В этом мануале мы будем использовать цикл сценариев для оболочки. Этот конкретный метод управления встроен в оболочку командной строки Bash или zsh.
Вы можете применить следующие команды к любому каталогу по вашему выбору, но в этом мануале мы будем использовать тестовый каталог. Создайте каталог и несколько файлов, на которых можно потренироваться.
Сначала создайте каталог:
mkdir looping
Затем перейдите в него:
cd looping
С помощью команды touch создайте несколько текстовых файлов:
touch file-1.txt
touch file-2.txt
touch file-3.txt
touch file-4.txt
touch file-5.txt
Вы также можете быстро создать эти файлы, задав диапазон в скобках:
touch file-{1..5}.txt
Чтобы просмотреть каталог и затем вывести имя файла, выполните следующую команду:
for FILE in *; do echo $FILE; done
Вы увидите следующий результат:
file-1. txt
file-2.txt
file-3.txt
file-4.txt
file-5.txt
Вы, наверное, заметили, что здесь используется подстановочный знак *. Он позволяет циклу for захватить каждый файл в каталоге. Вы можете изменить подстановочный знак на file-*, чтобы вывести все файлы, имена которых начинаются с file-, или на *.txt, чтобы вывести только текстовые файлы.
Теперь, когда вы знаете, как перебирать файлы в каталоге, давайте применим команду к этим файлам.
2: Применение команды
Все файлы, которые вы создали в предыдущем разделе, были созданы с помощью команды touch. Эти файлы пусты, поэтому применять к ним команду cat было бы не очень полезно.
К счастью, вы можете вставить текст в каждый файл с помощью одной команды, используя аналогичный цикл for.
Выполните следующую команду, чтобы вставить имя файла, новую строку и текст «Loops Rule!» в каждый файл:
for FILE in *; do echo -e "$FILE\nLoops Rule\!" > $FILE; done
Флаг -e в команде echo гарантирует сохранение новых строк.
Восклицательный знак нужно избежать с помощью обратного слеша, чтобы оболочка не интерпретировала символ как команду оболочки.
Теперь переберите каждый файл и выведите его содержимое:
for FILE in *; do cat $FILE; done
Теперь каждый файл содержит имя файла в первой строке и сообщение о том, что циклы классные, во второй строке.
file-1.txt
Loops Rule!
file-2.txt
Loops Rule!
file-3.txt
Loops Rule!
file-4.txt
Loops Rule!
file-5.txt
Loops Rule!
Дальше мы попробуем объединить эти примеры: сначала записать данные в файл, а затем отобразить его содержимое в одном цикле:
for FILE in *; do echo -e "$FILE\nLoops Rule\!" > $FILE; cat $FILE; done
Вы увидите следующий результат:
file-1.txt
Loops Rule!
file-2.txt
Loops Rule!
file-3.txt
Loops Rule!
file-4.txt
Loops Rule!
file-5.txt
Loops Rule!
При помощи точки с запятой (;) вы можете связать вместе любые необходимые команды.
Теперь давайте рассмотрим практический пример: создание резервных копий файлов.
3: Создание резервных копий файлов
Теперь, когда вы знаете, как работает цикл for, давайте попробуем сделать что-то полезное: возьмем каталог файлов и сделаем резервные копии с расширением .bak.
Выполните в своей оболочке следующую команду, которая создает резервную копию для каждого файла:
for FILE in *; do cp $FILE "$FILE.bak"; done;
С помощью команды ls отобразите все файлы:
ls -l
Вы увидите такой результат:
total 40K
-rw-r--r-- 1 8host 8host 29 Nov 7 18:34 file-1.txt
-rw-r--r-- 1 8host 8host 29 Nov 7 18:41 file-1.txt.bak
-rw-r--r-- 1 8host 8host 29 Nov 7 18:34 file-2.txt
-rw-r--r-- 1 8host 8host 29 Nov 7 18:41 file-2.txt.bak
-rw-r--r-- 1 8host 8host 29 Nov 7 18:34 file-3.txt
-rw-r--r-- 1 8host 8host 29 Nov 7 18:41 file-3.txt.bak
-rw-r--r-- 1 8host 8host 29 Nov 7 18:34 file-4. txt
-rw-r--r-- 1 8host 8host 29 Nov 7 18:41 file-4.txt.bak
-rw-r--r-- 1 8host 8host 29 Nov 7 18:34 file-5.txt
-rw-r--r-- 1 8host 8host 29 Nov 7 18:41 file-5.txt.bak
Теперь у вас есть резервные копии всех ваших файлов. Их расширение указывает, что это резервные копии.
Создание копий в одном каталоге – это далеко не единственная задача, которую вы можете выполнить с помощью цикла. Вы можете также указать новый путь для файлов резервных копий. Следующая команда сохраняет резервные копии в папке /tmp/my-backups (если указанный каталог уже существует):
for FILE in *; do cp $FILE "/tmp/my-backups/$FILE.bak"; done;
Резервные копии будут созданы в новом каталоге.
Заключение
В этом мануале мы поэкспериментировали с циклом for и научились использовать его для перебора файлов и применения команд к нескольким фалам в каталоге.
Основные linux-команды для новичка / Хабр
Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!
Правда, разобраться в нем немного посложнее… Потому что большинство операций выполняется в командной строке. И если вы видите в вакансии «знание linux» — от вас ожидают как раз умение выполнять простейшие операции — перейти в другую директорию, скопировать файл, создать папочку… В этой статье я расскажу про типовые операции, которые стоит уметь делать новичку. Ну и плюс пара полезняшек для тестировщиков.
Я дам кратенькое описание основных команд с примерами (примеры я все проверяла на cent os, red hat based системе) + ссылки на статьи, где можно почитать подробнее. Если же хочется копнуть еще глубже, то см раздел «Книги и видео по теме». А еще комментарии к статье, там много полезного написали)
Содержание
- Где я? Как понять, где находишься
- Как понять, что находится в папке
- Как перейти в другую директорию
- По абсолютному пути
- По относительному пути
- С автодополнением
- Подняться наверх
- Как создать директорию
- Как создать файл
- Как отредактировать файл
- Как перенести / скопировать файл
- Скопировать файл
- Скопировать директорию
- Переместить файл
- Переместить директорию
- Как удалить файл
- Как изменить владельца файла
- Как установить приложение
- Как запустить приложение
- Как понять, где установлено приложение
- Как создать архив
- Как посмотреть использованные ранее команды
- Как посмотреть свободное место
- Как узнать IP компьютера
- Как узнать версию OS
- Как узнать, как работает команда
- Как создать много тестовых папок и файлов
- Как протестировать IOPS на Linux
- И это все?
- Книги и видео по теме
- Где тренироваться
Где я? Как понять, где находишься
Команда pwd:
pwd --- мы ввели команду /home/test --- ответ системы, мы находимся в домашней директории пользователя test
Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как Print Working Directory. Запомните ее, пригодится.
Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:
Хотя лучше использовать команду сразу с флагом «l»:
ls -l
Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.
У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
См также:
Команда ls Linux — подробнее о команде и всех ее флагах
Команда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)
Как перейти в другую директорию
С помощью команды cd:
cd <путь к директории>
Путь может быть абсолютным или относительным.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP).
Вставляем путь в командную строку после «cd»
cd /home/student/log
Ну вот, мы переместились из домашней директории (обозначается как ~) в /home/student/log.
По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student, а мне надо в /home/student/log, команда будет такой:
cd log --- перейди в папку log из той директории, где ты сейчас находишься
Если мне надо из /home/student/photo в /home/student/photo/city/msk/2017/cat_1, команда будет такой:
cd city/msk/2017/cat_1
Я не пишу /home/student/photo, так как я уже там.
В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки:
cd ~/log
Эта команда будет работать отовсюду. И переместит нас в /home/user/log.
Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log:
С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd tab) Может, ты имел в виду папку 1?
— (tab) Нет? Может, папку 2?
— (tab) Снова нет? Может, папку 3?
— (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
— (tab) У меня кончились варианты, поехали сначала. Папка 1?
cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).
cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
cd ..
Если нужно поднять на два уровня выше, то
cd ../..
И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.
Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd ..\..», а в линуксе именно «cd ../..».
См также:
Путь к файлу в linux
Как создать директорию
Используйте команду mkdir:
mkdir test --- создает папку с названием «test» там, где вы находитесь
Можно и в другом месте создать папку:
mkdir /home/test --- создает папку «test» в директории /home, даже если вы сейчас не там
Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
См также:
Как создать каталог в Linux с помощью команды mkdir
Как создать файл
Командой touch:
touch app.log
Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Как отредактировать файл
Вот честное слово, лучше делать это через графический интерфейс!
Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:
- nano — более простая программа, рассчитана на новичков
- vim — более сложная, но позволяет сделать кучу всего
Начнем с nano. Указываете имя команды и путь в файлу:
nano test_env.json
Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
- Ctrl+O — чтобы сохранить
- Ctrl+X — для выхода
Самое приятное в nano — это подсказки внизу экрана, что нажать, чтобы выйти.
А вот с vim с этим сложнее. В него легко зайти:
vim test_env.json vi test_env.json (предшественник vim)
Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает: Esc, ctrl + x, ctrl + q… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?
Делюсь секретом, для выхода надо набрать:
- :q — закрыть редактор
- :q! — закрыть редактор без сохранения (если что-то меняли, то просто «:q» не проканает)
Двоеточие запускает командный режим, а там уже вводим команду «q» (quit).
Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:
Когда нажимаем двоеточие, оно печатается внизу:
Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда!!!
На самом деле сейчас всё не так страшно. Даже если вас заслали работать в банк, где нет доступа в интернет, а вы вошли в vi и не знаете как выйти, всегда можно погулить выход с телефона. Слава мобильному интернету! Ну а если вы знаете логин-пароль от сервера, то можно просто закрыть терминал и открыть его снова.
Если нужно выйти, сохранив изменения, используйте команду
:w — сохранить файл; :q — закрыть редактор;
Ну а про возможности редактирования см статьи ниже =)
См также:
Как редактировать файлы в Ubuntu — подробнее о разных способах
Как пользоваться текстовым редактором vim — подробнее о vim и всех его опциях
Как выйти из редактора Vi или Vim? — зачем нажимать Esc
Как перенести / скопировать файл
Допустим, у нас в директории /opt/app/log находится app. log, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?
Скопировать файл
Команда:
cp что_копировать куда_копировать
Если мы находимся в директории /opt/app/log:
cp app.log /home/olga
В данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/olga.
Можно сразу переименовать файл:
cp app.log /home/olga/app_test_2020_03_08.log
В этом случае мы взяли app.log и поместили его в папку /home/olga, переименовав при этом в app_test_2020_03_08.log. А то мало ли, сколько логов у вас в этом папке уже лежит, чтобы различать их, можно давать файлу более говорящее имя.
Если в «куда копировать» файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log внутри домашней директории файл «app.log», который там уже есть:
Никаких ошибок, система просто выполнила команду.
См также:
Копирование файлов в linux
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
cp -r путь_к_папке путь_к_новому_месту
Например:
cp /opt/app/log /home/olga
Так в директории /home/olga появится папка «log».
Переместить файл
Если надо переместить файл, а не скопировать его, то вместо cp (copy) используем mv (move).
cp app.log /home/olga ↓ mv app.log /home/olga
Можно использовать относительные и абсолютные пути:
mv /opt/app/logs/app. log /home/olga — абсолютные пути указаны, команда сработает из любого места
Можно сразу переименовать файл:
mv app.log /home/olga/app_2020_03_08.log — перенесли лог в /home/olga и переименовали
Переместить директорию
Аналогично перемещению файла, команда mv
mv /opt/app/log/ /home/olga/bakup/
Как удалить файл
С помощью команды rm (remove):
rm test.txt — удалит файл test.txt
Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:
rm * — удалит все файлы в текущей директории
Если нужно удалить папку, надо добавить флаг -r (recursive):
rm -r test_folder
Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:
А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да…» (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):
rm -rf test_folder --- просто все удалит без разговоров
Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!
Опция -v показывает имена удаляемых файлов:
rm -rfv test_folder --- удалит папку со всем содержимым, но выведет имена удаляемых файлов
Тут вы хотя бы можете осознать, что натворили )))
См также:
Как удалить каталог Linux
Как изменить владельца файла
Если у вас есть root-доступ, то вы наверняка будете выполнять все действия под ним. Ну или многие… И тогда любой созданный файл, любая папка будут принадлежать root-пользователю.
Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.
Допустим, что я поднимаю сервис testbase. И он должен иметь доступ к директории user и файлу test.txt в другой директории. Так как никому другому эти файлики не нужны, а создала я их под рутом, то просто меняю владельца:
chown testbase:testbase test.txt — сменить владельца файла chown -R testbase:testbase user — сменить владельца папки
В итоге был владелец root, а стал testbase. То, что надо!
См также:
Команда chown Linux
Как установить приложение
Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:
- yum — red hat, centos
- dpkg, apt — debian
См также:
5 Best Linux Package Managers for Linux Newbies
Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.
И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.
mc
Ничего страшного, установите это приложение через yum:
yum install mc
Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:
И система заканчивает установку.
Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:
См также:
Как устанавливать программы для Linux
Yum, шпаргалка — всякие опции и плагины
Как запустить приложение
Некоторые приложения запускаются через скрипты. Например, чтобы запустить сервер приложения WildFly, нужно перейти в папку bin и запустить там standalone.sh. Файл с расширением .sh — это скрипт.
Чтобы запустить скрипт, нужно указать полный путь к нему:
/opt/cdi/jboss/bin/standalone.sh — запустили скрипт standalone.sh
Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:
./standalone.sh — запустили скрипт, если мы в той же директории
Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:
standalone.sh --- запустили скрипт standalone.sh, путь к которому прописан в PATH
См также:
Запуск скрипта sh в Linux — подробнее о скриптах
Если же приложение запускается как сервис, то все еще проще:
service test start — запустить сервис под названием «test» service test stop — остановить сервис
Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:
chkconfig test on
Она добавит службу в автозапуск.
Как понять, где установлено приложение
Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?
Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):
whereis newman
Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf:
tar -cvzf archive.tar.gz /home/test
В данном примере мы упаковали директорию /home/test, внутри которой было две картинки — 502.jpg и 504.jpg.
Для распаковки меняем флаг «c» на «x» и убираем «z»:
tar -xvf archive.tar. gz
Хотя система пишет, что распаковала «/home/test», на самом деле папка «test» появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
- c — создать архив в linux
- x — извлечь файлы из архива
- v — показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались)
- f — файл для записи архива
- z — сжатие
Для упаковки используется опция c — Create, а для распаковки x — eXtract.
Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:
yum install rar yum install unrar
Говорит, нет такого пакета:
No package rar available. Error: Nothing to do
Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:
wget http://rarlabs. com/rar/rarlinux-x64-5.4.0.tar.gz tar xzf rarlinux-x64-5.4.0.tar.gz cd rar make install
Устанавливаем:
mkdir -p /usr/local/bin mkdir -p /usr/local/lib cp rar unrar /usr/local/bin cp rarfiles.lst /etc cp default.sfx /usr/local/lib
И применяем:
unrar x test.rar
См также:
Установка RAR на Linux
Как посмотреть использованные ранее команды
Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!
Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:
↑ (стрелочка «наверх») — показать последнюю команду history — показать последние 1000 команд
Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).
Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.
Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.
См также:
История команд Linux — больше о возможностях history
Как посмотреть свободное место
Сколько места свободно на дисках
df -h
Сколько весит директория
du -sh du -sh * --- с разбиением
Как узнать IP компьютера
Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.
Чтобы узнать IP машины, используйте команду:
hostname -I
Также можно использовать ifconfig:
ifconfig — выведет кучу инфы, в том числе ваш внешний IP ip a — аналог, просто иногда Ifconfig дает очень много результата, тут поменьше будет
См также:
Displaying private IP addresses
Как узнать версию OS
Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?
Используйте команду:
cat /etc/*-release
На этой виртуалке стоит CentOs 7.
Если нужна версия ядра:
uname -a
См также:
Как узнать версию Linux
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:
man ls
Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.
Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))
Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!
Если man у программы нет, используйте флаг -h (—help):
ls -h
Как создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:
mkdir -p test/dir--{000..100} touch test/dir--{000..100}/file-{A..Z}
Вот и все, дальше можно играться с ними!
Теперь пояснения:
- mkdir — создать директорию
- touch — создать файл (или изменить существующий, но если файла с таким именем нет, то команда создаст новый, пустой)
А выражения в скобках играют роль функции, которая выполняется в цикле и делает ручную работу за вас:
- {000. .100} — пробежится по всем числам от 0 до 100
- {A..Z} — пробежится по всем буквам английского алфавита от A до Z
Как я пробовала эту команду. Сначала посмотрела, где нахожусь:
$ pwd /home/test
Символ $ при описании команд означает начало строки, куда мы пишем команду. Так мы отделяем то, что ввели сами (pwd) от ответа системы (/home/test).
Ага, в домашней директории. Создам себе песочницу:
mkdir olga
Вот в ней и буду творить!
mkdir -p olga/dir--{000..100} touch olga/dir--{000..100}/file-{A..Z}
А потом можно проверить, что получилось:
cd olga ls -l
Как-то так! Имхо, полезные команды.
Я нашла их в книге «Командная строка Linux. Полное руководство», они используются для того, чтобы создать песочницу для прощупывания команды find. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!
И, главное, тестировщику полезно — может пригодиться для тестов.
Как протестировать IOPS на Linux
Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.
Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.
Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.
Используем утилиту fio — https://github.com/axboe/fio/releases.
1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка
cd /tmp wget https://github.com/axboe/fio/archive/fio-3.19.tar.gz tar xvzf fio-3.19.tar.gz rm fio-3.19.tar.gz cd fio-fio-3.19
2) Должны стоять пакеты для сборки
apt-get install -y gcc make libaio-dev | yum install -y make gcc libaio-devel
3) Собираем
make
4) Тестируем
./fio -readonly -name iops -rw=randread -bs=512 -runtime=20 -iodepth 32 -filename /dev/sda -ioengine libaio -direct=1
Какие должны быть результаты:
- Средний SSD, выпущенный 2-3 года назад — 50 тысяч IOPS.
- Свежий Samsung 960 Pro, который стоит на одной из железок у нас в офисе — 350 тысяч IOPS.
Свежесть определяется на момент написания статьи в 2017 году.
Если должно быть 50 тысяч, а диск выдает сильно меньше, то:
— он не SSD;
— есть сетевые задержки;
— неправильно примонтирован;
— с ними что-то еще плохое случилось и стоит поднять алярм.
И это все?
Разумеется, нет =))
Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.
Вот вам еще пара ссылочек от меня:
- Что значат символы >> и >& в unix/Linux — а то вроде про «>» знаешь еще по винде, а что значит «>>»? Вот в статье и ответ!
- Ахтунг, прод! Как настроить приветствие на Linux — очень полезная штука, если у вас есть доступы на продакшен. Обезопасьте себя )))
Для понимания структуры папок рекомендую статью «Структура папок ОС Linux. Какая папка для чего нужна. Что и где лежит в линуксе»
Книги и видео по теме
Видео:
ПО GNU/Linux — видео лекции Георгия Курячего — очень хорошие видео-лекции
Книги:
Командная строка Linux. Уильям Шоттс
Скотт Граннеман. Linux. карманный справочник
Где тренироваться
Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))
А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.
У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.
Чтобы подключиться к машине, используйте инструменты:
- Putty — командная строка
- WinSCP — графический интерфейс
См также:
WinSCP — что это и как использовать
Команды Linux для работы с файлами
Начало работы с Linux? В этой серии мы изучим полезные команды Linux, чтобы вы не заблудились в командной строке. В этой статье мы будем работать с файлами. Команды Linux, часть вторая: работа с файлами Сегодня мы научимся работать с файлами.
Мы узнаем:
- Как создать каталог
- Удалить каталог
- Сделать копию файла
- Переместить или переименовать файл
- Создать пустой файл
Итак, давайте копать!!
1.
mkdir Цель: создать каталогКак мы рассмотрели в прошлой статье, папки в Linux называются «каталогами». Они служат той же цели, что и папки в Windows.
Использование:
mkdir [имя каталога]
Вот mkdir в действии:
Вы даже можете создать каталог внутри каталога, даже если базовый не существует, с помощью опции -p
.
Здесь я создам новый каталог с именем test2 в тестовом каталоге с параметром -p:
2. rmdir
может удалить каталог быстро и легко.Использование:
rmdir [имя каталога]
Вот rmdir в действии:
Теперь это прекрасно работает, если каталог пуст. Но как насчет созданного мной каталога, в котором есть другой каталог? Вот что происходит, когда я пытаюсь использовать rmdir для этого каталога:
rmdir не может удалить каталоги, в которых есть файлы или каталоги. Для этого вы должны использовать команду rm (которую мы снова рассмотрим в команде № 5)
Сделайте это, нам нужно ввести
rm -rf [имя каталога]
Примечание: это удалит все файлы и каталоги в каталоге.
3. cp
Цель: сделать копию файла. Давайте использовать это в качестве примера. Я хочу сделать резервную копию этого файла. Если я что-то напутаю, я могу вернуться к старой версии.использование:
cp [имя файла] [новое имя файла]
Вы также можете скопировать файл в другой каталог и сохранить то же имя файла:
cp [имя файла] [новое местоположение]
Это отличный способ сделать копии файла. Но что, если я хочу переместить его?
4. mv
Назначение: переместить файл в другое место или переименовать егоЭто довольно просто. Вы используете его для перемещения файла из одного места в другое.
использование:
mv [имя файла] [новое местоположение]
Используется так же, как cp, но перемещает файл вместо создания копии.
Таким же образом вы переименовываете файл .
использование:
mv [имя файла] [новое имя файла]
Итак, если я хочу переименовать свой файл конфигурации nginx, я могу сделать это:
И это сделано. Что делать, если я хочу удалить его?
5. п.м.
Цель: удалить файлРанее мы использовали rm для удаления каталога. Это также вы удаляете отдельные файлы.
использование:
rm [имя файла]
Вы можете удалить все файлы в каталоге с помощью следующей команды:
rm -rf *
Это удобная команда для удаления файлов
6. touch
Цель: создать пустой файлВы могли заметить, что мой «nginx.conf» был нулевым байтом. Это отличная команда для создания пустых файлов. Это удобно для создания нового файла или тестирования.
использование:
touch [имя файла]
Это создает файл, в котором ничего нет:
7.
найти файл (find)Это мощная команда для поиска файлов в файловой системе .
Использование:
find [путь для поиска] -name filename
Допустим, я хочу найти свой код hello world. Я знаю имя файла. Я просто не знаю, где он находится.
Теперь я могу точно увидеть, где находится мой файл, с помощью простой команды.
Резюме
В этой статье мы научились работать с файлами. Работа из командной строки может быть очень быстрой и эффективной, поэтому теперь мы знаем, как создавать, перемещать, копировать и переименовывать файлы из командной строки.
Пожалуйста, заходите на этот сайт по мере того, как мы будем пополнять эту серию. Мы рассмотрим некоторые расширенные темы командной строки, благодаря которым вы сразу же почувствуете себя волшебником Linux.
Вы можете проверить свои навыки работы с Linux, чтобы узнать, на каком уровне вы находитесь:
Я набрал 203 балла, так что мне еще есть куда расти. Каков ваш результат? Возьмите свой SkillIQ прямо сейчас.
Есть вопросы? Комментарии? Дай мне знать!
– Джереми
Связанные теги:
linux it-ops
Об авторе
Джереми Морган — технический блоггер, спикер и автор. Он был разработчиком в течение почти двух десятилетий и работал с различными компаниями от Fortune 100 до небольших стартапов.
Джереми любит преподавать и учиться, пишет здесь и в своем техническом блоге, а также создает курсы Pluralsight.
Follow @jeremycmorgan
10-дневная бесплатная пробная версия
Зарегистрируйтесь сейчасИзучите основные команды управления файлами в Linux — часть 2
Файловая система Linux и охватывает основные команды управления файлами, необходимые для сертификационного экзамена LFCA.
Приступая к работе в Linux, вы потратите много времени на взаимодействие с файлами и каталогами. Каталоги также известны как папки и имеют иерархическую структуру.
В операционной системе Linux каждый объект рассматривается как файл. На самом деле, в кругах Linux есть популярное утверждение: «В Linux все является файлом». Это просто упрощение, и в реальном смысле большинство файлов в Linux являются специальными файлами, которые включают в себя символические ссылки, блочные файлы и так далее.
Обзор файловой системы Linux
Давайте рассмотрим основные типы файлов:
1. Обычные файлы
Это наиболее распространенные типы файлов. Обычные файлы содержат удобочитаемый текст, программные инструкции и символы ASCII.
Примеры обычных файлов:
- Простые текстовые файлы, файлы PDF
- Мультимедийные файлы, такие как изображения, музыка и видеофайлы
- Двоичные файлы
- Заархивированные или сжатые файлы
И многое другое.
2. Специальные файлы
Это файлы, представляющие физические устройства, такие как смонтированные тома, принтеры, дисководы компакт-дисков и любые устройства ввода/вывода.
3. Справочники
A Справочник — это особый тип файлов, в котором хранятся как обычные, так и специальные файлы в иерархическом порядке, начиная с корневого каталога (/)
. Каталог — это эквивалент папки в операционной системе Windows. Каталоги создаются с помощью команды mkdir , сокращенно от создания каталога, как мы увидим позже в этом руководстве.
Иерархическая структура Linux начинается с корневого каталога и разветвляется на другие каталоги, как показано:
Структура каталогов LinuxДавайте разберемся с каждым каталогом и его использованием.
- Каталог /root является домашним каталогом для пользователя root.
- Каталог /dev содержит файлы устройств, такие как /dev/sda .
- Статические загрузочные файлы находятся в каталоге /boot .
- Приложения и пользовательские утилиты находятся в каталоге /usr .
- Каталог /var содержит файлы журналов различных системных приложений.
- Все файлы конфигурации системы хранятся в каталоге /etc .
- В каталоге /home находятся пользовательские папки. К ним относятся «Рабочий стол», «Документы», «Загрузки», «Музыка», «Общедоступные» и «Видео».
- Дополнительные пакеты приложений можно найти в каталоге /opt .
- В каталоге /media хранятся файлы для съемных устройств, таких как USB-накопители.
- Каталог /mnt содержит подкаталоги, которые действуют как временные точки монтирования для монтирования таких устройств, как CD-ROM.
- Каталог /proc — это виртуальная файловая система, содержащая информацию о запущенных в данный момент процессах. Это странная файловая система, которая создается при загрузке системы и уничтожается при завершении работы.
- Каталог /bin содержит двоичные файлы пользовательских команд.
- В каталоге /lib хранятся образы общих библиотек и модули ядра.
Команды управления файлами Linux
Вы потратите много времени на взаимодействие с терминалом, на котором будете выполнять команды. Выполнение команд — наиболее предпочтительный способ взаимодействия с системой Linux, поскольку он дает вам полный контроль над системой по сравнению с использованием графических элементов дисплея.
В этом и последующих уроках мы будем запускать команды на терминале. Мы используем Ubuntu OS , и для запуска терминала используйте сочетание клавиш CTRL + ALT + T
.
Давайте теперь углубимся в основные команды управления файлами, которые помогут вам создавать файлы и управлять ими в вашей системе.
1. Команда pwd
pwd , сокращение от рабочего каталога печати, — это команда, которая выводит текущий рабочий каталог в иерархическом порядке, начиная с самого верхнего корневого каталога (/)
.
Чтобы проверить текущий рабочий каталог, просто вызовите команду pwd , как показано ниже.
$ в день
Вывод показывает, что мы находимся в нашем домашнем каталоге, абсолютный или полный путь — /home/tecmint .
Печать текущего рабочего каталога2. Команда cd
Чтобы изменить каталог или перейти к нему, используйте команду cd, сокращенно от слова «изменить каталог».
Например, чтобы перейти к /var/log путь к файлу, выполните команду:
$ cd /var/logНавигация по каталогам в Linux
Чтобы перейти в каталог вверх, добавьте две точки или точки в конце.
$ кд ..
Чтобы вернуться в домашний каталог, выполните команду cd без аргументов.
$ кдПримеры команд cd
ПРИМЕЧАНИЕ . Чтобы перейти в подкаталог или каталог в текущем каталоге, не используйте косую черту (/)
, просто введите имя каталога.
Например, чтобы перейти в каталог Downloads, введите:
$ cd DownloadsПерейти к каталогу загрузок
3. Команда ls
Команда ls используется для вывода списка существующих файлов или папок в каталоге. Например, чтобы просмотреть все содержимое домашнего каталога, мы запустим команду.
$ лс
Из вывода видно, что у нас есть два текстовых файла и восемь папок, которые обычно создаются по умолчанию после установки и входа в систему.
Список файлов в Linux Чтобы получить дополнительную информацию, добавьте флаг -lh
, как показано ниже. Параметр -l
означает длинный список и выводит дополнительную информацию, такую как права доступа к файлу, пользователя, группу, размер файла и дату создания. Флаг -h
выводит размер файла или каталога в удобочитаемом формате.
$ лс-лчФайлы длинного списка в Linux
Чтобы вывести список скрытых файлов, добавьте флаг -a
.
$ лс-ла
Отображает скрытые файлы, начинающиеся со знака точки (.)
, как показано.
.ssh .config .местныйСписок скрытых файлов в Linux
4. Команда touch
Команда touch используется для создания простых файлов в системе Linux. Чтобы создать файл, используйте синтаксис:
$ touch имя файла
Например, чтобы создать файл file1.txt , выполните команду:
$ touch file1.txt
Чтобы подтвердить создание файла, вызовите лс команда .
$ лсСоздать пустой файл в Linux
5. Команда cat
Чтобы просмотреть содержимое файла, используйте команду cat следующим образом:
$ cat имя_файлаПросмотр содержимого файлов
6. Команда mv
Команда mv — достаточно универсальная команда. В зависимости от того, как он используется, он может переименовывать файл или перемещать его из одного места в другое.
Чтобы переместить файл, используйте следующий синтаксис:
$ mv имя файла /путь/к/назначению/
Например, чтобы переместить файл из текущего каталога в каталог Public/docs, выполните команду:
$ mv file1.txt Public/docsПеремещение файлов в Linux
Кроме того, вы можете переместить файл из другого места в текущий каталог, используя показанный синтаксис. Обратите внимание на знак точки в конце команды. Это подразумевает это место».
$ mv /путь/к/файлу .
Теперь сделаем обратное. Мы скопируем файл из пути Public/docs в текущий каталог, как показано.
$ mv Public/docs/file1.txt .Переместить файлы из папки в Linux
Чтобы переименовать файл, используйте показанный синтаксис. Команда удаляет исходное имя файла и присваивает второму аргументу новое имя файла.
$ mv имя_файла1 имя_файла2
Например, чтобы переименовать файл1.txt в файл2.txt, выполните команду:
$ mv file1. txt file2.txtПереименовать файлы в Linux
Кроме того, вы можете одновременно перемещать и переименовывать файл, указав папку назначения и другое имя файла.
Например, чтобы переместить file1.txt в папку Public/docs и переименовать его file2.txt , выполните команду:
$ mv file1.txt Public/docs/file2.txtПеремещение и переименование файлов в Linux
7. Команда cp
Команда cp, сокращенно от copy, копирует файл из одного места в другое. В отличие от команды перемещения, команда cp сохраняет исходный файл в его текущем местоположении и создает дубликат копии в другом каталоге.
Синтаксис копирования файла показан ниже.
$ cp /файл/путь /назначение/путь
Например, чтобы скопировать файл file1.txt из текущего каталога в каталог Public/docs/, введите команду:
$ cp file1.txt Public/docs/Копирование файлов в Linux
Чтобы скопировать каталог, используйте параметр -R
для рекурсивного копирования каталога, включая все его содержимое. Мы создали еще один каталог под названием учебники . Чтобы скопировать этот каталог вместе с его содержимым в путь Public/docs/, выполните команду:
$ cp -R tutorials Public/docs/Копировать каталог в Linux
8. Команда mkdir
Возможно, вам интересно, как мы создали каталог tutorials . Ну, это довольно просто. Чтобы создать новый каталог, используйте команду mkdir ( make directory ) следующим образом:
$ mkdir имя_каталога
Давайте создадим еще один каталог с именем проектов , как показано:
$ mkdir проектовСоздать каталог в Linux
Чтобы создать каталог в другом каталоге, используйте флаг -p
. Приведенная ниже команда создает основной каталог внутри каталога linux в родительском каталоге, который является каталогом проектов .
$ mkdir -p проекты/linux/основыСоздать каталог в Linux
9.
Команда rmdirКоманда rmdir удаляет пустой каталог. Например, чтобы удалить каталог tutorials , выполните команду:
$ rmdir tutorialsУдаление пустого каталога в Linux
Если вы попытаетесь удалить непустой каталог, вы получите сообщение об ошибке, как показано ниже.
$ rmdir проектыУдалить каталог в Linux
10. Команда rm
Команда rm (удалить) используется для удаления файла. Синтаксис довольно прост:
$ rm имя файла
Например, чтобы удалить файл file1.txt , выполните команду:
$ rm file1.txt
Кроме того, вы можете удалить или удалить каталог рекурсивно, используя параметр -R
. Это может быть либо пустой, либо непустой каталог.
$ rm -R имя_каталога
Например, чтобы удалить каталог проектов , выполните команду:
$ rm -R проектовРекурсивное удаление каталога в Linux
11.
Найти и найти КомандыИногда вам может понадобиться найти местоположение определенного файла. Вы можете легко сделать это с помощью команд find или locate .
Команда find ищет файл в определенном месте и принимает два аргумента: путь или каталог поиска и файл для поиска.
Синтаксис показан
$ find /path/to/search -name filename
Например, для поиска файла с именем file1.txt в домашнем каталоге, запустите:
$ find /home/tecmint -name file1.txtПоиск файлов в Linux
Команда locate , как и команда find , играет ту же роль поиска файлов, но принимает только один аргумент, как показано.
$ найти имя файла
Например;
$ найти файл1.txtПоиск файлов в Linux
Команда locate выполняет поиск в базе данных всех возможных файлов и каталогов в системе.
ПРИМЕЧАНИЕ : Команда locate выполняется намного быстрее, чем команда find . Однако команда find намного мощнее и работает в ситуациях, когда locate не дает желаемых результатов.
Вот оно! В этом разделе мы рассмотрели основные команды управления файлами, которые дадут вам ноу-хау в создании и управлении файлами и каталогами в системе Linux.
Стать сертифицированным ИТ-специалистом Linux Foundation (LFCA)
Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.
Работа с файлами и каталогами – Введение в командную строку для геномики
Обзор
Обучение: 30 мин.
Упражнения: 15 минВопросы
Как я могу просматривать и искать содержимое файла?
Как я могу создавать, копировать и удалять файлы и каталоги?
Как я могу контролировать, у кого есть разрешение на изменение файла?
Как повторить недавно использованные команды?
Цели
Просмотр, поиск, копирование, перемещение и переименование файлов. Создайте новые каталоги.
Используйте подстановочные знаки (
*
) для выполнения операций над несколькими файлами.Сделать файл доступным только для чтения.
Используйте команду
history
для просмотра и повторения недавно использованных команд.
Работа с файлами
Наш набор данных: файлы FASTQ
Теперь, когда мы знаем, как перемещаться по нашей структуре каталогов, давайте
начать работать с нашими файлами секвенирования. Мы провели эксперимент по секвенированию и
есть два файла результатов, которые хранятся в нашем untrimed_fastq 9каталог 0042.
Подстановочные знаки
Перейдите в каталог untrimed_fastq
:
$ cd ~/shell_data/untrimmed_fastq
Нас интересуют файлы FASTQ в этом каталоге. Мы можем перечислить все файлы с расширением .fastq с помощью команды:
$ лс *. fastq
SRR097977.fastq SRR098026.fastq
Символ *
— это особый тип символов, называемый подстановочным знаком, который можно использовать для представления любого количества символов любого типа.
Таким образом, *.fastq
соответствует каждому файлу, оканчивающемуся на .fastq
.
Эта команда:
$ лс *977.fastq
SRR097977.fastq
перечисляет только файлы, оканчивающиеся на 977.fastq
.
Эта команда:
$ лс /usr/bin/*.sh
/usr/bin/amuFormat.sh /usr/bin/gettext.sh /usr/bin/gvmap.sh
Список всех файлов в /usr/bin
, которые заканчиваются символами .sh
.
Обратите внимание, что на выходе отображается полных пути к файлам, т.к.
каждый результат начинается с /
.
Упражнение
Выполните каждую из следующих задач из текущего каталога, используя один
ls
команда для каждого:
- Список всех файлов в
/usr/bin
, которые начинаются с буквы «с».- Список всех файлов в
/usr/bin
, содержащих букву «а».- Перечислите все файлы в
/usr/bin
, которые заканчиваются на букву «о».Бонус: перечислите все файлы в
/usr/bin
, которые содержат букву «a» или буква «с».Подсказка: для бонусного вопроса требуется подстановочный знак Unix, о котором мы не говорили. пока что. Попробуйте поискать в Интернете информацию о подстановочных знаках Unix, чтобы найти что вам нужно, чтобы решить проблему с бонусами.
Решение
лс /usr/bin/c*
лс /usr/bin/*a*
лс /usr/bin/*o
Бонус:лс /usr/bin/*[ac]*
Упражнение
echo
— это встроенная команда оболочки, которая записывает свои аргументы в виде строки текста в стандартный вывод. Командуecho
также можно использовать с символами сопоставления с образцом, такими как подстановочные знаки. Здесь мы воспользуемся командойecho
, чтобы увидеть, как оболочка интерпретирует подстановочный знак.$ эхо *.fastqSRR097977.fastq SRR098026.fastqРасширение
*
включает любой файл, оканчивающийся на.fastq
. Мы видим, что выводecho *.fastq
совпадает сls *.fastq
.Как бы выглядел вывод, если бы подстановочный знак мог соответствовать , а не ? Сравните результаты
эхо *.отсутствует
иls *.отсутствует
.Решение
$ эхо *.отсутствует*.отсутствует$ лс *.отсутствуетls: невозможно получить доступ к '*.missing': нет такого файла или каталога
История команд
Если вы хотите повторить недавно выполненную команду, вы можете получить доступ к предыдущей команды, используя стрелку вверх на клавиатуре, чтобы вернуться к самой последней команда. Точно так же стрелка вниз перемещает вас вперед в истории команд.
Еще несколько полезных сочетаний клавиш:
- Контр. + C отменит команду, которую вы пишете, и даст вам свежая подсказка.
- Ctrl + R выполнит обратный поиск в вашей истории команд. Этот очень полезно.
- Ctrl + L или команда
clear
очистит ваш экран.
Вы также можете просмотреть свои последние команды с помощью команды history
, введя:
$ история
, чтобы увидеть пронумерованный список последних команд. Вы можете повторно использовать одну из этих команд напрямую, ссылаясь на номер этой команды.
Например, если ваша история выглядела так:
259 лс * 260 лс /usr/bin/*.sh 261 лс *R1*fastq
, то вы можете повторить команду #260, введя:
$ !260
Введите !
(восклицательный знак) и затем номер команды из вашей истории. Вы будете рады, что узнали это, когда вам нужно будет повторно запустить очень сложные команды.
Для получения дополнительной информации о расширенном использовании history
, прочитайте раздел 9.3
Руководство по Башу.
Упражнение
Найдите номер строки в вашей истории для команды, в которой перечислены все .sh файлы в
/usr/bin
. Повторите эту команду.Решение
Первый тип
история
. Тогда используйте!
, за которым следует номер строки для повторного запуска этой команды.
Изучение файлов
Теперь мы знаем, как переключаться между каталогами, запускать программы и просматривать содержимое каталогов, но как нам посмотреть содержимое файлов?
Один из способов проверить файл — распечатать все
содержимое с помощью программы cat
.
Введите следующую команду из каталога untrimmed_fastq
:
$ кот SRR098026. fastq
Это выведет на экран все содержимое файла SRR098026.fastq
.
Упражнение
- Распечатайте содержимое файла
~/shell_data/untrimmed_fastq/SRR097977.fastq
. Какая последняя строка файла?- Из вашего домашнего каталога и без изменения каталогов, используйте одну короткую команду для печати содержимого всех файлов в каталог
~/shell_data/untrimmed_fastq
.Решение
- Последняя строка файла
C:CCC::CCCCCCCC<8?6A:C28C<608'&&&,'$
.кошка ~/shell_data/untrimmed_fastq/*
cat
— потрясающая программа, но когда файл действительно большой, она может
быть раздражающим в использовании. Программа, меньше
, пригодится для этого
кейс. меньше
открывает файл только для чтения и позволяет перемещаться по нему. Команды навигации
идентичны программе man
.
Введите следующую команду:
$ меньше SRR097977.fastq
Некоторые навигационные команды в меньше
:
ключ | действие |
---|---|
Космос | идти вперед |
б | идти назад |
г | перейти к началу |
Г | идти до конца |
q | выйти |
меньше
также дает вам возможность поиска по файлам. Использовать
Клавиша «/», чтобы начать поиск. Введите слово, которое вы хотите
для поиска и нажмите введите
. Экран перейдет к следующему месту, где
это слово найдено.
Ярлык: Если вы нажмете «/», а затем «ввод», меньше
будет повторяться
предыдущий поиск. минус
поиска из текущего местоположения и
продвигается вперед. Прокрутите пару строк вверх на своем терминале, чтобы проверить
вы находитесь в начале файла. Обратите внимание, если вы находитесь в конце файла и выполняете поиск
для последовательности «САА» меньше
не найдет. Вам либо нужно обратиться в
начало файла (набрав г
) и повторите поиск, используя /
или вы
можно использовать ?
для поиска назад так же, как вы использовали /
ранее.
Например, давайте найдем в нашем файле последовательность TTTTT
.
Вы можете видеть, что мы идем прямо к этой последовательности, как она выглядит,
и где он находится в файле. Если вы продолжите набирать /
и нажмете Enter, вы переместитесь
вперед к следующему экземпляру этого мотива последовательности. Если вместо этого ввести ?
и нажмите
return, вы будете выполнять поиск назад и перемещаться вверх по файлу к предыдущим примерам этого мотива.
Упражнение
Каковы следующие три нуклеотида (символа) после первого экземпляра приведенной выше последовательности?
Решение
CAC
Помните, что программа man
на самом деле использует минус
для внутренних целей и
поэтому использует одни и те же команды, поэтому вы можете искать документацию
также используя «/»!
Есть еще один способ просмотра файлов, и в этом случае просто посмотрите на часть из них. Это может быть особенно полезно, если мы просто хотим чтобы увидеть начало или конец файла или посмотреть, как он отформатирован.
Команды head
и tail
позволяют вам посмотреть
начало и конец файла соответственно.
$ голова SRR098026.fastq
@SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 НННННННННННННННННННННННННННН +СРР098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 !!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!! @SRR098026. 2 HWUSI-EAS1599_1:2:1:0:312 длина=35 ННННННННННННННННННННННННННН +SRR098026.2 HWUSI-EAS1599_1:2:1:0:312 длина=35 !!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!! @SRR098026.3 HWUSI-EAS1599_1:2:1:0:570 длина=35 ННННННННННННННННННННННННННН
$ хвост SRR098026.fastq
+SRR098026.247 HWUSI-EAS1599_1:2:1:2:1311 длина=35 #!##!##################!!!!!!!!###### @SRR098026.248 HWUSI-EAS1599_1:2:1:2:118 длина=35 GNTGNGGTCATCATACGCGCCCNNNNNNNGGCATG +SRR098026.248 HWUSI-EAS1599_1:2:1:2:118 длина=35 Б!;?!А=5922:##########!!!!!!!###### @SRR098026.249 HWUSI-EAS1599_1:2:1:2:1057 длина=35 CNCTNTATGCGTACGGCAGTGANNNNNNGGAGAT +SRR098026.249 HWUSI-EAS1599_1:2:1:2:1057 длина=35 A!@B!BBB@ABAB#########!!!!!!!######
Опция -n
любой из этих команд может быть использована для печати
первые или последние n
строк файла.
$ головка-n 1 SRR098026.fastq
@SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35
$ хвост -n 1 SRR098026.fastq
A!@B!BBB@ABAB#########!!!!!!!######
Подробная информация о формате FASTQ
Несмотря на то, что это выглядит сложно (и так оно и есть), его легко понять. формат fastq с небольшим декодированием. Некоторые правила оформления включить…
Строка | Описание |
---|---|
1 | Всегда начинается с «@», а затем информация о прочитанном |
2 | Фактическая последовательность ДНК |
3 | Всегда начинается с «+», а иногда такая же информация в строке 1 |
4 | Содержит строку символов, представляющую показатели качества; должно иметь то же количество символов, что и строка 2 |
Мы можем просмотреть первое полное чтение в одном из файлов в нашем наборе данных, используя head
для просмотра
первые четыре строки.
$ голова -n 4 SRR098026.fastq
@SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 НННННННННННННННННННННННННННН +SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 !!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!!
Все нуклеотиды в этом прочтении, кроме одного, неизвестны ( N
). Это довольно плохое чтение!
Строка 4 показывает качество каждого нуклеотида в прочтении. Качество интерпретируется как вероятность неправильного базового вызова (например, 1 из 10) или, что то же самое, базового вызова точность (например, 90%). Чтобы можно было поставить в соответствие каждому отдельному нуклеотиду его качество оценка, числовая оценка преобразуется в код, в котором каждый отдельный символ представляет числовой показатель качества для отдельного нуклеотида. Например, в строке выше строка оценки качества:
!!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!!
Символ #
и каждый из символов !
символа представляют качество кодирования для
отдельный нуклеотид. Числовое значение, присвоенное каждому из этих символов, зависит от
платформу секвенирования, сгенерировавшую считывания. Секвенатор, используемый для генерации наших данных
использует стандартное кодирование результатов PHRED качества Sanger, начиная с версии Illumina 1. 8.
Каждому персонажу присваивается показатель качества от 0 до 42, как показано в таблице ниже.
Кодирование качества: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK | | | | | Показатель качества: 0........10........20........30........40..
Каждый показатель качества представляет собой вероятность того, что соответствующий вызов нуклеотида неправильно. Этот показатель качества логарифмически основан, поэтому показатель качества 10 отражает базовая точность вызова 90%, но показатель качества 20 отражает базовую точность вызова 99%. Эти значения вероятности являются результатами базового алгоритма вызова и зависят от того, как много сигнала было захвачено для включения базы.
Оглядываясь назад на наше чтение:
@SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 НННННННННННННННННННННННННННН +SRR098026.1 HWUSI-EAS1599_1:2:1:0:968 длина=35 !!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!!
теперь мы можем видеть, что качество каждого из N
равно 0, а качество единственного
вызов нуклеотида ( C
) также очень плохое ( #
= показатель качества 2). Это действительно очень
плохо читается.
Создание, перемещение, копирование и удаление
Теперь мы можем перемещаться по файловой структуре, просматривать файлы и искать файлы. Но что, если мы хотим скопировать файлы или переместить их вокруг или избавиться от них? В большинстве случаев вы можете выполнять подобные манипуляции с файлами без командной строки. но будут некоторые случаи (например, когда вы работаете с удаленным компьютером, как мы для этого урока), где это будет невозможно. Вы также обнаружите, что можете работать с сотнями файлов и хотите проделать аналогичные манипуляции со всеми. из этих файлов. В таких случаях намного быстрее выполнять эти операции в командной строке.
Копирование файлов
При работе с вычислительными данными важно сохранить безопасную копию этих данных, которую нельзя будет случайно перезаписать или удалить. Для этого урока наши необработанные данные — это файлы FASTQ. Мы не хотим случайно изменить исходные файлы, поэтому сделаем их копию и измените права доступа к файлам, чтобы мы могли читать, но не записывать файлы.
Во-первых, давайте сделаем копию одного из наших файлов FASTQ, используя команду cp
.
Перейдите в каталог shell_data/untrimmed_fastq
и введите:
$ cp SRR098026.fastq SRR098026-copy.fastq $ лс -F
SRR097977.fastq SRR098026-copy.fastq SRR098026.fastq
Теперь у нас есть две копии файла SRR098026.fastq
, одна из них называется SRR098026-copy.fastq
. Мы переместим этот файл в новый каталог
называется резервная копия
, где мы будем хранить файлы резервных копий данных.
Создание каталогов
Команда mkdir
используется для создания каталога. Введите мкдир
затем пробел, затем имя каталога, который вы хотите создать:
$ резервная копия mkdir
Перемещение/переименование
Теперь мы можем переместить файл резервной копии в этот каталог. Мы можем
перемещать файлы с помощью команды mv
:
$ mv SRR098026-copy. fastq резервная копия резервная копия $ ls
SRR098026-copy.fastq
Команда mv
также используется для переименования файлов. Давайте переименуем этот файл, чтобы было понятно, что это резервная копия:
$ бэкап cd $ mv SRR098026-copy.fastq SRR098026-backup.fastq $ лс
SRR098026-backup.fastq
Разрешения на доступ к файлам
Теперь мы сделали резервную копию нашего файла, но то, что у нас есть две копии, не делает нас в безопасности. Мы все еще можем случайно удалить или перезаписать обе копии. Чтобы убедиться, что мы не можем случайно испортить этот файл резервной копии, мы собираемся изменить права доступа к файлу, чтобы что нам разрешено только читать (т. е. просматривать) файл, но не записывать в него (т. е. вносить новые изменения).
Просмотр текущих разрешений для файла с помощью флага -l
(long) для команды ls
:
$ лс-л
-rw-r--r-- 1 dcuser dcuser 43332 15 ноября 23:02 SRR098026-backup. fastq
Первая часть вывода для флага -l
содержит информацию о текущих правах доступа к файлу. Есть десять слотов в
список разрешений. Первый символ в этом списке связан с типом файла, а не с правами доступа, поэтому мы его пока проигнорируем. Следующие три
символы относятся к разрешениям, которые имеет владелец файла, следующие три относятся к разрешениям для членов группы, а последний
три символа указывают, что другие пользователи вне вашей группы могут делать с файлом. Мы собираемся сконцентрироваться на трех позициях
которые касаются ваших разрешений (как владельца файла).
Здесь три позиции, относящиеся к владельцу файла: rw-
. r
означает, что у вас есть разрешение на чтение файла, w
указывает, что у вас есть разрешение на запись (т.
у вас нет разрешения на выполнение способности, закодированной в этом пространстве (это пространство, где хранится x
или исполняемая способность, мы будем
подробнее об этом в следующем уроке).
На данный момент наша цель — изменить права доступа к этому файлу, чтобы у вас больше не было w
или прав на запись. Мы можем сделать это, используя команду chmod
(change mode) и вычитая ( -
) разрешение на запись -w
.
$ chmod -w SRR098026-backup.fastq $ лс -л
-r--r--r-- 1 dcuser dcuser 43332 15 ноября 23:02 SRR098026-backup.fastq
Удаление
Чтобы доказать себе, что у вас больше нет возможности изменять этот файл, попробуйте удалить его с помощью rm
команда:
$ rm SRR098026-backup.fastq
Вас спросят, хотите ли вы переопределить права доступа к файлам:
rm: удалить защищенный от записи обычный файл «SRR098026-backup.fastq»?
Вы должны ввести n
для номера. Если вы введете n
(нет), файл не будет удален. Если вы введете и
, вы удалите файл. Это дает нам дополнительную
меры безопасности, так как между нами и удалением наших файлов данных есть еще один шаг.
Важно : Команда rm
безвозвратно удаляет файл. Будьте осторожны с этой командой. Это не
просто аккуратно поместите файлы в корзину. Они действительно ушли.
По умолчанию rm
не удаляет каталоги. Вы можете сказать rm
удалить каталог, используя параметр -r
(рекурсивный). Давайте удалим каталог резервного копирования
мы только что сделали.
Введите следующую команду:
$ кд.. $ rm -r резервная копия
Это удалит не только каталог, но и все файлы внутри каталога. Если в каталоге есть файлы, защищенные от записи, вас спросят, хотите ли вы переопределить настройки разрешений.
.Упражнение
Начиная с каталога
shell_data/untrimmed_fastq/
, выполните следующие действия:
- Убедитесь, что вы удалили каталог резервных копий и все содержащиеся в нем файлы.
- Создайте резервную копию каждого из ваших файлов FASTQ, используя
ср
. (Примечание: вам нужно будет сделать это отдельно для каждого из двух файлов FASTQ. Мы не научился еще как это делать с подстановочным знаком.)- Используйте подстановочный знак, чтобы переместить все файлы резервных копий в новый каталог резервных копий.
- Измените права доступа ко всем файлам резервных копий, чтобы они были защищены от записи.
907:20Решение
rm -r резервная копия
cp SRR098026.fastq SRR098026-backup.fastq
иcp SRR097977.fastq SRR097977-backup.fastq
резервная копия mkdir
иmv *-backup.fastq резервная копия
chmod -w backup/*-backup.fastq
Всегда полезно проверить свою работу с помощьюls -l backup
. Вы должны увидеть что-то вроде:-r--r--r-- 1 dcuser dcuser 47552 15 ноября 23:06 SRR097977-backup.fastq -r--r--r-- 1 dcuser dcuser 43332 15 ноября 23:06 SRR098026-backup. fastqКлючевые моменты
Вы можете просмотреть содержимое файла, используя
меньше
,кошка
,голова
илихвост
.Команды
cp
,mv
иmkdir
полезны для управления существующими файлами и создания новых каталогов.Вы можете просмотреть права доступа к файлам, используя
ls -l
, и изменить разрешения, используяchmod
.Команда
history
и стрелка вверх на клавиатуре могут использоваться для повторения недавно использованных команд.ГЛАВА 9. Работа с файлами
Глава 9. Работа с файлами
Содержание
- Все файлы получают Case
- . создать пустой файл
- touch -t
rm
- remove forever
- rm -i
- rm -rf
cp
- copy one file
- copy to another directory
- cp -r
- copy multiple files to directory
- cp -i
mv
- rename files with mv
- rename directories with mv
- mv -i
rename
- о переименовании
- переименовании в Debian/Ubuntu
- переименовании в CentOS/RHEL/Fedora
практика: работа с файлами решение: работа с файлами удалять, копировать и перемещать файлы с помощью таких команд, как file, touch, rm, cp, mv и rename . все файлы чувствительны к регистру
Файлы в Linux (или любой Unix) чувствительны к регистру . Это означает, что FILE1 отличается от file1 , а /etc/hosts отличается от /etc/Hosts (последний не существует на типичном компьютере с Linux).
На этом снимке экрана показана разница между двумя файлами, один с заглавными буквами W , другой со строчными буквами w .
paul@laika:~/Linux$ ls Зима.txt Зима.txt paul@laika:~/Linux$ cat winter.txt Холодно. paul@laika:~/Linux$ кошка Зима.txt Это очень холодно!все является файлом
Каталог представляет собой особый вид файла , но это все еще (с учетом регистра!) файл . Каждое окно терминала (например, /dev/pts/4 ), любой жесткий диск или раздел (например, /dev/sdb1 ) и любой процесс представлены где-то в файловой системе как файл . Из этого курса станет ясно, что в Linux все на 9 баллов.0142 файл .
Утилита file определяет тип файла. Linux не использует расширения для определения типа файла. Командной строке все равно, заканчивается ли файл на .txt или .pdf. Как системный администратор вы должны использовать команду file для определения типа файла. Вот несколько примеров для типичной системы Linux.
paul@laika:~$ файл pic33.png pic33.png: данные изображения PNG, 3840 x 1200, 8 бит/цвет RGBA, без чересстрочной развертки paul@laika:~$ файл /etc/passwd /etc/passwd: текст ASCII paul@laika:~$ файл HelloWorld.c HelloWorld.c: текст программы ASCII CКоманда file использует волшебный файл, содержащий шаблоны для распознавания типов файлов. Файл Magic находится по адресу /usr/share/file/magic . Введите man 5 magic для получения дополнительной информации.
Интересно указать file -s для специальных файлов, таких как /dev и /proc .
root@debian6~# файл /dev/sda /dev/sda: специальный блок root@debian6~# файл -s /dev/sda /dev/sda: загрузочный сектор x86; раздел 1: ID=0x83, активный, стартовый... root@debian6~# файл /proc/cpuinfo /proc/cpuinfo: пусто root@debian6~# файл -s /proc/cpuinfo /proc/cpuinfo: текст программы ASCII C++создать пустой файл
Одним из простых способов создать пустой файл является нажатие . (Позже в этой книге мы увидим множество других способов создания файлов.)
Этот снимок экрана начинается с пустого каталога, создает два файла с касанием и перечисляет эти файлы.
paul@debian7:~$ ls -l всего 0 paul@debian7:~$ сенсорный файл42 paul@debian7:~$ сенсорный файл33 paul@debian7:~$ ls -l всего 0 -rw-r--r-- 1 paul paul 0 15 окт 08:57 file33 -rw-r--r-- 1 paul paul 0 15 окт 08:56 file42 paul@debian7:~$touch -t
Команда touch может устанавливать некоторые свойства при создании пустых файлов. Можете ли вы определить, что установлено, глядя на следующий скриншот? Если нет, проверьте руководство для коснуться .
paul@debian7:~$ touch -t 200505050000 SinkoDeMayo paul@debian7:~$ touch -t 130207111630 BigBattle.txt paul@debian7:~$ ls -l всего 0 -rw-r--r-- 1 paul paul 0 11 июля 1302 BigBattle.txt -rw-r--r-- 1 paul paul 0 15 окт 08:57 file33 -rw-r--r-- 1 paul paul 0 15 окт 08:56 file42 -rw-r--r-- 1 paul paul 0 5 мая 2005 SinkoDeMayo paul@debian7:~$удалить навсегда
Если вам больше не нужен файл, используйте rm , чтобы удалить его. В отличие от некоторых графических пользовательских интерфейсов, командная строка вообще не имеет мусорной корзины или корзины для восстановления файлов. Когда вы используете rm для удаления файла, файл исчезает. Поэтому будьте осторожны при удалении файлов!
paul@debian7:~$ лс BigBattle. txt файл33 файл42 paul@debian7:~$ пм BigBattle.txt paul@debian7:~$ лс файл33 файл42 СинкоДеМайо paul@debian7:~$Чтобы предотвратить случайное удаление файла, введите rm -i .
paul@debian7:~$ лс файл33 файл42 СинкоДеМайо paul@debian7:~$ rm -i файл33 rm: удалить обычный пустой файл `file33'? да paul@debian7:~$ rm -i SinkoDeMayo rm: удалить обычный пустой файл `SinkoDeMayo'? н paul@debian7:~$ лс file42 СинкоДеМайо paul@debian7:~$rm -rf
По умолчанию rm -r не удаляет непустые каталоги. Однако rm принимает несколько опций, которые позволят вам удалить любой каталог. Оператор rm -rf известен тем, что он удалит все (при условии, что у вас есть на это права). Когда вы вошли в систему как root, будьте очень осторожны с rm -rf ( f означает force , а r означает recursive ), поскольку root подразумевает, что разрешения не применяются к вам. Вы можете случайно стереть всю файловую систему.
paul@debian7:~$ тест mkdir paul@debian7:~$ rm test rm: не может удалить `test': это каталог paul@debian7:~$ rm -rf тест paul@debian7:~$ лс тест ls: невозможно получить доступ к тесту: нет такого файла или каталога paul@debian7:~$скопировать один файл
Чтобы скопировать файл, используйте cp с исходным и целевым аргументами.
paul@debian7:~$ лс file42 СинкоДеМайо paul@debian7:~$ cp file42 file42.copy paul@debian7:~$ лс file42 file42.copy SinkoDeMayoкопировать в другой каталог
Если целью является каталог, исходные файлы копируются в этот целевой каталог.
paul@debian7:~$ mkdir dir42 paul@debian7:~$ cp SinkoDeMayo dir42 paul@debian7:~$ ls dir42/ SinkoDeMayoЧтобы скопировать полные каталоги, используйте cp -r (параметр -r заставляет рекурсивно копирование всех файлов во все подкаталоги).
paul@debian7:~$ лс dir42 file42 file42.copy paul@debian7:~$ cp -r dir42/ dir33 paul@debian7:~$ лс dir33 dir42 file42 file42.copy paul@debian7:~$ ls dir33/ SinkoDeMayoкопирование нескольких файлов в каталог
Вы также можете использовать cp для копирования нескольких файлов в каталог. В этом случае последний аргумент (также известный как цель) должен быть каталогом.
paul@debian7:~$ cp file42 file42.copy SinkoDeMayo dir42/ paul@debian7:~$ ls dir42/ file42 file42.copy SinkoDeMayoЧтобы cp не перезаписывал существующие файлы, используйте параметр -i (для интерактивного режима).
paul@debian7:~$ cp SinkoDeMayo file42 paul@debian7:~$ cp SinkoDeMayo file42 paul@debian7:~$ cp -i SinkoDeMayo file42 cp: перезаписать `file42'? п paul@debian7:~$переименовать файлы с помощью mv
Используйте mv , чтобы переименовать файл или переместить файл в другой каталог.
paul@debian7:~$ лс dir33 dir42 file42 file42.copy paul@debian7:~$ mv файл42 файл33 paul@debian7:~$ лс dir33 dir42 file33 file42.copy paul@debian7:~$Если вам нужно переименовать только один файл, предпочтительнее использовать команду mv .
переименовать каталоги с помощью mv
Та же команда mv может использоваться для переименования каталогов.
paul@debian7:~$ ls -l всего 8 drwxr-xr-x 2 пол пол 4096 15 окт 09:36 dir33 drwxr-xr-x 2 пол пол 4096 15 окт 09:36 dir42 -rw-r--r-- 1 paul paul 0 15 окт 09:38 file33 -rw-r--r-- 1 paul paul 0 15 окт 09:16 file42.copy -rw-r--r-- 1 paul paul 0 5 мая 2005 SinkoDeMayo paul@debian7:~$ mv dir33 резервная копия paul@debian7:~$ ls -l всего 8 drwxr-xr-x 2 пол пол 4096 окт 15 09:36 резервная копия drwxr-xr-x 2 пол пол 4096 15 окт 09:36 dir42 -rw-r--r-- 1 paul paul 0 15 окт 09:38 file33 -rw-r--r-- 1 paul paul 0 15 окт 09:16 file42. copy -rw-r--r-- 1 paul paul 0 5 мая 2005 SinkoDeMayo paul@debian7:~$mv также имеет переключатель -i , аналогичный cp и rm .
этот снимок экрана показывает, что mv -i запросит разрешение на перезапись существующего файла.
paul@debian7:~$ mv -i file33 SinkoDeMayo mv: перезаписать `SinkoDeMayo'? нет paul@debian7:~$rename
about rename
Команда rename — один из тех редких случаев, когда в книге «Основы Linux» приходится проводить различие между дистрибутивами Linux. Почти каждая команда в части Fundamentals этой книги работает почти на каждом компьютере с Linux. Но переименовать это другое.
Попробуйте использовать mv всякий раз, когда вам нужно переименовать только пару файлов.
rename в Debian/Ubuntu
Команда rename в Debian использует регулярные выражения (регулярное выражение или краткое регулярное выражение объяснены в следующей главе) для одновременного переименования множества файлов.
Ниже пример rename , который переключает все вхождения txt на png для всех имен файлов, оканчивающихся на .txt.
paul@debian7:~/test42$ лс abc.txt файл33.txt файл42.txt paul@debian7:~/test42$ переименовать 's/\.txt/\.png/' *.txt paul@debian7:~/test42$ лс abc.png file33.png file42.pngЭтот второй пример переключает все (первые) вхождения файла в документ для всех имен файлов, оканчивающихся на .png.
paul@debian7:~/test42$ лс abc.png файл33.png файл42.png paul@debian7:~/test42$ переименовать 's/file/document/' *.png paul@debian7:~/test42$ лс abc.png документ33.png документ42.png paul@debian7:~/test42$rename в CentOS/RHEL/Fedora
В Red Hat Enterprise Linux синтаксис rename немного отличается. Первый приведенный ниже пример переименовывает все файлы *. conf, заменяя все вхождения .conf на .backup.
[paul@centos7 ~]$ touch one.conf two.conf three.conf [paul@centos7 ~]$ переименовать .conf .backup *.conf [paul@centos7 ~]$ лс одна.резервная копия три.резервная копия две.резервная копия [paul@centos7 ~]$Во втором примере все файлы (*) переименовываются, заменяя один на ОДИН.
[paul@centos7 ~]$ ls одна.резервная копия три.резервная копия две.резервная копия [paul@centos7 ~]$ переименовать один ONE * [paul@centos7 ~]$ лс ONE.backup три.backup два.backup [paul@centos7 ~]$практика: работа с файлами
1. Список файлов в каталоге /bin
2. Отображение типа файла /bin/cat, /etc/passwd и /usr /bin/пароль.
3а. Загрузите wolf.jpg и LinuxFun.pdf с http://linux-training.be (wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files). /books/LinuxFun.pdf)
wget http://linux-training.be/files/studentfiles/wolf.jpg wget http://linux-training.be/files/studentfiles/wolf.png wget http://linux-training.be/files/books/LinuxFun.pdf3b. Отображение типа файла wolf.jpg и LinuxFun.pdf
3c. Переименуйте wolf.jpg в wolf.pdf (используйте mv).
3д. Отображение типа файла wolf.pdf и LinuxFun.pdf.
4. Создайте каталог ~/touched и войдите в него.
5. Создайте файлы Today.txt и Вчера.txt в touched.
6. Измените дату в файле daily.txt, чтобы она соответствовала вчерашней дате.
7. Скопируйте last.txt в copy.yesterday.txt
8. Переименуйте copy.yesterday.txt в kim
9. Создайте каталог с именем ~/testbackup и скопируйте в него все файлы из ~/touched.
10. Используйте одну команду, чтобы удалить каталог ~/testbackup и все файлы в нем.
11. Создайте каталог ~/etcbackup и скопируйте в него все файлы *.conf из /etc. Вы включили все подкаталоги /etc?
12. Используйте rename, чтобы переименовать все файлы *.conf в *.backup. (если у вас есть более одного дистрибутива, попробуйте на всех!)
решение: работа с файлами
1. Список файлов в каталоге /bin
ls /bin2. Показать тип файл /bin/cat, /etc/passwd и /usr/bin/passwd.
файл /bin/cat /etc/passwd /usr/bin/passwd3a. Загрузите wolf.jpg и LinuxFun.pdf с http://linux-training.be (wget http://linux-training.be/files/studentfiles/wolf.jpg и wget http://linux-training.be/files). /books/LinuxFun.pdf)
wget http://linux-training.be/files/studentfiles/wolf.jpg wget http://linux-training.be/files/studentfiles/wolf.png wget http://linux-training.be/files/books/LinuxFun.pdf3b. Показать тип файла wolf.jpg и LinuxFun.pdf
файл wolf.jpg LinuxFun.pdf3c. Переименуйте wolf.jpg в wolf.pdf (используйте mv).
mv wolf.jpg wolf.pdf3d. Отображение типа файла wolf.pdf и LinuxFun.pdf.
файл wolf.pdf LinuxFun.pdf4. Создайте каталог ~/touched и войдите в него.
mkdir ~/тронул ; cd ~/touched5. Создайте файлы Today.txt и Вчера.txt в touched.
touch Today.txt Вчера.txt6. Измените дату в файле Вчера.txt, чтобы она соответствовала вчерашней дате.
touch -t 200810251405 вчера.txt (замените 20081025 на вчера)7. Скопируйте вчера.txt в copy.yesterday.txt Ким
mv copy.yesterday.txt ким9. Создайте каталог с именем ~/testbackup и скопируйте в него все файлы из ~/touched.
mkdir ~/testbackup ; cp -r ~/touched ~/testbackup/10. Используйте одну команду, чтобы удалить каталог ~/testbackup и все файлы в нем.
rm -rf ~/testbackup11. Создайте каталог ~/etcbackup и скопируйте в него все файлы *.conf из /etc. Вы включили все подкаталоги /etc?
cp -r /etc/*.conf ~/etcbackupКопируются только файлы *.conf, находящиеся непосредственно в /etc/.12. Используйте rename, чтобы переименовать все файлы *.conf в *.backup. (если у вас есть более одного дистрибутива, попробуйте на всех!)
На RHEL: коснитесь 1.conf 2.conf ; переименовать резервную копию conf *.confВ Debian: touch 1.conf 2.conf ; rename 's/conf/backup/' *.conf8 основных команд Linux для управления файлами для новых пользователей
Опубликовано: 20 января 2022 г. | | на Дэймон Гарн (Красная шляпа)
Изображение
Pixabay через Pexels, CC-0
Я верю в основы и, как бывший технический инструктор, питаю слабость к новичкам в Linux (и других платформах). Я написал статьи по основам и подумал, что пришло время рассказать о некоторых основных командах для работы с файлами.
В этой статье рассматриваются повседневные задачи, такие как копирование, перемещение, переименование, создание и удаление файлов и каталогов. Вот восемь команд, облегчающих управление файлами.
Что там?
Прежде чем вы сможете управлять файлами, вы должны знать, какие файлы существуют. Команда
(Damon Garn, CC BY-SA 4.0)ls
отображает содержимое текущей или указанной директории.Конечно,
ls
имеет много полезных опций. Вот три моих любимых:
-l
Длинный формат (для отображения разрешений)-a
Все файлы, включая скрытые файлы-З
Контекст SELinuxПросмотр содержимого каталогов, безусловно, полезен, но как насчет содержимого файлов? Есть много способов сделать это, но я укажу здесь команду
cat
. Это быстрый способ увидеть, что находится в файле.Символ вертикальной черты (это символ
|
над обратной косой чертой на клавиатуре США) — это сигнал терминалу о том, что вы хотите объединить команды. Это позволяет вам «направлять» вывод одной команды на ввод другой.Например, объедините команду
cat
с командой| grep {string}
для поиска в содержимом файла определенной строки символов.Такие команды, как
less
,more
,most
,head
иtail
полезны для отображения содержимого файла. Для большинства этих команд синтаксис представляет собой просто имя команды, за которым следует имя файла.См. Начало работы с ls , чтобы узнать о многих других хитростях с использованием
лс
команда.Управление каталогами
Отображение файлов и каталогов — это одно, а управление ими — другое. Чтобы лучше упорядочить файлы, вы можете создать один или несколько новых каталогов. Вы также можете найти каталоги, которые вам больше не нужны.
Для создания нового каталога достаточно ввести команду
(Дэймон Гарн, CC BY-SA 4.0)mkdir
и указать имя каталога (и, если необходимо, путь к нему).rmdir
удалит для вас все пустые каталоги.К сожалению, каталоги, которые вы хотите удалить в большинстве сценариев очистки, не пусты. В этом случае помогут две хитрости. Первый — удалить каталог и его содержимое одной командой, а второй — временно отключить интерактивный запрос подтверждения.
Во-первых, чтобы удалить непустой каталог, используйте команду удаления файла
rm
и добавьте параметр-R
(рекурсивный). Чтобы удалить непустой каталогпр.
, тип
РМ-Р пр.
.[Для получения дополнительных советов загрузите памятку по командам Linux. ]
Многие дистрибутивы, в том числе RHEL и Fedora, предлагают пользователям подтвердить любые удаления. Обычно это хорошо, но если вы удаляете каталог со 100 файлами, вам определенно не нужно вводить и для каждого файла. В этом случае используйте параметр
-f
(принудительно). Этот параметр переопределяет приглашение и удаляет указанные файлы. Это может быть невероятно опасно , поэтому будьте очень осторожны и внимательны, прежде чем использовать эту опцию. Убедитесь, что вы понимаете, что находится в каталоге, который вы удаляете.На самом деле, рассмотрите возможность использования команды
(Дэймон Гарн, CC BY-SA 4.0)Trash
, чтобы уберечь себя от ошибок, потому что, хотя есть командаrm
, нет un-rm
, по крайней мере, без тщательной экспертизы файловой системы с помощью такого инструмента, как Scalpel. или ТестДиск.Управление файлами
Текстовые редакторы, такие как Vim и Nano, могут создавать новые файлы, но иногда удобно быстро создать пустой файл. Раньше я использовал команду
touch
на демонстрациях в классе, чтобы заставить файлы работать с такими инструментами, какtar
,cp
,mv
и другими.Официально
touch
обновляет временную метку существующих файлов, но побочным эффектом команды является то, что если файл не существует,touch
создает его.Чтобы удалить файл, используйте команду
rm
. Это та же самая команда, которая использовалась выше для удаления непустого каталога. Опять же, вы можете использовать опцию-f
для удаления файлов без запроса подтверждения, но это опасно.Организация файлов
Команда
cp
копирует файлы. Это полезно для резервного копирования файлов конфигурации перед внесением в них изменений. Синтаксисcp
прост: скопировать отсюда туда . Чтобы скопировать/etc/ssh/sshd_config
в свой домашний каталог, введитеcp /etc/sshd_config ~
. Путь к файлу конфигурации является источником, а ваш домашний каталог — местом назначения.В зависимости от того, является ли команда
cp
псевдонимомcp -i
в вашей системе, она может перезаписывать существующие файлы без предупреждения или может запрашивать подтверждение каждого действия копирования, которое может перезаписать файл. Как и в случае с командойrm
, вы должны соблюдать осторожность в отношении перезаписи файлов.Для перемещения файлов из одного места в другое используется тот же синтаксис, но с помощью команды
mv
. Поэтому перемещать файлы несложно.Что более интересно в команде
(Damon Garn, CC BY-SA 4.0)mv
, так это то, что это также команда переименования. Логика заключается в том, что вы перемещаете файл в то же место, только с другим именем. Итак, чтобы переименоватьfile1.txt
вfileA.txt
, введитеmv file1.txt fileA.txt
. Имейте в виду, чтоmv
может перезаписать существующие файлы, поэтому перед запуском 9 обязательно проверьте имена файлов.0041 мв .Тщательно управляйте файлами
Большинство пользователей, которые работали с Linux, уже знают эти команды, но с учетом того, что так много новых пользователей входит в мир с открытым исходным кодом и Linux, это надежный и практический обзор некоторых основных команд управления файлами никогда не бывает плохо. Будьте осторожны, чтобы случайно не удалить или не перезаписать файлы с помощью этих команд. Взгляните также на статью Сета Кенлона об управлении файлами. Он включает информацию о работе в графическом пользовательском интерфейсе (GUI).
Ознакомьтесь со статьями по теме Enable Sysadmin
Image
10 лучших руководств для администраторов Linux
Независимо от того, являетесь ли вы новым администратором Linux или опытным практиком, всегда есть что-то новое, чему можно научиться, чтобы лучше выполнять свою работу.
Image
Vim против Nano против Emacs: взвешивание трех системных администраторов
Три редактора. Три эксперта. Какой текстовый редактор Linux подходит именно вам?
Image
10 руководств по оттачиванию навыков работы с командной строкой
Командная строка предоставляет непревзойденную мощь и доступ к тому, что операционная система может сделать для вас.
Темы: линукс Утилиты командной строки
Команды каталогов Linux: полное руководство
Навыки работы с Linux всегда востребованы. Создайте свой набор навыков, изучив, как использовать команды каталогов Linux и команды файлов Linux. Это руководство написано как путешествие. Набор пошаговых инструкций по навигации, созданию, удалению, перемещению и переименованию каталогов и файлов. Все из командной строки Linux.
Если вы готовы приобрести практические навыки работы с Linux, вы попали по адресу!
Содержание
Предварительные условия
Чтобы попрактиковаться в примерах Linux, приведенных в этом руководстве, у вас должен быть компьютер под управлением Linux. Дистрибутив линукса значения не имеет. Все демонстрации в этом руководстве будут использовать RedHat Enterprise Linux 8 (RHEL).
Ubuntu 20.04 LTS — отличная альтернатива, если вы не хотите использовать RedHat.
Список и поиск каталогов
Если вы следуете инструкциям, откройте сеанс терминала на своем компьютере с Linux.
Поиск текущего каталога с помощью
pwd
Когда вы перемещаетесь по файловой системе в терминале, ваше приглашение всегда находится в определенном каталоге, называемом текущим каталогом или рабочим каталогом. В зависимости от конфигурации терминала вы можете видеть или не видеть рабочий каталог в приглашении.
Команда
pwd
или команда печати рабочего каталога отображает текущий каталог, в котором вы находитесь. Введите команду, как показано ниже:По умолчанию каталог /home/
является вашей отправной точкой в сеансе терминала, если вы не вошли в систему с учетной записью root. При выполнении команды рабочий каталог возвращается, как показано ниже:
Показать текущий путь к рабочему каталогу.В отличие от Windows, Linux не использует буквы дисков ( C:\, D:\ и т. д.) для дисков или разделов (логическая область на диске). В Linux каталогам предшествует цифра 9.0005/
Список файлов и папок с помощью команды
ls
Внутри каталогов вы найдете файлы и подпапки. Команда pwd
просто отображает рабочий каталог, так как же вы видите подкаталоги и файлы? Команда ls
.
Команда ls
или list directory эквивалентна команде dir
в Windows. Эта команда выводит список файлов и каталогов в текущем каталоге или любом указанном альтернативном пути.
Команда
dir
существует и в Linux. Эквивалент запускаls -C -b
. Как правило,ls
используется вместоdir
, поскольку существует большая гибкость отображения.
Чтобы найти файлы и каталоги в каталоге /home/user , выполните команду ls
. Результатом являются различные файлы и каталоги (папки), содержащиеся внутри.
лс 9Команда 0042 также отображает дополнительную информацию о файлах и папках, такую как разрешения, размер файла (в байтах) и дату файла с параметром
l
. Как и в Windows, некоторые файлы и папки могут быть скрыты ОС от обычного просмотра. Просмотр файлов, которые не отображаются по умолчанию, с параметром a
.
Dotfiles — это текстовые файлы конфигурации в системах Unix. Любой файл можно скрыть, если перед его именем стоит точка
.
.
ls -la
Вы можете видеть на снимке экрана ниже, используя параметры la
, вы получаете гораздо больше информации, отображаемой в шести разных столбцах слева направо:
- Разрешения в формате POSIX ACL, с предыдущий
d
обозначает каталог - Количество подкаталогов с каталогами, содержащими только файлы, как
1
- Пользователь и группа, которым принадлежит файл или папка
- Размер каталога или файла в байтах
- Время последнего изменения
- Имя файла или папки
Вы можете найти все файлы и папки в подкаталогах с помощью параметра -R
для рекурсивного отображения содержимого каталога.
Если вы хотите отобразить содержимое другого каталога, передайте целевой каталог ls
. Ниже показано содержимое каталога /var/log без выхода из /home/user каталог.
ls /var/log
Список содержимого определенного каталога.Поиск файлов и папок с помощью
find
Поиск файлов в большой файловой системе затруднен. К счастью, команда find
предлагает несколько способов поиска файлов и папок, которые могут вам понадобиться.
Например, вы хотите найти каталог /var . Имея начальную точку /
и задав тип d
для каталога, найдите в файловой системе var
имя.
sudo find / -type d -name "var"
Использование команды find для поиска всех каталогов, содержащих слово "var".Y Вы можете увидеть ошибку «Отказано в доступе» даже при выполнении команды с использованием
sudo
. Командаfind
пытается найти виртуальную файловую систему, связанную с Gnome (если вы используете KDE, эта ошибка не будет применяться), к которой у вашего пользователя нет доступа. Вместо этого не спускайте каталоги в другие файловые системы, используя ключ 9.Вместо этого переключите 0041 -xdev .
Как насчет поиска всех файлов с расширением журнала? Как и раньше, выполните поиск в корневой файловой системе, но на этот раз укажите f
для файлов и выполните поиск шаблона подстановки *.log
.
sudo find / -type f -name "*.log"
Поиск всех файлов, оканчивающихся на расширение .log
.Команда
find
имеет другие параметры, такие какH
,L
иP
, которые определяют, как обрабатываются символические ссылки.
Быстрый поиск файлов с помощью
locate
Как и find
, команда locate
выполняет поиск файлов и папок, но делает это быстрее за счет поиска в базе данных, а не во всей файловой системе.
Возможно, у вас есть файл с именем MyTextFile. txt где-то на вашем компьютере. Вы забыли, где он находится, и вам нужна помощь в поиске пути. Используйте локацию
, чтобы найти файл, указав имя файла, как показано ниже.
Найдите MyTextFile.txt
Найдите MyTextFile.txt в файловой системе.Команда
locate
находит файлы, но не находит новые файлы, пока не запуститсяsudo updatedb
. Задание cron запускаетсяupdatedb
один раз в день, но вы можете запустить эту команду вручную в любое время.
Как найти все каталоги с именем tmp
? Вы можете пройти */tmp
, который сообщает найти
для поиска в базе данных записей, заканчивающихся на tmp
.
locate */tmp
Поиск всех папок, заканчивающихся на tmp .Смена каталогов с помощью команды
cd
До сих пор вы по большей части работали в одном каталоге. Работа в Linux часто означает смену каталогов с помощью команды cd
или смены каталога. Используя приведенный ниже пример, перемещаемся из текущего домашнего каталога, /home/user, от до /var/log при проверке текущего каталога.
# Показать, что вы находитесь в текущем домашнем каталоге
pwd
# Перейдите в каталог /var/log
компакт-диск /var/журнал
# Убедитесь, что вы находитесь в каталоге /var/log
pwd
Изменение каталогов в Linux. Теперь, когда вы научились переходить в конкретный каталог, как вы можете перемещаться вверх по каталогу? Чтобы переместиться вверх по каталогу, вы будете использовать две точки ( ..
), переданные команде cd
. После запуска, как показано ниже, вы перемещаетесь вверх на один каталог, возвращаясь в /var/
каталог.
# Показать, что вы находитесь в каталоге /var/log
pwd
# Переместиться на один каталог вверх
CD ..
# Убедитесь, что вы переместились в каталог /var
pwd
Перемещение вверх по одному каталогу. Если вы хотите снова перейти в каталог /var/log , передайте имя каталога, на которое нужно перейти, с завершающим /
.
# Показать, что вы находитесь в каталоге /var
pwd
# Перейдите в каталог /var/log
компакт-диск журнал/
# Убедитесь, что вы вернулись в каталог /var/log
pwd
Как показано ниже, только ввод подкаталога назначения с конечным номером /
устраняет необходимость каждый раз вводить абсолютный путь.
Если вы не уверены в имени файла или каталога при использовании
cd
, дважды нажмите клавишуTAB
, чтобы открыть список возможных вариантов. Пример:cd
Создание нового каталога с помощью
mkdir
Создание каталога в Linux осуществляется через mkdir
или команда создания каталога. Чтобы создать новый каталог с именем MyAwesomeLinuxDir в вашем домашнем каталоге (отмеченном специальным путем ~
), используйте приведенную ниже команду.
mkdir ~/MyAwesomeLinuxDir
Если Linux успешно создаст каталог, Linux не вернет сообщение в консоль. Вы можете перечислить каталоги в своем домашнем каталоге с помощью команды ls
, чтобы убедиться, что каталог MyAwesomeLinuxDir существует.
Теперь добавьте немного сложности и создайте несколько новых каталогов с помощью одной команды. Чтобы создать несколько каталогов, вы используете команду mkdir
и передаете несколько имен каталогов, разделенных пробелом.
mkdir ~/Directory01 ~/Directory02 ~/Directory03
Еще раз выведите список каталогов с помощью команды ls
. Как вы можете видеть ниже, теперь существуют еще три каталога.
mkdir
. Так же полезно, как использовать mkdir
для создания одной папки, что, если вам нужно создать сразу несколько папок? Вместо того, чтобы вводить каждый каталог, используйте расширение фигурных скобок! Этот метод эффективен при создании нескольких каталогов с одинаковым шаблоном.
Расширение фигурной скобки делает создание нескольких каталогов на основе шаблона быстрее, чем при вводе каждого вручную. Чтобы продемонстрировать расширение скобок, добавьте {03..07}
после имени Каталог
, чтобы создать пять каталогов. Вы можете заметить, что Directory03 уже существует, поскольку вы создали его в предыдущем примере. Избегайте ошибки о существующих каталогах с помощью опции p
.
mkdir -p ~/Directory{03..07}
Как показано ниже, Directory03 не создан, но теперь существуют четыре новых каталога, оканчивающихся на 04
по 07
.
Создание нового файла с помощью
touch
Теперь, когда вы научились создавать папки, как создать файл? Использование Линукс 9Команда 0041 touch создает пустой файл, как показано в следующем примере.
коснитесь ATABlog
Еще раз просмотрите список файлов и папок в вашем домашнем каталоге, чтобы убедиться, что новый файл ATABlog существует.
Создание файла с помощью команды touch
. Помните, как вы узнали, что команда mkdir
может использовать раскрытие скобок для создания нескольких каталогов? Тот же метод полезен и с командой touch
! Создайте еще пять ATABlog файлов, заканчивающихся от 01 до 05.
touch ATABlog{01..05}
После перечисления файлов и папок с ls
в вашем домашнем каталоге появилось пять новых файлов.
touch
.Удаление каталогов и файлов в Linux
В последнем разделе вы узнали, как создавать каталоги и файлы в Linux. Чтобы удалить каталоги и файлы, используйте команду rm
для удаления каталогов и их содержимого.
Например, вы хотите удалить файл с именем ATABlog01. Удалите файл, передав имя файла команде rm
. Как показано ниже, вы удаляете файл ATABlog01 из текущего каталога.
rm ATABlog01
Удаление файла в Linux. Вы можете удалить сразу несколько файлов, добавив пробел между именами файлов в текущем каталоге. Удалите оставшиеся файлов ATABlog## одной командой rm
, как показано ниже.
rm ATABlog02 ATABlog03 ATABlog04 ATABlog05
Теперь, когда вы научились удалять файлы, пришло время удалить каталог. По умолчанию команда rm
не удаляет каталоги. Удалите каталог, указав параметр r
или recursive , как показано в приведенном ниже примере.
rm -r Directory01
На снимке экрана ниже видно, что Directory01 был удален.
Удаление каталога с помощью рекурсивной команды РМ
. Вы также можете использовать расширение скобок с командой rm
. Указание диапазона от 2 до 7 в команде rm
информирует команду удаления об удалении всех каталогов с именами от Directory02 до Directory07 . Как показано после подтверждения командой ls
.
rm -r Каталог{02..07}
Удаление нескольких каталогов с помощью rm
и последовательного выполненияЧтобы предотвратить случайное удаление неправильных файлов или папок, используйте
i
для запроса каждого файла. Сделайте этот параметр менее обременительным с помощью параметраI
, который запрашивает только три или более файлов.
Копирование каталогов и файлов в Linux
Копирование файлов в Linux с помощью команды cp
. Команда cp
может не только копировать каталоги и файлы в Linux, но также атрибуты файлов и создавать символические ссылки.
Чтобы продемонстрировать копирование файла из предыдущих примеров, скопируйте ATABlog
в каталог Documents/ с помощью команды cp
. Добавьте параметр v
, чтобы отобразить дополнительную информацию об операции точного копирования.
cp -v ATABlog Documents/
Скопируйте файл в Linux с помощью команды cp
. Теперь скопируйте папку MyAwesomeLinuxDir в каталог Documents . Здесь, как и в случае с командой rm
, обязательно добавьте r
или рекурсивный параметр для копирования каталога, как показано в приведенном ниже примере.
cp -r MyAwesomeLinuxDir/ Documents/
Скопируйте папку, используя рекурсивную опцию.Переместить каталоги и файлы
В предыдущем разделе вы скопировали файлы и папки с помощью команды cp
. Чтобы переместить каталогов и файлов в Linux, используйте команду mv
. Для перемещения каталогов в Linux используйте команду mv
. Команда mv
аналогична команде cp
, о которой вы узнали из предыдущих примеров.
mv [опции] [источник] [назначение]
Команда mv
похожа на вырезание и вставку в Windows, но с возможностью одновременного переименования файлов. В следующих разделах показано, как использовать mv
для обоих сценариев.
U Используйте параметр
-i
для запроса перед каждым перемещением или параметр-f
для принудительного перемещения элементов без запроса.
Для демонстрации переместите файл Documents/ATABlog в каталог Desktop с помощью команды mv
. Переместите папку Documents/MyAwesomeLinuxDir на рабочий стол , как показано ниже.
mv Documents/ATABlog Desktop/
mv Documents/MyAwesomeLinuxDir Desktop/
Ваши команды должны выглядеть так, как показано в примере ниже. Помните, что вы перемещаете файл и каталог (источник) в другой каталог (целевой).
Использование команды mv для перемещения файлов и папок Используйте команду ls
, чтобы увидеть, что оба теперь находятся в каталоге Desktop .