Работа с файлами и каталогами в Linux
Last updated
Last updated
Дерево каталогов. Дерево каталогов в Linux начинается с корневого каталога /. Указывать диск таким образом, как это делается в Windows, например, C: в Linux невозможно. Все остальные каталоги считаются подчиненными. Таким образом, если представить дерево каталогов наглядно, то корневой каталог расположен на самой его верхушке. В некоторых книгах используется прямо противоположная номенклатура, больше напоминающая дерево (корни внизу, ветви вверху), но это не соответствует обычному значению терминов.
Одна из наиболее серьезных проблем в начале работы с Linux/UNIX заключается в том, чтобы найти определенный файл в широко разветвленной системе каталогов.
Личный каталог. При работе с текстовыми консолями (терминалами) после входа в систему вы сразу же автоматически оказываетесь в так называемом личном, или домашнем, каталоге. В вашем распоряжении все находящиеся в нем файлы и подкаталоги. Другие пользователи (кроме того, который обладает привилегиями администратора) не могут ни изменять, ни удалять файлы вашего личного каталога (а при определенных настройках даже не могут их читать).
Личный каталог обычно находится в дереве каталогов Linux по адресу /home/loginname/ (только личный каталог администратора называется /root/). Поскольку было бы неудобно каждый раз писать /home/loginname/, название собственного домашнего каталога сокращается до символа тильды (~). Кроме того, доступ к личным каталогам других пользователей возможен через запись ~loginname.
Каталоги . и .. . В каждом каталоге имеется два особых подкаталога, необходимых для формального управления иерархией каталогов. Каталог с именем, начинающимся с ., представляет собой ссылку на актуальный каталог, а каталог с именем, которое начинается с .., — на каталог, расположенный уровнем выше.
Обе следующие команды копирования показывают, как можно использовать эти каталоги (другие cp-примеры приводятся далее). Первая команда копирует файл /etc/fstab в актуальный каталог. Если каталог называется /home/loginname, то новый файл будет иметь имя /home/loginname/fstab.
user$ cp /etc/fstab
Во втором примере мы сначала активизируем с помощью команды cd каталог ~/linux8. Затем команда копирования cp создает резервную копию файла fileuse.tex. Резервная копия имеет имя ~/fileuse.tex.bak.
user$ cd ~/linuxbuch
user$ cp fileuse.tex ../fileuse.tex.bak
Если домашний каталог называется /home/loginname, то вы сейчас создали резервную копию /home/name/linuxbuch/fileuse.tex. Следовательно, полное название резервной копии: /home/loginname/fileuse.tex.bak.
При входе на сервер, вы, как правило, попадаете в домашний каталог вашей учетной записи, отведенный для хранения файлов и создания каталогов.
Для того чтобы узнать, где располагается каталог, в котором мы сейчас находимся, используется команда:
Результат выполнения команды выглядит следующим образом:
Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /user. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.
Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.
Просмотреть содержимое любой директории можно следующими способами:
Либо введя команду:
В результате выполнения команды отображаются файлы и каталоги, находящиеся внутри данного каталога:
К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:
Результат выполнения команды:
Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:
Результат выполнения команды:
Отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип, можно с помощью команды:
Результат выполнения команды:
Флаги команды можно совмещать, например так:
Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.
Для перехода в домашний каталог пользователя user используется команда:
Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.
В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.
Абсолютный путь указывает на расположение каталога по отношению к этой директории верхнего уровня. Это позволяет обращаться к справочникам однозначным образом из любого места в файловой системе.
Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.
Для перехода в директорию уровнем выше используется команда:
Для перехода в директорию двумя уровнями выше:
У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр --help, например:
Далее приведен список основных команд навигации в консоли Linux.
Создание файлов производится с помощью команды:
Также создать файл можно с использованием текстового редактора:
после чего нужно сохранить файл.
Создание каталогов выполняется с помощью команды вида:
Название этой команды является сокращением слов make directory.
Создание двух каталогов одновременно выполняется с помощью команды:
Для создания дерева каталогов используется команда следующего вида:
Для удаления директорий используется команда
Название этой команды является сокращением слов remove directory.
Для удаления файлов используется команда rm. Например, для удаления файла с именем file1 используется команда:
Команда rm также позволяет удалять не только файлы, но и каталоги.
Для удаления директории с именем dir1 со всеми подкаталогами и файлами используется опция -r (от слова recursive):
Можно удалить одновременно две директории со всем их содержимым:
Также можно использовать параметр -f, который означает, что при удалении не будет запрашиваться подтверждение.
Команда для удаления файла будет выглядеть так:
Команда для удаления каталога:
Для перемещения и переименования файлов и каталогов используется команда mv. Название этой команды является сокращением слова move.
Переименовать файл можно с помощью команды:
Для того чтобы переместить файл, используется команда:
Для копирования используется команда cp. Название этой команды является сокращением слова copy.
Чтобы скопировать файл file1 и назвать его file2, используется команда:
Для того чтобы копировать директорию dir1 в директорию dir2, используется команда:
Скопировать файл с именем file1 в директорию с именем dir1, можно с помощью команды:
Мы ознакомились с основными командами для работы с каталогами и файлами.
Далее мы изучим, как редактировать файлы и добавлять в них содержание.
Команда nano позволяет работать в одном из самых простых текстовых редакторов командной строки Linux, который занимает весь терминал в течение всего срока его использования.
В результате ввода в терминал команды nano будет открыт чистый файл.
Интерфейс выглядит следующим образом:
В верхней части открывшегося редактора отображается имя приложения и имя файла, который мы редактируем.
В середине должно располагаться содержимое файла, в настоящее время оно пустое.
В нижней части интерфейса расположен ряд комбинаций клавиш, которые указывают с основными элементами управления текстового редактора. Для каждого из них символ ^ означает клавишу CTRL.
Для того чтобы открыть справку используйте сочетание клавиш CTRL-G.
Закрывается справка с помощью сочетания клавиш CTRL-X. После закрытия справки мы возвращаемся к редактированию.
Вводить и редактировать можно любой текст, например, можно ввести: “Hello World!”
Для сохранения внесенных изменений следует нажать сочетание клавиш CTRL-O. Внимание! Это буква О, а не ноль.
Далее система попросит вас ввести либо подтвердить имя файла, который вы хотите сохранить:
Как вы можете видеть, параметры в нижней части окна редактирования также изменились. Они являются контекстными, то есть будут меняться в зависимости от того, что вы пытаетесь сделать.
После ввода имени файла нажмите клавишу ENTER.
Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.
Если вы внесли изменения и не сохранили файл, вам будет предложено сохранить сделанные вами изменения:
Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.
Если вы решили сохранить изменения, вам будет предложено сохранить их в том же файле, который был отредактирован.
Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.
VIM (сокр. от Vi Improved, произносится «Вим») — текстовый редактор, созданный на основе более старого Vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации.
Если в системе нет текстового редактора vim - его можно установить.
Debian/Ubuntu:
CentOS/AlmaLinux:
В случае, если материал касательно редактора VIM вам непонятен рекомендую пройти встроенные обучающие уроки по работе с редактора. Сделать это можно, набрав след. команду:
VIM имеет три режима работы:
командный
режим редактирования
визуальный режим
Для перехода в командный режим требуется нажатие Esc. Все команды в VIM вводятся с символа двоеточия - ":" (без кавычек). Для перехода в визуальный режим требуется нажатие Ctrl+V.
Для того, чтобы отредактировать или просмотреть файл, вводим в командной строке:
Например:
Перед нами откроется редактор VIM, как показано на рисунке:
Меняем содержимое файла на произвольное. После внесения изменений нажимаем "ESC" для выхода в "командный режим", вводим ":" (двоеточие), вводим "wq" (write-quit) - для сохранения изменений и выхода; "q!" - для выхода без сохранения, и нажимаем "Enter".
Теперь Вы можете работать с файлом, изменять и сохранять изменения. Дальше перечислим другие команды для работы с файлами и текстом.
:q - закрыть файл, если не требует сохранения, т.е. в файле не было изменений. В противном случае VIM выдаст сообщение об ошибке, как показано на рисунке:
:q! - закрыть файл без сохранения; :qa! - закрыть все файлы без сохранения; :wq - закрыть и сохранить файл; :wqa - закрыть все файлы с сохранением.
Перемещение по тексту
VIM обладает большими возможностями для ускорения работы с текстом и имеет большое количество команд для перемещения по тексту.
Для перемещения можно использовать стрелочки, а также h (Влево), l (Вправо), j (Вниз), k (Вверх). Другие команды для перемещения по тексту:
|, 0, home — в начало строки; ^ — на первый непустой символ в строке; $, end — в конец строки; m — на половину ширины экрана; g — на нижнюю строку; e — до конца слова; - — на строку вверх и на первый непустой символ; +, Enter — на строку вниз и на первый непустой символ; G — на последнюю строку; H — на первую строку экрана; M — на среднюю строку экрана; L — на последнюю строку экрана; w — на слово вперед; b — на слово назад; ( — на предложение назад (до точки); ) — на предложение вперед (до точки); { — на абзац назад (до пустой строки); } — на абзац вперед (до пустой строки); :ju — список переходов.
Редактирование текста
VIM также имеет большое количество возможностей для быстрого редактирования.
Del, x - удаление символа под курсором; X - удаление символа перед курсором; u, :u — отмена последнего действия; U — отменить все изменения, повлиявшие на текущую строку; ~ — перевести в верхний или нижний регистр в зависимости от текущего символа под курсором; C — удалить от курсора и до конца строки с переходом в режим ввода; D — удалить от текущего символа до конца строки; dd — вырезать строку, на которой стоит курсор. Перед любой командой можно ввести числовой модификатор, который укажет сколько раз выполнить команду. Например: 3dd - удалит три строки начиная с текущей; yy — копирует строку. Также можно использовать числовой модификатор; p — вставить после текущей строки; P — вставить перед текущей строкой; << — сдвиг влево текущей строки; >> — сдвиг вправо текущей строки; J — объединение текущей строки с последующей.
Для программистов
:set number — включить отображение номеров строк; :set nonumber — отключить отображение номеров строк; = — расстановка отступов для языка программирования С.
Для редактирования текстовых файлов, скриптов или файлов конфигурации также можно использовать редактор mcedit, который поставляется в комплекте с файловым менеджером MC (Mightnight Commander). Для его установки следует выполнить следующую команду:
*Ключ -y применятся, чтобы заранее подтвердить установку программы.
Для запуска текстового редактора следует ввести команду mcedit
:
Основные клавиши редактирования приведены в таблице, но можно также посмотреть подсказку, нажав F1. Кроме того, F9 вызывает меню, в котором есть еще множество команд. Mcedit можно переключить в режим "эмуляции" Emacs, переключив в окне F9->Options->General пункт "Key emulation" в "Emacs".
Клавиши | Действие |
---|---|
Редактирование | |
Backspace | Удалить символ перед курсором |
Ctrl+D | Удалить символ под курсором (аналог Del) |
Ctrl+Y | Удалить строку |
Ctrl+U | Отмена последней операции редактирования |
Ins | Переключение вставка/замена (insert/overtype) |
Поиск и замена | |
F7 | Поиск (можно использовать регулярные выражения) |
Shift+F7 | Повтор последней операции поиска |
F4 | Замена |
Работа с блоком | |
F3 | Первое нажатие -- начало отметки блока, второе -- конец (в консоли для отметки можно пользоваться Shift+стрелками, как в Word и Borland) |
F5 | Копировать |
F6 | Переместить |
F8 | Удалить |
Ctrl+F | Записать в файл |
Shift+F5 | Прочитать из файла |
Работа с файлами | |
F2 | Сохранить |
F10 | Выйти (если файл изменен, то спросит, сохранять или нет) |
Ctrl+O | Открыть файл |
Emacs - это даже не столько редактор, сколько среда. Некоторые (в основном, программисты) используют его практически для всего -- включая чтение почты. Перечень всего, что умеет Emacs, мало кому известен.
Практически все функции Emacs'а написаны на интерпретируемом языке Lisp, поэтому редактор работает сравнительно медленно.
Для установки emacs следует ввести след. команду:
Для открытия текстового редактора введите emacs
.
Хотя Emacs довольно неподходящий выбор для начинающих, у него есть одно несомненное достоинство - как и vi, он есть практически в любом Unix.
По умолчанию в графической среде X-Window Emacs запускается в графическом режиме в собственном окне, при этом многие действия можно выполнять мышью. Из консоли, а также если указать ключ "-nw", он запустится в текстовом режиме.
По клавише F10 вызывается меню - но не обычное, а "клавишное" -- для выбора пункта надо нажать какую-либо клавишу (все они отображаются на экране).
У Emacs есть несколько особенностей, обычно ставящих в тупик непривычных к нему людей. Во-первых, в текстовом режиме клавиша Backspace -- это не удаление предыдущего символа, а синоним Ctrl+H - префикс "команд помощи". Во-вторых, по умолчанию русские буквы не вводятся как буквы, а вызывают некие команды Emacs'а. В-третьих, если жать стрелку вниз за концом файла, то Emacs будет сам добавлять дополнительные строки.
Многие команды состоят не из одной клавиши, а из нескольких - первой обычно является Ctrl+X, Ctrl+C или Ctrl+H.
Клавиши | Действие |
---|---|
Редактирование | |
Del | Удалить символ перед курсором |
Ctrl+D | Удалить символ под курсором (аналог Del) |
Ctrl+K | Внутри строки -- далить до конца строки, в конце строки -- удалить конец строки ("подклеить" следующую строку) |
Ctrl+_ | Отмена последней операции редактирования |
Ins | Переключение вставка/замена (insert/overtype) |
Поиск | |
F10 s s | Поиск |
Ctrl+L | Повтор последней операции поиска |
Работа с файлами | |
Ctrl+X s | Сохранить |
Ctrl+X Ctrl+C | Выйти (если файл изменен, то спросит, сохранять или нет) |
Получить список клавиш (весьма немаленький) можно, нажав "Ctrl+H b". Прервать практически любую команду можно, нажав Ctrl+G.
Joe очень похож по набору команд на редактор WordStar и среды фирмы Borland (Borland Pascal, Borland C++ и т.д.). Он активно использует комбинации клавиш Ctrl+K. Однако, в отличие от WordStar комбинации Ctrl+Q не применяются.
Для установки текстового редактора следует ввести команду:
Для запуска текстового редактора введите команду joe
.
Основные комбинации клавиш приведены в таблице, но нажав Ctrl-K H можно вызвать справку по клавишам (убирается она той же комбинацией Ctrl-K H).
Клавиши | Действие |
---|---|
Редактирование | |
Backspace | Удалить символ перед курсором |
Ctrl+D | Удалить символ под курсором (аналог Del) |
Ctrl+J | Удалить до конца строки |
Ctrl+Y | Удалить строку |
Ctrl+_ | Отмена последней операции редактирования |
Ctrl+T T | Переключение вставка/замена (insert/overtype) |
Поиск и замена | |
Ctrl+K F | Поиск/замена; для замены надо в опциях (запрашиваются после ввода образца) указать R. Поиск/замена понимает регулярные выражения (несколько специального вида), нажав Ctrl-K H можно получить подсказку. |
Ctrl+L | Повтор последней операции поиска/замены |
Работа с блоком | |
Ctrl+K B | Отметить начало |
Ctrl+K K | Отметить конец |
Ctrl+K C | Копировать |
Ctrl+K M | Переместить (не Ctrl-K V, как в WordStar/Borland!) |
Ctrl+K Y | Удалить |
Ctrl+K W | Записать в файл |
Ctrl+K R | Прочитать из файла |
Работа с файлами | |
Ctrl+K D | Сохранить |
Ctrl+K X | Сохранить и выйти |
Ctrl+C | Выйти без сохранения |
Ctrl+K E | Открыть файл (в новом окне) |
Любую операцию можно прервать, нажав Ctrl+C.
Joe поддерживает редактирование нескольких файлов одновременно - каждый в своем "окне". Подробности можно узнать в справке.
У joe есть одна "неприятная" особенность: символ "`" (обратный апостроф) используется как префикс для ввода специальных символов. Поэтому бывают проблемы при вставке текста из другого окна при помощи мыши - к примеру, строка, содержащая "`b" приведет к вставке в текст символа с ASCII-кодом 2 (Ctrl+B). Чтобы вставить в текст сам "`", надо нажать его дважды.
ed является самым старым - даже древнее vi. Это строчный, а не экранный редактор (те, кто встречался с программой edlin в Dos, поймут что это такое). Для "простого смертного" освоение ed - практически непосильная (а главное - совершенно ненужная) задача. Единственная причина, по которой он здесь упоминается - предупредить, что им пользоваться не следует.
pico обычно устанавливается вместе с почтовой программой pine. Он является практически полной копией редактора, используемого в Pine при составлении писем.
jed умеет эмулировать Emacs (по умолчанию он запускается в этом режиме) и WordStar. Это сравнительно небольшой и быстрый редактор - того же класса, что и joe.
jove является облегченной версией Emacs ("Jonathan's Own Version of Emacs").
we вариант редактора (точнее, оболочки для разработки программ) WPE, работающий в текстовом режиме.
vfte вариант редактора FTE для консоли.
Для вывода содержимого файла существует команда cat. Чтобы вывести содержимое файла в терминале, выполните:
Если файл очень большой, то можно вывести только несколько последних строк файла. Для этого используется команда tail:
либо несколько первых строк файла. Для этого используется команда head:
Можно задать количество выводимых строк, используя атрибут -n. Попробуем вывести 20 первых или 20 последних строк файла:
Также можно воспользоваться командой less:
Данная команда открывает файл в режиме просмотра — вы можете просматривать содержимое, нажимая клавиши Вверх/Вниз или Enter. Чтобы выйти из режима просмотра нажмите клавишу q.
Мы ознакомились с возможностями просмотра доступных файлов и каталогов, с основными командами для работы с файлами, которые позволяют просматривать, копировать, перемещать и удалять файлы, а также с основами редактирования в текстовом редакторе nano.