20 расширенных команд для пользователей Linux среднего уровня
Возможно, первая статья показалась вам очень полезной. Эта статья является продолжением книги «20 полезных команд для новичков в Linux». Первая статья была предназначена для новичков, а эта статья — для пользователей среднего уровня и продвинутых пользователей. Здесь вы узнаете, как настроить поиск, узнать, как запустить процессы, как их завершить, как сделать ваш терминал Linux продуктивным (это важный аспект) и как скомпилировать c, < программыstrong>c++, java в nix.
21. Команда: Найти
Поиск файлов в заданном каталоге, иерархически начиная с родительского каталога и переходя к подкаталогам.
root@tecmint:~# find -name *.sh
./Desktop/load.sh
./Desktop/test.sh
./Desktop/shutdown.sh
./Binary/firefox/run-mozilla.sh
./Downloads/kdewebdev-3.5.8/quanta/scripts/externalpreview.sh
./Downloads/kdewebdev-3.5.8/admin/doxygen.sh
./Downloads/kdewebdev-3.5.8/admin/cvs.sh
./Downloads/kdewebdev-3.5.8/admin/ltmain.sh
./Downloads/wheezy-nv-install.sh
Примечание. Параметр `-имя' делает поиск чувствительным к регистру. Вы можете использовать опцию `-iname', чтобы найти что-то независимо от регистра. (* является подстановочным знаком и ищет все файлы, имеющие расширение «.sh». Вы можете использовать имя файла или часть имени файла для настройки вывода).
root@tecmint:~# find -iname *.SH ( find -iname *.Sh / find -iname *.sH)
./Desktop/load.sh
./Desktop/test.sh
./Desktop/shutdown.sh
./Binary/firefox/run-mozilla.sh
./Downloads/kdewebdev-3.5.8/quanta/scripts/externalpreview.sh
./Downloads/kdewebdev-3.5.8/admin/doxygen.sh
./Downloads/kdewebdev-3.5.8/admin/cvs.sh
./Downloads/kdewebdev-3.5.8/admin/ltmain.sh
./Downloads/wheezy-nv-install.sh
root@tecmint:~# find -name *.tar.gz
/var/www/modules/update/tests/aaa_update_test.tar.gz
./var/cache/flashplugin-nonfree/install_flash_player_11_linux.i386.tar.gz
./home/server/Downloads/drupal-7.22.tar.gz
./home/server/Downloads/smtp-7.x-1.0.tar.gz
./home/server/Downloads/noreqnewpass-7.x-1.2.tar.gz
./usr/share/gettext/archive.git.tar.gz
./usr/share/doc/apg/php.tar.gz
./usr/share/doc/festival/examples/speech_pm_1.0.tar.gz
./usr/share/doc/argyll/examples/spyder2.tar.gz
./usr/share/usb_modeswitch/configPack.tar.gz
Примечание. Приведенная выше команда ищет все файлы с расширением «tar.gz» в корневом каталоге и во всех подкаталогах, включая смонтированные устройства.
Дополнительные примеры команды «find» в Linux см. в разделе 35 «Примеры команд поиска в Linux».
22. Команда: греп
Команда «grep» ищет в данном файле строки, содержащие совпадения с заданными строками или словами. Найдите в «/etc/passwd» пользователя «tecmint».
root@tecmint:~# grep tecmint /etc/passwd
tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash
Игнорировать регистр слов и все остальные комбинации с опцией «-i».
root@tecmint:~# grep -i TECMINT /etc/passwd
tecmint:x:1000:1000:Tecmint,,,:/home/tecmint:/bin/bash
Рекурсивный поиск (-r), т.е. чтение всех файлов в каждом каталоге на наличие строки «127.0.0.1».
root@tecmint:~# grep -r "127.0.0.1" /etc/
/etc/vlc/lua/http/.hosts:127.0.0.1
/etc/speech-dispatcher/modules/ivona.conf:#IvonaServerHost "127.0.0.1"
/etc/mysql/my.cnf:bind-address = 127.0.0.1
/etc/apache2/mods-available/status.conf: Allow from 127.0.0.1 ::1
/etc/apache2/mods-available/ldap.conf: Allow from 127.0.0.1 ::1
/etc/apache2/mods-available/info.conf: Allow from 127.0.0.1 ::1
/etc/apache2/mods-available/proxy_balancer.conf:# Allow from 127.0.0.1 ::1
/etc/security/access.conf:#+ : root : 127.0.0.1
/etc/dhcp/dhclient.conf:#prepend domain-name-servers 127.0.0.1;
/etc/dhcp/dhclient.conf:# option domain-name-servers 127.0.0.1;
/etc/init/network-interface.conf: ifconfig lo 127.0.0.1 up || true
/etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1).
/etc/java-6-openjdk/net.properties:# http.nonProxyHosts=localhost|127.0.0.1
/etc/java-6-openjdk/net.properties:# localhost & 127.0.0.1).
/etc/java-6-openjdk/net.properties:# ftp.nonProxyHosts=localhost|127.0.0.1
/etc/hosts:127.0.0.1 localhost
Примечание. Следующие параметры можно использовать вместе с grep.
- -w для слова (egrep -w ‘word1|word2’ /path/to/file).
- -c для подсчета (т. е. общего количества совпадений шаблона) (grep -c ‘word’ /path/to/file).
- –color для цветного вывода (grep –color сервер /etc/passwd).
23. Команда: мужчина
«man» — это пейджер руководства системы. Man предоставляет онлайн-документацию для всех возможных вариантов команды и ее использования. Почти все команды имеют соответствующие страницы руководства. Например,
root@tecmint:~# man man
MAN(1) Manual pager utils MAN(1)
NAME
man - an interface to the on-line reference manuals
SYNOPSIS
man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I]
[--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p
string] [-t] [-T[device]] [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ...
man -k [apropos options] regexp ...
man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
man -f [whatis options] page ...
man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]]
[-H[browser]] [-X[dpi]] [-Z] file ...
man -w|-W [-C file] [-d] [-D] page ...
man -c [-C file] [-d] [-D] page ...
man [-hV]
Страница руководства для самой страницы руководства, аналогично «man cat» (страница руководства для команды cat) и «man ls» (страница руководства для команды ls).
Примечание: страница руководства предназначена для справки и обучения командам.
24. Команда: пс
ps (Процесс) предоставляет статус запущенных процессов с уникальным Id, называемым PID.
root@tecmint:~# ps
PID TTY TIME CMD
4170 pts/1 00:00:00 bash
9628 pts/1 00:00:00 ps
Чтобы просмотреть состояние всех процессов вместе с id и PID, используйте опцию «-A».
root@tecmint:~# ps -A
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:01 ksoftirqd/0
5 ? 00:00:00 kworker/0:0H
7 ? 00:00:00 kworker/u:0H
8 ? 00:00:00 migration/0
9 ? 00:00:00 rcu_bh
....
Примечание. Эта команда очень полезна, если вы хотите узнать, какие процессы запущены, или иногда может потребоваться PID для завершения процесса. Вы можете использовать его с командой «grep», чтобы найти индивидуальный вывод. Например,
root@tecmint:~# ps -A | grep -i ssh
1500 ? 00:09:58 sshd
4317 ? 00:00:00 sshd
Здесь «ps» передается с помощью команды «grep» для поиска персонализированных и соответствующих нашим потребностям результатов.
25. Команда: убить
Хорошо, вы, возможно, поняли, для чего нужна эта команда, по названию команды. Эта команда используется для завершения процесса, который сейчас неактуален или не отвечает. Это очень полезная команда, скорее очень-очень полезная команда. Возможно, вы знакомы с частым перезапуском Windows из-за того, что большую часть времени работающий процесс невозможно остановить, а в случае его уничтожения требуется перезагрузка Windows, чтобы изменения вступили в силу, но в мире Linux нет таких вещей. Здесь вы можете убить процесс и запустить его, не перезагружая всю систему.
Вам нужен pid процесса (ps), чтобы завершить его.
Предположим, вы хотите завершить работу программы «apache2», которая может не отвечать. Запустите «ps -A» вместе с командой grep.
root@tecmint:~# ps -A | grep -i apache2
1285 ? 00:00:00 apache2
Найдите процесс «apache2», запишите его pid и уничтожьте его. Например, в моем случае «apache2» pid равен «1285».
root@tecmint:~# kill 1285 (to kill the process apache2)
Примечание. Каждый раз, когда вы перезапускаете процесс или запускаете систему, для каждого процесса создается новый pid, и вы можете узнать о текущих запущенных процессах и их >pid с помощью команды «ps».
Другой способ убить тот же процесс.
root@tecmint:~# pkill apache2
Примечание. Для отправки сигналов Kill требуется идентификатор задания/идентификатор процесса, где, как и в случае с pkill, у вас есть возможность использования шаблона, указания владельца процесса и т. д.
26. Команда: где
Команда «whereis» используется для поиска Двоичных файлов, Источников и Страниц руководства команды. Например, чтобы найти Двоичные файлы, Источники и Страницы руководства команды «ls» и « >убить».
root@tecmint:~# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
root@tecmint:~# whereis kill
kill: /bin/kill /usr/share/man/man2/kill.2.gz /usr/share/man/man1/kill.1.gz
Примечание. Иногда полезно знать, где установлены двоичные файлы, чтобы их можно было редактировать вручную.
27. Команда: обслуживание
Команда «service» управляет запуском, остановкой или перезапуском «службы. >'. Эта команда позволяет запустить, перезапустить или остановить службу без перезапуска системы, чтобы изменения вступили в силу.
Запуск сервера apache2 в Ubuntu
root@tecmint:~# service apache2 start
* Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
httpd (pid 1285) already running [ OK ]
Перезапуск сервера apache2 в Ubuntu
root@tecmint:~# service apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [ OK ]
Остановка сервера apache2 в Ubuntu
root@tecmint:~# service apache2 stop
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting [ OK ]
Примечание. Весь сценарий процесса находится в файле «/etc/init.d», и в определенной системе может потребоваться указать путь, т. е. несмотря на запуск « service apache2 start », вам будет предложено запустить «/etc/init.d/apache2 start».
28. Команда: псевдоним
alias – это встроенная команда оболочки, позволяющая назначить имя длинной или часто используемой команде.
Я часто использую команду «ls -l», которая включает 5 символов, включая пробел. Поэтому я создал для этого псевдоним «l».
root@tecmint:~# alias l='ls -l'
проверь работает или нет.
root@tecmint:~# l
total 36
drwxr-xr-x 3 tecmint tecmint 4096 May 10 11:14 Binary
drwxr-xr-x 3 tecmint tecmint 4096 May 21 11:21 Desktop
drwxr-xr-x 2 tecmint tecmint 4096 May 21 15:23 Documents
drwxr-xr-x 8 tecmint tecmint 4096 May 20 14:56 Downloads
drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Music
drwxr-xr-x 2 tecmint tecmint 4096 May 20 16:17 Pictures
drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Public
drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Templates
drwxr-xr-x 2 tecmint tecmint 4096 May 7 16:58 Videos
Чтобы удалить псевдоним «l», используйте следующую команду «unalias».
root@tecmint:~# unalias l
проверьте, является ли «l» псевдонимом или нет.
root@tecmint:~# l
bash: l: command not found
Сделайте немного веселья из этой команды. Сделайте псевдоним определенной важной команды для какой-либо другой важной команды.
alias cd='ls -l' (set alias of ls -l to cd)
alias su='pwd' (set alias of pwd to su)
....
(You can create your own)
....
Теперь, когда ваш друг наберет «cd», подумайте, как было бы забавно, если бы он получил список каталогов, а не смену каталогов. И когда он пытается быть «su», все, что он получает, это расположение рабочего каталога. Вы можете удалить псевдоним позже, используя команду «unalias», как описано выше.
29. Команда: df
Отчет об использовании файловой системы на диске. Полезно как для пользователей, так и для системных администраторов, чтобы отслеживать использование диска. «df» работает путем проверки записей каталога, которые обычно обновляются только при закрытии файла.
root@tecmint:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 47929224 7811908 37675948 18% /
none 4 0 4 0% /sys/fs/cgroup
udev 1005916 4 1005912 1% /dev
tmpfs 202824 816 202008 1% /run
none 5120 0 5120 0% /run/lock
none 1014120 628 1013492 1% /run/shm
none 102400 44 102356 1% /run/user
/dev/sda5 184307 79852 94727 46% /boot
/dev/sda7 95989516 61104 91045676 1% /data
/dev/sda8 91953192 57032 87218528 1% /personal
Дополнительные примеры команды «df» можно найти в статье «12 примеров команд df в Linux».
30. Команда: ду
Оцените использование файлового пространства. Выведите сводную информацию об использовании диска по каждому файлу иерархически, т. е. рекурсивно.
root@tecmint:~# du
8 ./Daily Pics/wp-polls/images/default_gradient
8 ./Daily Pics/wp-polls/images/default
32 ./Daily Pics/wp-polls/images
8 ./Daily Pics/wp-polls/tinymce/plugins/polls/langs
8 ./Daily Pics/wp-polls/tinymce/plugins/polls/img
28 ./Daily Pics/wp-polls/tinymce/plugins/polls
32 ./Daily Pics/wp-polls/tinymce/plugins
36 ./Daily Pics/wp-polls/tinymce
580 ./Daily Pics/wp-polls
1456 ./Daily Pics
36 ./Plugins/wordpress-author-box
16180 ./Plugins
12 ./May Articles 2013/Xtreme Download Manager
4632 ./May Articles 2013/XCache
Примечание: «df» сообщает только статистику использования файловых систем, а «du», с другой стороны, измеряет содержимое каталога. Дополнительные примеры и использование команды «du» можно найти в главе 10 команд du (использование диска).
31. Команда: rm
Команда «rm» означает удаление. rm используется для удаления файлов(ов) и каталогов.
Удаление каталога
root@tecmint:~# rm PassportApplicationForm_Main_English_V1.0
rm: cannot remove `PassportApplicationForm_Main_English_V1.0': Is a directory
Каталог нельзя удалить просто с помощью команды «rm», вам необходимо использовать переключатель «-rf» вместе с «rm».
root@tecmint:~# rm -rf PassportApplicationForm_Main_English_V1.0
Внимание: команда «rm -rf» является разрушительной командой, если вы случайно попали не в тот каталог. Как только вы используете rm -rf' каталог, все файлы и сам каталог внезапно теряются навсегда. Используйте его с осторожностью.
32. Команда: эхо
echo, как следует из названия, отображает текст на стандартном выводе. Это не имеет ничего общего с оболочкой и не читает вывод команды echo. Однако в интерактивном сценарии echo передает сообщение пользователю через терминал. Это одна из команд, которые обычно используются в сценариях, интерактивных сценариях.
root@tecmint:~# echo "linux-console.net is a very good website"
linux-console.net is a very good website
создание небольшого интерактивного сценария
1. создайте файл с именем «interactive_shell.sh» на рабочем столе. (Помните, что расширение «.sh» является обязательным).
2. скопируйте и вставьте приведенный ниже сценарий, точно такой же, как показано ниже.
#!/bin/bash
echo "Please enter your name:"
read name
echo "Welcome to Linux $name"
Затем установите разрешение на выполнение и запустите скрипт.
root@tecmint:~# chmod 777 interactive_shell.sh
root@tecmint:~# ./interactive_shell.sh
Please enter your name:
Ravi Saive
Welcome to Linux Ravi Saive
Примечание: '#!/bin/bash' сообщает оболочке, что это скрипт, и всегда полезно включать его в начало скрипта. «read» читает данный ввод.
33. Команда: пароль
Это важная команда, которая полезна для изменения собственного пароля в терминале. Очевидно, вам необходимо знать свой текущий пароль по соображениям безопасности.
root@tecmint:~# passwd
Changing password for tecmint.
(current) UNIX password: ********
Enter new UNIX password: ********
Retype new UNIX password: ********
Password unchanged [Here was passowrd remians unchanged, i.e., new password=old password]
Enter new UNIX password: #####
Retype new UNIX password:#####
34. Команда: lpr
Эта команда печатает файлы, указанные в командной строке, на указанном принтере.
root@tecmint:~# lpr -P deskjet-4620-series 1-final.pdf
Примечание. Команда «lpq» позволяет просматривать состояние принтера (работает он или нет), а также задания (файлы), ожидающие печати.
35. Команда: cmp
сравнивает два файла любого типа и записывает результаты в стандартный вывод. По умолчанию «cmp» Возвращает 0, если файлы одинаковые; если они различаются, сообщается номер байта и строки, в которой произошло первое различие.
Чтобы предоставить примеры для этой команды, давайте рассмотрим два файла:
файл1.txt
root@tecmint:~# cat file1.txt
Hi My name is Tecmint
файл2.txt
root@tecmint:~# cat file2.txt
Hi My name is tecmint [dot] com
Теперь давайте сравним два файла и посмотрим вывод команды.
root@tecmint:~# cmp file1.txt file2.txt
file1.txt file2.txt differ: byte 15, line 1
36. Команда: wget
Wget — бесплатная утилита для неинтерактивной (т. е. работающей в фоновом режиме) загрузки файлов из Интернета. Он поддерживает протоколы HTTP, HTTPS, FTP и прокси-серверы HTTP.
Загрузите ffmpeg с помощью wget
root@tecmint:~# wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
--2013-05-22 18:54:52-- http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2 [following]
--2013-05-22 18:54:54-- http://kaz.dl.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2
Resolving kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)... 92.46.53.163
Connecting to kaz.dl.sourceforge.net (kaz.dl.sourceforge.net)|92.46.53.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 275557 (269K) [application/octet-stream]
Saving to: ‘ffmpeg-php-0.6.0.tbz2’
100%[===========================================================================>] 2,75,557 67.8KB/s in 4.0s
2013-05-22 18:55:00 (67.8 KB/s) - ‘ffmpeg-php-0.6.0.tbz2’ saved [275557/275557]
37. Команда: монтировать
Mount — важная команда, которая используется для монтирования файловой системы, которая не монтируется сама. Для монтирования устройства вам необходимо разрешение root.
Сначала запустите «lsblk» после подключения файловой системы, определите свое устройство и запишите присвоенное ему имя.
root@tecmint:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 923.6G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 7.9G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
sdb 8:16 1 3.7G 0 disk
└─sdb1 8:17 1 3.7G 0 part
Из этого экрана было ясно, что я подключил флэш-накопитель 4 ГБ, таким образом, «sdb1» — это моя файловая система, которую нужно смонтировать. Станьте корневым, чтобы выполнить эту операцию, и перейдите в каталог /dev, где смонтирована вся файловая система.
root@tecmint:~# su
Password:
root@tecmint:~# cd /dev
Создайте каталог с любым именем, но он должен быть соответствующим для справки.
root@tecmint:~# mkdir usb
Теперь смонтируйте файловую систему «sdb1» в каталог «usb».
root@tecmint:~# mount /dev/sdb1 /dev/usb
Теперь вы можете перейти к /dev/usb из терминала или системы X-windows и получить доступ к файлу из смонтированного каталога.
38. Команда: gcc
gcc — это встроенный компилятор языка c в среде Linux. Простая программа c. Сохраните ее на своем рабочем столе как Hello.c (помните, что расширение «.c» обязательно).
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
Скомпилируйте это
root@tecmint:~# gcc Hello.c
Запустить его
root@tecmint:~# ./a.out
Hello world
Примечание. При компиляции программы c выходные данные автоматически создаются в новый файл «a.out» и каждый раз при компиляции Программа c изменяет тот же файл «a.out». Следовательно, рекомендуется определить выходной файл во время компиляции, чтобы избежать риска перезаписи выходного файла.
Скомпилируйте это таким образом
root@tecmint:~# gcc -o Hello Hello.c
Здесь «-o» отправляет выходные данные в файл «Hello», а не в «a.out». Запустите его еще раз.
root@tecmint:~# ./Hello
Hello world
39. Команда: г++
g++ — это встроенный компилятор для «C++», первого объектно-ориентированного языка программирования. Простая программа на C++. Сохраните ее на своем рабочем столе как Add.cpp (помните, что расширение «.cpp» обязательно).
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
cout<<"Enter first number:\n";
cin >> a;
cout <<"Enter the second number:\n";
cin>> b;
cin.ignore();
int result = a + b;
cout<<"Result is"<<" "<<result<<endl;
cin.get();
return 0;
}
Скомпилируйте это
root@tecmint:~# g++ Add.cpp
Запустить его
root@tecmint:~# ./a.out
Enter first number:
...
...
Примечание. При компиляции программы C++ выходные данные автоматически создаются в новый файл «a.out» и каждый раз при компиляции Программа C++ изменяет тот же файл «a.out». Следовательно, рекомендуется определить выходной файл во время компиляции, чтобы избежать риска перезаписи выходного файла.
Скомпилируйте это таким образом
root@tecmint:~# g++ -o Add Add.cpp
Запустить его
root@tecmint:~# ./Add
Enter first number:
...
...
40. Команда: java
Java — один из широко используемых языков программирования в мире. Он считается быстрым, безопасным и надежным. Большая часть современных веб-сервисов работает на Java.
Создайте простую Java-программу, вставив приведенный ниже тест в файл с именем tecmint.java (помните, что расширение «.java» обязательно).
class tecmint {
public static void main(String[] arguments) {
System.out.println("Tecmint ");
}
}
скомпилируйте его с помощью Javac
root@tecmint:~# javac tecmint.java
Запустить его
root@tecmint:~# java tecmint
Примечание. Почти каждый дистрибутив поставляется с компилятором gcc, большинство дистрибутивов имеют встроенные компиляторы g++ и java. хотя у некоторых может и не быть. Вы можете приспособить или yum необходимый пакет.
Не забудьте упомянуть свой ценный комментарий и тип статьи, которую вы хотите здесь видеть. Скоро я вернусь с интересной темой о малоизвестных фактах о Linux.