Работа с файлами командная строка linux

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

Введение

В этом руководстве для начинающих пользователей мы ознакомимся с основными командами для работы с файлами и каталогами (иногда их еще называют директориями) в Linux-системах.

Требования

Cервер с Ubuntu 20.04

Все команды, описанные ниже, будут работать и в других дистрибутивах Linux.

Расположение каталогов в файловой системе

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

Для того чтобы узнать, где располагается каталог, в котором мы сейчас находимся, используется команда:

Результат выполнения команды выглядит следующим образом:

Домашний каталог располагается после имени учетной записи пользователя, в приведенном примере он называется /demo. Этот каталог находится в каталоге с именем /home и в каталоге верхнего уровня, который называется root или корневой каталог, поэтому представлен одной косой чертой /.

Просмотр содержимого каталогов

Для просмотра содержимого каталога используется команда ls. Название этой команды является сокращением слов list files.

Просмотреть содержимое любой директории можно следующими способами:

Либо введя команду:

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

К команде ls можно добавлять дополнительные флаги, например, чтобы показать детализированное представление (права, список владельцев файлов или папок, размер, дату последнего модифицирования) файлов и директорий в текущей директории, можно использовать флаг -l:

Результат выполнения команды:

Для просмотра списка всех файлов, включая скрытые файлы и каталоги, вы можете добавить флаг -a:

Результат выполнения команды:

Отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип, можно с помощью команды:

Результат выполнения команды:

Перемещение между каталогами

Для перехода в домашний каталог используется команда cd. Название этой команды является сокращением слов change directory.

Для перехода в домашний каталог пользователя user используется команда:

Для перехода в предыдущую директорию, в которой мы находились до перехода в текущую директорию также используется команда cd.

В Linux-системах каждый файл и каталог находятся в самой верхней директории, которая называется «корневой» и обозначается одним символом слэш /.

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

Каждый абсолютный путь должен начинаться с косой черты — символа слэш /.

Для перехода в директорию уровнем выше используется команда:

Для перехода в директорию двумя уровнями выше:

Операции с файлами и каталогами

У каждой команды имеется множество параметров, чтобы узнать их, наберите команду и параметр —help, например:

Далее приведен список основных команд навигации в консоли Linux.

Создание

Создание файлов производится с помощью команды:

Создание каталогов выполняется с помощью команды вида:

Название этой команды является сокращением слов make directory.

Создание двух каталогов одновременно выполняется с помощью команды:

Для создания дерева каталогов используется команда следующего вида:

Удаление

Для удаления директорий используется команда rmdir имя_директории. Название этой команды является сокращением слов 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. Внимание! Это буква О, а не ноль.

Читайте также:  Столы для компьютера linux

Далее система попросит вас ввести либо подтвердить имя файла, который вы хотите сохранить:

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

После ввода имени файла нажмите клавишу ENTER.

Для того чтобы выйти из тестового редактора нажмите сочетание клавиш CTRL-X.

Если вы внесли изменения и не сохранили файл, вам будет предложено сохранить сделанные вами изменения:

Вы можете нажать клавишу Y, чтобы сохранить изменения, клавишу N для отмены изменений и выхода, или сочетание клавиш CTRL-C, чтобы отменить операцию выхода из режима редактирования файла.

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

Нажмите клавишу ENTER, чтобы сохранить файл и выйти из редактора.

Заключение

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

Источник

Первые шаги в командной строке

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

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

Она выведет текущую рабочую директорию (print working directory).

Если вам нужно перейти в другую папку, для этого используется команда cd (change directory) с указанием пути к нужной вам папке:

Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий:

текущая директория, в которой вы сейчас находитесь. Например, чтобы найти файл с именем hello.txt в текущей директории, можно использовать команду:

директория, расположенная на уровень выше текущей. Если вы находитесь в папке /home/user , то комбинация .. будет обозначать папку /home . То есть, чтобы вернуться на один уровень назад, необязательно вводить весь путь:

домашняя папка текущего пользователя. Например, запустить скрипт some-script.sh из домашней папки, когда вы находитесь в другой директории, можно так:

предыдущая посещённая директория. Представим, что вы перешли в папку /home , потом вам потребовалось изменить настройки в папке /etc . Чтобы вернуться назад, достаточно использовать команду:

Для навигации с помощью команды cd есть два формата указания пути к нужной папке: абсолютный и относительный.

Абсолютный путь — это полный путь от корневой папки сервера «/» . Например, вот такой:

Также к абсолютным относятся пути, в которых используется

— указание на домашнюю папку текущего пользователя. Например, при доступе к файлу

/.bash_profile он всегда будет открываться из одного и того же места: вместо

будет использоваться значение переменной окружения $HOME, которое не меняется.

Относительный путь — это неполный путь. Он указывается относительно какого-то объекта: например, текущей рабочей директории. То есть в начале отсутствует символ корневой папки «/» .

Представим, что мы сейчас работаем с файлами в папке /var/www/data/username . Нам нужно отредактировать содержимое в директории на уровень выше — /var/www/data . Чтобы управлять данными в этой папке, нам не обязательно постоянно указывать полный путь к ним — можно работать с относительным, начиная его с «../» .

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

Чтобы отобразить список содержимого папки, можно использовать команду ls (list). Если дополнить её ключами -al , она покажет типы данных, разрешения и скрытые файлы. Следующий пример покажет названия файлов и папок текущей рабочей папки:

А этот выведет в терминал подробный список содержимого папки /etc:

Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры, например, mc .

Ubuntu и Debian:

CentOS:

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

Поиск

С помощью команды find можно найти на сервере папку или файл по набору условий. Структура команды проста:

Например, мы знаем название файла hello.txt , но не знаем, где именно на сервере он лежит. Найти его поможет конструкция:

  • / указывает, что искать надо, начиная с корневой папки сервера. Если вам известно, где может лежать искомый файл, можно задать путь точнее.
  • -name указывает, что искать надо строго по имени.
  • «hello.txt» — имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант: «hello*» , «*.txt»

Кроме -name , команда find имеет множество опций, которые позволяют уточнить условия поиска подробнее. Вот список наиболее полезных параметров:

Позволяет указать тип искомых данных: -type f — файлы, -type d — директории

Позволяет вывести файлы с определённым уровнем доступа. Например, — perm 777

Отображает только пустые файлы или папки

Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: -user root

Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: -group www-data

Позволяет задать условие относительно времени изменения файлов:

  • -mtime 7 — файлы, менявшиеся в течение последних 7 дней;
  • -mtime +7 — файлы, менявшиеся в срок более чем 7 дней назад;
  • -mtime -14 — файлы, менявшиеся в срок менее чем 14 дней назад.

Позволяет задать условие относительно времени последнего доступа к файлу, аналогично mtime

Позволяет уточнить размер (или диапазон размера) искомых файлов

Позволяет применить к найденным файлам команду COMMAND

Больше информации о возможностях find можно узнать в файлах документации:

Из встроенных инструментов поиска можно также отметить утилиту whereis . Она предназначена для поиска бинарных и системных файлов и директорий служб. Следующий пример выведет список всех файлов и папок, имеющих прямое отношение к php :

Работа с папками

Для создания новых директорий используется команда mkdir с указанием пути до создаваемой папки. Пример ниже создаст папку /new в существующей директории /home/user :

Если нужно создать сразу несколько вложенных папок, можно использовать параметр -p . В таком случае все несуществующие директории, указанные в пути, будут созданы автоматически. Представим, что нам нужно создать вложенные папки docs/photos/2020-08-17 в текущей директории — это будет выглядеть так:

Если нужно создать несколько папок за раз, можно просто перечислить их через пробел:

Удалить папку можно с помощью команды rmdir с указанием пути. Папка будет удалена только в случае, если она пуста (можно использовать параметр —ignore-fail-on-non-empty , чтобы удалить папку в любом случае). Для удаления нескольких вложенных папок можно аналогично использовать параметр -p . Пример ниже удалит папку /photos и все каталоги внутри неё:

Для удаления есть более эффективный инструмент, rm , про который расскажем ниже.

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

Создание

В терминале есть несколько способов создания новых файлов.

Самый простой, одновременно создающий и файл, и недостающие папки — команда touch . Достаточно передать ей полный путь к файлу. Для примера создадим в папке docs папку copies , а внутри неё — файл copies-list.txt :

Несуществующая папка copies создастся автоматически.

Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел:

Ещё один способ создания новых файлов — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Однако все папки придётся создать заранее. Тогда редактор автоматически создаст файл и откроет его для редактирования. Если не сохранить файл в редакторе, даже пустой, он не будет создан. Команда ниже добавит новый файл с помощью редактора vi :

Для сохранения и выхода из файла в vi нужно нажать клавишу Esc , ввести сочетание :wq и нажать Enter . Для выхода без сохранения нужно также нажать Esc , ввести сочетание :q! и нажать Enter .

Ещё пара способов создания пустых файлов:

Редактирование

Для редактирования файлов используются консольные текстовые редакторы. Самые известные — vi и nano . В некоторых дистрибутивах vi заменён на vim ( vi improved, улучшенный vi ) или vim.tiny

Редактор vi будет доступен вам по умолчанию на большинстве Linux-систем.

А теперь к делу. Vi (более известен как Vim) — старый, очень гибкий и при этом не очень простой в плане управления редактор. Собственно, так он и попал в популярные программистские и админские шуточки.

Запуск редактора без аргументов откроет его в режиме справки:

Чтобы закрыть Vim (без сохранения), введите сочетание :q!

Если указать редактору путь к файлу, он откроет его для редактирования. Если файл не существовал, он будет создан:

При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.

Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I . Чтобы вернуться в режим просмотра, нажмите Esc .

Перемещение по тексту выполняется с клавиатуры:

  • перемещение в начало текста: Esc + дважды G
  • перемещение в конец текста: Shift + G
  • перемещение по строке горизонтально: стрелки ← →
  • перемещение по строкам вертикально: стрелки ↑ ↓
  • отображение номеров строк: Esc , введите :set number , нажмите Enter
  • перемещение по номерам строк: Esc , введите : номер строки, нажмите Enter

Для выхода с сохранением файла нажмите Esc и введите :wq!

Текстовый редактор vim — краткое руководство

Более современной и удобной альтернативой Vim считается редактор nano . Современные дистрибутивы включают его по умолчанию, но на ранних версиях устанавливать придётся вручную:

Ubuntu и Debian:

CentOS:

Вызов nano без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl + G .

Для сохранения файла нажмите Ctrl + O — редактор предложит ввести имя файла: введите имя и нажмите Enter . Если файл существовал, и имя изменять не требуется, просто нажмите Enter .

Для выхода из редактора нажмите Ctrl + X .

Чтение

Бывает, что нам нужно получить какую-то информацию из файла без необходимости редактировать его. В таком случае необязательно использовать текстовый редактор — есть более простые инструменты.

Команда cat позволяет вывести в терминал всё содержимое файла, который указан в качестве аргумента:

Однако, если мы заведомо знаем, что в файле большой объём информации, нет смысла выводить его целиком. Например, команды head и tail могут вывести часть содержимого с начала или конца файла соответственно. Если добавить к ним ключ -n , можно уточнить, сколько строк текста нужно вывести:

Помимо прочего, команда tail очень удобна для чтения логов с ключом -f . В таком режиме она открывает файл в режиме ожидания и выводит все добавляемые данные. Пригодится для тестирования или дебаггинга.

Иногда нам всё-таки нужно полностью просмотреть файл. При этом читать его вывод в терминале неудобно. На такие случаи есть команда less — она открывает файл (или переданный в неё вывод другой команды) в режиме чтения:

В режиме чтения less можно перемещаться, искать текст и многое другое. Все командные последовательности и горячие клавиши можно вывести с помощью параметра —help :

Для выхода из режима чтения введите q и нажмите Enter .

Удаление

Для удаления файлов используется команда rm . Она крайне опасна — неправильное применение грозит удалением всего содержимого сервера. Поэтому, как говорится, семь раз отмерь, один раз отрежь: категорически важно перепроверять путь, который вы указываете для удаления.

Самая простая версия rm удалит файл с предварительным подтверждением — для этого потребуется ввести y и нажать Enter :

Для полного же уничтожения всего и вся к команде добавляются параметры -rf . Первый отвечает за рекурсивное удаление данных (т.е. удаление вложенных файлов и папок), второй позволяет отключить подтверждение при удалении. Например, следующая команда удалит папку photos , размещённую в папке docs , и всё её содержимое:

Для шуток над неопытными администраторами им под тем или иным предлогом предлагают выполнить команду rm -rf [/] (без квадратных скобок). Она удаляет всё содержимое сервера от корня. Результат — все данные безвозвратно теряются, а сервер перестаёт работать.

Скачивание и загрузка

Для передачи файлов на сервер и с сервера есть много способов. Самые простые — использование wget , curl или scp .

wget позволяет скачивать данные на сервер. Он поддерживает HTTP, HTTPS и FTP протоколы.

Скачать файл по ссылке в вашу текущую рабочую директорию можно с помощью команды:

С помощью параметра -P можно указать путь, куда нужно сохранить скачиваемый файл:

Полный список параметров wget можно посмотреть в справочной информации:

curl используется как для скачивания файлов на ваш сервер, так и для передачи данных с него на другие серверы / хранилища. Он универсальнее wget благодаря огромному количеству поддерживаемых протоколов: FTP, HTTP, HTTPS, IMAP, POP3, SCP, SFTP, SMB, SMTP, Telnet и др.

В современных дистрибутивах curl установлен по умолчанию. При необходимости установить его вручную можно следующим образом:

  • Ubuntu и Debian:
    apt -y install curl
  • CentOS:
    yum -y install curl

Для работы с curl нужно знать название и расположение файлов, которые необходимо скачать/загрузить. Например, так будет выглядеть команда на скачивание файла по ссылке:

В примере мы скачиваем архив latest-ru_RU.tar.gz по ссылке и сохраняем его в текущую рабочую директорию с таким же именем — за это отвечает ключ -O . Если использовать опцию -o , можно задать своё имя ( wp.tar.gz ) для сохраняемого файла:

Если нам нужно загрузить файл c нашего сервера на другой, используется следующая конструкция:

Здесь файл filename.txt из текущей рабочей директории загружается на сайт example.com в папку downloads/ и сохраняется с именем filename.txt . Пример подразумевает, что у нас есть права на запись в указанный каталог.

Остальные возможности curl можно узнать в справочной информации:

Утилита scp позволяет копировать файлы между двумя серверами, используя протокол SSH.

Например, для передачи файла filename.txt с нашего сервера на удалённый сервер 1.2.3.4 в папку new-documents пользователя username можно использовать следующую команду:

В процессе система запросит у нас пароль пользователя username для подключения к удалённому серверу. После авторизации файл будет скопирован на целевой сервер в указанную папку.

Чтобы скачать файл с удалённого сервера, достаточно немного видоизменить нашу команду:

Здесь мы в качестве источника для получения копии файла указали удалённый сервер, а в качестве цели для загрузки копии — папку на текущем сервере.

С помощью scp аналогичным образом можно копировать данные между двумя удалёнными серверами:

Запуск исполняемых bash-скриптов

Чтобы запустить скрипт script.sh на сервере, нужно выполнить два шага:

Настроить права на запуск файла для пользователей:

Запустить скрипт. Если вы находитесь в той же директории, где лежит скрипт, достаточно вызвать его по имени:

В некоторых случаях нужно использовать команду sh либо указать путь к исполняемому файлу командной оболочки:

Если вы находитесь в другой директории, для запуска нужно указать полный путь к скрипту.

Чтобы иметь возможность запускать скрипт из любого места на сервере одной простой командой, можно создать для него алиас — короткую команду (псевдоним), которая будет ассоциироваться системой с полным вызовом скрипта.

Весь список существующих алиасов системы можно вывести с помощью команды alias :

Создать свой постоянный алиас можно с помощью файла .bashrc , размещённого в домашнем каталоге вашего пользователя. Нужно открыть его для редактирования:

В соответствующем разделе нужно добавить ваш алиас в следующем формате:

Например, если нам потребуется создать псевдоним для скрипта выше, настройки будут выглядеть так:

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

После этого вы сможете вызывать ваш скрипт с помощью короткой команды.

Скрипт можно добавить в расписание планировщика cron , чтобы он запускался регулярно.

Как настроить cron по ssh

Переименование, перемещение и копирование файлов и папок

Скопировать файл в терминале можно с помощью команды:

C её помощью можно, к примеру, создать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию конфигурационного файла nginx.conf

Папки копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) можно добавить к команде ключ -r :

Здесь мы создаём копию папки docs со всем её содержимым с именем files .

Переместить или переименовать файл также просто:

Например, следующая команда переместит файл file.txt в папку new :

Переименовать файл не сложнее:

В этом примере файл file.txt переименовывается в todolist.txt

Аналогично можно перемещать и переименовывать директории.

Теперь, когда вы можете перемещаться по серверу и работать с файлами и папками, самое время познакомиться с файловой структурой Linux-систем.

Источник

Читайте также:  Сбросить пароль биоса через windows
Оцените статью
/ корневая папка сервера
.