Архив рубрики: Команды

Стать владельцем папки, файла или диска в Windows

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

Читать далее Стать владельцем папки, файла или диска в Windows

Настройка Network Manager в консоли

NetworkManager - популярный инструмент управления сетевыми подключениями в Linux, имеет удобный графический интерфейс как для Gnome, так и для KDE, но бывают ситуации когда окружение рабочего стола не запускается, и нужно поднимать сеть из консоли, или нужно настроить сеть на сервере где не установлено рабочее окружение.

В этой инструкции будет рассмотрена настройка Network Manager в консоли с помощью утилиты nmcli. С настройкой в графическом интерфейсе вы разберетесь без каких-либо инструкций, поэтому была выбрана именно эта тема. Также поговорим о том, как посмотреть информацию о сетевых интерфейсах в системе.
Читать далее Настройка Network Manager в консоли

Выключение и запуск по расписанию Linux

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

Иногда это очень даже полезно, вы экономите время, в место того чтобы ждать пока загрузится операционная система, можно сразу садится и работать, и это просто удобно. Можно запланировать включение компьютера по расписанию, даже после завершения работы скрипта.
Читать далее Выключение и запуск по расписанию Linux

Команда grep в Linux

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

В этой инструкции мы рассмотрим что такое команда grep Linux, подробно разберём синтаксис и возможные опции grep, а также приведём несколько примеров работы с этой утилитой.

Что такое grep?

Название команды grep расшифровывается как "search globally for lines matching the regular expression, and print them". Это одна из самых востребованных команд в терминале Linux, которая входит в состав проекта GNU. До того как появился проект GNU, существовала утилита предшественник grep, с тем же названием, которая была разработана в 1973 году Кеном Томпсоном для поиска файлов по содержимому в Unix. А потом уже была разработана свободная утилита с той же функциональностью в рамках GNU.

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

Синтаксис grep

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

$ grep [опции] шаблон [/путь/к/файлу/или/папке...]

Или:

$ команда | grep [опции] шаблон

Здесь:

  • Опции - это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
  • Шаблон - это любая строка или регулярное выражение, по которому будет выполняться поиск.
  • Имя файла или папки - это то место, где будет выполняться поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.

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

Опции

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

  • -E, --extended-regexp - включить расширенный режим регулярных выражений (ERE);
  • -F, --fixed-strings - рассматривать шаблон поиска как обычную строку, а не регулярное выражение;
  • -G, --basic-regexp - интерпретировать шаблон поиска как базовое регулярное выражение (BRE);
  • -P, --perl-regexp - рассматривать шаблон поиска как регулярное выражение Perl;
  • -e, --regexp - альтернативный способ указать шаблон поиска, опцию можно использовать несколько раз, что позволяет указать несколько шаблонов для поиска файлов, содержащих один из них;
  • -f, --file - читать шаблон поиска из файла;
  • -i, --ignore-case - не учитывать регистр символов;
  • -v, --invert-match - вывести только те строки, в которых шаблон поиска не найден;
  • -w, --word-regexp - искать шаблон как слово, отделенное пробелами или другими знаками препинания;
  • -x, --line-regexp - искать шаблон как целую строку, от начала и до символа перевода строки;
  • -c - вывести количество найденных строк;
  • --color - включить цветной режим, доступные значения: never, always и auto;
  • -L, --files-without-match - выводить только имена файлов, будут выведены все файлы в которых выполняется поиск;
  • -l, --files-with-match - аналогично предыдущему, но будут выведены только файлы, в которых есть хотя бы одно вхождение;
  • -m, --max-count - остановить поиск после того как будет найдено указанное количество строк;
  • -o, --only-matching - отображать только совпавшую часть, вместо отображения всей строки;
  • -h, --no-filename - не выводить имя файла;
  • -q, --quiet - не выводить ничего;
  • -s, --no-messages - не выводить ошибки чтения файлов;
  • -A, --after-content - показать вхождение и n строк после него;
  • -B, --before-content - показать вхождение и n строк перед ним;
  • -C - показать n строк до и после вхождения;
  • -a, --text - обрабатывать двоичные файлы как текст;
  • --exclude - пропустить файлы имена которых соответствуют регулярному выражению;
  • --exclude-dir - пропустить все файлы в указанной директории;
  • -I - пропускать двоичные файлы;
  • --include - искать только в файлах, имена которых соответствуют регулярному выражению;
  • -r - рекурсивный поиск по всем подпапкам;
  • -R - рекурсивный поиск включая ссылки;

Все самые основные опции рассмотрели, теперь давайте перейдём к примерам работы команды grep Linux.

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

Давайте перейдём к практике. Сначала рассмотрим несколько основных примеров поиска внутри файлов Linux с помощью grep.

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

В первом примере мы будем искать информацию о пользователе root в файле со списком пользователей Linux /etc/passwd. Для этого выполните следующую команду:

grep root /etc/passwd

В результате вы получите что-то вроде этого:

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

grep -i "time" /etc/passwd

В этом случае Time, time, TIME и другие вариации слова будут считаться эквивалентными. Ещё, вы можете указать несколько условий для поиска, используя опцию -e. Например:

grep -e "root" -e "daemon" /etc/passwd

C помощью опции -n можно выводить номер строки, в которой найдено вхождение, например:

grep -n 'root' /etc/passwd

Это всё хорошо работает пока ваш поисковый запрос не содержит специальных символов. Например, если вы попытаетесь найти все строки, которые содержат символ "[" в файле /etc/grub/00_header, то получите ошибку, что это регулярное выражение не верно. Для того чтобы этого избежать, нужно явно указать, что вы хотите искать строку с помощью опции -F:

grep -F "[" /etc/grub.d/00_header

Теперь вы знаете как выполняется поиск текста файлах grep.

2. Фильтрация вывода команды

Для того чтобы отфильтровать вывод другой команды с помощью grep достаточно перенаправить его используя оператор |. А файл для самого grep указывать не надо. Например, для того чтобы найти все процессы gnome можно использовать такую команду:

ps aux | grep "gnome"

В остальном всё работает аналогично.

3. Базовые регулярные выражения

Утилита grep поддерживает несколько видов регулярных выражений. Это базовые регулярные выражения (BRE), которые используются по умолчанию и расширенные (ERE). Базовые регулярные выражение поддерживает набор символов, позволяющих описать каждый определённый символ в строке. Это: ., *, [], [^], ^ и $. Например, вы можете найти строки, которые начитаются на букву r:

grep "^r" /etc/passwd

Или же строки, которые содержат большие буквы:

grep "[A-Z]" /etc/passwd

А так можно найти все строки, которые заканчиваются на ready в файле /var/log/dmesg:

grep "ready$" /var/log/dmesg

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

4. Расширенные регулярные выражения

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

  • + - одно или больше повторений предыдущего символа;
  • ? - ноль или одно повторение предыдущего символа;
  • {n,m} - повторение предыдущего символа от n до m раз;
  • | - позволяет объединять несколько паттернов.

Для активации расширенного синтаксиса нужно использовать опцию -E. Например, вместо использования опции -e, можно объединить несколько слов для поиска вот так:

grep -E "root|daemon" /etc/passwd

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

5. Вывод контекста

Иногда бывает очень полезно вывести не только саму строку со вхождением, но и строки до и после неё. Например, мы хотим выбрать все ошибки из лог-файла, но знаем, что в следующей строчке после ошибки может содержаться полезная информация, тогда с помощью grep отобразим несколько строк. Ошибки будем искать в /var/log/dmesg по шаблону "Error":

grep -A4 "Error" /var/log/dmesg

Выведет строку с вхождением и 4 строчки после неё:

grep -B4 "Error" /var/log/dmesg

Эта команда выведет строку со вхождением и 4 строчки до неё. А следующая выведет по две строки с верху и снизу от вхождения.

grep -C2 "Error" /var/log/dmesg

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

До этого мы рассматривали поиск в определённом файле или выводе команд. Но grep также может выполнить поиск текста в нескольких файлах, размещённых в одном каталоге или подкаталогах. Для этого нужно использовать опцию -r. Например, давайте найдём все файлы, которые содержат строку Kernel в папке /var/log:

grep -r "Kernel" /var/log

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

grep -rI "Kernel" /var/log

Некоторые файлы доступны только суперпользователю и для того чтобы выполнять по ним поиск вам нужно запускать grep с помощью sudo. Или же вы можете просто скрыть сообщения об ошибках чтения и пропускать такие файлы с помощью опции -s:

grep -rIs "Kernel" /var/log

7. Выбор файлов для поиска

С помощью опций --include и --exclude вы можете фильтровать файлы, которые будут принимать участие в поиске. Например, для того чтобы выполнить поиск только по файлам с расширением .log в папке /var/log используйте такую команду:

grep -r --include="*.log" "Kernel" /var/log

А для того чтобы исключить все файлы с расширением .journal надо использовать опцию --exclude:

grep -r --exclude="*.journal" "Kernel" /var/log

8. Поиск слов в grep

Когда вы ищете строку abc, grep будет выводить также kbabc, abc123, aafrabc32 и тому подобные комбинации. Вы можете заставить утилиту искать по содержимому файлов в Linux строки, которые включают только искомые слова полностью с помощью опции -w. Например:

grep -w "root" /etc/passwd

9. Количество строк

Утилита grep может сообщить, сколько строк с определенным текстом было найдено файле. Для этого используется опция -c (счетчик). Например:

grep -c 'Kernel' /var/log/dmesg

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

Команда grep Linux может быть использована для поиска строк, которые не содержат указанное слово. Например, так можно вывести только те строки, которые не содержат слово nologin:

grep -v nologin /etc/passwd

11. Вывод имен файлов

Вы можете указать grep выводить только имена файлов, в которых было хотя бы одно вхождение с помощью опции -l. Например, следующая команда выведет все имена файлов из каталога /var/log, при поиске по содержимому которых было обнаружено вхождение Kernel:

grep -lr 'Kernel' /var/log/

12. Цветной вывод

По умолчанию grep не будет подсвечивать совпадения цветом. Но в большинстве дистрибутивов прописан алиас для grep, который это включает. Однако, когда вы используйте команду c sudo это работать не будет. Для включения подсветки вручную используйте опцию --color со значением always:

sudo grep --color=always root /etc/passwd

Получится:

Выводы

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

Команда nethogs в Linux

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

Такое может понадобиться если у вас медленный интернет и вы хотите спокойно посмотреть любимые сайты, а тут какая-то программа начинает что-то качать при чем какая не понятно. Вот для таких случаев есть инструмент NetHogs. В этой статье мы обсудим установку, настройку и особенности работы с NetHogs.
Читать далее Команда nethogs в Linux

Команда chattr в Linux

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

Эта утилита позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение). Для просмотра текущих аттрибутов можно использовать lsattr. Изначально атрибуты управляемые chattr и lsattr поддерживались только файловыми системами семейства ext (ext2,ext3,ext4). но теперь эта возможность доступна и в других популярных файловых системах таких как XFS, Btrfs, ReiserFS, и т д.
Читать далее Команда chattr в Linux

Команда hdparm linux

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

Изменение стандартных значений для некоторых параметров может очень сильно увеличить производительность диска, однако на данный момент нет точного способа определить оптимальные значения. Это можно сделать только путём проб и ошибок. В этой небольшой статье мы разберемся как работает команда hdparm linux, а также что с помощью неё можно сделать.
Читать далее Команда hdparm linux

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

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

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

Команды в Android Terminal Emulator

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

  • первый - скачать приложение Android Terminal Emulator с GooglePlay.
  • второй подключиться к смартфону с компьютера с помощью отладчика adb.

Но наша статья не об этом, сегодняшняя тема: команды в Aandroid Terminal Emulator или точнее команды терминала Android.

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

Теперь об обозначениях — для некоторых команд необходимы права root, перед ними я буду ставить знак @.

Начнем. Команды терминала это ничто иное как небольшие консольные утилиты, большинство системных утилит находится в папке /system/bin и еще несколько в /vendor/bin. Те что в vendor мы трогать не будем. Чтобы было удобнее расположу все команды по алфавиту.

adb - Отладчик андроид. Поскольку Android это все же Linux, к нему по USB можно подключать другие устройства в том числе смартфоны, adb позволяет ими управлять и дает доступ к их терминалу. описание его команд и возможностей тянет на целую статью, я опишу все в одной из следующих статей.

am - Менеджер окон (Action Manager), с помощью него можно запустить и остановить любое приложение или сервис. Например запуск приложения настройки:

am start -n com.android.settings/.Settings

badblocks — проверка флешки на наличие битых секторов:

Результат можно записать в файл:

badblocks /dev/block/mmcblk0 > /sdcard/badblocks

или вывести на экран:

badblocks -v /dev/block/mmcblk0

bmgr — управление резервным копированием Android.

cat — консольная утилита для просмотра содержимого файла.

cat /sdcard/text.txt

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

Например дать все права (чтение, запись, выполнение):

chmod 777 /sdcard/file

chown — меняет владельца файла в Linux, Например:

chown root /sdcard/file

cmp — сравнивает два файлы

cmp /sdcard/file1 /sdcard/file2

cp — копирует файл, из источника(параметр 1) в приемник(параметр 2).

cp /sdcard/file1 /sdcard1/

Подробнее о cp можно почитать в статье копирование файлов в linux

date — показать текущую дату в системе.

date

Sat Nov 14 13:44:56 EET 2015

dd — создать образ диска, Параметры if= файл устройства диска, of=файл для записи

Например:

dd /dev/block/mmcblk0 /sdcard/img.iso

Будет создан образ флешки mmcblk0.

df — анализ свободного места на диске. Например:

df -h /dev/block/mmcblk1

Filesystem Size Used Free Blksize
/mnt/secure 484.5M 0.0K 484.5M 4096
/mnt/asec 484.5M 0.0K 484.5M 4096
/mnt/obb 484.5M 0.0K 484.5M 4096
/system 1.4G 971.7M 435.8M 4096

dmesg — просмотр лога сообщений ядра.

du — просмотр размера файла.

du /sdcard/file1

@ ext4_resize изменение размера раздела с файловой системой ext4.

@ fsck_msdos — проверка флешки на ошибки.

fsck_msdos /dev/block/mmcblk1p1

grep — утилита для фильтрации текста. Например вывести только строки содержащие terminal:

cat ~/sdcard/file | grep terminal

@ ifconfig — просмотр и управление сетевыми устройствами. Например просмотр информации о карте wifi:

ifconfig wlan0

Или отключение wifi:

ifconfig wlan0 down

Узнать список сетевых устройств можно командой:

ls /sys/class/net

iptables — управление настройками фаервола iptables, это очень обширная тема которой мы касаться не будем.

kill — уничтожить процесс по его PID.

kill 1435

Чтобы узнать pid можно использовать утилиту ps.

ln — создать ссылку на файл или папку, если указан параметр -s — символическую ссылку.

ln /sdcard/file /sdcard/file2

log — записать строку в лог системы.

log "Hollo log"

logcut — просмотр лога системы в реальном времени.

ls — просмотр списка файлов и папок в директории:

ls /mnt/

lsmod — просмотр загруженных модулей ядра

lsof — просмотр открытых в системе файлов.

make_ext4fs — форматировать флешку в файловую систему ext4

md5 — подсчитать контрольную суму файла.

md5 /sdcard/filename

mkdir — создать папку, в текущем каталоге.

mkdir имя_папки

make2fs — форматировать флешку в файловую систему ext2

mount — примонтировать диск, образ или папку. Например:

mount -t ext2 /dev/block/mmcblk1p1 /mnt/sdcard

Подробнее о монтировании можно почитать в моей статье: Монтирование в Android

mv — переместить файл, аналогично cp

netcfg — просмотр информации об сетевых соединениях.

notify — утилита для слежения за изменениями в файловой системы с помощью подсистемы ядра inotify.

ping — известная утилита для проверки доступности сетевого узла.

ping ya.ru

pm — пакетный менеджер android, позволяет, устанавливать, удалять и просматривать установленные пакеты.

ps — просмотр всех запущенных процессов и информации о них.

ps

USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 1000 848 c0106ef8 0001bfb4 S /init
root 2 0 0 0 c006e038 00000000 S kthreadd
root 3 2 0 0 c0057a54 00000000 S ksoftirqd/0

reboot — перезагрузить смартфон из консоли.

resize2fs — аналогично resize_ext4, только для ext2

rm — удалить файл.

rm /sdcard/file

rmdir — удалить папку.

rmdir /sdcard/dirname

rmmod — выгрузить модуль ядра.

rmmod имя_модуля

route — управление таблицей маршрутизации.

touch — создать пустой файл.

touch /sdcard/file

top — интерактивный вариант списка запущенных процессов.

@ screenshot — сделать снимок экрана.

screenshot /sdcard/screenshot.png

shutdown — выключить смартфон.

shutdown -h now

service — управление сервисами. Например посмотреть список запущенных сервисов:

service list

Это были все команды описание которых я нашел, по возможности список будет пополняться.

Десерт на сегодня - обзор новой версии Android 6.0 Marshmallow: