При работе в редакторе nano нажмите
Alt+#чтобы отобразить номера строк
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2🔥1
Подстановка вывода команды: $()
Оператор, который мы сегодня рассмотрим, является суперполезной фичей оболочки. Мы буквально можем подставить вывод команды либо целой цепочки посреди выражения.
Предположим, у вас есть несколько тысяч текстовых файлов c песнями. Каждый файл содержит название песни, ее текст и имя исполнителя:
Стоит задача распределить файлы в подкаталоги по исполнителям. Ну, для начала, можно найти все файлы песен исполнителя с помощью
Затем переместить каждый файл в необходимый каталог:
Чет неудобно, так? Было бы неплохо сказать оболочке: «Перемести все файлы, содержащие строку Лепс, в каталог leps».
Для этого нужно забрать то, что нам выдала команда
Синтаксис
Таким образом,
В сценариях оболочки подстановка бывает полезна для сохранения вывода команды в переменной:
Например, напишем простенький скрипт, который поможет нам узнать, содержит ли текущая директория файлы:
Выдаем права на выполнение, запускаем и проверяем:
Для чего бывает полезно брать
Есть несколько основных кейсов, когда следует использовать
Во-первых, если вывод команды содержит пробелы, он будет разбит на отдельные слова.
Представим, что стоит задача определить для текущей директории специальные права.
Есть момент - имя каталога состоит из нескольких слов, разделенных пробелами "photo and video":
После подстановки оболочка интерпретирует это как попытку применить
Чтобы вывод
Во-вторых, без кавычек символы перевода строки могут быть удалены при выводе через
Если требуется сохранить четкую структуру текста, содержащего спецсимволы, следует использовать
Оператор, который мы сегодня рассмотрим, является суперполезной фичей оболочки. Мы буквально можем подставить вывод команды либо целой цепочки посреди выражения.
Предположим, у вас есть несколько тысяч текстовых файлов c песнями. Каждый файл содержит название песни, ее текст и имя исполнителя:
Название: Зеркала
Исполнитель: Лепс
Острые углы, нервы, суета
Стоит задача распределить файлы в подкаталоги по исполнителям. Ну, для начала, можно найти все файлы песен исполнителя с помощью
grep:$ grep -l "Лепс" *.txt
song1.txt
song2.txt
Затем переместить каждый файл в необходимый каталог:
$ mkdir leps
$ mv song1.txt leps
$ mv song2.txt leps
Чет неудобно, так? Было бы неплохо сказать оболочке: «Перемести все файлы, содержащие строку Лепс, в каталог leps».
Для этого нужно забрать то, что нам выдала команда
grep -l и передать результат в качестве списка аргументов для mv:$ mv $(grep -l "Лепс" *.txt) leps
Синтаксис
$(команда) выполняет выражение в круглых скобках и заменяет вставку его выводом.Таким образом,
grep -l подменяется подходящими под условие именами файлов. Результат использования $() в примере выше аналогичен:$ mv song1.txt song2.txt leps
В сценариях оболочки подстановка бывает полезна для сохранения вывода команды в переменной:
переменная=$(команда)
Например, напишем простенький скрипт, который поможет нам узнать, содержит ли текущая директория файлы:
status=$(ls ./ 2>/dev/null | wc -l)
if [ "$status" -gt 0 ]; then
echo "В директории есть $status файлов"
else
echo "Директория пуста или не существует"
fi
Выдаем права на выполнение, запускаем и проверяем:
$ chmod +x noscript.sh
$ ./noscript.sh
В директории есть 66 файлов
Для чего бывает полезно брать
$() в кавычки?Есть несколько основных кейсов, когда следует использовать
"$()" вместо $(). Во-первых, если вывод команды содержит пробелы, он будет разбит на отдельные слова.
Представим, что стоит задача определить для текущей директории специальные права.
Есть момент - имя каталога состоит из нескольких слов, разделенных пробелами "photo and video":
$ pwd
$ /home/xoadmin/photo and video
$ chmod 777 $(pwd)
После подстановки оболочка интерпретирует это как попытку применить
chmod к трём разным объектам: "/home/xoadmin/photo", "and", и "video". Это, вероятно, приведёт к ошибке:chmod: cannot access '/home/xoadmin/photo': No such file or directory
chmod: cannot access 'and': No such file or directory
chmod: cannot access 'video': No such file or directory
Чтобы вывод
pwd воспринимался как единое целое, следует заключить оператор в кавычки:$ chmod 777 "$(pwd)"
Во-вторых, без кавычек символы перевода строки могут быть удалены при выводе через
echo:$ echo $(ls)
adduser.conf alsa alternatives apache2 apg.conf apparmor
Если требуется сохранить четкую структуру текста, содержащего спецсимволы, следует использовать
$():$ echo "$(ls)"
adduser.conf
alsa
alternatives
🔥14👍6❤3
Python и DevOps:
Ключ к автоматизации Linux
Автор: Ной Гифт
Год издания: 2022
#python #devops #ru
Скачать книгу
Ключ к автоматизации Linux
Автор: Ной Гифт
Год издания: 2022
#python #devops #ru
Скачать книгу
👍7❤1
Команда
find позволяет выполнять поиск по различным критериям, таким как имя файла, размер, дата изменения и другие параметры. Вы можете указать точный путь или использовать джокеры для более гибкого поиска. Некоторые примеры использования:
1. Найти все файлы с определенным расширением в указанной директории:
find /путь/к/директории -name "*.расширение"
2. Найти файлы, измененные в течении последних n дней:
find /путь/к/директории -mtime -n
3. Найти файлы, у которых размер больше n Кбайт:
find /путь/к/директории -size +nk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥1
tailspin
Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.
Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно🤓
🔛 https://github.com/bensadeh/tailspin
Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.
Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно
Please open Telegram to view this post
VIEW IN TELEGRAM
👌9❤4
#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1💩1🤡1
Права доступа -rwSr--r-- равнозначны...
Anonymous Quiz
7%
0777
6%
2666
34%
4644
28%
4744
25%
Посмотреть ответ
👍4
Топ 7 книг по Linux.
Скачивайте и читайте.
Хакинг на Linux
Автор: Колисниченко Д. Н.
Kali Linux Penetration Testing Bible
Автор: Gus Khawaja
Efficient Linux at the Command Line
Автор: Daniel J. Barrett
Penetration Testing with Kali Linux 2.0
Mastering Kali Linux for Advanced Penetration Testing
Автор: Vijay Kumar Velu
Linux Bible from Scratch
Автор: Christopher Negus
How Linux Works
Автор: Brian Ward
#linux #подборка
Скачивайте и читайте.
Хакинг на Linux
Автор: Колисниченко Д. Н.
Kali Linux Penetration Testing Bible
Автор: Gus Khawaja
Efficient Linux at the Command Line
Автор: Daniel J. Barrett
Penetration Testing with Kali Linux 2.0
Mastering Kali Linux for Advanced Penetration Testing
Автор: Vijay Kumar Velu
Linux Bible from Scratch
Автор: Christopher Negus
How Linux Works
Автор: Brian Ward
#linux #подборка
❤2👍2👌1
SSH-алиас (SSH alias) - это короткое именованное обозначение, которое используется для подключения к удаленному серверу через SSH.
Создание SSH-алиасов позволяет упростить процесс подключения к удаленным серверам и сэкономить время при вводе длинных команд. Вместо того чтобы запоминать и вводить полный адрес сервера, имя пользователя и порт, вы можете использовать короткий и запоминающийся алиас для быстрого подключения.
Для создания SSH-алиаса вам нужно отредактировать файл конфигурации SSH клиента, который обычно называется
config и находится в директории ~/.ssh/1. Открываем файл конфига в любом текстовом редакторе, например:
vim ~/.ssh/config
2. Конфигурируем алиас. Например:
Host my_server
Hostname 34.151.201.192
User ghost23
Port 22
Host - имя алиаса, то самое короткое именованное обозначение, по которому будет выполняться подключение
Hostname - ip-адрес сервера, к которому будет выполняться подключение
User - имя пользователя, под которым будем логиниться на сервере
Port - номер порта, по которому будем подключаться3. Сохраняем изменения.
ssh my_server
Кстати, таких алиасов может быть множество и это очень удобно!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21👎3
Please open Telegram to view this post
VIEW IN TELEGRAM
Вам поможет команда
Допустим, вы открыли какое-то приложение, введя команду в терминале. Если вы об этом забудете и закроете терминал, открытая через него программа тоже закроется. Чтобы этого не произошло, при введении команды нужно написать
Синтаксис:
Завершить работу
nohup.Допустим, вы открыли какое-то приложение, введя команду в терминале. Если вы об этом забудете и закроете терминал, открытая через него программа тоже закроется. Чтобы этого не произошло, при введении команды нужно написать
nohup.Синтаксис:
nohup команда аргументы &
nohup вам пригодится, если вы запускаете какой-то скрипт, работа которого занимает много времени и может происходить в фоновом режиме (для этого в конце добавляется &). После такого запуска вы сможете закрыть терминал или вылогиниться с удаленного сервера, а скрипт продолжит работу.Завершить работу
nohup можно при помощи kill.👍6
Какая специальная переменная содержит id процесса последней команды, выполненной в фоновом режиме?
Anonymous Quiz
11%
$*
16%
$?
23%
$$
25%
$!
25%
Посмотреть ответ