Команды linux для работы с файловой системой
В этой статье приведен список часто используемых команд для работы с каталогами и файловой системой llinux.Терминал, консоль.
Команды линукс для перехода по директориям системы:
Команда cd используется для перехода в домашний каталог (директорию) /home пользователя.
user для перехода в домашний каталог пользователя можно воспользоваться и этой командой.
Для перехода в любой другой каталог пропишите команду cd и через пробел путь к нужному каталогу.
Например введя в консоли команду cd /home перейдем в каталог /
cd… команда для перехода в каталог уровнем выше того, в котором сейчас находитесь.
cd . /… команда для перехода в каталог двумя уровнями выше того, в котором сейчас находитесь.
cd — переход в каталог в котором вы находились до перехода в текущий каталог.
Команды linux для просмотра содержимого каталогов:
pwd эта команда linux показывает полный путь к каталогу в котором вы сейчас находитесь.
ls команда показывает все содержимое текущего каталога, т.е. каталога в котором вы сейчас находитесь.
ls -F отображает все содержимое текущего каталога и добавляет к файлам и подкаталогам символы, характеризующие их тип.
ls -l кроме содержимого каталога показывает время создания файлов, размер, права доступа и количество файлов в подкаталогах.
ls -a команда отображает скрытые файлы в вашем текущем каталоге.
ls *5* команда показывает список файлов и директорий, содержащие в своем имени цифры.
tree показывает древовидный список файлов и каталогов в вашем текущем каталоге. Также подсчитывает их количество. В зависимости от количества файлов подсчет файлов может занять некоторое время.
dir показывает содержимое вашего текущего каталога в алфавитном порядке и с учётом регистра названий.
df выводит в консоли количество занятого и свободного места на жестком диске для каждого каталога системы.
А команда du покажет вам количество блоков диска, занятых каждым файлов в вашем текущем каталоге.
Команды linux для работы с файлами и каталогами:
(небольшое примечание: Для работы с файлами нужно иметь права доступа к ним. Что это такое можно почитать здесь)
mkdir dir1 создает
каталог с именем dir1
mkdir dir1 dir2 создает два каталога с именами dir1 и dir2
mkdir -p /home/dir1/dir2 создает в каталоге /home дерево директорий. Это значит что создается каталог dir1 с находящимся внутри него каталогом dir2.
rm -f file1 команда линукс для удаления файла с именем file1
rmdir dir1 команда для удаления каталога с именем dir1
rm -rf dir1 удаляет каталог с именем dir1 вместе со всем его содержимым.
rm -rf dir1 dir2 одновременно удаляет два каталога dir1 и dir2 вместе с их содержимым.
Используя linux команду mv можно перемещать и переименовывать файлы и каталоги.
mv dir1 new_dir эта команда перемещает либо переименовывает файл или каталог из dir1 в new_dir
Команды linux для копирования файлов:
cp file1 file2 команда для копирования файла file1 в файл file2
копирует все файлы из каталога dir в текущий каталог.
cp -a /tmp/dir1 команда копирует каталог dir1 из /tmp/ со всем своим содержимым в ваш текущий каталог.
cp -a dir1 dir2 данная команда копирует каталог dir1 в каталог dir2
ln -s file1 lnk1 при помощи этой команды создается символическая ссылка на файл file1 или на каталог.
ln file1 lnk1 а этой командой создается так называемая «жёсткая» (физическая) ссылка на файл file1 или на каталог.
ЗЫ: Список команд линукс будет пополнятся. Постепенно
Источник
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Linux — начинающим. Часть 4. Работаем с файловой системой. Практика
Linux — начинающим. Часть 4. Работаем с файловой системой. Практика
В прошлой части нашего материала мы разобрали как устроена и какие особенности имеет файловая система Linux. Пора переходить от теории к практике. Так как основным инструментом администратора является консоль, то основное внимание мы уделим работе с утилитами командной строки, тем более, как вы уже должны были заметить, графические оболочки предоставляют весьма ограниченные возможности по работе с файловой системой. Да и многие вещи в Linux до сих пор проще, удобнее и быстрее сделать именно из командной строки.
Позвольте, скажет иной читатель, но ведь есть же иные инструменты для работы с файлами и папками в консольном режиме, тот же mc (Midnight Commander). Действительно, это отличный классический двухпанельный файловый менеджер и мы активно используем его в повседневной работе. Скажем больше, это первое приложение которое мы ставим на новый сервер и вообще слабо представляем себе комфортную работу без него.
Но навыки работы с приложением, каким бы распространенным и удобным оно не было, не должны подменять навыки работы с системой. Поэтому на время забудем о его существовании и полностью окунемся в режим командной строки.
Когда мы говорили о том, что консоль позволяет решить многие задачи проще и быстрее, то мы вовсе не имели в виду, что прочие инструменты плохи или несовершенны, напротив, командная строка Linux, включив в себя богатое наследство UNIX, представляет собой весьма гибкий, мощный и удобный инструмент, освоив который вы будете открывать терминал даже находясь в графическом режиме.
Навигация и базовые операции
Первый и естественный вопрос возникающий при работе с файловой системой: а где я сейчас нахожусь? Ответ на этот вопрос написан в приглашении командной строки. Если этой информации там по какой-либо причине нет, либо вы затрудняетесь в ее интерпретации, то узнать свое местоположение можно командой:
На скриншоте ниже приглашение командной строки показывает, что мы находимся в домашней директории текущего пользователя, для ее краткого обозначения используется символ
, команда pwd уточнит, что это /home/andrey.
Получить список файлов и папок в текущей директории можно командой:
Подробную информацию, включая типы файлов, права, владельцев и размер можно получить добавив ключ -l:
Все бы хорошо, но размер файлов в байтах не очень хорошо воспринимается, поэтому добавим ключ -h, а ключ -a покажет скрытые файлы и папки:
как вам больше нравится.
Полный список ключей можно получить командой:
Передача вывода утилите less позволит выводить данные постранично, листание страниц производится клавишей Пробел, выход из режима кнопкой Q.
Также вы можете просмотреть содержимое любой интересующей вас директории, например:
Вывод покажет нам содержимое /var/www/deb8.lab, хотя мы продолжаем находиться в домашней директории.
Для перемещения по файловой системе служит иная команда:
Если выполнить ее без параметров, она переместит нас в домашний каталог. Для перехода в иное место просто укажите каталог, можно использовать как абсолютные, так и относительные пути. Например:
переместит нас в каталог /etc вне зависимости от нашего прошлого положения, если потом выполнить:
то мы попадем в /etc/squid3
позволяет быстро выйти на уровень вверх. При этом можно совершать интересные пируэты. Например, команда
Перенесет нас в /etc/php5, а теперь выполнив
мы быстро сменим каталог на одноуровневый /etc/apache2. Это удобно когда вы находитесь в глубине файловой системы и набирать полный путь при помощи автодополнения может оказаться несколько утомительным.
А ну ка, попробуйте быстро перескочить из /var/www/client/data/www/example.com в /var/www/client/data/log? Да запросто:
Следующий по важности вопрос, это найти где лежит некий файл или папка. Для этой цели служит команда find, в простейшем виде можно выполнить
Это произведет поиск файлов, папок, символьных ссылок и т.п. с именем name в текущей директории. Однако возможности команды find гораздо выше. Она позволяет не только искать файлы, но и выполнять над ними определенные действия.
Для лучшего поиска мы можем указывать тип файла, используя ключ -type, в этом случае доступными опциями ключа будут f — файл, d — директория, l — ссылка, ключ -name осуществляет поиск по имени, допускаются подстановочные символы. Если мы хотим искать по регулярному выражению — используем ключ -regex. Условия поиска можно сочетать при помощи логического И (ключ -a) и логического ИЛИ (ключ -o).
Например найдем все символические ссылки в директории /home
Или найдем и выведем в файл все изображения JPG или PNG в папке с сайтом:
Отлично, в наших руках полный список изображений:
Допустим мы хотим найти только те изображения, которые загрузили, отбросив служебные картинки. Дополнительным критерием отбора может стать размер, скажем, 100 КБ для JPG и 200 КБ для PNG.
А теперь на мгновение задумайтесь, каким образом можно было бы решить такую задачу в графической среде? И за какое время?
Отдельно обратим ваше внимание на использование логических условий, несмотря на то, что нам нужно найти JPG и PNG мы используем оператор ИЛИ, так как файл не может являться одновременно и JPG и PNG. А добавляя условие размера используем И. Т.е. полностью условие читается так:
При передаче значения условиям оперирующим с цифровыми значениями (размер, время) мы можем использовать как точный размер, так и его границы. Просто число укажет на точное значение, знаки + и — читаются как больше и меньше.
Например, найдем все файлы в домашней директории измененные за последний час:
Или найдем и удалим все бекапы старше 7 дней:
Также команда find позволяет выполнять над найденными файлами произвольные действия, для этого используется ключ -exec command <> \;. Допустим нам надо быстро исправить права на папки и файлы в каталоге с сайтом:
Еще одна полезная команда cat — позволяет просмотреть содержимое какого-либо файла без запуска дополнительных приложений, при чтении больших файлов следует передавать их утилитам less или more для удобного отображения.
Также нельзя не упомянуть о команде tail, которая выводит на экран заданное количесто строк из указанного файла (по умолчанию 10), с ее помощью удобно просматривать последние логи. Например:
выведет на экран две последние строки /var/log/syslog, а будучи запущена с ключом -f команда будет отслеживать добавление новых строк и выводить их в на экран в режиме реального времени.
Работа с файлами и папками
Научившись перемещаться по файловой системе, искать и просматривать содержимое файлов и каталогов, самое время перейти к базовым операциям с ними. Начнем с создания файлов и папок.
Для создания пустых файлов служит команда touch, в качестве аргумента которой передаем имя файла, можно нескольких, разделяя их пробелом. Если надо создать файл в директории отличной от текущей, то указываем полный путь к нему. Например следующая команда создаст два файла в текущей директории:
Если файл существует, то с ним ничего страшного не произойдет, команда просто обновит время последнего доступа (это кстати ее основное назначение).
Для создания каталогов служит команда mkdir, в качестве аргументов мы можем указать один или несколько каталогов, если не указан абсолютный путь каталоги будут созданы в текущей директории. Например:
Используя ключ -p можно сразу создать дерево каталогов:
Ключ -m позволяет сразу указать права доступа, например:
Как видим директория сразу создалась с нужными правами.
Для копирования используется команда cp. Ее синтаксис предельно прост — указываем что копируем, затем указываем куда, как и в других командах путь можно указывать абсолютный или относительный. Например:
Скопирует файл image.txt в директорию dir7, учтите, что по умолчанию уже существующие файлы перезаписываются, чтобы этого избежать добавьте ключ -i.
Также можно явно запретить перезапись существующих файлов ключом -n, в сочетании с -i отменяет последний, существует также обратный по действию ключ -f, который включает принудительную перезапись файлов.
Для копирования каталогов следует указать ключ -r, при этом будут скопированы все вложенные каталоги.
Для визуализации процесса можно использовать ключ -v, например:
Это удобно когда вы вручную копируете значительное количество файлов и хотите видеть ход операции.
При копировании с перезаписью можно использовать ключ -u, который скопирует только те файлы, которые новее, порой это позволяет значительно сэкономить время.
Для переименования и перемещения используется иная команда — mv, поначалу это может вызвать удивление, но с точки зрения файловой системы это одна и та же операция. Например, команда:
переименует файл file1 в file2, а команда:
переместит file1 в каталог dir2, но если сделать так:
то мы переместим файл и переименуем одновременно.
Команда поддерживает ключи -i, -f и -n, которые означают тоже самое, что и у команды cp (спрашивать при замене, принудительно заменять и не заменять). При одновременном указании работает последний ключ. Также поддерживаются -v и -u, с теми же значениями, при работе с директориями указывать дополнительный ключ не надо.
Обе команды поддерживают работу сразу с несколькими объектами, при этом источниками считаются все указанные объекты, кроме последнего, который является назначением.
Для удаления файлов используйте rm, она поддерживает ключи -r (рекурсивно) для удаления директорий, -i и -f, с теми же значениями, ключ -v также выведет на экран информацию о ходе операции.
Например удалим файл:
В этом месте нельзя не вспомнить об очень старой и очень злой «шутке»:
Данная команда полностью удаляла корневую директорию с диска, от чего пострадало большое количество начинающих, вбивавших «подсказанные» команды не думая. В современных системах есть защита от такого действия — удалить корень просто так нельзя.
Но нет ничего невозможного, особенно если у вас есть root-права. Можно добавить ключ, услужливо подсказанный в выводе, а можно поступить проще:
Казалось бы всего добавили один символ. Но смысл команды изменился, вместо удаления корневой директории она предписывает удалить ее содержимое. И удалит, все до чего дотянется. Тушим свет:
Сливаем воду:
Внимание! Данные действия произведены нами сугубо в образовательных целях и привели к практически полному уничтожению данных. Не пытайтесь повторить это на работающей системе!
В любом случае к операции удаления надо подходить ответственно, особенно если вы удаляете директории. Если вы не уверены в своих действиях обязательно используйте ключ -i, который будет ожидать от вас подтверждения при удалении каждого файла.
Также никогда не используйте относительные пути с командой rm в скриптах, так как будучи перемещен в иное место такой скрипт способен вызвать самые непредсказуемые последствия.
Теперь несколько слов о ссылках, для их создания предназначена команда ln, не путать с ls. На самом деле запомнить команды Linux не сложно, если знать что большинство из них связано с сокращенным наименованием действия. Так и здесь: link (ссылка) — ln, list (список) — ls.
Запущенная без ключей команда создает жесткую ссылку:
Как мы помним, жесткая ссылка — это еще одно имя файла и после выполнения данной операции определить где исходный файл, а где ссылка решительно невозможно.
Поэтому используйте эту возможность только тогда, когда это действительно необходимо, чтобы избежать путаницы и неожиданного изменения содержимого файлов.
В повседневной работе удобнее всего использовать символические ссылки, для их создания потребуется указать ключ -s:
Если при создании ссылки использовались относительные пути, то ссылка тоже будет относительной, т.е. действительной только в текущем расположении. Например, если мы напишем:
то такая ссылка работать не будет. Но есть небольшая хитрость, ключ -r позволит выстроить к такой ссылке относительный путь, но работать такая ссылка тоже будет только в своем расположении.
Как видим первая ссылка нерабочая, в то время как вторая правильно указывает путь в вышестоящую директорию, но если мы ее куда либо переместим, то работать она перестанет.
Для чего это может быть полезным? Например, если вы находитесь в глубине файловой системы, скажем в /var/www/example/data/www/example.com/templates/system/images и вам надо сделать ссылку в соседний каталог. Это очевидный плюс. Но есть и еще один. Относительные ссылки будут работать даже при значительном изменении структуры размещения данных при условии, что ссылка и источник сохраняют взаимное расположение.
Простой пример: директория с сайтом на веб-сервере. При переносе на другой сервер абсолютные пути к файлам могут измениться, но взаимное расположение файлов относительно корня сайта сохраняется. В этом случае символические ссылки с абсолютными путями сделаются неверны, а с относительными продолжат работать.
В любом случае при создании ссылки держите этот момент в голове и выбирайте тот вариант, который наиболее подходит к текущей задаче.
Работа с архивами
Теперь, когда вы умеете работать с файлами и папками самое время заняться архивами. Мы не будем подробно останавливаться на этой теме, уделив внимание только базовым операциям. Таких в повседневной работе ровно две: создать архив и извлечь его. В Linux наибольшее распространение получили архивы tar.gz или tar.bz, работа с которыми имеет свои особенности.
В привычном нам понимании архив — это сжатый файл, однако в Linux это не так. Архивом называется простой контейнер, содержащий в себе произвольные папки и файлы, для создания контейнеров используется команда tar. При необходимости полученный контейнер можно сжать, используя для этого любой поддерживаемый системой алгоритм сжатия.
Стандартом де-факто является алгоритм gzip, который сочетает оптимальное соотношение потребляемых ресурсов, времени и степени сжатия. Если нужна более высокая степень сжатия и время создания или распаковки не играет особой роли, то используется алгоритм bzip2, обычно в таких архивах распространяется ПО. Не так давно мы проводили большое тестирование консольных архиваторов, которое показало, что в подавляющем большинстве случаев использование штатных алгоритмов является наиболее оптимальным и нет никакой необходимости «изобретать велосипед».
Но вернемся к команде tar, очень часто начинающие путаются с ключами и порядком их указания, но если разобраться в их значении, то все окажется очень просто. Самым первым указывается ключ основного действия, это может быть: -с — создать архив, -u — добавить файлы к архиву, -t — показать его содержимое и -х извлечь. Затем указываем дополнительные ключи, обычно это -v — выводить на экран ход операции. Данный ключ имеет смысл только в интерактивном режиме, в скриптах бесполезен.
И самым последним должен указываться ключ задающий тип носителя, в подавляющем большинстве случаев это файл, поэтому последний ключ всегда -f. После этого ключа первым указываем имя архива и только потом то, что мы хотим в него добавить или извлечь. Попробуем:
Эта команда создаст архив archive.tar и поместит в него файл file1. Теперь добавим туда файл file2:
И просмотрим его содержимое:
Обратите внимание на вывод второй команды, мы добавили к ней ключ -v, и если создание архива без этого ключа прошло без вывода сообщений на экран, то команда добавления вывела имя добавленного файла.
Теперь извлечем содержимое архива:
Обратите внимание, что извлечение всегда происходит в текущий каталог, в приведенном виде команда извлечет содержимое архива целиком. Если нужно извлечь только отдельный файл или каталог, то его имя следует указать после имени архива. Например:
Данная команда извлечет из архива только файл file1.
И, наконец, сжатие. Чтобы сжать архив следует указать один из ключей: -z для gzip и -j для bzip2. При извлечении указывать данные ключи не нужно. Например:
По общепринятой практике таким архивам присваивают расширения tar.gz или tgz для gzip и tar.bz2 или tbz2 для bzip2. Мы советуем следовать этому правилу, чтобы потом вам или вашему коллеге не пришлось гадать, а что это за файл тут лежит и чем именно он запакован.
Монтируем съемные носители
Тема монтирования дисковых носителей также довольно обширна и далеко выходит за рамки данной статьи, поэтому мы коснемся ее лишь стороной, в части работы со съемными носителями. Начнем с оптических дисков.
Для работы с ними в Linux существует виртуальное устройство cdrom, которое представляет файл символической ссылки на блочное устройство, соответствующее дисководу, например, sr0. Чтобы смонтировать оптический диск выполните:
После чего содержимое оптического диска будет доступно в каталоге /media файловой системы. В принципе, вы можете смонтировать диск в любую точку файловой системы, но лучше придерживаться общепринятых соглашений.
Для отмонтирования носителя используйте команду
Обратите внимание, что для успешного выполнения этих операций вам потребуются права суперпользователя.
Подключив флешку в первую очередь следует узнать каким образом она определилась в системе, для этого от суперпользователя выполните:
Вывод покажет все дисковые накопители подключенные к вашей системе:
Как видим, наша флешка определилась как /dev/sdb1 и имеет файловую систему FAT32, для монтирования используйте команду:
Теперь содержимое флешки будет доступно в директории /mnt. Иногда требуется явно указать тип файловой системы, для чего используется ключ -t с указанием типа ФС. Например, для FAT32 — vfat, для NTFS — ntfs.
Существует расхожее мнение, что тип файловой системы нужно указывать обязательно, это не так, данный ключ просто ограничивает список файловых систем для монтирования, без его указания тип ФС будет определен автоматически.
Из опций монтирования вам может оказаться полезной опция -o ro, позволяющая смонтировать носитель только на чтение, оптические диски монтируются только на чтение автоматически. Например:
Отмонитровать носитель также можно командой umount, при этом можно использовать ключ -f для небезопасного отключения.
На этом мы закончим и так получившуюся довольно большой статью. И хотя многие вещи остались за кадром, мы надеемся что после его прочтения вы будете уверенно ориентироваться в файловой системе Linux и без затруднений выполнять базовые операции.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Источник