ВсёПросто

Работа с файлами и директориями в Linux

Содержание

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

При запуске редактора командой «emacs .&» на экране появляется окно Emacs с информацией о содержимом текущего каталога (символ & в конце команды обеспечивает запуск приложения в фоновом режиме). В этом случае он играет роль файлового менеджера.

Перемещение по каталогам

Первые две строки окна файлового менеджера Emacs справа содержат точку (.) и две точки (..). Строка с точкой соответствует текущей директории. Для перемещения к родительскому каталогу (т. е.

на уровень вверх по файловому дереву) служит строка с двумя точками.

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

Для обращения к требуемому файлу или каталогу служит команда C-x C-f. В окне минибуфера появится строка Find File, в которой указан путь до текущей директории.

Редактируя ее, укажите путь до нужного вам каталога в соответствии с синтаксисом операционной системы Linux. После ввода имени директории или файла следует нажать клавишу Enter.

Если указано имя файла, то будет открыт или создан соответствующий файл.

Пример

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

Если вы хотите зайти в какую-то поддиректорию текущей директории, то нужно указать имя требуемой директории. Для перемещения в домашнюю директорию пользователя используется символ ~, в корневую директорию — /. Введенный вами фрагмент может выглядеть следующим образом: ../..

/Work/text, что означает перемещение на два уровня вверх, далее в директорию Work и поддиректорию text.

Создание директории

Для создания директории служит команда +. В минибуфере появится сообщение Create directory, после которого нужно ввести имя создаваемой директории.

Копирование файла или группы файлов

Для копирования файла нужно установить курсор на имя файла и нажать клавишу C. После чего в окне минибуфера появится строка Copy to, в которой нужно указать путь к директории, в которую нужно скопировать данный файл.

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

Переименование (перемещение) файлов и каталогов

Для переименования файла нужно установить курсор на данном файле и нажать клавишу R. В минибуфере появляется строка с именем файла (каталога) и указывается полный путь к нему. Для переименования файла достаточно указать новое имя, а для перемещения — путь к новому каталогу.

Изменение прав доступа к файлам или директориям

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

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

Цифры получаются в результате двоичного кодирования прав доступа и перевода их затем в 8-ичную систему счисления.

Символьное обозначение rwx rw- r-x r— -wx -w- —x
2-ное представление 111 110 101 100 011 010 001 000
8-ное представление 7 6 5 4 3 2 1 0

В приведенной выше таблице буквы означают соответственно r — read (чтение), w — write (запись), x — execute (выполнение для файлов и возможность входа для каталогов), причем наличие соответствующего права кодируется 1, а отсутствие — 0.

Удаление файлов или каталогов

Для удаления группы файлов следует сначала отметить их, как удаляемые, нажатием клавиши d (в крайней левой позиции при этом появляется метка D).

После отметки всех файлов нажать клавишу x и на экране появится список удаляемых файлов, а в окне минибуфера запрос подтверждения удаления. Нажмите y в случае согласия или n для отмены операции.

Удаление одного файла или группы файлов, отмеченных нажатием на клавишу m, можно выполнить и с помощью команды D. Удаление каталогов происходит точно так же, как и удаление файлов, но удаляемые директории должны быть пустыми.

Отметим некоторые другие полезные команды редактора.

КомандаНазначение
v Просмотр содержимого файла
e Редактирование содержимого файла
u Снятие пометки файла
g Обновление содержимого директории

Создание каталога в Linux: основные команды работы с файлами

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

В Windows большинство операций, связанных с созданием, перемещением и изменением директорий и файлов, выполняется с помощью графического интерфейса.

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

Особенности работы с файлами в Linux

В Unix-системах применяется принцип иерархии. Файловое хранилище представляет собой дерево каталогов с корневой директорией «/». Далее можно добавлять и удалять различные ветви, путем их монтирования и демонтирования.

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

Команды, с которыми пользователь может столкнуться на первоначальном этапе, – pwd и file. Первая позволяет узнать имя текущего каталога, вторая – тип элемента и некоторые свойства.

Команда file в Linux классифицирует операнды, перечисленные в командной строке. Например, для текстовых файлов реализована возможность определять язык программирования по первым 512 байтам, а для исполняемых – номер версии.

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

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

Каждая из утилит имеет дополнительные опции, позволяющие организовывать работу по определенным принципам, либо обрабатывать информацию массово, поэтому стоит рассмотреть основные из них подробнее.

Создание

Для создания каталога в Linux применяют mkdir. Она позволяет создать подпапку в текущей директории либо в другой папке, но тогда необходимо ввести полный путь до нее. Для выполнения требуются права на запись в указанном каталоге.

Обязательный параметр утилиты – имя новой папки. Можно указать и дополнительные:

Для создания текстового документа можно воспользоваться консольным редактором, например, Namo или Vi. Так, для запуска второго нужно ввести в терминал:

vi файл.txt

После этого откроется поле для ввода информации.

В консоли Linux возможны и другие способы создания файлов. Самым простым способом является использование оператора перенаправления:

> newtext.txt

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

md5sum file.txt > ~/sum.md5

В результате будет посчитана MD5-сумма и записана в file.txt.

Но чаще для решения такой задачи используют утилиту touch:

touch e.txt

Она создает новый документ. При указании имени, которое уже имеется, для существующего элемента обновится дата изменения.

Копирование

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

cp file new_file

Cp позволяет скопировать целую папку со всеми вложениями. Для этого предназначен параметр -r:

cp -r /etc /etc_new

Перемещение

Перемещение в Linux работает по тому же принципу, что и копирование, без сохранения исходного документа. Для этого в терминале необходимо выполнить:

            mv file new_file

Для перемещения нужно указать путь к требуемому каталогу:

            mv file /home/user/tmp/newdir

Утилита имеет несколько опций:

Внимание! Для перемещения или копирования необходимо обладать правами записи в конечную директорию.

Здесь также используется утилита mv. Дело в том, что если действия производить в одном каталоге, то происходит изменение исходного файла или папки.

Так, для переименования каталога «dir» в «folder» нужно задать следующую команду:

mv ~/dir ~/folder

Linux позволяет выполнить рекурсивное переименование всех вложенных каталогов и документов заданием параметра -R.

Удаление

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

rm /usr/share/video.avi

Чтобы удалить папку, команда видоизменяется – rmdir:

rmdir folder1

Для рекурсивного удаления всех вложенных документов и папок указывают параметр -r для rm:

rm -r /home/user/video/

Поиск

Поиск по каталогам в Linux производится с помощью команды find. Его шаблонная запись выглядит следующим образом:

find путь/к/директории опции

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

Опции find дают возможность задать условия поиска:

Заключение

Создание каталога в Linux, а также выполнение с ним различных операций, значительно упрощается, если все действия выполняются в терминале.

Уже в процессе создания, копирования и перемещения есть возможность указать параметры, среди которых имя и права доступа.

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

Самые нужные и полезные SSH-команды Linux

В статье приведен список команд и описаний, которые ДОЛЖЕН ЗНАТЬ каждый пользователь или администратор VDS (VPS) или выделенного (dedicated)  сервера, либо же пользователь домашнего настольного компьютера, в случае с настольным компьютером  это уже не так необходимо, как раньше, когда Linux даже на настольном компьютере управлялся в основном из консоли.

Все команды подходят для практически любого дистрибутива Linux будь это Debian, Ubuntu, RedHat, CentOS, Linux Mint или другие дистрибутивы. Хотя чаще всего для серверного оборудования используется Linux CentOS.

Быстрая навигация по командам

date MMDDhhmmCCYY.ss – Настройка даты и времени на вашем сервере или компьютере. MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды;

uname -a – Команда выводит на экран версию ядра Linux;

man hier – Команда выводит на экран описание иерархии файловой системы (для чего нужна каждая директория в linux);

clear – Команда выполняет очищение экрана терминала;

date – Команда выводит на экран текущую дату и время на сервере;

uptime – Команда выводит на экран текущее время и работу системы без перезагрузки и выключения;

hostname – Команда выводит на экран сетевое имя компьютера;

whois novall.net – Команда выводит на экран информацию о доменом имени Novall.net;

wget https://novall.net/wp-content/themes/made/images/novall_logo.png – Команда скачивает файл  в текущую папку;

!!  – Повторить последнюю команду;

history | tail -50 – Команда выводит на экран  последние 50 набранных команд из истории ввода вашего пользователя;

exit – Завершить сеанс текущего пользователя;

passwd – Изменить пароль текущего пользователя;

shutdown -h now – Выключить сервер, компьютер (требует права суперпользователя root);

reboot – Перезагрузить систему (требует права суперпользователя root);

last reboot – Команда выводит на экран cтатистику перезагрузок;

exim -bpc – Проверить очередь писем на почтовом агенте Exim:

exipick -i | xargs -i exim -Mrm {} – Команда для очистки очереди писем почтового агента Exim на вашем сервере

exim -bP | grep message_size_limit – Проверка лимитов по отправке писем для exim

cat /etc/*release* – Отобразить релиз версию ОС Linux CentOS

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

cd  – Команда перехода в директорию

pwd  – Вывести на экран текущий путь директории в которой находитесь;

ls – Вывести на экран список файлов и каталогов по порядку;

ls -laX – Вывести на экран форматированный список всех файлов и директорий, включая скрытые;

cd ~ – Перейти в домашнюю директорию пользователя;

cd /var/log – Перейти в директорию /var/log ;

touch /home/fayl2 – Создать пустой файл по адресу /home/fayl2 (название файла fayl2) ;

cat /home/fayl2 – Вывести на экран содержимоефайла /home/fayl2 ;

tail /var/log/messages – Вывести на экран только конец файла. Лучше всего использовать при работе с логами и большими файлами;

nano /home/fayl2 – Редактировать файл /home/fayl2;

cp /home/novall/log_file.txt /home/log_file.txt – Команда скопирует файл по адресу /home/novall/log_file.txt в файл по адресу /home/log_file.txt;

mkdir /home/novall/vds – Создать директорию с именем vds;

rmdir /home/novall/vps – Удалить директорию с именем vps;

rm -rf /home/novall/dedicated – Команда безвозвратно удалит директорию dedicated со всеми вложенными фалами (ОСТОРОЖНО ИСПОЛЬЗУЙТЕ ЭТУ КОМАНДУ!);

cp -la /papka1 /papka2 – Команда скопирует директорию papka1 в директорию с именем papka2;

mv /papka1 /papka2 –  Команда для переименования файлов и папок;

du -sh /var/log/  – Вывод на экран размера заданной директории. Можно использовать для определения размера файлов. Нужная команда для пользователей VPS и DEDICATED для определения папок и файлов, которые занимают больше всего места;

locate my.cnf – Ищет все файлы с именем my.cnf;

grep -lR ‘novall.net’ * – Найти все файлы которые содержат текст “novall.net” в текущей директории;

rsync -av /source/novall/old/ root@novall.net:/destination/novall.

net/ – Команда синхронизирует файлы и папки между источником и конечной папкой, можно выполнять как на локальной машине так и с подключением по ssh к удаленной машине, причем удаленная машина может быть, как источником с которого будут синхронизироваться файлы так и конечной папкой. Нужная команда при переносе данных;

wget -r –no-parent ftp://login:password@ftp.novall.net/my-archive/ – Скачать все файлы, папки и подпапки вглубь иерархии каталогов не поднимаясь выше;

Привилегии и права доступа

chmod 0777 /home/ – Команда изменяет права доступа для папки /home. Права 0777 – разрешение на чтение/запись/исполнение для всех групп;

chmod -R 0777 /log/ – Рекурсивно изменить права доступа к директории /log. 777 – разрешение на чтение/запись/исполнение для всех групп. Все вложенные директории и файлы будут иметь права 0777;

chown novall:novall /var//log/log_file.txt – Изменение владельца и группы только для файла /var/log/log_file.txt;

chown -R novall /dev/ – Изменение владельца для всего содержимого директории /dev;

chattr – Команда изменяет атрибуты файлов на файловых системах ext2fs, ext3, ext4 и частично на других файловых системах ОС Linux;

chattr +ai – Команда изменяет атрибуты файла, после выполнения команды в файл можно добавлять данные но не изменять те данные, что уже внесены в файл;

Команды для работы с архиватором TAR в Linux

tar cf archive.tar /home/archive.txt – Создать tar-архив с именем archive.tar содержащий /home/archive.txt;

tar czf archive.tar.gz /home/archive.txt – Cоздать tar-архив с сжатием Gzip по имени archive.tar.gz;

tar cjf archive.tar.bz2 /home/archive.txt – Cоздать tar-архив с сжатием Bzip2 по имени archive.tar.bz;

tar xf archive.tar – Распаковка архива archive.tar в текущую папку;

tar xzf archive.tar.gz – Распаковать архив с Gzip-сжатием;

tar xjf archive.tar.bz – Распаковать tar-архив с Bzip2-сжатием;

Команды для мониторинга работы системы и нагрузки сервера

Все показания команд выводятся на экран в реальном времени. Цифра после команды означает интервал между обновлением информации.

top – Информация о системе в реальном времени. Текущие процессы, потребление ОЗУ;

htop  – Более расширенная утилита для просмотра статистики о текущих процессах (требует дополнительной установки);

dmesg – Отображает log-файл загрузки ОС Linux и подключения новых устройств;

mpstat 1 – Отображает на экране расширенную статистику потребления ресурсов системы в процентах ( иногда необходима установка пакета sysstat);

vmstat 2 – Отображает расширенную статистику по использованию виртуальной памяти;

iostat 2 – Отображает расширенную статистику прерываний по устройствам;

free -mКоманда выводит информацию об используемой и свободной ОЗУ, Swap-файле (-m указывает, что отображать нужно в Мегабайтах);

Команды (утилиты) для мониторинга работы сети и трафика

iftop – утилита для просмотра трафика в реальном режиме;

tcpdump – утилита для полного и детального анализа сетевого трафика;

bmon – консольная утилита для мониторинга по определенным параметрам сетевых интерфейсов;

iptraf – мощная утилита для просмотра трафика на сетевых интерфейсах

netstat – утилита для просмотра портов, активных соединений и сокетов, примеры:

netstat -nlp 

Примеры команды tcpdump

tcpdump -npi eth0 port domain – Команда показывает в реальном времени на какой домен идут запросы чаще всего. Где eth0 – это имя вашего сетевого интерфейса;

tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host novall.net– Соснифферить трафик идущий на домен к примеру novall.net и записать результат в файл output.txt;

Команды и утилиты для работы с процессами

У каждого процесса есть свой PID (уникальный код, номер)

ps axjf– Выводит на экран все загруженные процессы;

ps axufS – Выводит на экран все процессы с отображением иерархии процессов и родительских процессов;

pgrep -l httpd – Выводит на экран  PID определенного процесса – httpd;

echo $$ – Выводит на экранPID вашей оболочки;

fuser -va 21/tcp – Выводит на экран PID процесса использующий порт 21;

fuser -va /var – Выводит на экранPID процесса имеющего доступ к /var;

lsof /var – Выводит на экран список процессов, которые используют директорию /var;

killall 0 exim – Команда Выводит на экран текущее состояние процесса exim;

kill -9 5639 – Завершает процесс с PID 5639;

killall TERM 5649 – Команда посылает процессу с PID-ом 5649 сигнал TERM — завершить процесс;

killall HUP proftpd – Команда посылает процессу с именем proftpd сигнал HUP — остановить процесс;

fuser -k -TERM -m /var/log – Команда завершает все процессы имеющие доступ к папке /var/log;

pidof – Узнать PID запущенной программы по имени;

strace -p 10475 -o log.txt – Команда делает трассировку системных вызовов и сигналов. Это средство может пригодится для отладки веб сервера или запуска скриптов;

Ключ -o filename : отвечает за вывод трассировки в файл это полезно так как трассировочной информации может быть довольно много;

Ключ -p PID : позволяет прикрепить stack trace к процессу по его ID. Пример strace -p 10475;

pmap -d PID – Данная команда выводит информацию о распределении памяти между процессами. Эта команда позволит вам отыскать причину утечки памяти;

Примеры команд для работы с процессами

lsof -p – Команда с ключом “-p” позволяет посмотреть файлы к которым обращался процесс;

lsof -i 4 -a -p 12234 – Команда с ключом “-i” позволяет  просмотреть все соединения по протоколу IPv4, открытые процессом с PID = 12234;

lsof -i tcp:80 – Команда с ключем “-i” и указанием протокола с портом позволяет просмотреть информацию о процессе, который прослушивает 80 TCP порт;

lsof /dev/hd4 – Данная команда выводит список открытых файлов на устройстве /dev/hd4;

lsof /dev/cdrom – Данная команда выводит список процессов, работающих с CD ROM;

lsof -c ssh – Данная команда выводит список подключений по ssh;

Команды для работы с базой данных

mysql -u db_login -p -h localhost database_name  dump_name.sql – Команда выполняет экспорт базы данных то есть создание дампа;

Дополнительные аргументы для команды mysqldump (уменьшают размер дампа и повышают скорость работы)

Пример команды:

mysqldump -Q -c -e -u db_login -p -h localhost database_name > /path/dump/name_dump.sql

-Q — Ключ оборачивает имена обратными кавычками;

-c — Ключ делает полную вставку, включая имена колонок;

-e — Ключ делает расширенную вставку.

Это весь список полезных и нужных команд, которые должен знать каждый пользователь ОС Linux. Если вы считаете, что я упустил какую-то команду или вам непонятна команда из списка приведённого выше — пишите в комментарии.

(Просмотрено 7 627 раз, 6 )

Основные команды Linux, консольные команды linux


whoami #вывести имя под которым Вы зарегистрированы date #вывести дату и время time #выполнить программу или команду и получить информацию о времени, #нужном для ее выполненияwho #определить кто из пользователей работает на машине uname -a #вывести информацию о версии операционной системы cat /etc/issue #показать версию операционной системы (12.04, 13.

04 etc.

) lsb_release -a #название дистрибутива и версия uname -m #узнать, сколько бит в linux ОС free #вывести информацию по использованию памяти df -h #вывести информацию о свободном и используемом месте на дисках uptime #показывает текущее время, время, прошедшее после загрузки ОС, количество текущих #пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут top (htop) #выводит список работающих в системе процессов и информацию о них ps axu | grep php #список процессов, в имени которых встречается php ps aux | head -n 1; ps aux | grep :searchd #процессы с пояснением параметров сверху netstat -lnp | grep :9000 #узнать, что висит на 9000 порту netstat -luntp #показывает все открытые порты с использующими их приложениями lsusb #информация об устройствах, подключенных через USB lscpu #характеристики процессора

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

man

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

Что бы выполнить команду от имени суперпользователя, нужно перед названием команды написать sudo(например: sudo service nginx restart).

В некоторых debian системах, sudo может не быть установлен по умолчанию (но его можно установить apt-get install sudo). Для установки sudo нужно авторизоваться по root`ом:

su —

На запрос пароля нужно ввести пароль суперпользователя. После чего любая команда будет выполняться от суперпользователя root.

eugene@PCname:~$ su -Пароль: root@PCname:~#

Общие команды Linux

Тут представлен список полезных команд, которые не вошли в другие разделы.

sudo shutdown -h now #выключить компьютер сейчас sudo shutdown -h 90 #выключить компьютер через 90 мин. sudo reboot #перезагрузить компьютер wget —convert-links -r http://www.linux.org/ #копирование сайта целиком и конвертирование ссылок для автономной работы #копирование происходит на 5 уровней в глубину !! #выполнить последнюю выполненную команду history | tail -50 #показать последние 50 набранных команд passwd #меняет пароль текущего пользователя cal -3 #показывает в удобной форме предыдущий, текущий и последующий месяц (типо календарь)

Работа с файлами и директориями Linux

ls #показать список файлов в текущем каталоге (list) ls -la #список файлов в каталоге , включая скрытые pwd #выводит текущий путь (команда вывода текущей директории) cd [каталог] #cменить текущий каталог (change directory) cp #копировать файлы (copy) mv #переместить или переименовать файл (move) mkdir #создать новый каталог (make directory) rmdir #удалить пустой каталог (remove directory) rm #удалить файлы (remove) rm -rf #удаление директории вместе с вложенными файлами locate /var/www*index.php #найти все файлы с названием, заканчивающимся на index.php #в директории /var/www tail #выводит конец файла. Удобно при работе с логами и большими файлами du . -bh | more #вывод на экран информации о размере файлов и каталогов, начиная с текущего каталога sudo chmod 777 -R ~/Общедоступные #разрешение на чтение/запись/исполнение для всех на каталог ~/Общедоступные # -R — рекурсивно, то есть и на все вложенные файлы и папки sudo chown #задать владельца файла >filename #делает filename пустым файлом, т.е. стирает содержимое touch filename #создаёт пустой файл, также меняет время последнего изменения файла whoami #вывести имя под которым Вы зарегистрированы date #вывести дату и время time #выполнить программу или команду и получить информацию о времени, #нужном для ее выполненияwho #определить кто из пользователей работает на машине uname -a #вывести информацию о версии операционной системы cat /etc/issue #показать версию операционной системы (12.04, 13.04 etc.

) lsb_release -a #название дистрибутива и версия uname -m #узнать, сколько бит в linux ОС free #вывести информацию по использованию памяти df -h #вывести информацию о свободном и используемом месте на дисках uptime #показывает текущее время, время, прошедшее после загрузки ОС, количество текущих #пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут работы после загрузки, #количество текущих пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут top (htop) #выводит список работающих в системе процессов и информацию о них ps axu | grep php #список процессов, в имени которых встречается php ps aux | head -n 1; ps aux | grep :searchd #процессы с пояснением параметров сверху netstat -lnp | grep :9000 #узнать, что висит на 9000 порту netstat -luntp #показывает все открытые порты с использующими их приложениями lsusb #информация об устройствах, подключенных через USB lscpu #характеристики процессора

Как завершить какой-нибудь процесс? Если во время вывода top нажать k (от слова kill), то будет предложено

PID to kill:

нужно ввести идентификатор (PID) процесса и затем нажать enter. Это нечто вроде диспетчера задач в Windows.

Работа с архивами Linux

tar cf primer.tar /home/primer.txt #создать tar архив с именем primer.tar, #содержащий /home/primer.txttar czf primer.tar.gz /home/primer.txt #cоздать tar-архив с сжатием Gzip по #имени primer.tar.gztar xf primer.tar #распаковать архив primer.tar в текущую папку tar xzf primer.tar.gz #распаковать tar-архив с Gzip tar xjf primer.tar.bz #распаковать tar-архив с Bzip2

Примеры поиска текста и файлов в Linux

grep -rl 'что_ищем' /путь #искать файлы рекурсивно с текстом #'что_ищем' по пути '/путь' less ~/Документы/http.txt | grep -A 2 'skype' #поиск по файлу ~/Документы/http.txt, #выведет строку совпадения + 2 следующие строки tail -f -n100 ~/logs/php-error.

log #очень удобная фича для прочтения логов #в реальном времени выводит 100 последних строк файла find . -name «*.php» -mtime -1 -print #рекурсивный поиск файлов по паттерну (маске) '*.

php' #которые изменялись за последние сутки find /var/www/ -mtime -10 #поиск файлов которые были изменены за последние 10 дней find /var/www/ -mtime -10 > filename.txt #записать вывод в файл find . -perm 777 | xargs rm #найти все файлы с правами 777 и удалить их find .

-name cache | xargs chmod -R 777 #найти каталог cache и задать ему права 777

Выполнить куски кода в командной строке (php, python):

php -r «var_dump(strlen('hello'));»python -c «print('hello');»

Это неполный список команд, которые уже очень пригодились мне. По мере изучения linux пост будет пополняться другими командами.

Основы Linux от основателя Gentoo. Часть 1 (2/4): Управление файлами и директориями


Продолжение перевода первой части руководства. Начало тут. В данном отрывке рассмотрены команды работы с файловой системой и файлами, такие как ls, mkdir, touch, mv, cp, затронуто использование echo и cat. Рассказано про иноды файловой системы.

Знакомство с ls

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

$ cd /usr
$ ls
X11R6 doc i686-pc-linux-gnu lib man sbin sslbin gentoo-x86 include libexec portage share tmpdistfiles i686-linux info local portage.old src

Указав опцию -a, вы можете увидеть полный список, включая скрытые файлы и директории, начинающиеся с «.». Как видно в следующем примере, ls -a выводит также особые связывающие директории «.» и «..»:

$ ls -a
. bin gentoo-x86 include libexec portage share tmp.. distfiles i686-linux info local portage.old srcX11R6 doc i686-pc-linux-gnu lib man sbin ssl

Развернутые списки директорий

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

В следующем примере мы использовали опцию -l чтобы отобразить содержимое моей директории /usr:

$ ls -l /usr
drwxr-xr-x 7 root root 168 Nov 24 14:02 X11R6drwxr-xr-x 2 root root 14576 Dec 27 08:56 bindrwxr-xr-x 2 root root 8856 Dec 26 12:47 distfileslrwxrwxrwx 1 root root 9 Dec 22 20:57 doc -> share/docdrwxr-xr-x 62 root root 1856 Dec 27 15:54 gentoo-x86drwxr-xr-x 4 root root 152 Dec 12 23:10 i686-linuxdrwxr-xr-x 4 root root 96 Nov 24 13:17 i686-pc-linux-gnudrwxr-xr-x 54 root root 5992 Dec 24 22:30 includelrwxrwxrwx 1 root root 10 Dec 22 20:57 info -> share/infodrwxr-xr-x 28 root root 13552 Dec 26 00:31 libdrwxr-xr-x 3 root root 72 Nov 25 00:34 libexecdrwxr-xr-x 8 root root 240 Dec 22 20:57 locallrwxrwxrwx 1 root root 9 Dec 22 20:57 man -> share/manlrwxrwxrwx 1 root root 11 Dec 8 07:59 portage -> gentoo-x86/drwxr-xr-x 60 root root 1864 Dec 8 07:55 portage.olddrwxr-xr-x 3 root root 3096 Dec 22 20:57 sbindrwxr-xr-x 46 root root 1144 Dec 24 15:32 sharedrwxr-xr-x 8 root root 328 Dec 26 00:07 srcdrwxr-xr-x 6 root root 176 Nov 24 14:25 ssllrwxrwxrwx 1 root root 10 Dec 22 20:57 tmp -> ../var/tmp

Первая колонка показывает информацию о правах доступа для каждого элемента. Чуть позже я объясню, как её интерпретировать. Следующая колонка содержит числа ссылок на каждый элемент файловой системы, позже мы вернемся к этому.

Третья и четвертая колонки — это список владельцев и групп, соответственно. Пятая колонка — размер объекта. Шестая — время последнего изменения (mtime) объекта. И наконец, последняя колонка с именами объектов.

Если файлы являются символическими ссылками, то вы увидите стрелку -> и путь, куда указывает эта символическая ссылка.

Смотрим на директории

Иногда вы захотите взглянуть на директорию, а не внутрь нее. В этом случае вы можете указать опцию -d, которая скажет ls рассматривать любую директорию, как внутреннюю:

$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share
drwxr-xr-x 4 root root 96 Dec 18 18:17 ../sharedrwxr-xr-x 17 root root 576 Dec 24 09:03 /usrdrwxr-xr-x 2 root root 3192 Dec 26 12:52 /usr/X11R6/bindrwxr-xr-x 2 root root 14576 Dec 27 08:56 /usr/bin

Рекурсивный и инодный списки

Так вы можете использовать -d чтобы смотреть на директорию, но также можно использовать -R для противоположного: не только лишь глянуть внутрь директории, но и рекурсивно посмотреть все директории с файлами внутри нее! Мы не включим в руководство никакого примера вывода для этой опции (поскольку обычно он очень объемный), но возможно вы захотите попробовать несколько команд ls -R и ls -Rl, чтобы почувствовать как это работает.

Наконец, опция -i может использоваться для отображения числа инодов для объектов в списке файловой системы:

$ ls -i /usr
1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp

Понятие инода

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

Это может показаться банальным, но понятие инодов очень важно для понимания большинства операций в файловой системе. Рассмотрим например ссылки «.» и «..», которые появляются в каждой директории.

Чтобы полностью понять, чем на самом деле является директория «..», мы сперва взглянем на номер инода у /usr/local:

$ ls -id /usr/local
5120 /usr/local

У директории /usr/local номер инода равен 5120. А теперь посмотрим номер инода у /usr/local/bin/..:

$ ls -id /usr/local/bin/..
5120 /usr/local/bin/..

Как видно, директория /usr/local/bin/.. имеет такой же номер, как у /usr/local! Посмотрим, как можно справиться с этим шокирующим откровением. В прошлом мы полагали, что /usr/local сама является директорией.

Теперь же, мы обнаружили, что фактически директория — это инод с номером 5120, и нашли, по меньшей мере, два элемента (называемых «ссылками»), которые указывают на данный инод. И /usr/local, и /usr/local/bin/.. — ссылки на 5120-ый инод.

Хотя этот инод и существует только в одном месте на диске, тем не менее на него может быть множество ссылок.

На самом деле, мы даже можем увидеть общее количество ссылок ведущих на этот, 5120 инод, используя команду ls -dl:

$ ls -dl /usr/local
drwxr-xr-x 8 root root 240 Dec 22 20:57 /usr/local

Если взглянуть на вторую колонку слева, то видно, что на директорию /usr/local (инод 5120) ссылаются восемь раз. На моей системе на этот инод ведут следующие пути:

/usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/..

/usr/local/src/..

mkdir

Давайте быстренько пройдемся по команде mkdir, которая используется для создания новых директорий. Следующий пример создает три новых директории, tic, tac, и toe, все внутри /tmp:

$ cd /tmp
$ mkdir tic tac toe

По умолчанию, команда mkdir не создает для вас родительские директории; весь путь вплоть до последнего (создаваемого) элемента должен существовать. Так, если вы захотите создать вложенные директории won/der/ful, вам придется выполнить три отдельные команды mkdir:

$ mkdir won/der/ful mkdir: cannot create directory `won/der/ful': No such file or directory

$ mkdir won

$ mkdir won/der
$ mkdir won/der/ful

Однако, у mkdir есть очень удобная опция -p, которая говорит mkdir создавать любые отсутствующие родительские директории, как можете увидеть тут:

$ mkdir -p easy/as/pie

В целом очень просто. Чтобы узнать больше о команде mkdir наберите man mkdir и прочитайте инструкцию. Это же касается почти всех команд, рассмотренных здесь (например man ls), исключая cd, которая встроена в bash.

touch

Сейчас мы собираемся окинуть взглядом команды cp и mv, используемые для копирования, переименования и перемещения файлов и директорий. Но начнем обзор воспользовавшись командой touch, чтобы создать файл в /tmp:

$ cd /tmp
$ touch copyme

Команда touch обновляет «mtime» (время последней модификации — прим. пер.) файла, если тот существует (вспомните шестую колонку в выводе ls -l). Если файл не существует, то новый, пустой файл будет создан. Сейчас у вас должен быть файл /tmp/copyme с нулевым размером.

echo

Теперь, когда файл существует, давайте добавим немного данных в него. Можно сделать это с помощью команды echo, которая принимает аргументы и печатает их на стандартный вывод. Сперва, команда echo сама по себе:

$ echo «firstfile»
firstfile

А сейчас, та же команда echo, но с перенаправлением вывода:

$ echo «firstfile» > copyme

Знак «больше» сообщает оболочке записывать вывод echo в файл по имени copyme. Этот файл будет создан, если не существовал, или перезаписан, если существует. Набрав ls -l, увидим, что файл copyme имеет размер в 10 байт, так как содержит слово firstfile и символ новой строки:

$ ls -l copyme
-rw-r—r— 1 root root 10 Dec 28 14:13 copyme

cat и cp

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

$ cat copyme
firstfile

Сейчас, мы можем воспользоваться основным вызовом команды cp для создания файла copiedme из оригинального copyme:

$ cp copyme copiedme

Ниже проверим, что это действительно разные файлы; у них отличаются номера инодов:

$ ls -i copyme copiedme
648284 copiedme 650704 copyme

mv

А сейчас давайте воспользуемся командой mv для переименования copiedme в movedme. Номер иноды останется прежний; однако, имя файла, указывающее на инод, изменится.

$ mv copiedme movedme
$ ls -i movedme
648284 movedme

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

Пока мы рассказываем об mv, давайте посмотрим, как еще можно использовать эту команду. mv, помимо возможности переименовать файлы, позволяет перемещать один или более файлов в другое место в иерархии директорий. Например, чтобы переместить /var/tmp/myfile.txt в директорию /home/drobbins (которая является моей домашней), я наберу (а мог бы воспользоваться ~ — прим. пер.):

$ mv /var/tmp/myfile.txt /home/drobbins

После этого myfile.txt будет перемещен в /home/drobbins/myfile.txt. И если /home/drobbins располагается в другой файловой системе, нежели /var/tmp, команда mv скопирует myfile.

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

Это все потому, что у каждой файловой системы свой независимый набор номеров инодов.

Мы также можем воспользоваться mv для перемещения нескольких файлов в одну директорию. К примеру, чтобы переместить myfile1.txt и myarticle3.txt в /home/drobbins, потребуется набрать:

$ mv /var/tmp/myfile1.txt /var/tmp/myarticle3.txt /home/drobbins

Продолжение…

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. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».