Шпаргалка по
grep — это мощный инструмент для поиска текста в файлах на основе регулярных выражений.
Основные команды:
1. Поиск строки в файле:
Ищет указанную строку в файле.
2. Поиск в нескольких файлах:
3. Поиск рекурсивно:
Ищет строку во всех файлах указанного каталога.
4. Игнорирование регистра:
5. Показать номер строки:
6. Вывод строк, не содержащих шаблон:
7. Подсветка совпадений:
8. Подсчитать количество совпадений:
Расширенные команды:
1. Использование регулярных выражений:
Или:
2. Поиск с указанием количества строк до и после совпадения:
3. Поиск только имени файла:
4. Инвертированный поиск файлов:
Показывает файлы, в которых не найдено совпадений.
Полезные опции:
-
-
-
Примеры:
1. Поиск строки "error" в логах:
2. Поиск строк с IP-адресами:
3. Поиск строки и запись результата в файл:
grep
grep — это мощный инструмент для поиска текста в файлах на основе регулярных выражений.
Основные команды:
1. Поиск строки в файле:
grep "строка" имя_файла
Ищет указанную строку в файле.
2. Поиск в нескольких файлах:
grep "строка" файл1 файл2
3. Поиск рекурсивно:
grep -r "строка" /путь/к/каталогу
Ищет строку во всех файлах указанного каталога.
4. Игнорирование регистра:
grep -i "строка" имя_файла
5. Показать номер строки:
grep -n "строка" имя_файла
6. Вывод строк, не содержащих шаблон:
grep -v "строка" имя_файла
7. Подсветка совпадений:
grep --color "строка" имя_файла
8. Подсчитать количество совпадений:
grep -c "строка" имя_файла
Расширенные команды:
1. Использование регулярных выражений:
grep -E "регулярное_выражение" имя_файла
Или:
egrep "регулярное_выражение" имя_файла
2. Поиск с указанием количества строк до и после совпадения:
grep -A 3 -B 2 "строка" имя_файла
-A
(after) и -B
(before) указывают количество строк, которые будут выведены до и после найденной строки.3. Поиск только имени файла:
grep -l "строка" *
4. Инвертированный поиск файлов:
grep -L "строка" *
Показывает файлы, в которых не найдено совпадений.
Полезные опции:
-
-w
— ищет полные слова.-
-o
— выводит только совпавшие строки.-
-q
— тихий режим, без вывода в терминал, используется для проверки совпадений.Примеры:
1. Поиск строки "error" в логах:
grep "error" /var/log/syslog
2. Поиск строк с IP-адресами:
grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' имя_файла
3. Поиск строки и запись результата в файл:
grep "pattern" имя_файла > output.txt
❤2
Создаем логические тома LVM на Linux
Система хранения данных – один из тех кардинальных компонентов, без которых ваш сервер не может обойтись, и поэтому требует к себе пристального внимания, несмотря ни на что.
Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.
https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
Система хранения данных – один из тех кардинальных компонентов, без которых ваш сервер не может обойтись, и поэтому требует к себе пристального внимания, несмотря ни на что.
Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.
https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
❤1👍1
Выводим список установленных пакетов в Linux по дате
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!
https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
❤2
Стандартные инструменты для диагностики системы Linux
Ядро:
*
*
*
* l
*
Ввод/вывод:
*
*
*
*
blktrace
Системные и библиотечные вызовы:
*
*
Аппаратные счётчики:
*
*
Сеть:
*
*
*
*
*
*
*
*
Процессы:
*
*
*
*
Процессор:
*
*
*
Универсальные:
*
*
*
*
*
Ядро:
*
perf
— (в прошлом performance counters for Linux) — доступ к различным внутренним счётчикам ядра; незаменимый инструмент для выполнения профайлинга ядра/операционной системы*
ftrace
— трассировщик вызовов функций внутри ядра Linux*
stap
— скриптовый язык и инструмент для комплексной диагностики ядра и процессов Linux* l
ttng
— (Linux Trace Toolkit Next Generation) инструмент для трассировки ядра, программ и библиотек Linux*
bcc
(BPF) — (сравнительно) новый и очень мощный инструмент для трассировки и манипуляции ядром Linux, основанный на Berkeley Packet Filter, позволяет делать космические вещиВвод/вывод:
*
iostat
(sysstat) — статистика ввода/вывода по заданному устройству (количество операций записи/чтения в единицу времени, скорость записи/чтения)*
pidstat
(sysstat) — нагрузка на процессор, память и устройства от конкретного процесса (заданного по имени или номеру)*
pcstat
— использование кэша (какой процент файла попадает в кэш, какой нет)*
lsof
— информация об открытых процессом файлахblktrace
Системные и библиотечные вызовы:
*
strace
— информация о системных вызовов, выполняемых процессом, позволяет понять или по крайней мере лучше разобраться, почему процесс висит или потребляет много ресурсов*
ltrace
— трассировка библиотечных вызовов (которые не обязательно являются системными)Аппаратные счётчики:
*
tiptop
— информация о процессах в реальном времени, похожа на top, но в отличие от него данные преимущественно берутся с аппаратных счётчиков*
numastat
— просмотр информации об использовании памяти процессами/процессорами в системах с NUMA-архитектуройСеть:
*
netstat
— классический инструмент для просмотра конфигурации сети (сокетов, интерфейсов и так далее)*
ss
— socket statistics, позволяет получить информацию об открытых сокетах и их состоянии (похожа на netstat, но умеет больше)*
ethtool
— просмотр настроек и состояния ethernet-интерфейса*
snmpget
— получение данных по SNMP*
lldptool
— настройка LLDP и просмотр данных LLDP*
nicstat
— статистика использования сетевой карты (сетевого интерфейса)*
ip
— конфигурация и статистика стека TCP/IP Linux*
ifstat
— статистика использования сетевого интерфейса в реальном времениПроцессы:
*
top
— информация о наиболее активных (наиболее ресурсоёмки) процессах + общая информация о системе*
vmstat
— данные об использовании виртуальной памяти*
free
— информация о свободной памяти, кэше, буферах*
slabtop
— информация о заполнении SLAB-кэшаПроцессор:
*
mpstat
(sysstat) — общая информация об использовании процессора (одного или всех процессоров)*
turbostat
(kernel-tools) — информация о топологии процессора, частоте, питании, температуре*
rdmsr
— (Read from Model Specific Register) чтение из моделезависимых регистров (позволяет оценить использование LLC-кэша и прочее)Универсальные:
*
sar
— (system activity report) информация о системной активности в реальном времени (диск, память, процессор и так далее)*
dstat
— универсальный инструмент для сбора информации о системе (vmstat, iostat, netstat, ifstat и ещё много других в одном флаконе)*
dmesg
— журнал сообщений ядра с момента загрузки системы*
/proc
— псевдофайловая система предоставляющая доступ к внутренним данным/счётчикам ядра*
sysdig
— универсальный инструмент для сбора и анализа данных о системе (сотни различных источников скомбинированные вместе)❤3
Трюки терминала Bash
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Изменить заглавные на строчные и наоборот
Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
Запускает последнюю команду и меняет какой-то параметр. Например, меняем
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
— запускает
Указание файлов по шаблону в Bash
Полезные переменные окружения Bash
Короткие переменные:
Более длинные, но тоже полезные переменные:
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Ctrl + n
— то же самое, что и стрелка вниз.Ctrl + p
— то же самое, что и стрелка вверх.Ctrl + r
— поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r
, чтобы искать дальше. Ctrl + Shift + r
— поиск в другую сторону.Ctrl + s
— остановить вывод в терминал.Ctrl + q
— восстановить вывод в терминал после Ctrl + s.Ctrl + a
— перейти к началу строки (аналог клавиши Home).Ctrl + e
— перейти к концу строки (аналог клавиши End).Ctrl + d
— если вы ввели что-то, то Ctrl + d
удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.Ctrl + k
— удалить весь текст от курсора до конца строки.Ctrl + x + backspace
— удалить весь текст от начала строки до курсора.Ctrl + t
— переставить символ до курсора на символ под курсором. Нажмите Esc + t
для перестановки двух слов до курсора.Ctrl + w
— удалить слово до курсора; затем Ctrl + y, чтобы вставить его.Ctrl + u
— удалить строку перед курсором; Ctrl + y для вставки его.Ctrl + _
— отменить ввод.Ctrl + l
— очищает окно терминала. То же самое, что и clear.Ctrl + x + Ctrl + e
— запускает редактор, определённый в переменной $EDITOR
, для ввода команды. Полезно для многострочных команд.Изменить заглавные на строчные и наоборот
Esc + u
— преобразовать буквы от курсора до конца строки в заглавные буквы.Esc + l
— преобразовать буквы от курсора до конца строки в нижний регистр.Esc + c
— заменить букву под курсором на заглавную.Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!!
— запуск последней команды.sudo !!
— запустить предыдущую команду с sudo.Запускает последнюю команду и меняет какой-то параметр. Например, меняем
"aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb
$ echo 'bbb'
bbb
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
:&
:^aaa^bbb^:&
# или
!!:gs/aaa/bbb/
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c
— запускает
cat filename
ещё раз.Указание файлов по шаблону в Bash
/etc/pa*wd
→ /etc/passwd
— символ *
означает "несколько любых символов"./b?n/?at
→ /bin/cat
— символ ?
означает "один любой символ".ls -l [a-z]*
— вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках []
перечисляются символы, которые будут искаться. А символ *
после []
означает "хоть сколько раз".ls {*.sh,*.py}
— вывести все .sh и .py файлы. {}
используется для группировки нескольких шаблонов по принципу "или".Полезные переменные окружения Bash
Короткие переменные:
$0
— оболочка командной строки или путь до запускаемого файла.$1
, $2
, $3
, ... — аргументы запуска скрипта.$#
— число аргументов, переданных в скрипт из терминала.$?
— код завершения последней команды.$-
— текущие опции, установленные для оболочки.$$
— идентификатор текущего процесса.$!
— идентификатор процесса, завершённого последним.Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION
— текущий менеджер дисплеев.$EDITOR
— редактор текста по умолчанию.$LANG
— используемый системой язык.$PATH
— список директорий, в которых будут искаться исполняемые файлы.$PWD
— текущая директория.$SHELL
— текущая оболочка командной строки.$USER
— имя текущего пользователя.$HOSTNAME
— имя текущего хоста (компьютера).❤5👍2
Bash. Проверки файлов
Kоманды позволяют проверять различные условия, касающиеся файлов
#!/bin/bash
Kоманды позволяют проверять различные условия, касающиеся файлов
-d file
# Проверяет, существует ли файл, и является ли он директорией.-e file
# Проверяет, существует ли файл.-f file
# Проверяет, существует ли файл, и является ли он файлом.-r file
# Проверяет, существует ли файл, и доступен ли он для чтения.-s file
# Проверяет, существует ли файл, и не является ли он пустым.-w file
# Проверяет, существует ли файл, и доступен ли он для записи.-x file
# Проверяет, существует ли файл, и является ли он исполняемым.file1 -nt file2
# Проверяет, новее ли file1, чем file2.file1 -ot file2
# Проверяет, старше ли file1, чем file2.-O file
# Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.-G file
# Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.#!/bin/bash
mydir=/home/likegeeks
if [ -d $mydir ] # если файл сущетсвует и он является директорией
then
echo "The $mydir directory exists" # выводим сообщение
cd $mydir # переходим в него
ls # отображаем содержимое
else # ИНАЧЕ
echo "The $mydir directory does not exist"
fi
❤2👍2
Работа с файлами и папками PowerShell
Перечисление всех файлов и папок в папке
Все элементы можно получить непосредственно в папке с помощью Get-ChildItem. Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает прямое содержимое диска C:PowerShell.
Команда перечисляет только непосредственно содержащиеся элементы, например команду dir в cmd.exe оболочке UNIX или ls в ней. Чтобы отобразить элементы в вложенной папке, необходимо указать параметр Recurse . Следующая команда выводит список всех элементов на C: диске:
Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Вы можете выполнять сложную фильтрацию на основе других свойств элементов с помощью Where-Object.
Следующая команда находит все исполняемые файлы в папке Program Files, которые были изменены после 1 октября 2005 года, и они не меньше 1 мегабайт или больше 10 мегабайт:
Копирование файлов и папок
Копирование выполняется с помощью командлета Copy-Item. Следующая команда создает резервную копию скрипта профиля PowerShell:
Команда Test-Path проверка, существует ли скрипт профиля.
Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.
Эта команда работает, даже если целевой объект доступен только для чтения.
Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.
Можно также скопировать избранные элементы. Следующая команда копирует все .txt файлы, содержащиеся в любом месте в C:\dataC:\temp\text:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
Вы по-прежнему можете выполнять собственные команды, такие как xcopy.exe и robocopy.exe копировать файлы.
Создание файлов и папок
Создание новых элементов работает одинаково для всех поставщиков PowerShell. Если поставщик PowerShell имеет несколько типов элементов, например поставщик FileSystem PowerShell различает каталоги и файлы, необходимо указать тип элемента.
Эта команда создает папку C:\temp\New Folder:
Эта команда создает пустой файл C:\temp\New Folder\file.txt.
Удаление всех файлов и папок в папке
Удалить вложенные элементы можно с помощью командлета Remove-Item, однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, если вы попытаелись удалить папку C:\temp\DeleteMe , содержащую другие элементы, PowerShell запрашивает подтверждение перед удалением папки:
Если вам не нужно запрашивать каждый содержащийся элемент, укажите параметр Recurse :
Перечисление всех файлов и папок в папке
Все элементы можно получить непосредственно в папке с помощью Get-ChildItem. Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает прямое содержимое диска C:PowerShell.
Get-ChildItem -Path C:\ -Force
Команда перечисляет только непосредственно содержащиеся элементы, например команду dir в cmd.exe оболочке UNIX или ls в ней. Чтобы отобразить элементы в вложенной папке, необходимо указать параметр Recurse . Следующая команда выводит список всех элементов на C: диске:
Get-ChildItem -Path C:\ -Force -Recurse
Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Вы можете выполнять сложную фильтрацию на основе других свойств элементов с помощью Where-Object.
Следующая команда находит все исполняемые файлы в папке Program Files, которые были изменены после 1 октября 2005 года, и они не меньше 1 мегабайт или больше 10 мегабайт:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe |
Where-Object -FilterScript {
($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)
}
Копирование файлов и папок
Копирование выполняется с помощью командлета Copy-Item. Следующая команда создает резервную копию скрипта профиля PowerShell:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak')
}
Команда Test-Path проверка, существует ли скрипт профиля.
Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force
}
Эта команда работает, даже если целевой объект доступен только для чтения.
Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.
Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe
Можно также скопировать избранные элементы. Следующая команда копирует все .txt файлы, содержащиеся в любом месте в C:\dataC:\temp\text:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
Вы по-прежнему можете выполнять собственные команды, такие как xcopy.exe и robocopy.exe копировать файлы.
Создание файлов и папок
Создание новых элементов работает одинаково для всех поставщиков PowerShell. Если поставщик PowerShell имеет несколько типов элементов, например поставщик FileSystem PowerShell различает каталоги и файлы, необходимо указать тип элемента.
Эта команда создает папку C:\temp\New Folder:
New-Item -Path 'C:\temp\New Folder' -ItemType Directory
Эта команда создает пустой файл C:\temp\New Folder\file.txt.
New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File
Удаление всех файлов и папок в папке
Удалить вложенные элементы можно с помощью командлета Remove-Item, однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, если вы попытаелись удалить папку C:\temp\DeleteMe , содержащую другие элементы, PowerShell запрашивает подтверждение перед удалением папки:
Remove-Item -Path C:\temp\DeleteMe
Если вам не нужно запрашивать каждый содержащийся элемент, укажите параметр Recurse :
Remove-Item -Path C:\temp\DeleteMe -Recurse
❤2👍1