🐧 Linux Junior. Программирование под Linux. – Telegram
🐧 Linux Junior. Программирование под Linux.
3.21K subscribers
169 photos
2 videos
1 file
101 links
Канал для программистов работающих с Linux.
Почти все Python девелоперы с нами ну и другие тоже подтянутся.

По рекламе: @jannytg
@anothertechrock
Download Telegram
💡 Быстрый совет по Linux

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

Alt+#


чтобы отобразить номера строк

👉 🐧 Linux Junior | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142🔥1
Подстановка вывода команды: $()

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

Предположим, у вас есть несколько тысяч текстовых файлов 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👍63
Python и DevOps:
Ключ к автоматизации Linux


Автор: Ной Гифт
Год издания: 2022

#python #devops #ru

Скачать книгу
👍71
👩‍💻 Команда find

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

Некоторые примеры использования:

1. Найти все файлы с определенным расширением в указанной директории:

find /путь/к/директории -name "*.расширение"

2. Найти файлы, измененные в течении последних n дней:

find /путь/к/директории -mtime -n

3. Найти файлы, у которых размер больше n Кбайт:

find /путь/к/директории -size +nk


👉 🐧 Linux Junior | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥1
tailspin

Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.

Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно 🤓

🔛 https://github.com/bensadeh/tailspin
Please open Telegram to view this post
VIEW IN TELEGRAM
👌94
Linux и Go эффективное
низкоуровневое
программирование

Автор:
Олег Цилюрик
Год издания:
2024

#go #ru #2O24 #linux #книга

🐧 Скачать книгу 🐧
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Как очистить экран терминала?

Чтобы очистить экран терминала, введите команду clear. Или просто нажмите Ctrl+L.

#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91💩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 #подборка
2👍2👌1
🖥 Что такое SSH-алиас и как его настроить?

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%
Посмотреть ответ