Архив рубрики: Публикации

Командная строка Linux: краткий курс для начинающих



























3.7/5 — (3 голоса)

Linux – начинающим. Первое знакомство

    Linux-beginners-1-000.jpg
    Как показывает читательский отклик, интерес к решениям на базе Linux весьма и весьма велик, в тоже время уровень подготовки администраторов в этой области оставляет желать лучшего. Свидетельство тому, бесконечно повторяющиеся простейшие вопросы в комментариях. Во многом, это следствие того, что наши инструкции можно выполнить “дословно” и получить работающий, результат. Но есть и обратная сторона медали, такой подход не предусматривает появлению системных знаний, оставляя знание предмета на фрагментарном уровне.

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

А как быть с теми, кто только делает свои первые шаги? К сожалению, в IT-сообществе существует некоторый снобизм, мол, чего об этом говорить, это и так все знают, или “гугл в помощь”, забывая, что каждый из нас когда-то был новичком и с мистическим ужасом смотрел в черный экран Linux-консоли, абсолютно не понимая, куда он попал и что ему делать.

В итоге новичок, столкнувшись с первыми трудностями, вынужден идти искать знания в другом месте и хорошо если такое место удастся быстро найти. Поэтому мы решили выпустить небольшой цикл материалов, в котором на доступном уровне изложить основы администрирования Linux систем, буквально объясняя на пальцах “общеизвестные вещи”, опытные пользователи могут пропустить данный цикл, а могут и прочитать, заодно обновив свои знания.

Итак, вы решили стать Linux администратором…

Немного перефразируем Маяковского “я б в Linux-админы пошел, пусть меня научат”, именно так дело в большинстве случаев и обстоит. Есть необходимость, есть желание, есть базовый набор знаний по работе с Windows системами – все это пригодится при работе с Linux системами. Гораздо хуже если какая-либо составляющая отсутствует, тогда, наверное, стоит задуматься о неправильном выборе профессии.

Сразу о том, что нужно раз и навсегда забыть. Это “религиозные войны” и “религиозный фанатизм”. Одинаково плохо отрицать возможности Linuх-систем, как и превозносить их, стремясь перевести на Linux все что нужно и не нужно. Запомните – операционная система – это инструмент, хороший специалист берет для каждой задачи наиболее подходящий, фанатик будет забивать гвозди микроскопом, потому что взять в руки молоток ему “религия не позволяет”.

Даже больше, сама по себе операционная система не имеет никакой ценности, это всего лищь среда для запуска и выполнения некоторых служб и сервисов. Без софта система мертва. Возьмем для примера клон BeOS – Haiku, ну поставили, ну посмотрели – прикольно… А дальше что?

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

Linux-beginners-1-001.jpg
Для привыкшего к графическим инструментам Windows-администратора это может показаться сложным. Но следует твердо усвоить одну истину – консоль является единственным полноценным инструментом администрирования Linux и совсем не означает ограниченность в возможностях или неполноценность системы. Даже наоборот, командная строка позволяет выполнить многие задачи намного быстрее и проще, чем графические инструменты администрирования.

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

Linux-beginners-1-002.jpg
Linux, создававшийся по образу и подобию UNIX-систем, является полноценной системой и без графической оболочки, более того мы можем запустить, закрыть или вообще сменить графическую оболочку без какого-либо влияния на работоспособность системы и даже без ее перезагрузки. Завершили сеанс Gnome, запустили KDE, а потом и вовсе вышли в консоль. Поэтому все инструменты управления системой разработаны для использования в режиме командной строки. А все панели и графические инструменты являются всего лишь надстройкой над ними.

Windows долгое время разрабатывался по принципиально иной технологии, графическая оболочка была поставлена в основу системы и долгое время даже выполнялась на уровне ядра (семейство Win 9x). Поэтому все инструменты администрирования были изначально графическими, а инструменты командной строки скорее их дополняли, чем заменяли. Любой, кто занимался восстановлением Windows, знает, что возможности инструментов командной строки там существенно ограничены и предназначены в первую очередь для восстановления системы, а не для ее администрирования.

Ситуация стала меняться с выходом PowerShell и Core-версий Windows Server. Несмотря на то, что сегодня графическая оболочка продолжает играть существенную роль в Windows-системах, администраторы получили в руки альтернативный инструмент – консоль PowerShell, которая позволяет полноценно администрировать Windows в режиме командной строки. При этом возможности PowerShell сразу завоевали популярность в среде специалистов, так как позволяют выполнять многие задачи быстрее и проще, чем графические инструменты.

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

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

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

Если вы еще не передумали становиться Linux-администратором, то поедем дальше и рассмотрим отличия в архитектуре системы.

Ядро и драйвера

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

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

В микроядерной и гибридной архитектурах, драйвера, хоть могут и работать на уровне ядра, его частью не являются и от версии ядра не зависят. Поэтому мы можем без проблем обновлять ядро или использовать один и тот-же драйвер для всех версий систем с общей структурой ядра. Например, в Windows для всего семейства современных ОС, от Windows Vista до Windows 8.1, часто используется один и тот-же драйвер.

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

По сути, такого понятия как драйвер, в Linux системах не существует. Оборудование либо поддерживается ядром, либо нет. Несомненный плюс монолитного ядра – оно самодостаточно. Если все оборудование поддерживается – поставил и забыл, самое время вспомнить ситуацию, когда под Windows нет драйвера сетевой карты и диск утерян.

Файловая система

Мы не будем касаться конкретных файловых систем, тут проблем возникнуть не должно, если администратор работал с Windows системами, то что такое файловая система и чем FAT отличается от NTFS он знает, поэтому разобраться в разнице между ext3, ext4 и, скажем, ReiserFS для него особого труда не составит. А поговорим о фундаментальных отличиях. В отличие от Windows, файловая система Linuх иерархична. Она начинается от корня, который обозначается знаком / (слеш), и имеет древовидную структуру. При этом абсолютно не имеет значения, что отдельные части файловой системы могут находиться на других разделах или вообще физических дисках.

Рассмотрим еще одну схему.

Linux-beginners-1-003.jpg
В Windows каждый раздел имеет собственную файловую систему и обозначающую его букву. Все пути к файлам и папкам начинаются с буквы, т.е. от корня раздела. Так если у нас на первом физическом диске, на втором логическом разделе была папка DATA, то путь к ней соответственно будет как D:DATA, если мы захотим перенести ее на второй жесткий диск, то ее пусть изменится на E:DATA. В ряде случаев это жутко неудобно, так как путь надо изменить во всех местах ее использования и даже существуют соответствующие утилиты.

В Linux подход кардинально иной. Самое время познакомиться с термином точка монтирования, который означает место файловой системы, куда подключается устройство хранения данных. Например, мы хотим вынести домашние каталоги пользователей на отдельный раздел, как на схеме выше, для этого нам нужно смонтировать второй логический раздел первого физического диска sda2 в /home. После чего перенести туда все пользовательские данные. Для системы и программ это произойдет абсолютно прозрачно, они как использовали абсолютный путь, скажем /home/andrey/data, так и будут его использовать. Добавили еще один диск и хотим вынести туда директорию /var? Нет проблем, останавливаем использующие каталог службы, монтируем sdb1 в /var и переносим данные, запускаем службы.

Всё есть файл

Еще один основополагающий принцип, который унаследован от UNIX-систем. В Linux всё есть файл: устройства, диски, сокеты и т.д., например, открыв /var/run мы увидим pid-файлы, соответствующие каждой запущенной службе в системе, а в /dev файлы каждого подключенного к системе устройства:

Linux-beginners-1-004.jpg
Что это дает? Не будем вдаваться в подробности, а разберем несколько простых примеров. Скажем, нужно создать образ оптического диска. В Windows нам понадобится для этого специализированное ПО, в Linuх все проще, CD-ROM – это блочное устройство, но в тоже время – это файл, файл блочного устройства. Берем соответствующий инструмент и копируем содержимое файла устройства в файл ISO образа:

dd if=/dev/cdrom of=/home/andrey/image.iso

Хотим заменить жесткий диск? Нет ничего проще, копируем содержимое одного файла блочного устройства в файл другого блочного устройства:

dd if=/dev/sda of=/dev/sdb

И не нужно никаких Partition Magic.

Другая ситуация, какое-либо ПО настоятельно ищет библиотеку lib-2-0-1.so, а у нас есть совместимая с ней, но более новая, lib-2-1-5.so, как быть? Создаем символическую ссылку на lib-2-1-5.so с именем lib-2-0-1.so и все будет работать. Потому что все есть файл и символическая ссылка тоже тип файла. А теперь попробуйте подсунуть Windows приложению lib-2-0-1.lnk вместо lib-2-1-5.dll…

Или нам нужно сохранить вывод какой-либо команды. Например, команда

ifconfig

выведет на экран сведения о сетевых адаптерах системы:

Linux-beginners-1-005.jpg
А теперь вспоминаем, что все есть файл, в том числе и устройство отображения (экран), поэтому просто перенаправим стандартный поток вывода вместо экрана в нужный нам файл:

ifconfig > ~/123.txt

После чего вывод команды будет сохранен в файл 123.txt в корневой директории пользователя:

Linux-beginners-1-006.jpg

Потоки и конвейер

В прошлом примере мы затронули стандартный поток вывода. В Linux существуют стандартные для всех процессов потоки ввода-вывода данных stdin, stdout и поток вывода ошибок stderr. Что это значит? Как минимум то, что процесс обмена данными между различными процессами стандартизован. Это позволяет создавать конвейеры, когда стандартный поток вывода одной команды передается стандартному потоку ввода другой. Например, мы хотим посмотреть список установленных пакетов в системе, в частности пакеты squid. Для этой цели есть команда:

dpkg -l

Ээээ… Это что такое и как тут что-то понять? На экране быстро промелькнули сведения о всех установленных в системе пакетах и все что мы можем видеть, это “хвост” этого вывода:

Linux-beginners-1-007.jpg
Но ведь нам и не нужен весь вывод этой команды, нас интересуют исключительно пакеты squid. Поэтому направим вывод этой команды на ввод другой, которая уже отберет и покажет то, что нам нужно:

dpkg -l | grep squid

Linux-beginners-1-008.jpg
Вот это совсем другое дело!

Причем конвейер может быть сколь угодно длинным, результат работы одной команды можно передавать второй, от второй к третьей и т.д. Еще один пример из жизни. Вам надо получить все строки вашего конфигурационного файла squid, но без комментариев и пустых строк, чтобы, например, выложить на форуме или отправить другу. Можно конечно скопировать все, но вряд-ли кто-то захочет вам помогать, прокручивая полотно стандартного файла squid.conf, большая часть которого комментарии и примеры. Делаем проще:

cat /etc/squid3/squid.conf | grep -v ‘^#’ | sed ‘/^$/d’ > ~/mysquid.conf

И вот что у нас получилось:

Linux-beginners-1-009.jpg
Просто и понятно, все опции как на ладони. Это стало возможным в результате использования конвейера трех команд, первая вывела в поток содержимое файла, вторая отобрала все строки кроме комментариев, а третья удалила пустые, результат мы направили в файл.

Буквы большие, буквы маленькие

Linux, как и UNIX, является регистрозависимой системой. И это надо помнить! Потому что, в отличие от Windows, myfile.txt, Myfile.txt и myfile.TXT – это три разных файла. В целях совместимости с другими системами не стоит этим злоупотреблять и хранить файлы, имя которых отличается только регистром, а хорошим тоном считается использование в именах только строчных букв.

Расширения и типы файлов

В Windows системах тип файла определяется его расширением, если мы переименуем exe-файл в jpg, то он не запустится, и система будет пытаться обработать его как картинку. В Linux тип файла определяется по его содержимому и расширение используется исключительно для совместимости с другими системами или для удобства пользователя. Возможность исполнения файла обеспечивается установкой соответствующего атрибута. Так в Windows чтобы сделать скрипт исполняемым, надо было изменить расширение с txt на bat, в Linux для этого нужно сделать файл исполняемым. Непонимание этого момента приводит к ситуациям, когда начинающий администратор не понимает, почему его скрипт myscript.sh не выполняется. На самом деле расширение .sh нужно только для удобства, чтобы сразу было ясно, это скрипт Bash Shell, а чтобы он работал, ему надо поставить атрибут исполняемого, а называться он может как угодно, хоть myscript.pupkin-vasya.

Требования

  • сервер с Ubuntu 16.04 (см. руководство Vscale: создаём первый сервер).

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

  • Mac OS X: Terminal (default), iTerm 2;
  • Windows: PuTTY;
  • Linux: Terminal, KDE Konsole, XTerm.

С подробным описанием команд для Ubuntu можно ознакомиться в официальной документации Командная строка Ubuntu.

Вход на сервер через терминал

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

Для работы через консоль следует нажать сочетание клавиш Ctrl+Alt+F1, для возврата в графический интерфейс – сочетание клавиш Ctrl+Alt+F7.

Для запуска терминала нажмите сочетание клавиш Ctrl+Alt+T.

Внизу экрана располагается приглашение командной строки – последовательность символов, извещающая о готовности к обработке команд:

kamilla@kamilla-Aspire-V3-371:~$

, где:

  • kamilla – имя текущего пользователя (суперпользователь/администратор);
  • kamilla-Aspire-V3-37 – имя хоста (сервер);
  • : – разделитель;
  • ~ – текущая директория (в какой папке выполняется команда) пользователя (по умолчанию /home/
  • $ – символ приглашения ввода для пользователей с обычными правами;
  • # – символ приглашения ввода для суперпользователя/администратора root (например, root@cs49647:~#).

Базовые команды, используемые при настройке сервера

После создания нового сервера необходимо предпринять несколько шагов по его базовой настройке (см. руководство Начальная настройка сервера под управлением ОС Ubuntu).

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

ssh -p №port demo@adress

, где:

  • №port – номер заданного порта при начальной настройке сервера;
  • demo – имя пользователя;
  • adress – ip-адрес сервера.

Для входа на сервер под учетной записью root используйте команду, заменив SERVER_IP_ADDRESS на публичный IP-адрес Вашего сервера:

ssh root@SERVER_IP_ADDRESS

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

adduser DEMO

Для открытия конфигурационного файла в текстовом редакторе под пользователем root введите команду:

nano /etc/ssh/sshd_config

Для замены строчки в открывшемся конфигурационном файле найдите, например, строчку Port 22 и замените число 22 на любое другое число (от 1025 и до 65536).

После внесения изменений сохраните и закройте файл, нажав сочетание клавиш CTRL-X, затем клавишу Y, затем клавишу ENTER.

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

service ssh restart

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

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

exit

Обзорное описание команд, аргументов и опций для них

Для запуска команды следует ввести команду и нажать клавишу Enter.

Команды выполняются последовательно, для выполнения следующей появится приглашение командной строки (если не использовать специальные скрипты).

Для того чтобы открыть страницу с подробным описанием команды Linux, например ip address, введите команду man с именем команды:

man ip address

Запуск без аргументов и опций

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

  • cd – возврат в домашнюю директорию текущего пользователя;
  • ls – вывод списка файлов и директорий в текущем каталоге.

 Пример:

Выполнив команду ls без параметров, получаем список файлов в каталоге:

testk@cs49647:~$ ls
linux.jpg  template  ubuntu.jpg

Запуск с аргументами (параметрами)

Большинство команд рассчитано на запуск с передачей аргументов (параметров).

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

cd /usr/bin

Запуск с опциями

Многие команды также поддерживают опции (флаги, ключи) запуска, позволяющие изменять результат выполнения команды. Опции представляют собой одиночный символ после символа «-», либо в расширенном написании после «–».

 Пример:

Выполнив команду ls с опциями -A, -S, -1, получаем список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру:

testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter

Запуск с аргументами и опциями (одновременно)

Структура записи команды с опциями и аргументами: 

команда -опции аргументы

 Пример:

Команда ls -la /home выведет подробный (-l) листинг директории /home, включая скрытые файлы (-a):

testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x  3 root  root  4096 Oct 14 16:13 .
drwxr-xr-x 22 root  root  4096 Oct 20 10:25 ..
drwxr-xr-x  4 testk testk 4096 Oct 19 10:52 testk

Переменные окружения

Окружение/среда (environment) – это набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться запускаемыми процессами.

Просмотр переменных окружения

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

env

В зависимости от конфигурации системы, вывод списка переменных окружения может занять несколько экранов, поэтому лучше использовать команду:

env | more

Просмотр значения переменной

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

Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать echo $ИМЯ_ПЕРЕМЕННОЙ, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME:

echo $HOME

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

cd $HOME

Установка переменных окружения

Для установки значений переменной окружения введите команду:

VAR=value

, где

VAR – название переменной;

value – значение переменной.

Пример:

Выполнив команду var=value, после вывода на просмотр получаем результат value:

testk@cs49647:~$ var=value
testk@cs49647:~$ echo $var
value

Использование встроенной консоли VScale

Для работы с командной строкой также можно использовать встроенную консоль VScale, нажав в меню справа кнопку “Открыть консоль”.


Откроется консоль следующего вида.

Для работы с сервером следует использовать логин и пароль, например, root и пароль, выданный при создании сервера.

Шпаргалка по работе в командной строке Linux

Включение/выключение

Перезагрузить компьютер:rebootили shutdown -r nowВыключить компьютер:shutdown -h nowВыключить компьютер через заданное время:shutdown -h hh:mmили shutdown -h +mОкончание сеанса работы в терминале:exit

Управление пользователями

Включить корневую учетную запись:sudo passwd rootЗаблокировать корневую учетную запись:sudo passwd -l rootДобавить пользователя:adduser имя_пользователяУдалить пользователя:deluser имя_пользователяУдалить пользователя вместе с домашним каталогом:deluser имя_пользователя -remove-homeИзменить имя пользователя и название его домашнего каталога:usermod -l новое_имя_пользователя -d /home/новое_имя_пользователя -m старое_имя_пользователяИзменить пароль пользователя:passwd имя_пользователяВосстановить пароль к учетной записи в режиме восстановления системы (нажать Esc в процессе загрузки GRUB):passwd имя_записи

Управление каталогами

Показать информацию о файловых системах:sudo mountПоказать список разделов:dfПоказать содержание текущего каталога:du -hПоказать объем указанного каталога:du -S имя_каталогаОтобразить путь к текущему каталогу:pwdСоздать каталог:mkdir имя_каталогаСкопировать каталог:cp каталог_1 каталог_2Переместить каталог_1 в каталог_2:mv каталог_1 каталог_2Войти в каталог:cd /имя_каталогаПоказать содержание каталога:ls /имя_каталогаПоказать содержание каталога, включая скрытые файлы и каталоги:ls -a /имя_каталогаПоказать полную информацию о содержании каталога:ls -l /имя_каталогаУдалить пустой каталог:rmdir имя_каталогаУдалить каталог с содержанием:rm -r имя_каталога

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

Создать файл в текущем каталоге:touch имя_файла.txtНайти файл:locate имя_файлаОбновить базу поиска файлов:updatedbПросмотреть текстовый файл:cat /путь/имя_файлаПросмотреть текстовый файл в обратном порядке — от последней строки к первой:tac /путь/имя_файлаСкопировать файл_1 в файл_2:cp файл_1 файл_2Переместить файл_1 в файл_2:mv файл_1 файл_2Переместить файл с сохранением оригинала (в конец имени файла дописывается символ ~):mv -b файл целевой_каталогУдалить файл:rm имя_файлаЗаписать информацию в файл, перезаписав его:echo текст > имя_файла.txtДобавить информацию в файл без его перезаписи:echo текст >> имя_файла.txtСлить несколько текстовых файлов в один:cat файл_1 файл_2 > итоговый_файл

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

Создать архив из содержимого каталога:tar -cvf имя_архива.tar имя_каталога/Сжать файлы:bzip2 имя_файлаgzip имя_файлаzip имя_файлаРаспаковать архив:gunzip имя_архива.tar.gzbunzip имя_архива.tar.bzbunzip2 имя_архива. ar.bz2tar xvf имя_архива.tartar xzf имя_архива.tgz

Управление правами доступа

Пример:-r–r—–dr–r—–Дефис вначале означает обычный файл, d — каталог (директорию). Дальше три группы по три символа означают права доступа для владельца, членов группы, в которую входит владелец, и для всех остальных пользователей соответственно.дефис означает отсутствие прав,
r — означает право на чтение,
w — право на запись,
x — право на выполнение.Просмотреть права доступа:ls -l имя_файла_или_каталогаЗадать права доступа:chmod *** имя_файла_или_каталога где *** — права доступа, указанные абсолютным способом, или:
chmod группа=/+/-тип доступа имя_файла_или_каталога где группа: u (user, владелец), g (group, группа), o (other, другие), a (all, все), например: chmod a+rw имя_файлаИзменить владельца:chown имя_пользователя имя_файлаРаспространенные права доступа:644 = rw-r–r–
666 = rw-rw-rw-
777 = rwxrwxrwx

Порядок цифр соответствует порядку пользователей (ugo), цифра в каждой позиции складывается из значений 4, 2 и 1 для прав r, w и x, соответственно. Так право полного доступа для владельца и отсуствие каких-либо прав для группы и прочих пользователей будет 700 (4+2+1.0.0).

Управление программами

Обновить список программного обеспечения:apt-get updateОбновить систему:apt-get upgradeНайти программу в репозитарии по ключевому слову:apt-cache search ключевое_словоПоказать информацию о пакете:apt-cache show название_пакетаУстановить программу из репозитария:apt-get install имя_пакетаУдалить установленную программу:apt-get remove имя_пакетаУдалить программу вместе с файлами настройки:apt-get remove purge имя_пакетаУстановить программу из скомпилированного пакета:dpkg -i имя_пакета.debУдалить программу:dpkg -r имя_пакета.debОчистить локальное хранилище полученных файлов пакетов:apt-get cleanПросмотреть список установленных пакетов:dpkg -lДобавить частный источник программного обеспечения PPA (Personal Package Archive):add-apt-repository ppa:user/ppa-nameУстановить программу из бинарного файла (предварительно необходимо перейти в каталог с файлом программы):./имя_файла.binРазрешить исполнение файла (если необходимо):chmod a+x имя_файла.bin /> Установить программу из исходных файлов (предварительно необходимо перейти в каталог с файлом программы):./configure
make
make installУдалить программу, установленную из исходных файлов:make uninstallЗапустить графическую программу с правами root:gksudo имя_программы

Управление системой

Отобразить список зарегистрированных в системе пользователей:whoПоказать информацию об использовании оперативной памяти:freeПоказать список запущенных процессов:psЗавершить процесс:killall имя_процессаПоказать список процессов в реальном времени:topВнести изменения в файл конфигурацииgedit /путь/к_файлуСнизить скорость чтения диска в приводе:hdparm -E 4 /dev/dvdrom

Диагностика системы

Проверить жесткий диск на «битые» секторы:badblocksПоказать состояние сетевых интерфейсов:ifconfigПоказать состояние беспроводных сетевых устройств:iwconfigПроверить таблицу маршрутизации:routeПроверить доступность компьютера в сети:ping имя_сайта_или_ip_адрес Остановить процесс: Ctrl+CПроверить маршрут следования пакета:traceroute имя_сайта_или_ip_адресПоказать информацию о подключенных USB-устройствах:lsusbОтобразить список PCI-шин и подключенных к ним устройств:lspciОтобразить список оборудования системы:lshw

Получение помощи

Показать Введение в пользовательские команды:man introОтобразить краткое описание команды:whatis имя_командыВывести информацию о команде:man имя_командыinfo имя_командыимя_команды –helpНайти информацию по ключевым словам:man -k ключевое_словоПоиск по странице:/ключевое_словоПродолжить поиск:NВывести историю команд:historyВыполнить команду из списка истории команд:!номер_команды!первые_буквы_командыОчистить экран консоли:clear

Объединение команд

Последовательное выполнение команд:команда1 ; команда2Последовательное выполнение команд при условии успешного выполнения предыдущей команды:команда1 && команда2Последовательное выполнение команд при условии неудачного выполнения предыдущей команды:команда1 || команда2Последовательное выполнение команд с передачей результатов выполнения предыдущей команды последующей:команда1 | команда2Запуск команды в фоновом режиме:команда &

Символы подстановки

  • Текущий каталог: .
  • Родительский каталог: ..
  • Домашний каталог пользователя: ~
  • Один произвольный символ: ?
  • Любое количество произвольных символов: *
  • Символ из указанного диапазона: [a,b,x-z], например, [a,b].rar
  • Любые символы, кроме указанных: [!ab], например, [!ab].rar
  • Подстановка с помощью фигурных скобок: например, {a,b}{1,2} создаст строку a1 a2 b1 b2
  • Указание специального символа: или апостроф, например, ’имя файла’, или имя файла

Основные команды Linux

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

ls — вывод имен файлов

Утилита ls предназначена, для вывода списка файлов и каталогов в текущем каталоге. Рассмотрим некоторые полезные свойства команды ls.

-A — включить в список «скрытые» файлы («скрытые» файлы в Linux имеют в своем названии точку в начале имени файла, например, .gtkrc-2.0). -S — отсортировать файлы по размеру. -t — отсортировать по дате изменения. -1 — выводить имена в столбик, по одному на каждой строке. -l — вывести подробную информацию о каждом файле, размер файла, владелец файла, права доступа, дата изменения.

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

admin@pingvinus:~/information$ ls fonts.tar.gz linux.jpg report.odt template ubuntu.jpg

Теперь выполним команду с опциями -A, -S, -1. В результате получим список всех файлов, включая «скрытые», расположенных по одному на каждой строке и отсортированных по размеру.

admin@pingvinus:~/information$ ls -AS1 fonts.tar.gz .gtkrc-2.0 linux.jpg report.odt ubuntu.jpg template .filter

Выполним команду ls с опцией -l. Получим подробную информацию о каждом файле.

admin@pingvinus:~/information$ ls -l -rw-r–r– 1 admin admin 217589 2009-02-12 13:35 fonts.tar.gz -rw-r–r– 1 admin admin 162348 2009-02-03 20:50 linux.jpg -rw-r–r– 1 admin admin 155847 2009-02-15 12:54 report.odt -rw-r–r– 1 root root 120736 2009-02-12 12:55 template -rw-r–r– 1 admin admin 134404 2009-02-12 12:24 ubuntu.jpg

mkdir — создание каталога

Команда mkdir предназначена для создания новой директории. Чтобы создать новую директорию, выполните mkdir <имя директории=””>. Для того, чтобы создать сразу несколько директорий, укажите их имена через пробел, например:mkdir mydir1 mydir2 mydir3

cp — копирование файла

Утилита cp используется для создания копии файла. Для обычного копирования используется следующий синтаксис cp <имя файла=”” источника=””> <имя файла=”” назначения=””>.

При использовании cp есть один нюанс, который нужно обязательно помнить. Если файл назначения уже существует, то cp перезапишет его. Поэтому, чтобы избежать случайного уничтожения существующего файла, нужно использовать команду cp с опцией -i. Перед перезаписью файла будет выдан запрос на ваше согласие. Например, если мы копируем файл linux.jpg в файл windows.jpg и windows.jpg уже существует, то будет выдан запрос на перезапись файла:

admin@pingvinus:~/information$ cp -i linux.jpg windows.jpg cp: переписать `windows.jpg’? y

Опция -r (или -R) используется для копирования одной директории в другую.

mv — перемещение, переименование файла

Утилита mv предназначена для перемещения, переименования файла. Для переименования файла используется синтаксис mv <имя файла=””> <новое имя=”” файла=””>. Для перемещения файла в другую директорию используется синтаксис mv <имя файла=””> <директория>. С mv можно также использовать опцию -i, чтобы случайно не перезаписать существующий файл.

rm — удаление файла

Команда rm предназначена для удаления файлов. Основные опции команды:

-i — выводить запрос перед удалением каждого файла. -r (или -R) — удалить директории и их содержимое.

cd — смена текущего каталога

Команда cd предназначена для смены каталога, в котором вы сейчас находитесь. Например, вы сейчас находитесь в своем домашнем каталоге ~ и хотите перейти в каталог ~/information, тогда нужно просто выполнить команду cd information.

admin@pingvinus:~$ cd information/ admin@pingvinus:~/information$

Если выполнить команду cd без параметров, то вы перейдете в свой домашний каталог ~.

admin@pingvinus:~/information$ cd admin@pingvinus:~$

Чтобы перейти в каталог на уровень выше (в родительский каталог) можно использовать синоним «две точки» — .., которые в Linux служат синонимом пути родительского каталога. Например, находясь в каталоге ~/information мы можем перейти в каталог ~ следующим образом:

admin@pingvinus:~/information$ cd .. admin@pingvinus:~$

cat — вывод содержимого файла

Утилита cat выводит содержимое текстового файла. Простейший синтаксис команды cat <имя файла=””>. Утилита cat может использоваться для соединения конкатенации двух текстовых файлов, собственно от этого и происходит название утилиты (catenation, concatenation). Например, у нас есть два файла download и ubuntu и в каждом по две строки. Сначала мы выведем содержимое файлов по отдельности, а затем сделаем конкатенацию двух файлов.admin@pingvinus:~/information$ cat download first line of file download second line of file download admin@pingvinus:~/information$ cat ubuntu first line of file ubuntu second line of file ubuntu admin@pingvinus:~/information$ cat download ubuntu first line of file download second line of file download first line of file ubuntu second line of file ubuntu

pwd — вывод полного пути текущего каталога

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

admin@pingvinus:~/information$ pwd /home/admin/information

man — получение руководства

Системная утилита man выводит страницы системной документации. С ее помощью можно получить информацию по любым командам Linux. Для этого используется синтаксис man <имя утилиты=””>. Например, чтобы вывести руководство по утилите ls, используйте команду man ls. Войдите, чтобы ставить лайкимне нравитсяЛайков: +1 войдите, чтобы ставить лайки

Промежуточные команды

1. echo – команда “echo” помогает нам перемещать некоторые данные, обычно текст, в файл. Например, если вы хотите создать новый текстовый файл или добавить в уже созданный текстовый файл, вам просто нужно ввести «echo hello, меня зовут hich >> new.txt». Вам не нужно разделять пробелы с помощью обратной косой черты здесь, потому что мы заключаем в две треугольные скобки, когда мы заканчиваем то, что нам нужно написать.


результат команды echo в linux

2. cat – Используйте команду cat для отображения содержимого файла. Обычно используется для удобного просмотра программ.


результат команды echo в linux

3. nano, vi, jed – nano и vi уже установлены текстовые редакторы в командной строке Linux. Команда nano – хороший текстовый редактор, который помечает ключевые слова цветом и может распознавать большинство языков. И vi проще, чем nano. Вы можете создать новый файл или изменить файл с помощью этого редактора. Например, если вам нужно создать новый файл с именем «check.txt», вы можете создать его с помощью команды «nano check.txt». Вы можете сохранить ваши файлы после редактирования, используя последовательность Ctrl + X, затем Y (или N для no). По моему опыту, использование nano для редактирования HTML выглядит не очень хорошо из-за его цвета, поэтому я рекомендую jed текстовый редактор. Мы скоро приступим к установке пакетов.

4. sudo – широко используемая команда в командной строке Linux, sudo означает «SuperUser Do». Поэтому, если вы хотите, чтобы любая команда выполнялась с правами администратора или root, вы можете использовать команду sudo. Например, если вы хотите отредактировать файл, такой как viz. alsa-base.conf, для которого требуются права root, вы можете использовать команду – sudo nano alsa-base.conf. Вы можете ввести корневую командную строку с помощью команды «sudo bash», а затем ввести свой пароль пользователя. Вы также можете использовать команду «su», но перед этим вам нужно установить пароль root. Для этого вы можете использовать команду «sudo passwd» (не с орфографической ошибкой, это passwd). Затем введите новый пароль root.

5. df – используйте команду df, чтобы увидеть доступное дисковое пространство в каждом из разделов вашей системы. Вы можете просто ввести df в командной строке и увидеть каждый смонтированный раздел и его использованное / доступное пространство в % и в килобайтах. Если вы хотите, чтобы оно отображалось в мегабайтах, вы можете использовать команду «df -m».


результат команды df -m в linux

6. du – Используйте du, чтобы узнать, как файл используется в вашей системе. Если вы хотите узнать размер занимаемого места на диске для конкретной папки или файла в Linux, вы можете ввести команду df и имя папки или файла. Например, если вы хотите узнать размер дискового пространства, используемое папкой документов в Linux, вы можете использовать команду «du Documents». Вы также можете использовать команду «ls -lah», чтобы просмотреть размеры всех файлов в папке.

7. tar – Используйте tar для работы с tarballs (или файлами, сжатыми в архиве tarball) в командной строке Linux. У него длинный список применений. Он может использоваться для сжатия и распаковки различных типов архивов tar, таких как .tar, .tar.gz, .tar.bz2 и т. д. Это работает на основе аргументов, данных ему. К примеру, “tar -cvf” для создания .tar архива, –xvf для распаковки .tar архива, –tvf для просмотра содержимого архива и т.д.

8. zip, unzip – используйте zip для сжатия файлов в zip-архив и unzip для извлечения файлов из zip-архива.

9. uname – используйте uname, чтобы показать информацию о системе, в которой работает ваш дистрибутив Linux. Использование команды «uname -a» выводит большую часть информации о системе: дату выпуска ядра, версию, тип процессора и т. д.


результат команды uname -a в linux

10. apt-get – используйте apt для работы с пакетами в командной строке Linux. Используйте apt-get для установки пакетов. Это команда требует прав суперпользователя, поэтому используйте команду sudo с ним. Например, если вы хотите установить текстовый редактор jed (как я упоминал ранее), мы можем ввести команду «sudo apt-get install jed». Точно так же любые пакеты могут быть установлены следующим образом. Рекомендуется обновлять ваш репозиторий каждый раз, когда вы пытаетесь установить новый пакет. Вы можете сделать это, набрав «sudo apt-get update». Вы можете обновить систему, набрав «sudo apt-get upgrade». Мы также можем обновить дистрибутив, набрав «sudo apt-get dist-upgrade». Команда «apt-cache search» используется для поиска пакета. Если вы хотите найти его, вы можете ввести «apt-cache search jed» (для этого не требуется root).

11. chmod – используйте chmod, чтобы сделать файл исполняемым и изменить разрешения, предоставленные ему в Linux. Представьте, что на вашем компьютере есть код Python с именем numbers.py. Вам нужно будет запускать «python numbers.py» каждый раз, когда вам нужно его запустить. Вместо этого, когда вы делаете его исполняемым, вам просто нужно запустить «numbers.py» в терминале, чтобы запустить файл. Чтобы сделать файл исполняемым, вы можете использовать команду «chmod + x numbers.py» в этом случае. Вы можете использовать «chmod 755 numbers.py», чтобы дать ему права root, или «sudo chmod + x numbers.py» для исполняемого файла root. Вот еще немного информации о команде chmod.

12. hostname – Используйте команду hostname, чтобы узнать ваше имя в вашем хосте или сети. По сути, он отображает ваше имя хоста и IP-адрес. Просто набрав «hostname», вы получите имя хоста. Набрав «hostname -I», вы получите свой IP-адрес в сети.

13. ping – используйте ping для проверки вашего соединения с сервером. Википедия говорит: «Ping – это утилита для администрирования компьютерной сети, используемая для проверки доступности хоста в сети Интернет-протокола (IP)». Например, когда вы набираете, , «ping google.com», он проверяет, может ли он подключиться к серверу и вернуться обратно. Он измеряет это время в оба конца и дает вам подробную информацию о нем. Использовать эту команду можно и для проверки интернет-соединения. Если он пингует сервер Google (в данном случае) – интернет-соединение активно!


результат команды ping в linux

Советы и рекомендации по использованию командной строки Linux

  • Вы можете использовать команду clear, чтобы очистить терминал, если он там скопилось слишком много команд.
  • TAB можно использовать для заполнения в терминале. Например, вам просто нужно набрать «cd Doc», а затем TAB, и терминал заполняет все остальное и делает его «cd Documents».
  • Ctrl + C может использоваться для безопасной остановки любой команды в терминале. Если Crtl+C не сработал, то можно использовать Ctrl + Z чтобы остановить процесс, запущенный в терминале.
  • Вы можете выйти из терминала, используя команду exit.
    Выключить или перезагрузить компьютер можно с помощью команд sudo halt и sudo reboot.

<хедер class=”read-next-card-хедер”>

5 инструментов, чтобы запомнить команды Linux навсегда

  • Semen Lobachevskiy

Semen Lobachevskiy 7 янв. 2019• 3 мин. чтенияchmod в Linux

Команда chmod используется для изменения прав доступа к файлам или каталогам.

<хедер class=”post-card-хедер”> Инструкции

[spoiler title=”Источники”]

  • https://interface31.ru/tech_it/2014/09/linux-nachinayuschim-chast-1-pervoe-znakomstvo.html
  • https://community.vscale.io/hc/ru/community/posts/209004205-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0-Linux-%D0%BA%D1%80%D0%B0%D1%82%D0%BA%D0%B8%D0%B9-%D0%BA%D1%83%D1%80%D1%81-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D1%85
  • https://vasilevsky.net/linux-commands
  • https://pingvinus.ru/note/command-line-fundamentals
  • https://omgubuntu.ru/basic-linux-commands-for-beginners/


[/spoiler]


2020-07-27T15:39:49
Linux

Руководство по использованию команды “useradd” в Linux



























Rate this post

 

В этом руководстве показано, как создавать пользователей в Linux с помощью командной строки.

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

Создание

Синтаксис:

useradd <имя пользователя=””> [опции]

* опции не являются обязательными при создании пользователя.

Пример:

useradd dmosk

* в данном примере создается учетная запись dmosk.

Для учетной записи стоит сразу создать пароль:

passwd dmosk

* после ввода, система попросит ввести пароль дважды.

1. Как добавить нового пользователя в Linux

Для создания/добавления нового пользователя используется команда “useradd” с аргументом “username”, где username – это имя нового пользователя, которое будет использоваться для входа в систему.
За один раз можно добавить только одного пользователя, и его имя должно быть уникальным (то есть отличаться от имен других пользователей, уже существующих в системе).

Например, добавляем пользователя “techmint”:


[root@tecmint ~]# useradd tecmint

После выполнения данной команды, новый пользователь будет создан в заблокированном состоянии. Чтобы разблокировать пользовательский аккаунт, необходимо задать его пароль с помощью команды “passwd”.


[root@tecmint ~]# passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

После создания нового пользователя его запись автоматически добавляется в пароль “/etc/passwd” и имеет следующий вид:

tecmint:x:504:504:tecmint:/home/tecmint:/bin/bash

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

Username: имя пользователя, используемое для входа в систему. Может иметь длинц от 1 до 32 символов.
Password: пользовательский пароль (или символ x), который хранится в зашифрованном виде в файле /etc/shadow.
User ID (UID): каждый пользователь должен иметь User ID (UID) – идентификатор пользователя. По умолчанию UID 0 зарезервирован для root, а UID в диапазоне 1-99 для других предопределенных аккаунтов. UID в диапазоне 100-999 предназначены для пользовательских аккаунтов и групп.
Group ID (GID): идентификатор группы – Group ID (GID), хранится в файле /etc/group file.
User Info: это опциональное поле и оно позволяет вам задать дополнительную информацию о пользователе, например полное имя. Это поле заполняется с помощью команды “finger”.
Home Directory: абсолютный путь к домашней директории пользователя.
Shell: абсолютный путь к командной оболочке пользователя, например /bin/bash.

2. Создание пользователя с нестандартным размещением домашней директории

По умолчанию команда “useradd” создает домашнюю директорию пользователя в /home и называет ее именем пользователя. Поэтому, например, для приведенного выше примера, мы увидим домашнюю директорию созданного нами пользователя “tecmint” в “/home/tecmint”.
Однако это действие можно изменить с помощью опции “-d”, указав после нее расположение новой домашней директории. Например, приведенная ниже команда создаст пользователя “anusha” с домашней директорией “/data/projects”.


[root@tecmint ~]# useradd -d /data/projects anusha

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


[root@tecmint ~]# cat /etc/passwd | grep anusha anusha:x:505:505::/data/projects:/bin/bash

3. Создание пользователя с заданным User ID

В Linux каждый пользователь имеет свой собственный UID (Unique Identification Number). По умолчанию при создании нового пользователя ему присваивается userid 500, 501, 502 и т.д.
Но мы можем создать пользователя с заданным userid с помощью опции “-u”. Например, приведенная ниже команда создает пользователя “navin” с userid “999”.


[root@tecmint ~]# useradd -u 999 navin

Теперь мы можем проверить, что пользователь создан действительно с этим идентификатором.


[root@tecmint ~]# cat /etc/passwd | grep tecmint navin:x:999:999::/home/navin:/bin/bash

Замечание: Обратите внимание, что user ID должен отличаться от user ID пользователей, уже существующих в системе.

4. Создание пользователя с заданным Group ID

Аналогично, каждый пользователь имеет свой GID (Group Identification Number). Мы можем создавать пользователей с заданным group ID с помощью опции -g.

В этом примере мы добавим пользователя “tarunika” с заданными UID и GID:


[root@tecmint ~]# useradd -u 1000 -g 500 tarunika

Проверим, правильно ли сработала команда:


[root@tecmint ~]# cat /etc/passwd | grep tarunika tarunika:x:1000:500::/home/tarunika:/bin/bash

5. Добавление пользователя в несколько групп

Опция “-G” используется для добавления пользователя в дополнительные группы. Названия групп разделяются запятой без пробелов.
В приведенном ниже примере мы добавляем пользователя “tecmint” в группы admins, webadmin и developer.


[root@tecmint ~]# useradd -G admins,webadmin,developers tecmint

Теперь проверим, в каких группах числится пользователь, с помощью команды id.


[root@tecmint ~]# id tecmint uid=1001(tecmint) gid=1001(tecmint) groups=1001(tecmint),500(admins),501(webadmin),502(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. Добавление пользователя без домашней директории

В некоторых ситуациях мы не хотим, по соображениям безопасности, давать пользователям домашние директории. В таком случае, когда пользователь авторизуется в системе сразу после ее запуска, его домашней директорией будет root. Если такой пользователь использует команду su, то он авторизуется в домашней директории предыдущего пользователя.
Для создания пользователя без домашней директории используется опция “-M”. Например, создадим пользователя “shilpi” без домашней директории.


[root@tecmint ~]# useradd -M shilpi

Давайте проверим, что пользователь создан без домашней директории, с помощью команды ls:


[root@tecmint ~]# ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory

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

По умолчанию, когда мы добавляем пользователя с помощью команды “useradd”, его аккаунт не имеет сроков действия, то есть дата истечения сроков его жизни установена в 0 (никогда не истекает).
Однако мы можем установить дату истечения с помощью опции “-e”, задав дату в формате YYYY-MM-DD. Это полезно при создании временных аккаунтов для каких-то конкретных задач.
В приведенном ниже примере мы создаем пользователя “aparna” со сроком жизни его аккаунта до 27 апреля 2015 года в формате YYYY-MM-DD.


[root@tecmint ~]# useradd -e 2015-03-27 aparna

Далее, проверяем сроки действия аккаунта и пароля с помощью команды “chage”.


[root@tecmint ~]# chage -l aparna Last password change : Mar 28, 2014 Password expires : never Password inactive : never Account expires : Mar 27, 2015 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

8. Создание пользователя с ограниченным временем действия пароля

Аргумент “-f” используется для того, чтобы задать количество дней, через которое пароль перестанет действовать. По умолчанию его значение равно -1, при этом время действия пароля не ограничивается.
В примере мы задаем для пользователя “tecmint” время действия пароля 45 дней с помощью опций “-e” и “-f”.


[root@tecmint ~]# useradd -e 2014-04-27 -f 45 tecmint

Ключи (опции)

КлючОписание и примеры
























-bЗадает базовый каталог для домашнего каталога
useradd dmosk -b /var/home
-cСоздает комментарий для описания учетной записи
useradd dmosk -c “Пользователя для управления системой”
-dПолный путь к домашнему каталогу пользователя
useradd dmosk -d /home/newuser
-DПозволяет показать или изменить настройки по умолчанию, которые будут применяться при последующем создании пользователей
useradd dmosk -Ds /bin/bash
-eДата, после которой учетная запись устареет.
useradd dmosk -e 2017-12-31
-fЧисло дней, после которого учетная запись с устаревшим паролем будет заблокирована
useradd dmosk -f 0
-gЗадает основную группу
useradd dmosk -g altternativegroup
-GЗадает дополнительные группы
useradd dmosk -G wheel
-kПуть к источнику скелета (файлы с шаблонами для нового пользователя)
useradd dmosk -k /var/skel
-mПри создании пользователя создать домашний каталог
useradd dmosk -m
-MНе создавать домашний каталог
useradd dmosk -M
-NНе создавать основную группу с таким же именем, как у пользователя
useradd dmosk -N
-oРазрешает создание учетной записи с повторяющимся UID
useradd dmosk -u 15 -o
-pЗадает пароль
useradd dmosk -p pass
-rСистемная учетная запись (без домашнего каталога и с идентификаторами в диапазоне SYS_UID_MIN – SYS_UID_MAX из файла /etc/login.defs)
useradd dmosk -r
-RКаталог, в который выполняется chroot
useradd dmosk -R /var/chroot/home
-sПуть до оболочки командной строки
useradd dmosk -s /bin/csh
-uЗадает UID
useradd dmosk -u 666
-UИмя группы будет таким же, как у пользователя
useradd dmosk -U

Актуальный список ключей можно получить командой useradd -h.

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

Синтаксис:

usermod <имя пользователя=””> [опции]

Пример:

usermod dmosk -G wheel

* эта команда добавит пользователя dmosk в группу wheel

Удаление

Синтаксис:

userdel <имя пользователя=””> [опции]

Пример:

userdel dmosk

Блокировка

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

usermod -L <имя пользователя=””>

Пример:

usermod -L dmosk

Чтобы разблокировать пользователя, вводим:

usermod -U <имя пользователя=””>

Работа с группами

Добавление:

groupadd <группа> [опции]

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

groupmod <группа> [опции]

Удаление:

groupdel <группа> [опции]

Примеры работы с учетными записями

Команда useradd

Во-первых, давайте посмотрим на поведение команды useradd по умолчанию. Вы когда-нибудь запускали следующую команду?

useradd NewUser

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

Например, в нашей системе указанная выше команда добавила следующую запись в файл /etc/passwd.

Команда useradd в Linux

Если вы читали статью о перечислении пользователей в Linux, вы, вероятно, уже знакомы с содержанием файла /etc/passwd. Сначала это выглядит хорошо, но если вы начнете копать, вы скоро заметите, что некоторые вещи не совсем правильные.

Во-первых, второе поле содержит «х». Это означает, что заполнитель для информации о пароле находится в /etc/shadow. Но мы не установили пароль. Это означает, что тестовый пользователь не сможет войти в систему.

Во-вторых, домашний каталог. Дело в том, что /home/test не существует. Даже после того, как вы установили пароль, произойдет ошибка, если пользователь войдет в систему. В зависимости от другой конфигурации ваша система Linux может запретить пользователю входить без действительного домашнего каталога. Скорее всего, пользователь test позволит войти в систему, по крайней мере, в текстовом режиме. Но пользователь test не сможет создать свой домашний каталог.

В-третьих, оболочкой по умолчанию является sh, а не bash. Мы не используем sh как оболочку. Вы, вероятно, тоже не знаете, потому что bash является оболочкой по умолчанию в большинстве дистрибутивов Linux.

В то время как useradd-х поведение можно немного изменить, отредактировав /etc/login.defs, существует мало шансов, что приведенная выше команда создаст полную учетную запись пользователя. Useradd является низкоуровневая утилита. Тем не менее, просмотр настроек в /etc/login.defs может быть полезен.

Синтаксис команды useradd

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

Синтаксис команды следующий:

useradd опцииимяпользователя

Создание нового пользователя

Чтобы просто создать пользователя используется команда useradd без каких-либо опций. Указывается только имя пользователя.

sudo useradd pupkin

Данная команда создает нового пользователя с системными параметрами по умолчанию, которые прописаны в файле /etc/default/useradd

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

sudo passwd pupkin

Создание нового пользователя с домашней директорией в /home

Создадим пользователя и его домашнюю директорию.

sudo useradd -m pupkin

Домашняя директория создается по умолчанию в каталоге /home. Имя директории совпадает с именем пользователя.

Создание нового пользователя с произвольной домашней директорией

Чтобы создать пользователя с домашней директорией, расположенной в произвольном месте, используется опция -d, после которой указывается путь до директории. Директорию необходимо создать заранее.

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

sudo mkdir -p /users/pupkin

Копируем файлы и директории, которые по умолчанию создаются в домашней директории пользователя в данной системе. Данные файлы находятся в директории /etc/skel

sudo cp -rT /etc/skel /users/pupkin

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

sudo useradd -d /users/pupkin pupkin

Меняем права доступа у домашней директории:

sudo chown -R pupkin:pupkin /users/pupkin

Задаем пароль для пользователя:

sudo passwd pupkin

Можно просмотреть информацию о пользователе, которая сохранена в файле /etc/passwd

cat /etc/passwd | grep pupkin pupkin:x:1001:1001::/users/pupkin:/bin/sh

Команда useradd. Создание пользователя с произвольной домашней директорией

Создание нового пользователя с произвольными UID, GID

Каждый пользователь в Linux имеет свой числовой идентификатор — UID, а также идентификатор основной группы пользователя — GID.

При создании пользователя можно задать произвольные номера UID и/или GID. При указании номера группы, группа с этим номером должна быть создана заранее.

useradd -u 1234 -g 1222 pupkin

Создание пользователя с указанием оболочки (shell)

По умолчанию новые пользователи создаются с оболочкой /bin/sh Чтобы задать другую оболочку, используется опция -s /путь/до/оболочки

sudo useradd -m -s /bin/bash pupkin

Смотрите также: Как определить и изменить командную оболочку (shell) в Linux

Создать пользователя и добавить его в группы

Обычно пользователи в Linux принадлежат нескольким группам. Чтобы при создании нового пользователя задать группы, к которым он будет принадлежать, используется опция -G список,групп

sudo useradd -m -G adm,cdrom,wheel -s /bin/bash pupkin

Смотрите также: «Добавление пользователя в группу. Списки пользователей и групп в Linux»

В чем отличия adduser и useradd?

useradd — это низкоуровневая утилита для создания пользователей в Linux.

adduser — представляет собой более простое решение для создания пользователей и по факту является надстройкой над useradd, groupadd и usermod.

Утилита adduser доступна не во всех дистрибутивах Linux. Реализация adduser также может отличаться. Если в дистрибутиве присутствует утилита adduser, то для создания пользователей рекомендуется использовать именно ее.

Команда Adduser

Adduser недоступен. в некоторых дистрибутивах Linux. На других это мягкая ссылка на useradd. В то время как на некоторых других, это сценарий Perl.

Adduser – это интерактивная утилита высокого уровня. В качестве бэкэнда используется утилита низкого уровня useradd. Настройки в /etc/login.defs будут использоваться при использовании adduser. На дистрибутивах, основанных на Debian, даже страница man рекомендует использовать его с помощью команды useradd.

Вызов adduser только с именем пользователя проведет вас через ряд вопросов.

Команда Adduser

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

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

sudo useradd -d /home/test -m -s/bin/bash -c FullName,Phone,OtherInfo test && passwd test

В опции -с могут быть удалены без проблем, то разделенный запятыми список, который следует будут добавлены комментарии к /etc/passwd. Но даже тогда adduser сохраняет две дополнительные команды.

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

  • –system: добавить системного пользователя. По умолчанию системные пользователи помещаются в группу nogroup. Чтобы добавить системного пользователя в существующую группу, укажите параметр –gid или –ingroup.
  • –home DIR: использовать DIR в качестве домашнего каталога вместо стандартного. При необходимости будет создан каталог и скопированы файлы скелета.
  • –shell SHELL: используйте SHELL вместо значения по умолчанию.
  • –ingroup GROUP: установить первичную группу пользователя на GROUP
  • –add_extra_groups: добавить нового пользователя в дополнительную группу, определенную в файле конфигурации.

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

  • Оболочка по умолчанию
  • Домашний каталог
  • Дополнительные группы
  • Добавить дополнительные группы


[spoiler title=”Источники”]

  • https://linuxinsider.ru/kak-sozdat-polzovatelya-linux/
  • https://www.dmosk.ru/miniinstruktions.php?mini=linux-users
  • http://rus-linux.net/MyLDP/consol/15-primerov-po-useradd.html
  • https://andreyex.ru/linux/komandy-linux-i-komandy-shell/useradd-protiv-adduser-v-chem-raznitsa/
  • https://pingvinus.ru/note/useradd


[/spoiler]


2020-07-27T15:39:49
Linux

Как Переименовать Файл в Linux: Пошаговое Руководство



























Rate this post

В основной форме вам нужно дать имя старого файла с последующим новым именем файла в команде mv для того, чтобы переименовать файл в Linux. Допустим, у вас есть файл с именем «andreyex.txt», и вы хотите переименовать его в «Linuxroutes.txt». Используйте следующую команду:


[root@destroyer]# mv andreyex.txt Linuxroutes.txt

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


[root@destroyer]# mv /tmp/mann/andreyex.txt /tmp/mann/Linuxroutes.txt

Полный вывод для переименования файла в Linux

В случае, если вы хотите узнать информацию о переименовании. То вы должны использовать опцию -v вместе с командой mv, как показано ниже:


[root@destroyer]# mv -v andreyex.txt Linuxroutes.txt `andreyex.txt’ -> `Linuxroutes.txt’ [root@destroyer]#

В командной строке выше выводиться информация, которая подтверждает, что файл «andreyex.txt» был переименована в «Linuxroutes.txt».

Интерактивное переименования файлов в Linux

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


[root@destroyer]# mv -i andreyex.txt Linuxroutes.txt mv: overwrite `Linuxroutes.txt’? y [root@destroyer]#

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

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

mv -u /tmp/Linuxroutes.dat /tmp/mann/Linuxroutes.dat

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

В случае, если вы хотите переименовать несколько файлов за один раз, то вы должны использовать команду rename. Допустим, у вас есть файлы с расширением «.txt» и вы хотите переименовать его в расширение «.dat».


[root@destroyer]# ll total 20 -rw-r–r– 1 root mmadmin 18 May 27 14:36 1.txt -rw-r–r– 1 root mmadmin 18 May 27 14:36 2.txt -rw-r–r– 1 root mmadmin 18 May 27 14:36 3.txt -rw-r–r– 1 root mmadmin 18 May 27 14:37 4.txt -rw-r–r– 1 root mmadmin 18 May 27 14:36 Linuxroutes.txt[root@destroyer]# rename .txt .dat *.txt [root@destroyer]# ll total 20 -rw-r–r– 1 root mmadmin 18 May 27 14:36 1.txt -rw-r–r– 1 root mmadmin 18 May 27 14:36 2.txt -rw-r–r– 1 root mmadmin 18 May 27 14:36 3.txt -rw-r–r– 1 root mmadmin 18 May 27 14:37 4.txt -rw-r–r– 1 root mmadmin 18 May 24 12:22 Linuxroutes.dat [root@destroyer]#

Как Переименовать Файл в Linux с Помощью Команды mv

Команда mv (сокращенно от «move») является одной из самых простых команд. Однако она выполняет две очень важные задачи при работе с файлами в Linux. Первая задача — перемещает файлы из одного места в другое, а вторая — переименовывает один или несколько файлов через терминал.

В первую очередь давайте посмотрим, как c помощью mv можно переименовать файл в Linux.

Для начала, мы обратимся к нашему серверу через командную строку, используя SSH (англ). Если вам нужны дополнительные инструкции по SSH, рекомендуем прочитать это руководство.

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

ssh vash-user@vash-server

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

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

mv –help

Базовый синтаксис команды mv выглядит следующим образом:

mv [опция] [ИСХОДНЫЙ_ФАЙЛ]…[ДИРЕКТОРИЯ]

Вот список самых популярных опций mv:

  • -f – не показывать сообщение перед перезаписью файла.
  • -i – показывать предупреждающие сообщения перед перезаписью файла.
  • -u – перемещать файл, только если он новый или не существует в месте назначения.
  • -v – показать, что делает команда.

И параметры:

[ИСХОДНЫЙ_ФАЙЛ] — исходное местоположение файла

[МЕСТО_НАЗНАЧЕНИЯ] — каталог назначения.

Переименование Файла в Linux с Помощью Команды mv

Если мы хотим переименовать файл, мы можем сделать это так:

mv staroje_nazvanije_faila1 novoje_nazvanije_faila1

Допустим, что мы находимся в каталоге и у нас есть файл с именем file1.txt. Мы хотим изменить имя этого файла на file2.txt. В таком случае наша команда будет выглядеть так:

mv file1.txt file2.txt

Всё очень просто. Однако, если вы не в каталоге, вам нужно будет немного расширить команду. Вот её пример:

cd /home/user/docs/files mv file1.txt file2.txt

Как Переименовать Несколько Файлов с Помощью Команды mv

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

Давайте возьмём циклы findfor, или while и переименуем несколько файлов.

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

for f in *txt; do mv — “$f” “${f%.txt}.pdf” done

Она создаст цикл (for), который найдёт все файлы с расширением .txt, и заменит каждое расширение .txt на .pdf. Наконец, команда завершит цикл (done).

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

Переименование файла

Переименование файла myfile1.dat в файл myfile2.dat:

mv myfile1.dat myfile2.dat

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

mv /home/pingvinus/myfile1.dat /home/pingvinus/myfile2.dat

Переименование директории

Переименование директории /home/pingvinus/mydir1 в директорию /home/pingvinus/mydir2. Справедливо, если /home/pingvinus/mydir2 не существует.

mv /home/pingvinus/mydir1 /home/pingvinus/mydir2

Если /home/pingvinus/mydir2 существует, то, выполнив команду:

mv /home/pingvinus/mydir1 /home/pingvinus/mydir2

директория mydir1 будет перемещена внутрь директории /home/pingvinus/mydir2. То есть mydir1 будет в результате находиться по адресу /home/pingvinus/mydir2/mydir1.

Переименование и перемещение

Если в качестве файла назначения указан новый путь и новое имя файла, то файл будет перемещен и переименован. Например, следующая команда перемещает файл myfile1.dat в директорию /home/pingvinus/dir и переименовывает его в myfile2.dat:

mv /home/pingvinus/myfile1.dat /home/pingvinus/dir/myfile2.dat

Как Переименовать Файл в Linux с Помощью Команды Rename

С утилитой rename у вас будет немного больше контроля. Многие конфигурации Linux включают её по умолчанию. Но, если она не установлена, вы можете быстро это сделать с помощью простой команды.

Если вы используете Debian, Ubuntu, LinuxMint и их производные:

sudo apt install rename

Если же вы пользователь CentOS 7 или RHEL:

sudo yum install rename

Команда для установки rename в Arch Linux:

yay perl-rename ## or yaourt -S perl-rename

Теперь мы можем начать использовать команду rename. Её основной синтаксис выглядит так:

rename ‘s/staroje-nazvanije/novoje-nazvanije/’ files

Команда выглядит сложнее, чем есть на самом деле.

В примере ниже мы создадим новую папку с именем filetorename и 5 файлов, используя для этого команду touch.

mkdir filetorenamecd filetorenametouch file{1..5}.txtls

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

Если мы хотим переименовать только один файл с названием file1.txt, мы напишем следующую строку:

rename ‘s/file1/newfile1/’ file1.txt

Если же мы хотим изменить расширение всех файлов, например, на .php. Мы могли бы сделать это так:

rename ‘s/.txt/.php/’ *.txtls

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

rename ‘s/.txt/.php/’ ФАЙЛ/ПУТЬ

Важно отметить, что rename использует регулярное выражение Perl, а это означает широкие возможности команды.

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

rename –help

Распространённые примеры использования команды rename:

  • Преобразовать имена файлов в верхний регистр:rename ‘y/a-z/A-Z/’ *
  • Преобразовать имена файлов в нижний регистр:rename ‘y/A-Z/a-z/’ *
  • Заменить пробелы в именах файлов символами подчёркивания:rename ‘y/ /_/’ *

Изменение расширения файлов

Массово изменить расширение .html на .php у всех html-файлов.

rename ‘s/.html/.php/’ *.html

По умолчанию rename не перезаписывает существующие файлы. Чтобы существующие файлы перезаписывались, используется опция -f:

rename -f ‘s/.html/.php/’ *.html

Замена пробелов на подчеркивание

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

rename ‘y/ /_/’ *

Конвертация имен файлов в строчные буквы

rename ‘y/A-Z/a-z/’ *

Конвертация имен файлов в прописные буквы

rename ‘y/a-z/A-Z/’ *

Показать, что именно будет переименовано, но не переименовывать

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

Например, мы хотим изменить расширение у файлов с .jpeg на .jpg. Используем опцию -n, чтобы просто вывести какие файлы будут переименованы:

rename -n ‘s/.jpeg$/.jpg/’ * class=”line”>

Полное описание команд mv и rename можно получить, выполнив в терминале команды:

man mv man rename

Как Удалить Утилиту Remove

Если вы больше не хотите, чтобы команда rename была установлена в вашей системе, удалите её с помощью диспетчера ПО или из терминала.

Для Debian, Ubuntu, Linux Mint и производных:

sudo apt remove rename

Для CentOS и RHEL:

sudo yum remove rename

Вот и всё, rename удалено с вашей машины Linux.

Команда rename для переименования файла Linux

Для воплощения данной задумки в жизнь юзер системы может воспользоваться командой под названием «rename». Как и её аналоги, она тоже разработана для этих целей, но имеет за собой более обширный функционал. С её помощью легко выполнить массовое переименование документов Линукс. В отдельно взятых случаях это действительно необходимо.

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

 rename опции старое_имя новое_имя файлы

Какие функции программы могут потребоваться пользователю Linux:

  • v – демонстрация перечня файлов, которые были обработаны.
  • n – запуск пробного режима (теста) для более подробного изучения специфики команды. Это означает, что заданные манипуляции не будут реализованы на практике.
  • -f – опция для принудительной перезаписи файлов, которые уже наличествуют в системе.

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

$ rename ’s.txt/.doc/’ *.txt

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

Способ 1: pyRenamer

К сожалению, программное обеспечение pyRenamer не поставляется в стандартном наборе предустановок дистрибутива. Однако, как и все в Linux, его можно скачать и установить из официального репозитория. Команда для загрузки и установки следующая:

sudo apt install pyrenamer

После ее ввода укажите пароль и нажмите Enter. Далее необходимо будет подтвердить выполняемые действия. Для этого введите букву «Д» и нажмите снова Enter. Останется лишь подождать загрузки и установки (не закрывайте «Терминал» до завершения процесса).

После установки программу можно будет запустить, предварительно совершив поиск по системе с ее названием.

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

Давайте рассмотрим работу по переименованию файлов в программе:

  1. Открыв программу, вам необходимо проложить путь к директории, где находятся файлы, которые нужно переименовать. Делается это в левом рабочем окне (1). После определения директории в правом рабочем окне (2) будут показаны все файлы, находящиеся в ней.
  2. Далее необходимо перейти во вкладку «Substitutions».
  3. В этой вкладке вам нужно поставить галочку рядом с пунктом «Replace», чтобы поля для ввода стали активными.
  4. Теперь можно приступать к переименованию файлов в выбранной директории. Рассмотрим на примере четырех файлов «Безымянный документ» с порядковым числом. Допустим, нам необходимо заменить слова «Безымянный документ» на слово «Файл». Для этого нужно в первое поле ввести заменяемую часть имени файла, в данном случае «Безымянный документ», а во второе фразу, которая будет заменять — «Файл».
  5. Чтобы просмотреть, что получится в итоге, можно нажать кнопку «Preview» (1). Все изменения отобразятся в графе «Renamed file name» в правом рабочем окне.
  6. Если изменения вас устраивают, вы можете нажать кнопку «Rename», чтобы применить их к выбранным файлам.

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

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

Способ 2: Терминал

К сожалению, не всегда получается переименовать файл с помощью специальных программ с графическим интерфейсом. Порою может возникнуть ошибка или что-то подобное, мешающее выполнению данной задачи. Но в Линуксe есть куда более одного способа выполнения поставленной задачи, поэтому переходим прямиком в «Терминал».

Команда mv

Команда mv в Линуксе отвечает за перемещение файлов из одной директории в другую. Но по своей сути перемещение файла схоже с переименованием. Так, используя эту команду, если переместить файл в ту же папку, в которой он находится, при этом задав новое имя, получится его переименовать.

Теперь давайте подробно разберемся с командой mv.

Синтаксис и опции команды mv

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

mv опция оригинальное_имя_файла имя_файла_после_переименования

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

  • -i — запрашивать разрешении при замене существующих файлов;
  • -f — заменять существующий файл без разрешения;
  • -n — запретить замену существующего файла;
  • -u — разрешить замену файла, если в нем присутствуют изменения;
  • -v — показать все обработанные файлы (список).

После того как мы разобрались со всеми особенностями команды mv, можно приступать непосредственно к самому процессу переименования.

Примеры использования команды mv

Сейчас будет рассмотрена ситуация, когда в папке «Документы» находится файл с именем «Старый документ», наша задача переименовать его в «Новый документ», используя для этого команду mv в «Терминале». Для этого нам необходимо вписать:

mv -v “Старый документ” “Новый документ”

Примечание: чтобы операция прошла успешно, необходимо нужную папку открыть в «Терминале» и только после этого проводить все манипуляции. Открыть папку в «Терминале» можно при помощи команды cd.

Пример:


Как можно видеть на изображении, нужный нам файл получил новое имя. Обратите внимание, что в «Терминале» указана опция «-v», которая строчкой ниже вывела подробный отчет о выполненной операции.

Также, используя команду mv, можно не только переименовать файл, но и попутно переместить его в другую папку. Как говорилось выше, данная команда именно для этого и нужна. Чтобы это сделать надо, помимо указания имени файла, прописать путь к нему.

Допустим, вы хотите из папки «Документы» переместить файл «Старый документ» в папку «Видео» попутно переименовав его в «Новый документ». Вот как будет выглядеть команда:

mv -v /home/user/Документы/”Старый документ” /home/user/Видео/”Новый документ”

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

Пример:


Примечание: если к папке, в которую вы собираетесь переместить файл, попутно переименовав его, у вас нет прав доступа, необходимо выполнять команду через суперпользователя, прописав в начале «super su» и введя пароль.

Команда rename

Команда mv хороша, когда необходимо переименовать один файл. И, безусловно, замены ей в этом не найти — она лучшая. Однако, если необходимо переименовать множество файлов или же заменить лишь часть имени, то фаворитом становится команда rename.

Синтаксис и опции команды rename

Как и с прошлой командой, для начала разберемся с синтаксисом rename. Выглядит он следующим образом:

rename опция ‘s/старое_имя_файла/новое_имя_файла/’ имя_файла

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

Теперь давайте рассмотрим опции, они следующие:

  • -v — показать обработанные файлы;
  • -n — предварительный просмотр изменений;
  • -f — принудительно переименовать все файлы.

Теперь давайте рассмотрим наглядные примеры данной команды.

Примеры использования команды rename

Допустим, в директории «Документы» у нас есть множество файлов с названием «Старый документ num», где num — это порядковый номер. Наша задача, используя команду rename, во всех этих файлах изменить слово «Старый» на «Новый». Для этого нам необходимо выполнить следующую команду:

rename -v ‘s/Старый/Новый/’ *

где, «*» — все файлы в указанной директории.

Примечание: если вы хотите провести изменение в одном файле, то вместо «*» пропишите его имя. Не забывайте, если имя состоит из двух и более слов, то его необходимо брать в кавычки.

Пример:


Примечание: с помощью данной команды можно запросто изменить расширения файлов, указав изначально старое расширения, записав его, например, в виде «.txt», а затем новое, например, «.html».

С помощью команды rename также можно менять регистр текста имени. Например, мы хотим файлы с именем «NEW FILE (num)» переименовать в «new file (num)». Для этого нужно прописать следующую команду:

rename -v ‘y/A-Z/a-z/’ *

Пример:


Примечание: если необходимо поменять регистр в имени файлов на русском, то используйте команду «rename -v ‘y/А-Я/а-я/’ *».

Способ 3: Файловый менеджер

К сожалению, в «Терминале» не всякий пользователь сможет разобраться, поэтому будет разумно рассмотреть способ переименования файлов с использованием графического интерфейса.

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

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

  1. Для начала вам необходимо открыть сам менеджер и перейти в ту директорию, где расположен файл, нуждающийся в переименовании.
  2. Теперь необходимо навести курсор на него и нажать левую кнопку мыши (ЛКМ), чтобы выделить. После чего клавишу F2 или правую клавишу мыши и выбрать пункт “Переименовать”.
  3. Под файлом появится форма для заполнения, а само имя файла станет выделенным. Вам остается лишь ввести необходимое название и нажать клавишу Enter для подтверждения изменений.

Вот так просто и быстро можно переименовать файл в Линуксe. Представленная инструкция работает во всех файловых менеджерах различных дистрибутивов, однако могут быть различия в наименовании каких-то элементов интерфейса или в их отображении, но общий смысл действий остается одинаковым.


[spoiler title=”Источники”]

  • https://andreyex.ru/operacionnaya-sistema-linux/polnoe-rukovodstvo-pereimenovat-fajl-v-linux/
  • https://www.hostinger.ru/rukovodstva/kak-pereimenovat-fail-linux/
  • https://pingvinus.ru/note/rename-files
  • https://www.vseprolinux.ru/kak-pereimenovat-fajl-v-linux
  • https://lumpics.ru/how-to-rename-a-file-in-linux/


[/spoiler]


2020-07-27T15:39:45
Linux

Как удалить файл в Linux



























4/5 — (2 голоса)

  • Чтобы удалить один файл, используйте команду rm, за которой следует имя файла:rm filename

    Если файл защищен от записи, вам будет предложено подтвердить ее, как показано ниже. Чтобы удалить файл введите y и нажмите Enter. В противном случае, если файл не защищен от записи, он будет удален без запроса.

    rm: remove write-protected regular empty file ‘filename’?

  • Чтобы удалить сразу несколько файлов, используйте команду rm, за которой следуют имена файлов, разделенные пробелом.rm filename1 filename2 filename3

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

    rm *.pdf

    Когда вы используете rm с wildcards ( *) и регулярными расширениями, рекомендуется перечислить файлы с помощью команды ls, чтобы вы могли видеть, какие файлы будут удалены перед запуском команды rm.

  • Используйте опцию -i для подтверждения каждого файла перед удалением:rm -i filename(s)
  • Чтобы удалить файлы без запроса, даже если файлы защищены от записи, используйте параметр -f(force):rm -f filename(s)
  • Вы также можете комбинировать параметры rm. Например, чтобы удалить все файлы .txt в текущем каталоге без подсказки в подробном режиме, используйте следующую команду:rm -fv *.txt

Удаляем файлы в Linux: практика

В ОС Linux для удаления файлов есть стандартная утилита rm. Как это принято со стандартными утилитами, в названии rm есть определённая идея. В нашем случае речь идёт о сокращении от английского слова Remove — удалять.

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

rm filename

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

rm /home/user/filename

Бывает, что файл защищён от записи. Тогда нам предложат подтвердить команду. Чтобы удалить файл в такой ситуации, просто вводим y и нажимаем Enter.

rm: remove write-protected regular empty file ‘filename’?

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

rm filename1 filename2 filename3

Ещё вариант — использование подстановочного знака * и регулярных выражений для соответствия определённым файлам. К примеру, мы легко удалим все файлы в Linux, имеющие расширение .txt следующей командой:

rm *.txt

Для подтверждения каждого файла перед удалением используйте опцию -i:

rm -i filename(s)

Но когда файлов много, а вы твёрдо уверены в правильности своей команды и не хотите каждый раз отвечать на вопрос системы, используйте противоположную опцию -f. Будут удалены все файлы безоговорочно, т. е. без лишних вопросов:

rm -f filename(s)

Способ 1: Терминал

Работа с файлами в «Терминале» кардинально отличается от работы в файловом менеджере. Как минимум, в нем нет визуализации — все данные вы будете вводить и получать в окне, имеющем вид традиционной для Windows командной строки. Однако именно через этот элемент системы удастся отследить все ошибки, возникающие при выполнении той или иной операции.

Подготовительные мероприятия

Используя «Терминал» для создания или удаления файлов в системе, вам необходимо предварительно указать в нем директорию, в которой будут выполняться все последующие операции. В противном случае все созданные файлы будут находиться в корневом каталоге («/»).

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

Файловый менеджер

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

/home/Имя_Пользователя/Документы

Чтобы открыть эту директорию в «Терминале», вам необходимо сначала открыть ее в файловом менеджере, а затем, нажав ПКМ, выбрать в контекстном меню пункт «Открыть в терминале».


По итогу откроется «Терминал», в котором будет указана выбранная директория.


Команда cd

Если вы не хотите пользоваться предыдущим способом или не имеете доступа к файловому менеджеру, вы можете указать директорию, не выходя из «Терминала». Для этого используют команду cd. Все что нужно сделать, это написать данную команду, указав затем путь к директории. Разберем это так же на примере папки «Документы». Впишите команду:

cd /home/Имя_Пользователя/Документы

Вот пример выполняемой операции:


Как видно, необходимо изначально ввести путь к директории (1), а после нажатия клавиши Enter в «Терминале» должна отобразиться выбранная директория (2).

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

Создание файлов через «Терминал»

Для начала откройте сам «Терминал», нажав сочетание клавиш CTRL + ALT + T. Теперь можно начинать создание файлов. Для этого есть возможность воспользоваться шестью разными способами, которые будут продемонстрированы ниже.

Утилита touch

Предназначение команды touch в Linux — изменение временной метки (время изменения и время использования). Но если введенного имени файла утилита не найдет, она автоматически создаст новый.

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

touch «Имя_Файла» (обязательно в кавычках).

Вот пример такой команды:


Функция перенаправления процесса

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

> «Имя_Файла» (обязательно в кавычках)

Пример:


Команды echo и функция перенаправления процесса

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

echo > «Имя_Файла» (обязательно в кавычках)

Пример:


Утилита cp

Как и в случае с утилитой touch, главным предназначением команды cp не является создание новых файлов. Она необходима для копирования. Однако задав переменную «null», вы создадите новый документ:

cp /dev/null «Имя_Файла» (обязательно без кавычек)

Пример:


Команда cat и функции перенаправления процесса

cat — это команда, служащая для связки и просмотра файлов и их содержимого, но стоит ее использовать вместе с перенаправлением процесса, как она сразу создаст новый файл:

cat /dev/null > «Имя_Файла» (обязательно в кавычках)

Пример:


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

Именно у утилиты vim главное предназначение — это работа с файлами. Однако у нее нет интерфейса — все действия выполняются через «Терминал».

К сожалению, vim предустановлена не на всех дистрибутивах, например, в Ubuntu 16.04.2 LTS ее нет. Но это не беда, ее запросто можно скачать из репозитория и установить на свой компьютер, не покидая «Терминал».

Примечание: если текстовый консольный редактор vim у вас уже установлен, то пропустите этот шаг и переходите сразу к созданию файла с его помощью

Для установки введите команду:

sudo apt install vim

После нажатия Enter потребуется ввести пароль. Вводите его и ждите окончания загрузки и установки. В процессе у вас могут потребовать подтверждение выполнения команды — введите букву «Д» и нажмите Enter.


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


После установки текстового редактора vim можно приступить к созданию файлов в системе. Для этого нужно воспользоваться командой:

vim -c wq «Имя_Файла» (обязательно в кавычках)

Пример:


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

Удаление файлов через «Терминал»

Удаление файлов в «Терминале» практически ничем не отличается от их создания. Главное — знать все необходимые команды.

Важно: удаляя файлы из системы через «Терминал», вы их стираете безвозвратно, то есть, в «Корзине» их отыскать потом не получится.

Команда rm

Именно команда rm служит в Linux для удаления файлов. Вам всего-навсего нужно указать директорию, ввести команду и вписать имя файла, который нужно удалить:

rm «Имя_Файла» (обязательно в кавычках)

Пример:


Как можно заметить, после выполнения данной команды в файловом менеджере пропал файл «Новый документ».

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

rm *

Пример:


Выполнив эту команду, вы можете видеть как в файловом менеджере удалились все ранее созданные файлы.

Способ 2: Файловый менеджер

Файловый менеджер любой операционной системы (ОС) хорош тем, что он дает возможность наглядно отследить все проводимые манипуляции, в отличие от «Терминала» с его командной строкой. Однако есть и минусы. Один из них: нет возможности детально проследить за процессами, которые выполняются при той или иной операции.

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

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

Создаем файл в файловом менеджере

Необходимо делать следующее, чтобы создать файл:

  1. Открыть файловый менеджер (в данном случае Nautilus), нажав по его иконке на панели задач или проведя поиск по системе.
  2. Перейти в необходимую директорию.
  3. Нажать правой кнопкой мыши (ПКМ) по пустому месту.
  4. В контекстном меню навести курсор на пункт «Создать документ» и выбрать необходимый вам формат (в данном случае формат один — «Пустой документ»).
  5. После этого в директории появится пустой файл, которому остается лишь задать имя.

Как удалить файл в Linux с помощью настольного файлового менеджера

Любой, кто работает с Windows или macOS, найдет среду рабочего стола Linux очень знакомой. Обозреватель файлов в большинстве сред рабочего стола Linux, таких как Ubuntu GNOME или Mint’s Cinnamon, действительно облегчает управление файлами в Linux для среднего пользователя, который может быть не знаком с интерфейсами командной строки..

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

  • Откройте для себя лучшие приложения Linux 2020 года

Вы можете сделать это, щелкнув левой кнопкой мыши по файлу и нажав клавишу «Удалить» на клавиатуре. Это работает для групп файлов, которые вы выбрали их с помощью поля выбора или CTRL / SHIFT + щелчок левой кнопкой мыши. Кроме того, вы можете щелкнуть правой кнопкой мыши файл или один из выбранных вами файлов и выбрать «Переместить в корзину» из контекстного меню..

Как только файлы окажутся в мусорном контейнере, вам нужно будет очистить его вручную, чтобы окончательно удалить файлы внутри него. Вы можете сделать это, щелкнув правой кнопкой мыши «Корзина» на боковой панели навигации большинства файлового обозревателя и выбрав «Очистить корзину».

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


(Изображение предоставлено: Будущее)

В некоторых средах рабочего стола, таких как Mint’s Cinnamon, также есть возможность постоянного удаления файла прямо из контекстного меню, полностью обходя контейнер Trash..

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


(Изображение предоставлено: Будущее)

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

  • Это лучшие ноутбуки Linux на рынке прямо сейчас
  • Узнайте, какие из лучших дистрибутивов Linux 2020 года
  • Проверьте лучшие дистрибутивы Linux для конфиденциальности и безопасности в 2020 году

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


(Изображение предоставлено: Будущее)

Удаляем папки и каталоги в Linux

Если хотите удалить пустой каталог, задействуйте опцию -d.

rm -d dirname

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

rm -r dirname

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

rm -rf dirname

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

rm -r dirname1 dirname2 dirname3

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

Удаление через rm

Для удаления файла, необходимо ввести команду rm и название документа.

rm dokument


Данная команда удалит dokument, с некоторыми особенностями:

  • Интерпретатор запросит подтверждение на операцию.
  • В примере предполагается, что dokument находится в домашнем каталоге как и пользователь (/root/).

Удалим файл “newfile” из каталога /usr/games.

rm /usr/games/newfile


Удалить все файлы в папке.

rm -f /usr/games/*

Ключ “-f” даст возможность не выводить запрос на подтверждение операции. Однако, команда выше очистит только все файлы из каталога “games” не трогая директории.

Если нужно очистить систему от всех файлов, которые заканчиваются «.doc», следует приписать в самом конце команды символ «*», без пробела.

rm -f /usr/games/*.doc

Утилита Remove (rm) требует особой осторожности в работе. При халатном отношении к делу пользователь может навсегда стереть важные файлы.

Чтобы подобный казус не случился, рекомендуется совершать удаление файлов при помощи стандартной программы rm с добавлением опции -i. Она станет некой перестраховкой в данном вопросе – система начнет запрашивать подтверждение пользователя перед удалением файлов из каталога. Как это выглядит на практике:

rm -i /root/*.doc

Если пользователю не нужен запрос на подтверждение, и он на 100% уверен в правильности своих дальнейших действий, можно вписать в команду опцию с противоположным воздействием на процесс (-f).

rm -i /usr/games/*.doc

Удаление через find

Для реализации задуманного можно воспользоваться еще одной альтернативной программой find. Кроме того, она пригодится даже там, где rm не осилит поставленную задачу. Её синтаксис выглядит следующим образом:

$ find папка критерий действие

К примеру, пользователю нужно очистить текущий каталог от всех файлов с названием «file». Их можно найти и уничтожить следующим способом:

find . -type f -name «file» -delete

Чтобы удалить устаревшие логи (то есть, файлы старше конкретного срока), используйте специальную команду в виде:

$ find /path/to/files* -mtime +5 –exec rm {} ;

Исходя из заданной команды, можно понять, что Линукс удалит из текущего каталога все файлы, «возраст» которых превышает 5 дней. Вот видите, как легко управлять устройством посредством терминала!

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

Через shred

Чтобы очистить систему от документа без возможности его дальнейшего восстановления, нужно использовать специальную команду под названием «shred». Как только срабатывает команда, файл удаляется, и система неоднократно перезаписывает его место на диске. Как это выглядит на практике:

$ shred /root/file

Что происходит далее? Система перезаписывает место на диске 3 раза (по умолчанию), но это количество поддается коррективам. Используйте опцию -n, если нужно что-то поменять. Добавление опции -z также повлияет на итоговый результат. С ней система запишет место на диске нулями, чтобы никто не мог догадаться о том, что определенный файл был уничтожен пользователем.

Синтаксис и опции команды rm

Команда «rm» имеет множество опций, что позволяет очень тонко управлять процессом удаления файлов. Вы можете изучить все доступные опции если введете в терминал Linux команду «man rm». Здесь же мы будем рассматривать самые простые и часто используемые опции.

Синтаксис команды «rm» выглядит следующим образом:

rm [опции] файлы

Разберем основные опции команды rm:

-f, –force Игнорировать несуществующие файлы и не требовать подтверждения перед удалением. -i Требовать подтверждения перед каждым удалением. -I Запрашивать подтверждение один раз перед удалением более трех файлов или при рекурсивном удалении. -r, -R, –recursive Рекурсивное удаление каталогов и их содержимого. -v, –verbose Вывод подробной информации о процессе. –help Вывод справочной информации о команде.

Теперь разберем некоторые опции, которые часто используются при удалении файлов в Linux через терминал. Например, очень часто возникает необходимость удалить папку вместе с всем содержимым. Для этого нужно использовать опцию «-r», которая включает рекурсивный обход папок. Например, для того чтобы удалить папку «folder1» и все ее содержимое нужно выполнить:

rm -r folder1/

Если права доступа к файлу разрешают только чтение, то в терминале Linux появится запрос подтверждения, и чтобы продолжить вам нужно будет ввести букву «y» (от англ. «yes»).


Чтобы избежать такой ситуации и удалять все файлы без предупреждения нужно использовать опцию «-f». Например:

rm -f file.txt

Не редко возникает необходимость удалить папку вместе со всеми файлами и без запросов на подтверждение. В этом случае нужно комбинировать опции «-r» и «-f». В результате команда выглядит вот так:

rm -rf folder1/

Если вы, наоборот, хотите каждый раз получать запрос подтверждения, то команду «rm» нужно выполнять с опцией «-i». Например, для того чтобы удалить все файлы в текущем каталоге с запросом подтверждения нужно выполнить:

rm -i *

Также бывает полезной опция «-v». При ее использовании в терминале будет появляться подробная информация о выполняемых действиях. Например, для того чтобы удалить все файлы в текущем каталоге и вывести информацию в терминал нужно выполнить:

rm -v *

Также вывод информации можно перенаправить в файл. Для этого после команды нужно использовать оператор перенаправления вывода (>) и указать название файла. Например:

rm -v * > delete.log

Естественно все эти опции можно комбинировать, в зависимости от ваших задач.

Как удалить каталоги (папки)

  • Для удаления пустого каталога используйте эту опцию -d.rm -d dirname
  • Чтобы удалить непустые каталоги и все файлы внутри них, используйте параметр r (рекурсивный).rm -r dirname

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

  • Чтобы удалить непустые каталоги и все файлы без запроса, используйте r (рекурсивные) и параметр -f.rm -rf dirname
  • Чтобы удалить сразу несколько каталогов, используйте команду rm, за которой следуют имена каталогов, разделенные пробелом.rm -r dirname1 dirname2 dirname3

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

Выводы

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


[spoiler title=”Источники”]

  • https://andreyex.ru/operacionnaya-sistema-linux/kak-udalyat-fajly-i-katalogi-s-pomoshhyu-komandnoj-stroki-linux/
  • https://otus.ru/nest/post/981/
  • https://lumpics.ru/how-create-or-delete-file-in-linux/
  • https://ru.ditching.eu/kak-udalit-fajl-v-linux/
  • https://www.vseprolinux.ru/udalit-fajl-linux
  • https://comp-security.net/%D0%BA%D0%B0%D0%BA-%D1%83%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C-%D1%84%D0%B0%D0%B9%D0%BB-%D0%B2-linux-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB/
  • https://losst.ru/kak-udalit-fajl-cherez-terminal-linux


[/spoiler]


2020-07-27T15:39:45
Linux

Команда grep в операционных системах Linux позволяет производить поиск по содержимому файлов с применением различных аргументов для упрощения выполнения задачи



























Rate this post

 

Рассмотрим синтаксис.

grep [параметры] шаблон [имя файла]

Или так:

Команда | grep шаблон

Здесь под параметрами понимаются аргументы,  с помощью которых настраивается поиск и вывод на экран. Например нужно найти слово “линукс”, и не учитывать регистр при поиске. Тогда нужно использовать опцию “-i”.

Шаблон – это выражение или строка.

Имя файла – где искать.

Основные параметры:

–help. Вывести справочную информацию.

-i. Не учитывать регистр при поиске.

-V. Узнать текущую версию.

-v. Инвертированный поиск.

-s. Не выводить на экран сообщения об ошибкам. Например сообщение о несуществующих файлах.

-r. Поиск в каталогах, подкаталогах или рекурсивный grep.

-w. Искать как слово с пробелами.

-с. Опция считает количество вхождений (счетчик).

-e. Регулярные выражения.

Используем команду grep в Linux

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

Подготовительные работы

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

  1. Запустите файловый менеджер и переместитесь в нужную папку.
  2. Нажмите правой кнопкой мыши на требуемом файле и выберите пункт «Свойства».
  3. Во вкладке «Основные» ознакомьтесь со строкой «Родительская папка».
  4. Теперь запустите «Терминал» удобным методом, например, через меню или зажатием комбинации клавиш Ctrl + Alt + T.
  5. Здесь перейдите к директории через команду cd /home/user/folder, где user — имя пользователя, а folder — название папки.

Задействуйте команду cat + название файла, если хотите просмотреть полное содержимое. Детальные инструкции по работе с этой командой ищите в другой нашей статье по ссылке ниже.


 

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

Стандартный поиск по содержимому

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

  1. В командной строке введите grep word testfile, где word — искомая информация, а testfile — название файла. Когда производите поиск, находясь за пределами папки, укажите полный путь по примеру /home/user/folder/filename. После ввода команды нажмите на клавишу Enter.
  2. Осталось только ознакомиться с доступными вариантами. На экране отобразятся полные строки, а ключевые значения будут выделены красным цветом.
  3. Важно учитывать и регистр букв, поскольку кодировка Linux не оптимизирована для поиска без учета больших или маленьких символов. Если вы хотите обойти определение регистра, впишите grep -i “word” testfile.
  4. Как видите, на следующем скриншоте результат изменился и добавилась еще одна новая строка.

1. Простой поиск в файле

Давайте рассмотрим пример в файле “/etc/passwd” для поиска строки в файле. Чтобы найти слово “system” при помощи команды grep, используйте команду:


[root@destroyer ~]# cat /etc/passwd|grep system

Пример вывода:

systemd-bus-proxy:x:899:897:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:898:896:systemd Network Management:/:/sbin/nologin

2. Подсчет появления слов.

В приведенном выше примере мы имеем в системе поиск слов в файл

е “/etc/passwd”. Если мы хотим знать количество или число появлений слова в файле, то используйте опцию ниже:


[root@destroyer ~]# cat /etc/passwd|grep -c system 2 [root@destroyer ~]#

Выше указанно, что слово появилось два раза в файле “/etc/passwd”.

3. Игнорировать регистрозависимые слова

Команда grep чувствительна к регистру, это означает, что он будет искать только данное слово в файле. Чтобы проверить эту функцию, создайте один файл с именем «test.txt» и с содержанием, как показано ниже:


[root@destroyer tmp]# cat test.txt AndreyEx andreyex ANDREYEX Andreyex [root@destroyer tmp]#

Теперь, если вы попытаетесь найти строку «andreyex», то команда не будет перечислять все слова «andreyex» с разными вариантами, как показано ниже:


[root@destroyer tmp]# grep andreyex test.txt andreyex [root@destroyer tmp]#

Этот результат подтверждает, что только один вариант будет показан, игнорируя остальную часть слова «andreyex» с разными вариантами. И если вы хотите игнорировать этот случай, вам нужно использовать параметр «-i» с grep, как показано ниже:


[root@destroyer tmp]# grep -i andreyex test.txt AndreyEx andreyex ANDREYEX Andreyex

4. Две разные строки внутри файла с командой grep

Теперь, если вы хотите найти два слова или строки с помощью команды grep, то вы должны задать расширенные. В следующей команде мы находим две строки «system» и «nobody» в файле /etc/passwd.


[root@destroyer ~]# grep ‘system|nobody’ /etc/passwd nobody:x:89:89:Nobody:/:/sbin/nologin systemd-bus-proxy:x:899:897:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:898:896:systemd Network Management:/:/sbin/nologin [root@destroyer ~]#

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

Допустим, вы хотите найти слово или строку рекурсивно в любом месте каталога, тогда используйте опцию -r. Например, если вы хотите найти слово «check_oracle» рекурсивно в каталоге /etc, то используйте следующую команду:


[root@destroyer ~]# grep -r “check_oracle” /etc/ /etc/selinux/targeted/contexts/files/file_contexts:/usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 Binary file /etc/selinux/targeted/contexts/files/file_contexts.bin matches /etc/selinux/targeted/modules/active/file_contexts:/usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 /etc/selinux/targeted/modules/active/file_contexts.template:/usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 [root@destroyer ~]

В выводе выше мы можем иметь возможность видеть имя файла, в котором мы нашли строку, и если вы хотите убрать имя файла в конечном результате, то используйте опцию «-h», как показано ниже:


[root@destroyer ~]# grep -hr “check_oracle” /etc/ /usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 Binary file /etc/selinux/targeted/contexts/files/file_contexts.bin matches /usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 /usr/lib/nagios/plugins/check_oracle — system_u:object_r:nagios_services_plugin_exec_t:s0 [root@destroyer ~]#

6. Вывод команды grep.

Если вы хотите найти строку или слово в любом выводе команды, то вы должны использовать оператор «|», а затем <строка> в grep. Допустим, вы хотите найти в памяти, связанные слова вывода команды dmesg, то используйте следующую команду. [root@destroyer ~]# dmesg |grep memory [ 0.000000] Base memory trampoline at [ffff880000098000] 98000 size 19456 [ 0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff] [ 0.000000] init_memory_mapping: [mem 0x3fe00000-0x4fffffff] [ 0.000000] init_memory_mapping: [mem 0x3c000000-0x4fdfffff] [ 0.000000] init_memory_mapping: [mem 0x00100000-0x4bffffff] [ 0.000000] kexec: crashkernel=auto resulted in zero bytes of reserved memory. [ 0.000000] Early memory node ranges [ 0.000000] PM: Registered nosave memory: [mem 0x0003e000-0x0003ffff] [ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000dffff] [ 0.000000] PM: Registered nosave memory: [mem 0x000e0000-0x000fffff] [ 0.000000] please try ‘cgroup_disable=memory’ option if you don’t want memory cgroups [ 0.030181] Initializing cgroup subsys memory [ 0.862358] Freeing initrd memory: 23532k freed [ 1.064599] Non-volatile memory driver v1.3 [ 1.069351] crash memory driver: version 1.1 [ 1.186673] Freeing unused kernel memory: 1430k freed [ 5.567780] [TTM] Zone kernel: Available graphics memory: 480345 kiB [root@destroyer ~]#

8. Точное совпадение слова

В соответствии с примером, приведенным в пункте 7, если мы ищем Andreyex, то он будет печатать все вхождение Andreyex как «Andreyex12», «Andreyex454», «Andreyex34343», а также «Andreyex», как показано ниже:


[root@destroyer tmp]# grep Andreyex test.txt Andreyex12 Andreyex454 Andreyex34343 Andreyex [root@destroyer tmp]#

тогда, если мы хотим найти точное слово «Andreyex» вместо этого, чтобы перечислить весь вывод выше, то используйте опцию «-w», как показано ниже:


[root@destroyer tmp]# grep -w Andreyex test.txt Andreyex [root@destroyer tmp]#

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

7. Инвертирование с помощью команды grep в Linux

Допустим, если вы хотите отобразить все слова в файле, который не содержит какое-либо конкретное слово, то используйте опцию «-v». Это позволяет создать один файл с содержимым, как показано ниже:


[root@destroyer tmp]# cat test.txt Andreyex12 Andreyex454 Andreyex34343 Andreyex LinuxRoutes Linux [root@destroyer tmp]#

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


[root@destroyer tmp]# grep -v Linux test.txt Andreyex12 Andreyex454 Andreyex34343 Andreyex

[spoiler title=”Источники”]

  • https://www.vseprolinux.ru/grep
  • https://lumpics.ru/linux-grep-command-examples/
  • https://andreyex.ru/operacionnaya-sistema-linux/polnoe-rukovodstvo-komanda-grep-v-linux/


[/spoiler]


2020-07-27T15:39:45
Linux

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



























Rate this post

lsВыводит список файлов в директории.

Синтаксис

ls опциидиректория

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

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

Команда ls linux

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

$ lsопции/путь/к/папке

Опции команды указывают как именно и в каком виде нужно выводить информацию на экран, а путь, это та папка, которую нужно отобразить. Рассмотрим основные опции утилиты:

  • -a – отображать все файлы, включая скрытые, это те, перед именем которых стоит точка;
  • -A – не отображать ссылку на текущую папку и корневую папку . и ..;
  • –author – выводить создателя файла в режиме подробного списка;
  • -b – выводить Escape последовательности вместо непечатаемых символов;
  • –block-size – выводить размер каталога или файла в определенной единице измерения, например, мегабайтах, гигабайтах или килобайтах;
  • -B – не выводить резервные копии, их имена начинаются с ~;
  • -c – сортировать файлы по времени модификации или создания, сначала будут выведены новые файлы;
  • -C – выводить колонками;
  • –color – включить цветной режим вывода, автоматически активирована во многих дистрибутивах;
  • -d – выводить только директории, без их содержимого, полезно при рекурсивном выводе;
  • -D – использовать режим вывода, совместимый с Emacs;
  • -f – не сортировать;
  • -F – показывать тип объекта, к каждому объекту будет добавлен один из специализированных символов */=>@|;
  • –full-time – показывать подробную информацию, плюс вся информация о времени в формате ISO;
  • -g – показывать подробную информацию, но кроме владельца файла;
  • –group-directories-first – сначала отображать директории, а уже потом файлы;
  • -G – не выводить имена групп;
  • -h – выводить размеры папок в удобном для чтения формате;
  • -H – открывать символические ссылки при рекурсивном использовании;
  • –hide – не отображать файлы, которые начинаются с указанного символа;
  • -i – отображать номер индекса inode, в которой хранится этот файл;
  • -l – выводить подробный список, в котором будет отображаться владелец, группа, дата создания, размер и другие параметры;
  • -L – для символических ссылок отображать информацию о файле, на который они ссылаются;
  • -m – разделять элементы списка запятой;
  • -n – выводить UID и GID вместо имени и группы пользователя;
  • -N – выводить имена как есть, не обрабатывать контролирующие последовательности;
  • -Q – брать имена папок и файлов в кавычки;
  • -r – обратный порядок сортировки;
  • -R – рекурсивно отображать содержимое поддиректорий;
  • -s – выводить размер файла в блоках;
  • -S – сортировать по размеру, сначала большие;
  • -t – сортировать по времени последней модификации;
  • -u – сортировать по времени последнего доступа;
  • -U – не сортировать;
  • -X – сортировать по алфавиту;
  • -Z – отображать информацию о расширениях SELinux;
  • -1 – отображать один файл на одну строку.

Это были все основные параметры команды ls, которые нам может когда-либо понадобиться использовать. Их очень много, но на деле будут нужны только некоторые из них, вы их быстро запомните, а все остальные сможете всегда найти в этой статье или на странице справки man ls. А теперь давайте рассмотрим несколько примеров использования команды ls linux.

Использование ls в Linux

Как вы уже поняли, ls – это сокращение от list, эта команда представляет из себя аналог команды dir для Linux. Самый простой способ использовать команду, запустить ее без параметров и посмотреть содержимое текущей папки:

ls


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

ls /


Или папки /bin:

ls /bin/


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

ls -l


Тут вывод уже разделен на отдельные колонки, в первой колонке указаны права доступа к файлу в формате владелец группа остальные. Следующая колонка – это тип файла или папки, дальше владелец и группа, затем размер, дата создания и последний параметр – имя. Если вы еще хотите знать кто создал файл, можно использовать опцию author:

ls -l –author


Колонка создателя будет добавлена после группы. Дальше размер. Он выводится в байтах, килобайтах или еще в чем-то и нам не совсем понятно что там происходит, поэтому добавьте опцию -h чтобы выводить размер в более удобном виде:

ls -lh


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

ls -l Фото
ls -lh Фото

Если вы хотите видеть скрытые файлы, а в домашней папке их просто море, то используйте опцию -a:

ls -a


Или смотрим скрытые файлы без ссылок на текущую и родительскую папку:

ls -A


Теперь нас будет интересовать сортировка. Сначала отсортируем файлы по размеру:

ls -lSh Фото


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

ls -lShr


С помощью опции -r мы вывели файлы в обратном порядке. Теперь отсортируем по алфавиту:

ls -lX


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

ls -lt


Обратите внимание на колонку времени, действительно, самые новые файлы будут вверху списка. Если вы хотите посмотреть какие метки SELinux присвоены файлу, необходимо использовать опцию -Z:

ls -lZ


Но это возможно только в системах, где установлена надстройка SELinux. Если вы хотите рекурсивно вывести содержимое всех папок, используйте опцию -R:

ls -lR /usr/


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

ls -m


Особенности утилиты LS Linux

Перед использованием такой команды необходимо тщательно изучить особенности синтаксиса. www.vseprolinux.ru/komanda-ls

Это дает возможность пользователю правильно применить команду при решении различных задач.
Синтаксис ls Линукс весьма простой. Первоначально требуется ввести сам у команду, а далее – указать путь к файлу или определенной папке, содержимое которой требует изучения.

Общий синтаксис выглядит так:
$ ls (опции)/(путь к папке)

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

  • «-а». После введения отображаются все файлы. Вам будут показаны даже скрытые данные, перед которыми система установила точку.
  • «-А». Опция дает возможность не отображать ссылку на исследуемую папку, которая также корневой (. и ..).
  • «—author». На экран выводится информация о создателе определенного файла. Режим – подробный список.
  • «-b». Вместо напечатанных символов отображается Escape-последовательность.
  • «—block-size». На экране монитора показан размер папки или файла. Единица измерения может быть различной – мегабайты, гигабайты или килобайты.
  • «-В». Такая опция даёт возможность не выводить резервные копии. Стоит отметить, что их имена начинаются со знака «~».
  • «-с». После введения появляется возможность сортировки файлов – по времени создания или модификации. Первоначально отображаются новые файлы.
  • «-С». Информация будет выведена в виде колонок.
  • «—color». Эта опция позволяет запустить цветной режим ввода. Стоит заметить, что в большинстве дистрибутивов она активирована в автоматическом режиме.
  • «-d». На экран будут выведены только директории. Вы не увидите их содержимое. Опцию актуально использовать при необходимости рекурсивного вывода.
  • «-D». Опция позволяет использовать режим, который совместим с Emacs.
  • «-f». Здесь исключена вероятность сортировки файлов и папок.
  • «-F». Будет показана разновидность исследуемого объекта. Они зачастую дополнены различными вспомогательными символами – *, /, =, >, @, | и иными.
  • «—full-time». Такая опция позволяет отобразить подробную информацию о файле или директории. Данные о времени отображены в формате ISO.
  • «-g». Показывается подробная информация об исследуемом объекте, но нет данных о владельце.
  • «—group-directories-first». После введения первоначально отображаются директории, а фалы находятся внизу списка.
  • «-G». Эта опция даёт возможность не показывать названия групп.
  • «-h». Позволяет посмотреть размеры папок. Формат удобен для чтения.

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

Особенности использования команды

Как понятно из вышесказанного, данная утилита имеет широкие возможности. Стоит рассмотреть некоторые примеры использования LS Linux:

  • Запуск программы без введения параметров для просмотра содержимого текущей папки. Для этого потребуется ввести команду «$ ls».
  • Просмотр списка файлов в определенной папке. Для этого потребуется указать путь к ней. Если нужно изучить содержимое корневой папки, стоит ввести «$ ls/». Когда требуется посмотреть содержимое определённой папки (к примеру, /ХХХ), стоит ввести команду «$ ls/ХХХ/».
  • Просмотр прав доступа к определенному файлу. Для этих целей в командной строке нужно ввести «$ ls -l —autor».
  • Просмотр размера файла в максимально удобном виде (в байтах, мегабайтах, килобайтах, гигабайтах). Необходимо ввести команду «$ ls –lh».
  • Просмотр скрытых файлов. Нужно заметить, что практически в каждой папке их большое количество. Стоит в командной строке ввести команду «$ ls -a».
  • Сортировка фалов по размеру. Для этого вводится команда «$ ls –lSh».
  • Сортировка по алфавиту. Нужно ввести команду «$ ls –lX».
  • Сортировка по последней модификации. Вводится команда «$ ls –lt».
  • Просмотр отметок на файле, которые были присвоены SELinux. Для этого вводится команда «$ ls –lZ».
  • Рекурсивный просмотр содержимого всех папок. Необходимо ввести команду «$ ls -lR /usr/».
  • Просмотр файлов и папок в определённой директории через запятую. Для выполнения поставленной задачи нужно ввести «$ ls -m».

Утилита ls весьма сложная и местами непонятная, но функционал ее весьма редко используется полностью. С простыми задачами справится новичок без определенных навыков.
 

Список ключей для команды ls.

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

  • -l — вывод подробной информации о содержимом каталога в виде списка;
  • -a (—all) — вывод информации о всех имеющихся объектах явных и скрытых;
  • -A (—allmost-all) — вывод информации о всех имеющихся явных и скрытых объектах (за исключением объектов «.» и «..»);
  • -d (—directory) — вывод информации о директории без вывода его содержимого;
  • -F — к объектам являющимся каталогами добавит в конце символ слеш «/», к объектам являющимися исполняемыми файлами добавляется «*», к объектам являющимися символьными ссылками — «@»;
  • -r (—reverse) — данные ключи меняют сортировку на обратную;
  • -i — отображение номера индексных дескрипторов объектов;
  • -S — сортировка объектов по размеру от большого к меньшему;
  • -Sr — сортировка объектов по размеру от меньшего;
  • -t — сортировка объектов по времени модификации файлов;
  • -R (—recursive) — вывод информации об имеющихся объектах в том числе и объектах во вложенных каталогах.

Способы работы с командой ls и ее ключи, упоминаемые в статье это далеко не весь список. Если вы желаете использовать всю мощь этой на первый взгляд простой команды, то как уже упоминалось ранее, более подробную информацию можно получить при вызове встроенного мануала $ man ls .

Получение сведений о файлах и каталогах

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

Что представляет собой тот или иной файл, т. е. какой доступ к нему предоставлен, какими «связями» он обладает, когда был создан и/или изменён. А также многое другое, позволяет узнать команда ls с ключом -l. Когда нужно «навести справки» о каком-либо объекте ФС, использовать нужно именно её:

$ ls -l /bin/gzip -rwxr-xr-x 3 root root 101560 апр 28 2017 /bin/gzip

Нет необходимости подробно останавливаться на синтаксисе и перечисления всех доступных опций и их описании. Поскольку это простая справочная информация, доступная из соответствующего справочного руководства: man ls. А вот сам вывод команды из приведённого примера стоит рассмотреть более внимательно. Он разбит на секции, каждая из которых является отдельным атрибутом файла. В данном выводе в первой секции представлен режим доступа к файлу. Во второй — количество жёстких ссылок на данный файл. В третьей и четвертой — информация о владельце и группе. В данном случае root, к которым принадлежит файл. Следующая секция отображает размер файла в байтах. Далее следует дата последнего изменения файла — 28 апреля 2017 г., последняя секция — имя самого файла. Что касается каталогов, то для них всегда имеется как минимум две жесткие ссылки: первая — из родительского каталога, а вторая — это «псевдокаталог» «.» внутри самого этого каталога.

Как правильно интерпретировать вывод команды ls?

Первое, что может ввести в заблуждение при изучении вывода команды ls -l, так это первая секция данных. Состоящая из набора десяти символов и показывающая режимы доступа к файлу. Для вышеприведённого примера первый символ «-» указывает, что это файл. А в случае с каталогом вместо него выводится символ «d». Следующие девять символов представляют собой три группы, отражающих режимы доступа к файлу. Первая группа (первые три символа «rwx») показывают, какие права доступа выставлены на данный файл для его владельца. Следующая группа символов — «r-x» — показывает режим доступа для группы, к которой принадлежит файл. Ну а третья («r-x») — права доступа для всех остальных пользователей.

В полях, отображающих владельца и группу вместо символьных имён могут быть также и цифровые идентификаторы. Такое бывает, когда соответствующие записи были удалены из файлов /etc/passwd или /etc/group. Также это может быть признаком возникновения ошибки в базах данных LDAP или NIS. Конечно, если таковые используются.

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

Особенности использования команды ls

Когда команда ls обрабатывает не «обычные» файлы, а специальные файлы устройств (хотя это тоже самые обычные файлы). То для них она выводит несколько иную информацию:

$ ls -l /dev/tty0 cr–w—- 1 root tty 4,0 фев 28 14:27 /dev/tty0

Вместо размера файла выводится старший и младший номера (4, 0) устройства tty0 – это первая виртуальная консоль, управляемая драйвером устройства 4, который является драйвером терминала.

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

$ ls -li ‘Рабочий стол’ 3276880 ‘Рабочий стол’

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

$ find точка_монтирования -xdev -inum индексный_дескриптор

Данный пример — лишь одно из важных практических применений команды ls. Следует также отметить некоторые особенно полезные опции команды ls:

-a – отображает все файлы и каталоги. Включая скрытые (имена которых начинаются с точки), а также «всевдокаталоги» с именами «.» и «. .»;

-t – отображает результаты в отсортированном (по времени изменения файлов) порядке. А опция -tr то же, но в обратном порядке;

-F – выделяет каталоги и исполняемые файлы в общем выводе;

-h – отображает размеры файлов и каталогов в «человекопонятных» единицах, к примеру 4k или 10M;

-R – рекурсивный вывод, выполнение которого прерывается нажатием сочетания клавиш .

Иногда возникает путаница в использовании опций -l и —d. Дело в том, что опция -d предназначена для дополнения работы опции -l (которая выводит подробную информацию об атрибутах). Когда необходимо получить атрибуты именно конкретного каталога:

$ ls -ld ~/htdocs drwxrwxr-x 12 john john 4096 фев 11 12:56 /home/john/htdocs

Еще полезные примеры ls

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

ls -lat /home

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

ls -latr /home

Отсортировать файлы по размеру

ls -alS /home

Вывести список только каталогов:

ls -d -1 /home

1. Вывод имен скрытых файлов/директорий

По умолчанию команда не отображает имена скрытых файлов и директорий. Однако, вы можете активировать механизм вывода информации об этих элементах файловой системы с помощью параметра -a. Таким образом, для вывода имен всех файлов/директорий из текущей директории (включая скрытые файлы и директории, имена которых начинаются с символа точки “.”) достаточно выполнить следующую команду:

ls -a

2. Удаление информации о текущей (.) и родительской (..) директориях из вывода

При использовании параметра -a, кроме всего прочего, осуществляется вывод информации о текущей и родительской директориях (элементы “.” и “..” соответственно). Если вам не нужна эта информация, вы можете использовать вместо упомянутого параметра параметр -A.


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

По умолчанию ls сортирует имена файлов и директорий в алфавитном порядке. Но если вам понадобится, вы можете организовать вывод имен элементов директории в обратном порядке. Для этого вам придется использовать параметр -r.

ls -r

А это пример вывода:


1. ls без параметров

ls без опций отображает список файлов и каталогов в чистом формате, где мы не сможем просматривать такие детали, как типы файлов, размер, дата и время изменения, разрешения и ссылки и т. д.

# ls 001.pcap Desktop Downloads index.html install.log.syslog Pictures Template anaconda-ks.cfg Documents fbcmd_update.php install.log Music Public Videos

2. ls с параметром -l

Здесь, ls -l (l — символ, а не единица) показывает файл или каталог вместе с его размером, а также дату и время изменения, права и владельца.

# ls -l total 176 -rw-r–r–. 1 root root 683 Aug 19 09:59 0001.pcap -rw——-. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Desktop drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Documents drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads -rw-r–r–. 1 root root 21262 Aug 12 12:42 fbcmd_update.php -rw-r–r–. 1 root root 46701 Jul 31 09:58 index.html -rw-r–r–. 1 root root 48867 Jul 31 02:17 install.log -rw-r–r–. 1 root root 11439 Jul 31 02:13 install.log.syslog drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Music drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Pictures drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Public drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos

3. Просмотр скрытых файлов

Показ всех файлов, включая скрытые, которые начинаются с «.»

# ls -a . .bashrc Documents .gconfd install.log .nautilus .. .cache Downloads .gnome2 install.log.syslog .netstat.swp 0001.pcap .config .elinks .gnome2_private .kde .opera anaconda-ks.cfg .cshrc .esd_auth .gtk-bookmarks .libreoffice Pictures .bash_history .dbus .fbcmd .gvfs .local .pki .bash_logout Desktop fbcmd_update.php .ICEauthority .mozilla Public .bash_profile .digrc .gconf index.html Music .pulse

4. Перечисление файлов с удобным отображением размера

С опцией -lh, ls показывает размеры в удобном формате.

# ls -lh total 176K -rw-r–r–. 1 root root 683 Aug 19 09:59 0001.pcap -rw——-. 1 root root 1.6K Jul 31 02:17 anaconda-ks.cfg drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Desktop drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Documents drwxr-xr-x. 4 root root 4.0K Aug 16 02:55 Downloads -rw-r–r–. 1 root root 21K Aug 12 12:42 fbcmd_update.php -rw-r–r–. 1 root root 46K Jul 31 09:58 index.html -rw-r–r–. 1 root root 48K Jul 31 02:17 install.log -rw-r–r–. 1 root root 12K Jul 31 02:13 install.log.syslog drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Music drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Pictures drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Public drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Templates drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Videos

5. Перечисление файлов и директорий с символом «/» в конце

Использование опции -F с командой ls добавит символ «/» в конце каждого каталога.

# ls -F 0001.pcap Desktop/ Downloads/ index.html install.log.syslog Pictures/ anaconda-ks.cfg Documents/ fbcmd_update.php install.log Music/ Public/

6. Перечисление файлов в обратном порядке

Следующая команда ls с опцией -r выводит файлы и каталоги в обратном порядке.

# ls -r Videos Public Music install.log fbcmd_update.php Documents 0001.pcap Templates Pictures install.log.syslog index.html Downloads Desktop

7. Рекурсивный список подкаталогов

ls с опцией -R выведет очень длинный список деревьев каталогов. Смотрите пример вывода команды.

# ls -R total 1384 -rw——-. 1 root root 33408 Aug 8 17:25 anaconda.log -rw——-. 1 root root 30508 Aug 8 17:25 anaconda.program.log ./httpd: total 132 -rw-r–r– 1 root root 0 Aug 19 03:14 access_log -rw-r–r–. 1 root root 61916 Aug 10 17:55 access_log-20120812 ./lighttpd: total 68 -rw-r–r– 1 lighttpd lighttpd 7858 Aug 21 15:26 access.log -rw-r–r–. 1 lighttpd lighttpd 37531 Aug 17 18:21 access.log-20120819 ./nginx: total 12 -rw-r–r–. 1 root root 0 Aug 12 03:17 access.log -rw-r–r–. 1 root root 390 Aug 12 03:17 access.log-20120812.gz

8. Обратный порядок вывода

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

# ls -ltr total 176 -rw-r–r–. 1 root root 11439 Jul 31 02:13 install.log.syslog -rw-r–r–. 1 root root 48867 Jul 31 02:17 install.log -rw——-. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Desktop drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Public drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Pictures drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Music drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Documents -rw-r–r–. 1 root root 46701 Jul 31 09:58 index.html -rw-r–r–. 1 root root 21262 Aug 12 12:42 fbcmd_update.php drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads -rw-r–r–. 1 root root 683 Aug 19 09:59 0001.pcap

Показать скрытые файлы

По умолчанию команда ls не показывает скрытые файлы. Что их показать, используется опция -a:

ls -a

Понятный размер файлов

Вывести размер файлов в понятном формате (опция -h):

ls -lh

Обозначить директории

У команды ls есть очень полезная опция -F, про которую не все знают. Она добавляет к именам файлов дополнительные обозначения, по которым сразу понятно что это за файл. Например, для директорий она добавляет символ /, и в списке файлов сразу видно где директории а где обычные файлы.

ls -lF

Список файлов в одну колонку

Вывести список в одну колонку:

ls -1

Вывести только файлы с определенным расширением

Выведем файлы только с расширением .txt:

ls *.txt

Выведем файлы с определенными расширениями (.html, .php и .txt):

ls *.{html,php,txt}

Файлы, начинающиеся на определенную букву

Показать только файлы, имена которых начинаются на одну из букв указанного множества (a, d, u и x):

ls [adux]*

Список файлов с сортировкой по времени

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

ls -lt

Сортировка по времени, но в обратном порядке:

ls -ltr

[spoiler title=”Источники”]

  • https://pingvinus.ru/note/cmd-ls
  • https://losst.ru/komanda-ls-linux
  • http://linux-user.ru/komandy-v-linux/kak-polzovatsya-komandoj-ls-v-linukse/
  • https://world-hello.ru/linux/bash/commands/ls.html
  • https://ITProffi.ru/komanda-ls-prosmotr-atributov-fajlov/
  • http://rus-linux.net/MyLDP/consol/linux-ls-command.html
  • https://mordeniuss.ru/15-basic-ls-command-examples-in-linux/


[/spoiler]


2020-07-27T15:39:45
Linux