[] — набор символов
Как указано выше, вы используете знак вопроса для обозначения любого отдельного символа, а звездочку — для любой последовательности символов (включая символы).
Вы можете сформировать «подстановочный» знак с квадратными скобками ([]) и символами, которые они содержат. Соответствующий символ в имени файла должен соответствовать хотя бы одному из символов в наборе символов подстановки.
В этом примере команда переводит: «любой файл с» .txt», имя файла, начиная с „badge_0,“и в котором следующий символ либо 2, 4 или 6.»
ls badge_0 .txt
Вы можете использовать более одного набора скобок на шаблон имени файла:
ls badge_ .txt
Вы также можете включить диапазоны в набор символов. Следующая команда выбирает файлы с номерами от 21 до 25 и от 31 до 35 в имени файла.
ls badge_ .txt
Многие команды Linux принимают файл в качестве параметра и берут свои данные из этого файла. Большинство из этих команд также могут принимать данные из потока. Чтобы создать поток, используйте левую угловую скобку (<), как показано в следующем примере, чтобы перенаправить файл в команду:
sort < words.txt
Когда команда перенаправляет ввод в нее, она может вести себя иначе, чем при чтении из именованного файла.
Если мы используем wc для подсчета слов, строк и символов в файле, он печатает значения, а затем имя файла. Если мы перенаправим содержимое файла wc, он печатает те же числовые значения, но не знает имени файла, из которого поступили данные. Он не может напечатать имя файла.
Вот несколько примеров того, как вы можете использовать wc:
wc words.txt
wc < words.txt
Что такое Bash
Bash (Bourne again shell) — это стандартная командная оболочка в большинстве дистрибутивов Linux и macOS, а также язык для этой оболочки.
Язык Bash поддерживает переменные, массивы, циклы, функции, условные и арифметические операторы, операции ввода-вывода и другие средства. Но главная его фишка — возможность создавать скрипты для ускорения работы на компьютере и автоматизации рутины. Например, с их помощью можно:
- быстро переименовывать все файлы в папке;
- генерировать случайные пароли;
- создавать и отправлять отчёты по электронной почте;
- проверять и обновлять систему и приложения;
- одной командой очищать кэш браузера.
Последний скрипт из этого списка мы и попробуем написать в этой статье. Но для начала рассмотрим продвинутый синтаксис Bash и его основные конструкции: переменные, операторы, циклы и функции.
Кадр: мультфильм «Тачки» / Pixar
Команды для управления правами на файлы и директории
Многие действия в системе выполняются с правами суперпользователя, например установка обновлений, программ или их удаление.
sudo — получение прав суперпользователя.
Например, с помощью следующей команды мы обновим пакеты в Fedora Linux:
sudo su — удобная опция, если нужно выполнить сразу много команд от имени суперпользователя. Если ввести это один раз, далее можно писать нужные команды.
Опытные пользователи советуют избегать этой команды из соображений безопасности.
sudo!! — запуск ранее введённой команды с правами администратора.
sudo gksudo — запуск графических утилит от имени суперпользователя. Формат команды такой: sudo gksudo .
Но sudo есть по умолчанию не во всех дистрибутивах. Например, в таких дистрибутивах, как Arch Linux, Gentoo и некоторых других, которые позволяют пользователю настраивать систему почти без ограничений, sudo нужно устанавливать отдельно. Но везде есть su.
chmod — изменение прав доступа к файлу.
Можно дать права на чтение, запись и запуск файла.
chmod опции права /.
Есть три основных вида прав:
- r — чтение;
- w — запись;
- x — выполнение.
И три вида пользователей:
- u — владелец файла;
- g — группа файла;
- o — остальные пользователи.
Есть также цифровой формат записи:
- — никаких прав;
- 1 — только выполнение;
- 2 — только запись;
- 3 — выполнение и запись;
- 4 — только чтение;
- 5 — чтение и выполнение;
- 6 — чтение и запись;
- 7 — чтение, запись и выполнение.
Эта команда разрешит остальным пользователям (всем, кроме владельца файла) чтение и запись в текстовые файлы.
Эта команда даст всем пользователям право читать, писать и запускать файлы в системе.
chown — изменение владельца файла, папки.
Для выполнения этой команды нужно обладать правами суперпользователя.
Ну здравствуй, Bash! Пишем первый скрипт
Настало время применить знания на практике — напишем скрипт для автоматической очистки кэша браузера и DNS.
Состоять наш скрипт будет из трёх функций: первая — для очистки кэша браузера, вторая — для очистки кэша DNS, а в третью завернём небольшое меню для выбора нужного действия.
Начинаем, как водится, с шебанга — специальной строки, которая говорит компьютеру, с помощью какой программы нужно запускать скрипт. Так как мы хотим использовать bash, которая лежит в папке /bin, шебанг будет выглядеть так:
Теперь напишем функцию, которая будет очищать браузерный кэш. В комментариях — разбор синтаксиса.
Далее напишем функцию для очистки кэша DNS.
Ну а теперь дело за малым. Напишем небольшое меню, чтобы пользователь мог выбрать, кэш браузера или кэш DNS нужно очистить.
Вуаля! Наш скрипт готов. Чтобы его запустить, нам нужно лишь вызвать функцию clear_cache:
Синтаксис команды tr в Linux
Программа обрабатывает текст посимвольно. По умолчанию у её синтаксиса следующий вид (квадратные скобки указывают, что аргумент не обязателен):
tr … НАБОР1
Всего доступно 4 ключа для уточнения операции над символами:
Ключ | Длинный вариант | Значение |
-c, -C | –complement | Сначала получить дополнение НАБОРА1 |
-d | –delete | Удалить знаки из НАБОРА2, не превращать |
-s | –squeeze-repeats | Замещать последовательность знаков, которые повторяются, из перечисленных в последнем НАБОРЕ, на один такой знак |
-t | –truncate-set1 | Сначала сократить НАБОР1 до размеров НАБОРА2 |
НАБОРЫ указываются как символьные строки. В большинстве случаев символы представляют сами себя. Полный набор опций представлен в следующей таблице:
Опция | Значение |
HHH | Знак в восьмеричной кодировке (с трех цифр ННН) |
\ | Обратный слэш |
b | Забой |
f | Перевод страницы |
n | Начать с новой строки |
r | Возврат каретки |
t | Горизонтальная табуляция |
v | Вертикальная табуляция |
ЗНАК1-ЗНАК2 | Все знаки от ЗНАК1 до ЗНАК2 в порядке возрастания |
ЗНАК заполняет НАБОР2 до длины НАБОРА1 | |
Указанное ЧИСЛО одинаковых ЗНАКОВ; ЧИСЛО восьмиричных, если начинается с 0 | |
Все буквы и цифры | |
Все буквы | |
Все горизонтальные пробельные символы | |
Все управляющие знаки | |
Все цифры | |
Все печатаемые знаки, исключая пробел | |
Все маленькие буквы | |
Все печатаемые знаки, включая пробел | |
Все знаки пунктуации | |
Все вертикальные и горизонтальные пробельные знаки | |
Все большие буквы | |
Все шестнадцатиричные цифры | |
Все знаки, эквивалентные ЗНАКУ |
Превращение осуществляется, если не указано -d для обоих НАБОРОВ. -t можно использовать только во время превращения. Если нужно, НАБОР2 будет расширен до размеров НАБОРА1 повторением последнего символа. Лишние символы НАБОРА2 будут пропущены. Гарантированно расширяются в порядке возрастания только и . Использованные символы в НАБОРЕ2 во время превращения можно применять для определения превращения регистра только в парах. -s использует последний указанный набор. Уплотнение происходит после превращения или удаления.
[] — набор символов
Как указано выше, вы используете знак вопроса для обозначения любого отдельного символа, а звездочку — для любой последовательности символов (включая символы).
Вы можете сформировать «подстановочный» знак с квадратными скобками ([]) и символами, которые они содержат. Соответствующий символ в имени файла должен соответствовать хотя бы одному из символов в наборе символов подстановки.
В этом примере команда переводит: «любой файл с» .txt», имя файла , начиная с „badge_0,“и в котором следующий символ либо 2, 4 или 6.»
ls badge_0 .txt
Вы можете использовать более одного набора скобок на шаблон имени файла:
ls badge_ .txt
Вы также можете включить диапазоны в набор символов. Следующая команда выбирает файлы с номерами от 21 до 25 и от 31 до 35 в имени файла.
ls badge_ .txt
Информация по usb устройствам
Утилита lsusb
Утилита lsusb используется для вывода информации о шинах USB в системе и подключенных к ним устройствах.
Пример работы:
# lsusb Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0557:2221 ATEN International Co., Ltd Winbond Hermon Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
А также, с помощью опции -t мы можем посмотреть информацию в древовидном виде:
# lsusb -t /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=tusb-vhci-driver/15p, 5000M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=tusb-vhci-driver/15p, 480M |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 1.5M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=tusb-stub-driver, 1.5M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M |__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M |__ Port 2: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M
Кстати, в древовидном виде также отображается информацию по драйверам.
Также как в lspci мы можем указать конкретное устройство с помощью опции -s, и получить больше информации используя -v, например:
# lsusb -s 003:002 -v Bus 003 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0529 Aladdin Knowledge Systems idProduct 0x0001 HASP copy protection dongle bcdDevice 3.25 iManufacturer 1 AKS iProduct 2 HASP HL 3.25 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0014 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 50mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 ** UNRECOGNIZED: 02 ff can't get device qualifier: Resource temporarily unavailable can't get debug descriptor: Resource temporarily unavailable Device Status: 0x0001 Self Powered
Здесь видна информацию о usb ключе для 1С.
Утилита usb-devices
Команда usb-devices — это сценарий оболочки, который также показывает информацию о usb шинах и подключенных к ним устройствах, например:
# usb-devices *** Вывод урезан *** T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=05.04 S: Manufacturer=Linux 5.4.114-1-pve ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1d.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 6 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=8087 ProdID=0024 Rev=00.00 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=02 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0 D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0529 ProdID=0001 Rev=03.25 S: Manufacturer=AKS S: Product=HASP HL 3.25 C: #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=50mA I: If#=0x0 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=00 Prot=00 Driver=tusb-stub-driver *** Вывод урезан ***
Команды для отображения справочной информации по командам и терминалу
С помощью командной строки можно быстро получить информацию о программах, состоянии системы и настройках.
man — главное руководство по командам Linux.
Даёт подробную информацию по команде и её использованию. У каждой команды есть множество опций, запомнить их все сложно, поэтому стоит научиться пользоваться руководством. Поначалу вывод man кажется запутанным, но стоит с ним разобраться — и необходимость гуглить сведётся к минимуму.
Например, man ls выведет следующую информацию:
Вывод man включает следующие поля:
- Name — имя команды, которую описывает man-страница.
- Synopsis — краткое описание команды и её синтаксиса.
- Description — объяснение того, что делает программа.
- Options — описание опций командной строки, которые принимает команда, и дополнительная информация.
Самое полезное тут — опции. Например, вы хотите вывести список не только файлов, а ещё и их авторов. Выбираете в man нужную опцию и пишете:
LS (1) в выводе man означает первую страницу. Перемещаться по тексту можно с помощью колеса мыши, стрелок вверх/вниз, клавиши пробел или PgUp/PgDn. Перейти в начало/конец руководства можно с помощью клавиш Home и End.
Если ввести заглавную Н, то появится более детальная подсказка с альтернативными способами передвижения по тексту.
Для поиска конкретного слова в man введите ? и жмите Enter.
help — справка.
Если в мануале нет информации по команде или утилите или требуется краткая справка, то help — то, что нужно.
whatis — краткое описание утилиты.
Текущая / предыдущая папка (.)
Вы можете использовать одиночную () или двойную точку (), чтобы определить, должно ли действие выполняться в текущем каталоге или в каталоге выше, соответственно. Одинарная точка (.) Соответствует текущей папке, а двойная точка (..) — папке над ней.
Допустим, вы находитесь в папке «/ home / USERNAME / pictures» и хотите выполнить сценарий с именем «transform_images.sh» в том же каталоге. В этом случае введите:
Если после выполнения сценария вы хотите вернуться в папку над той, в которой вы сейчас находитесь, введите:
Это вернет вас из папки «/ home / USERNAME / pictures» в «/ home / USERNAME».
Пакетные менеджеры. Как установить приложение
Для установки и удаления приложений и обновлений в Linux используются пакетные менеджеры. В каждом дистрибутиве или семействах дистрибутивов они разные.
В Ubuntu и Debian это APT, в Fedora — DNF, в Arch и Manjaro — Pacman, в Gentoo — Portage, в openSUSE — RPM.
Для установки пакетов нужны права суперпользователя. Примеры команд:
dnf (Fedora).
sudo dnf install — установка пакета.
sudo dnf update — обновление сведений о пакетах.
sudo dnf upgrade — обновление пакетов.
sudo dnf remove — удаление пакета.
dnf autoremove — автоматическое удаление ненужных файлов с их зависимостями.
Вывод работы командыСкриншот: Skillbox Media
Узнать, есть ли нужная программа в репозиториях или как она точно называется, можно через поиск. В Fedora это команда dnf search .
Можно также скачать файл и установить его через терминал. Программы, совместимые с дистрибутивами на основе Debian, имеют расширение .deb.
Установить такой файл можно командой dpkg: dpkg -i package.deb.
dpkg —remove package — удаление пакета.
Что дальше
Вот вы и освоили основные элементы языка Bash и даже написали свой первый скрипт — поздравляем! Если хотите потренироваться в решении задачек на Bash, можете заглянуть в этот онлайн-тренажёр — он бесплатный и довольно гуманный по отношению к новичкам.
Ещё можно посмотреть на проект TryBash, где вся базовая теория дана в виде коротких интерактивных уроков. Там же можно забрать удобную шпаргалку с основными командами Bash, чтобы постоянно не бегать в Google во время обучения и экспериментов.
А если чувствуете, что хотите знать больше, можете почитать Advanced Bash-Scripting Guide («Расширенный гайд по написанию скриптов на Bash») — он на английском, но есть хороший любительский перевод. Ну, или приходите на курс Skillbox «Администрирование ОС Linux» — там тоже много всего полезного
Команды Linux для работы с пользователями
Эти команды используются для управления пользователями Linux.
25. id
Команда ID используется в Linux для отображения реального и эффективного идентификатора пользователя (UID) и идентификатора группы (GID). UID — это единый идентификатор пользователя. В то время как идентификатор группы (GID) может состоять из нескольких идентификаторов UID.
27. who
Команда who — это инструмент для отображения информации о пользователях, которые в данный момент вошли в систему. who может видеть только реального пользователя, вошедшего в систему. Он не увидит пользователя, выполняющего команду su.
Команда Groupadd используется для создания группы в Linux.
Следующая команда добавит в систему группу «setiwiki«.
29. useradd
В операционных системах Linux и Unix — подобных наиболее распространенной командой для создания пользователей является «useradd» или «adduser«.
Давайте посмотрим, как создать нового пользователя «setiwik» и установить пароль. Команда добавляет запись в файлы /etc/passwd, /etc/shadow, /etc/group и /etc/gshadow.
30. userdel
Userdel — это низкоуровневая утилита для удаления пользователей. Команда Userdel будет искать файлы системных учетных записей, такие как «/etc/password » и «/etc/group«, а затем удалит оттуда все записи, связанные с именем пользователя.
31. usermod
Команда Linux usermod используется для изменения атрибутов существующего пользователя. Атрибутами пользователя являются домашний каталог, оболочка, дата истечения срока действия пароля, группы, UID и т.д.
32. passwd
Passwd — это команда, используемая в Linux (Redhat, Centos, Ubuntu, Debian, Fedora) и UNIX-подобных операционных системах для смены паролей.
Комментарии и отмены (#)
Символ решетки () более полезен при написании сценариев Bash, поскольку он позволяет добавлять к ним комментарии для дальнейшего использования. Bash игнорирует все, что следует за символом решетки.
В следующем скрипте первая строка определяет, что это сценарий Bash, вторая — это комментарий, который игнорируется, а третья — типичная команда копирования:
Хеши полезны, даже если вы не пишете скрипт, поскольку они позволяют отменять части команды. Чтобы увидеть это в действии, попробуйте следующую простую команду:
Затем попробуйте вместо этого следующее:
Во второй версии вы увидите только «Я», потому что хеш отменит все, что следует за ним.
& — «фоновый процесс»
После того, как Вы введете команду в окне терминала и она завершится, Вы вернетесь в командную строку. Как правило, — это занимает всего минуту или две. Но если вы запустите другое приложение, например gedit, вы не сможете использовать окно терминала, пока не закроете приложение.
Однако вы можете запустить приложение как фоновый процесс и продолжать использовать окно терминала. Для этого просто добавьте амперсанд в командную строку:
gedit command_address.page &
Bash показывает идентификатор процесса, который был запущен, а затем возвращает вас в командную строку. Затем Вы можете продолжать использовать окно терминала.
# Комментарий или «обрезка строк»
Чаще всего вы используете хеш или знак числа (#), чтобы сообщить оболочке, что ниже следует комментарий, и он не должен на него воздействовать. Вы можете использовать его в сценариях оболочки и, — менее полезно, — в командной строке.
# This will be ignored by the Bash shell
Однако он не игнорируется, потому что он добавлен в историю команд.
Вы также можете использовать хеш, чтобы обрезать строковую переменную и удалить некоторый текст с начала. Эта команда создает строковую переменную с именем this_string.
В этом примере мы присваиваем текст «Dave Geek!» переменной.
this_string="Dave Geek!"
Эта команда использует echo для печати слова «How-To» в окне терминала. Он извлекает значение, хранящееся в строковой переменной, через расширение параметра . Поскольку мы добавляем хеш и текст «Dave», он обрезает эту часть строки перед тем, как передать её в echo.
echo How-To ${this_string#Dave}
Это не меняет значение, хранящееся в строковой переменной; это влияет только на то, что отправлено echo. Мы можем использовать echo для печати значения строковой переменной еще раз и проверить это:
echo $this_string
$ — выражения переменных
В оболочке Bash вы создаете переменные для хранения значений. Некоторые, такие как переменные среды, существуют всегда, и вы можете получить к ним доступ в любое время, когда открываете окно терминала. Они содержат значения, такие как ваше имя пользователя, домашний каталог и путь.
Вы можете использовать, echo, чтобы увидеть значение, которое содержит переменная, — просто перед именем переменной следует знак доллара ($), как показано ниже:
echo $ USER
echo $ HOME
echo $ PATH
Чтобы создать переменную, вы должны дать ей имя и указать значение для ее хранения. Вам не нужно использовать знак доллара для создания переменной. Вы добавляете только $, когда ссылаетесь на переменную, например, в следующем примере:
ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber
Добавьте фигурные скобки ({}) вокруг знака доллара и выполните расширение параметра, чтобы получить значение переменной и разрешить дальнейшие преобразования значения.
Это создает переменную, которая содержит строку символов, как показано ниже:
MyString = 123456qwerty
Используйте следующую команду для вывода строки в окно терминала:
echo $ {MyString}
Чтобы вернуть подстроку, начиная с позиции 6 всей строки, используйте следующую команду (смещение нуля, поэтому первая позиция равна нулю):
echo $ {myString: 6}
Если вы хотите отобразить подстроку, которая начинается с нулевой позиции и содержит следующие шесть символов, используйте следующую команду:
echo $ {myString: 0: 6}
Используйте следующую команду, чтобы отобразить подстроку, которая начинается с четвертой позиции и содержит следующие четыре символа:
echo $ {myString: 4: 4}
Цитирование специальных символов
Если вы хотите использовать специальный символ в качестве литерального (не специального) символа, вы должны указать оболочку Bash. Это называется цитированием, и есть три способа сделать это.
Если вы заключите текст в кавычки («…»), это не позволит Bash воздействовать на большинство специальных символов, а они просто будут печатать. Однако, одним заметным исключением является знак доллара ($). Он по-прежнему действует как символ для выражений переменных, поэтому вы можете включить значения из переменных в свой вывод.
Например, эта команда печатает дату и время:
echo "Today is $ (date)"
Если вы заключите текст в одинарные кавычки (‘…’), как показано ниже, он останавливает функцию всех специальных символов:
echo 'Today is $ (date)'
Вы можете использовать обратную косую черту (\), чтобы не использовать следующий символ в качестве специального символа. Это называется «избегать» персонажа; см. пример ниже:
echo "Today is \ $ (date)"
? — как знак подстановки символа
Оболочка Bash поддерживает три символа подстановки, одним из которых является знак вопроса (?). Вы используете «подстановочные» знаки для замены символов в шаблонах имен файлов. Имя файла, которое содержит «подстановочный» знак, формирует шаблон, который соответствует диапазону имен файлов, а не одному.
«Подстановочный» знак вопроса представляет ровно один символ. Рассмотрим следующий шаблон имени файла:
ls badge? .txt
Это переводится как: «перечислить любой файл с именем, начинающимся с «badge» и сопровождаемым любым отдельным символом перед расширением имени файла».
Это соответствует следующим файлам
Обратите внимание, что у некоторых есть цифры, а у некоторых есть буквы после части имени файла в виде значка. «Подстановочный» знак вопроса будет соответствовать как буквам, так и цифрам
Этот шаблон имени файла не соответствует значению «badge.txt», поскольку в имени файла нет ни одного символа между «значком» и расширением файла. «Подстановочный» знак вопроса должен совпадать с соответствующим символом в имени файла.
Вы также можете использовать знак вопроса, чтобы найти все файлы с определенным количеством символов в именах файлов. Здесь перечислены все текстовые файлы, которые содержат ровно пять символов в имени файла:
ls ?????. txt
Управление процессами в Linux.
ps
ps —help Список всех процессов, запущенных в системе:ps -e — выдаст список процессов с идентификаторами
( PID ) и их именами
или:ps -eF — выдаст тот же список процессов, но с полной строкой запуска
список задач, порожденных пользователем user:ps -U user
список задач, связанных с текущим терминалом:ps -T
список задач, связанных с терминалом N:ps t ttyN
Если список задач большой, а нас интересует состояние одной или нескольких
задач, можно воспользоваться grep:ps -U root | grep ppp — выдать список задач, содержащих «ppp» в имени
Для получения сведений об использовании ресурсов компьютера можно
воспользоваться командой top
В верхней части окна выводятся суммарные данные о состоянии системы —
текущее время,
время с момента загрузки системы, число пользователей в системе,
число процессов в разных состояниях,
данные об использовании процессора и памяти.
Ниже выводится таблица, характеризующая отдельные процессы.
Число строк, отображаемых в этой таблице, определяется размером окна.
Содержимое окна обновляется каждые 3 секунды. Нажатие клавиши h
выводит справку по командам, которые позволяют изменить формат отображаемых данных
и управлять некоторыми параметрами процессов в системе:
s или d — изменить
интервал обновления окна.
z — цветное/черно-белое отображение
n или # — количество отображаемых
процессов
Можно отсортировать список процессов по использованию ресурсов процессора
(P), памяти (M),
времени выполнения (T) и т.п.
В среде утилиты top также существуют подкоманды, которые позволяют управлять процессами в интерактивном режиме:
k — снять ( kill ) задачу. По этой команде будет
запрошен идентификатор процесса ( PID ), после ввода которого, процесс будет
завершен.
r — изменить текущий приоритет задачи (renice).
Как и при выполнении предыдущей команды, будет запрошен PID, и затем, новое значение
приоритета (отображается в колонке NI). Диапазон значений приоритетов — от минус 20
(наивысший) до плюс 19. Отрицательные значения и 0 может устанавливать только
пользователь root.
Для выхода из top нажмите q
Эти же действия (принудительное завершение процесса и изменение его приоритета)
можно выполнить и без команды top.
Процессы в Linux имеют возможность обмениваться
так называемыми «сигналами» с ядром и другими процессами. При получении сигнала
процессом, управление передается подпрограмме его обработки или ядру, если такой подпрограммы не существует. В Linux имеется команда kill, которая позволяет послать заданному процессу любой сигнал. Список сигналов можно получить по команде:kill -l
В результате выполнения этой команды вы увидите список номеров и названий сигналов.
Для того, чтобы послать определенный сигнал выбранному процессу, нужно ввести:kill номер PID выбранного процесса
Например, нам нужно завершить работу приложения Midnight Commander (mc).
Определим идентификатор процесса mc:ps -e | grep mc
Пусть PID= 11597.