- Команды linux для работы с файловой системой
- Как перейти в папку в терминале Linux
- Как перейти в нужную папку в терминале Linux
- Как перейти в папку выше в терминале Linux
- Как перейти в папку пользователя в терминале Linux
- Как перейти назад в терминале Linux
- Файловый менеджер в терминале Linux
- Основы Linux от основателя Gentoo. Часть 2 (2/5): Назначения папок, поиск файлов
- FHS и поиск файлов
- Стандарт иерархии файловой системы
- Две независимые классификации в FHS
- Вторичная иерархия в /usr
- Поиск файлов
- Изменение PATH
- О команде «which»
- which -a
- whereis
- find и шаблоны
- Игнорирование регистра в find
- find и регулярные выражения
- find и типы файлов
- find и mtimes
- Опция -daystart
- Опция -size
- Работа с найдеными файлами
- locate
- Использование updatedb
- slocate
- Об авторах
- Daniel Robbins
- Chris Houser
- Aron Griffis
Команды linux для работы с файловой системой
В этой статье приведен список часто используемых команд для работы с каталогами и файловой системой llinux.Терминал, консоль.
Команды линукс для перехода по директориям системы:
Команда cd используется для перехода в домашний каталог (директорию) /home пользователя.
user для перехода в домашний каталог пользователя можно воспользоваться и этой командой.
Для перехода в любой другой каталог пропишите команду cd и через пробел путь к нужному каталогу.
Например введя в консоли команду cd /home перейдем в каталог /
cd… команда для перехода в каталог уровнем выше того, в котором сейчас находитесь.
cd . /… команда для перехода в каталог двумя уровнями выше того, в котором сейчас находитесь.
cd — переход в каталог в котором вы находились до перехода в текущий каталог.
Команды linux для просмотра содержимого каталогов:
pwd эта команда linux показывает полный путь к каталогу в котором вы сейчас находитесь.
ls команда показывает все содержимое текущего каталога, т.е. каталога в котором вы сейчас находитесь.
ls -F отображает все содержимое текущего каталога и добавляет к файлам и подкаталогам символы, характеризующие их тип.
ls -l кроме содержимого каталога показывает время создания файлов, размер, права доступа и количество файлов в подкаталогах.
ls -a команда отображает скрытые файлы в вашем текущем каталоге.
ls *8* команда показывает список файлов и директорий, содержащие в своем имени цифры.
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 или на каталог.
ЗЫ: Список команд линукс будет пополнятся. Постепенно
Источник
Как перейти в папку в терминале Linux
Для того чтобы начать работать с операционной системой Linux в терминале нужно выучить несколько основных команд. Например, нужно научиться перемещаться по файловой системе, открывать папки, переходить на уровень выше, открывать папку пользователя и возвращаться назад. В этой инструкции мы рассмотрим все эти аспекты. Здесь вы узнаете, как перейти в нужную папку в терминале Linux и какие команды для этого понадобятся.
Как перейти в нужную папку в терминале Linux
Чтобы перейти в любую папку в терминале Linux нужно использовать команду « cd » (от англ. change directory). Для этого просто указываем команду « cd » и через пробел вводим путь к нужной папке. Например, для того чтобы перейти в корневой каталог файловой системы нужно ввести вот такую команду:
Аналогичным образом мы можем переходить и в другие папки. Вводим команду « cd » и путь к папке. Например, чтобы перейти в папку etc вводим вот такую команду:
Обратите внимание , при вводе названия папки можно использовать автоматическое дополнение. Для этого нужно ввести команду « cd », начать ввод имени папки и нажать на клавишу Tab . В результате система предложит правильное название и вам останется только нажать ввод. Также можно нажать клавишу Tab дважды и посмотреть список всех папок, которые находятся в текущем каталоге.
Также при навигации бывает очень полезной команда « pwd » (от англ. present working directory). Она позволяет узнать, в каком каталоге мы сейчас находимся.
Просто вводим « pwd » и получаем путь к текущему каталогу.
Как перейти в папку выше в терминале Linux
Очень часто при навигации по файловой системе возникает необходимость перейти в папку на один уровень выше. Для этого используем команду « cd » и через пробел вводим две точки. Выглядит это вот так:
При необходимости мы можем переходить сразу на несколько уровней наверх. Например, чтобы перейти на два уровня выше нужно ввести следующую команду:
Обратите внимание , для того чтобы просмотреть содержимое текущего каталога нужно использовать команду « ls » (от англ. «list»).
Как перейти в папку пользователя в терминале Linux
Также регулярно возникает необходимость вернуться в папку пользователя. Сделать это можно несколькими способами. Самый простой вариант, это ввести команду « cd » без каких-либо дополнительных параметров.
Также вы можете ввести команду « cd
) в терминале Linux означает домашнюю папку пользователя. Поэтому команда « cd
» позволяет перейти именно в нее.
Если же нужно перейти в домашний каталог другого пользователя, то после знака тильда (
) нужно ввести username этого пользователя. Например, чтобы перейти в каталог пользователя aleks команда должна выглядеть как « cd
Как перейти назад в терминале Linux
Также команду « cd » можно использовать для того, чтобы вернуться к предыдущей папке (вернуться назад). Для этого нужно ввести « cd » и знак дефиза. Выглядит это вот так:
Файловый менеджер в терминале Linux
Если вы начинающий пользователь Linux, и вам пока не удается эффективно работать, используя исключительно текстовые команды терминала, то вы можете установить файловый менеджер. Например, можно установить Midnight Commander. Данный файловый менеджер работает непосредственно в терминале Linux и обеспечивает классический двухоконный интерфейс для работы с файлами и каталогами.
Ниже мы приводим команды, необходимые для установки Midnight Commander.
После установки программу Midnight Commander можно запускать при помощи короткой команды «mc».
Интерфейс программы Midnight Commander выглядит следующим образом:
Экран программы разделен на две части. В правой и левой части окна можно открыть разные каталоги и выполнять между ними копирование или перемещение файлов.
С помощью клавиш F1-F10 в Midnight Commander можно выполнять такие команды как:
- F1 – Help – Помощь.
- F2 – Menu – Меню программы.
- F3 – View – Просмотр.
- F4 – Edit – Редактирование.
- F5 – Copy – Копирование.
- F6 – RenMov – Переименование и перемещение.
- F7 – MkDir – Создание папок.
- F8 – Delete – Удаление.
- F9 – PullDn – Работа с выпадающим меню.
- F10 – Quit – Выход.
Источник
Основы Linux от основателя Gentoo. Часть 2 (2/5): Назначения папок, поиск файлов
В данном отрывке рассказано о стандарте иерархии файловой системы (FHS), почему директории так называются и для чего они нужны. Упомянута переменная окружения PATH и разобраны основные команды для поиска файлов в системе, такие как whereis, find и locate (slocate).
Навигация по основам Linux от основателя Gentoo:
Часть I
- BASH: основы навигации (вступление)
- Управление файлами и директориями
- Ссылки, а также удаление файлов и директорий
- Glob-подстановки (итоги и ссылки)
Часть II
FHS и поиск файлов
Стандарт иерархии файловой системы
Стандарт иерархии файловой системы (Filesystem Hierarchy Standard или сокр. FHS) — это документ который определяет схему директорий в Linux-системах. FHS разработан чтобы представить общую схему для упрощения независимой от дистрибутива разработки программного обеспечения, поскольку так все необходимое располагается одинаково в большинстве дистрибутивов. FHS определяет следующее дерево директорий (взято непосредственно из спецификации):
- / (корневая директория)
- /boot (статичные файлы загрузчика)
- /dev (файлы устройств)
- /etc (специфические для хоста конфигурационные файлы)
- /lib (основные разделяемые библиотеки и модули ядра)
- /mnt (точка монтирования для временных нужд)
- /opt (дополнительные пакеты ПО)
- /sbin (основные системные программы)
- /tmp (временные файлы)
- /usr (вторичная иерархия)
- /var (изменяемые данные)
Две независимые классификации в FHS
Спецификация FHS основывается на идее существования двух независимых классификаций файлов: разделяемые и неразделяемые, а также изменяемые и статичные. Разделяемые данные могут распределятся на несколько хостов; неразделяемые специфичны для конкретного хоста (как, например, конфигурационные файлы). Изменяемые данные могут изменяться; статичные не изменяются (за исключением установки и обслуживания системы).
Нижеследующая табличка резюмирует четыре возможные комбинации, с примерами директорий, которые попадают в данные категории. Опять же, эта таблица прямо из спецификации:
Вторичная иерархия в /usr
Внутри /usr вы обнаружите вторичную иерархию, которая выглядит очень похоже на корневую файловую систему. Для /usr не критично существование во время включения машины, она может быть общим сетевым ресурсом (разделяема) или примонтирована с CD-ROM (статична). Большинство конфигурация Linux не используют «разделяемость» /usr, но ценно понимать полезность отличия между основной иерархией в корневой директории и вторичной иерархией в /usr.
Это все, что мы расскажем о стандарте иерархии файловой системы. Сам по себе документ довольно читабелен и вам стоит на него взглянуть. После его прочтения вы будете гораздо лучше понимать файловую систему Linux. Найти спецификацию можно здесь: http://www.pathname.com/fhs/.
Поиск файлов
Linux-системы зачастую содержат сотни тысяч файлов. Возможно, что вы достаточно умны, что никогда не теряете из виду ни один из них, но гораздо вероятнее, что временами вам требуется помощь для нахождения какого-либо файла. Для этого в Linux есть несколько разнообразных средств. Это введение поможет вам выбрать подходящее для решения вашей задачи.
Когда вы запускаете программу из командной строки, bash начинает просматривать список директорий в поисках программы которую вы указали. Например, когда вы вводите ls, bash в действительности не знает, что программа ls находится в /usr/bin. Вместо этого, он ссылается на переменную окружения называемую PATH, которая содержит список директорий разделенных двоеточием. Мы можем проверить значение PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin.
С таким значением PATH (у вас оно может быть другим) bash сначала проверит директорию /usr/local/bin, затем /usr/bin в поисках программы ls. Скорее всего, ls находится в /usr/bin, тогда на этой директории bash прекратит поиск.
Изменение PATH
Вы можете расширять переменную PATH, присваивая ей новое значение в командой строке:
/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/bin
Вы также можете удалять элементы из PATH, хотя это не так просто, поскольку вы не можете ссылаться в команде на существующий $PATH. Лучший вариант — это просто заново указать в PATH то, что вам нужно:
/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin
Чтобы сделать ваши изменения PATH доступными для процессов, которые будут запускаться в командной оболочке, необходимо «экспортировать» их используя команду export:
О команде «which»
Вы можете проверить, есть ли конкретная программа в вашем PATH используя which. В следующем примере мы видим, в каталогах PATH нашей системы, программы с названием sense нет:
$ which sense
which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin)
В этом примере, ls успешно находится:
which -a
Наконец, вы должны знать о флаге -a, который укажет which показать вам все экземпляры программы в PATH:
whereis
Если вам необходимо больше информации о программе, чем просто ее расположение, вы можете воспользоваться командой whereis:
$ whereis ls
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz
Здесь мы видим что ls находится в двух каталогах с общими исполняемыми файлами, /bin и /usr/bin. Кроме того, нам сообщили что есть документация, которая находится в /usr/share/man. Это man-страница которую вы увидите, если введете man ls.
Программа whereis может использоваться для поиска расположения исходников и нестандартного поиска (имеется ввиду возможность искать файлы для которых отсутствуют маны, исходники или бинарники — прим. пер.). Также ей можно указать альтернативные пути для поиска. Обратитесь к man-странице для получения дополнительной информации.
Команда find это другой удобный инструмент в вашем арсенале. Используя find вы не ограничены лишь поиском программ; вы можете искать любые типы файлов, используя различные критерии поиска. Например, поищем в директории /usr/share/doc, файл который называется README:
$ find /usr/share/doc -name README
/usr/share/doc/ion-20010523/README
/usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README
/usr/share/doc/sane-1.0.5/README
find и шаблоны
Вы можете использовать glob-шаблоны для аргументов -name, при условии что вы экранируете их кавычками или обратным слешем (таким образом они будут переданы команде в нетронутом виде, иначе они сначала будут развернуты bash’ем и уже после переданы команде). Давайте поищем все файлы README с расширением:
$ find /usr/share/doc -name README\*
/usr/share/doc/iproute2-2.4.7/README.gz
/usr/share/doc/iproute2-2.4.7/README.iproute2+tc.gz
/usr/share/doc/iproute2-2.4.7/README.decnet.gz
/usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz
/usr/share/doc/pilot-link-0.9.6-r2/README.gz
/usr/share/doc/gnome-pilot-conduits-0.8/README.gz
/usr/share/doc/gimp-1.2.2/README.i18n.gz
/usr/share/doc/gimp-1.2.2/README.win32.gz
/usr/share/doc/gimp-1.2.2/README.gz
/usr/share/doc/gimp-1.2.2/README.perl.gz
[еще 578 строк опущено]
Игнорирование регистра в find
Конечно, вы можете игнорировать регистр при поиске:
$ find /usr/share/doc -name ‘[Rr][Ee][Aa][Dd][Mm][Ee]*’
Или, намного проще:
$ find /usr/share/doc -iname readme\*
Как видно, для поиска без учета регистра можно использовать опцию -iname .
find и регулярные выражения
Если вы знакомы с регулярными выражениями, вы можете использовать опцию -regex для поиска файлов с именами соответствующими шаблону. А также опцию похожую на -iname, которая называется -iregex и заставляет find игнорировать регистр в шаблоне. Пример:
$ find /etc -iregex ‘.*xt.*’
/etc/X11/xkb/types/extra
/etc/X11/xkb/semantics/xtest
/etc/X11/xkb/compat/xtest
/etc/X11/app-defaults/XTerm
/etc/X11/app-defaults/XTerm-color
Однако в отличии от большинства программ, find требует чтобы регулярное выражение указывалось для всего пути, а не только его части. По этой причине, стоит в начале и конце шаблона ставить .*; простого использования xt в качестве шаблона будет недостаточно.
find и типы файлов
Опция -type позволяет искать в файловой системе файлы определенного типа. Возможные аргументы для -type это: b (блочное устройство), c (символьное устройство), d (директория), p (именованый канал), f (обычный файл), l (символическая ссылка), и s (сокет). Например, поиск символической ссылки в /usr/bin, которая содержит в своем имени строку vim:
$ find /usr/bin -name ‘*vim*’ -type l
/usr/bin/rvim
/usr/bin/vimdiff
/usr/bin/gvimdiff
find и mtimes
Опция -mtime позволяет вам искать файлы основываясь на дате их последней модификации. Аргументом mtime является количество 24-часовых периодов, и наиболее полезным будет указывать перед аргументом плюс (означает «после») или минус (означает «перед»). Например, рассмотрим следующий сценарий:
$ date
Tue Jan 7 18:14:52 EST 2003
Вы можете найти файлы, которые были модифицированы за последние 24 часа:
Или файлы которые были изменены до текущего 24-часового периода:
Опция -daystart
Если вы дополнительно укажете опцию -daystart, периоды времени будут отсчитываться от начала сегодняшнего дня, а не от текущего времени. Например, здесь файлы созданные вчера и позавчера:
Опция -size
Опция -size позваляет искать файлы по их размеру. По-умолчанию, аргумент -size это количество 512-байтных блоков, но добавляя к опции суффикс, можно сделать вывод более понятным. Доступные суффиксы: b (512-байтные блоки), c (байт), k (килобайт), и w (2-байтные слова). Дополнительно, перед аргументом можно указать плюс («больше чем») или минус («меньше чем»).
Например, для поиска обычного файла в /usr/bin размер которого меньше 50 байт:
$ find /usr/bin -type f -size -50c
/usr/bin/krdb
/usr/bin/run-nautilus
/usr/bin/sgmlwhich
/usr/bin/muttbug
Работа с найдеными файлами
Вы даже не представляете, что можно делать с найденными файлами! Итак, find может производить любые действия над файлами используя опцию -exec. Эта опция принимает строку команд для выполнения, которая оканчивается на ;, и заменяет все вхождения <> именем файла. Это проще всего понять на примере:
Как видите, find это очень мощная команда. Она «выросла» за годы разработки UNIX и Linux. У find существует много других полезных опций. Вы можете прочитать о них в man-страничке.
locate
Мы уже рассмотрели which, whereis и find. Как вы уже наверно заметили, выполнение find может занять некоторое время, т.к. ей необходимо прочитать каждую директорию в которой выполняется поиск. Оказывается, что команда locate может ускорить процесс использую внешнюю базу данных, генерируемую updatedb (updatedb мы рассмотрим ниже).
Команда locate ищет совпадения любой части пути, а не только самого файла. Пример:
$ locate bin/ls
/var/ftp/bin/ls
/bin/ls
/sbin/lsmod
/sbin/lspci
/usr/bin/lsattr
/usr/bin/lspgpot
/usr/sbin/lsof
Использование updatedb
Во многих Linux системах есть «cron job» для периодического обновления базы. В случае если вызов locate вернул нижеописанную ошибку, вам необходимо запустить updatedb от root’а для генерации поисковой базы:
$ locate bin/ls
locate: /var/spool/locate/locatedb: No such file or directory
$ su —
Password:
# updatedb
Работа программы updatedb может занять некоторое время. Если у вас шумный жесткий диск, вы услышите как он шуршит индексируя файловую систему. 🙂
slocate
Во многих Linux дистрибутивах, утилита locate была заменена на slocate. Как правило существует также ссылка на locate, так что вам не нужно запоминать, что именно имеется в системе. slocate означает «безопасный locate» (от англ. secure locate — прим. пер.). Он сохраняет информацию о правах доступа в поисковой базе, так что, обычные пользователи не смогут увидеть директории, которые они и так не смогли бы видеть. Используется slocate точно также как locate, но вывод программы может быть различными в зависимости от пользователя ее запустившего.
Перевод выполнил Dmitry Minsky (Dmitry.Minsky@gmail.com)
Об авторах
Daniel Robbins
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Источник