Настольная книга по Linux: различия между версиями
Содержимое удалено Содержимое добавлено
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
|||
Строка 10:
* '''~/.bash_logout''' - Выполнение сценариев при выходе
* '''~/.inputrc''' - Настройка хоткеев
<blockquote><
"\e[A": history-search-backward
"\e[B": history-search-forward
TAB: menu-complete
</
- реализация поиска в history по стрелкам.
Строка 58:
* '''myip(){ curl ifconfig.me }''' - бескостыльный вариант
* '''Убивает процессы по имени программы (например, ki skype nmap firefox):'''
<blockquote><
[[ $1 = '' ]] || [[ $1 = '-h' ]] || [[ $1 = '--help' ]] && echo "usage: $0 <program1..programN>" && return 1
for process in $*; do
Строка 64:
{ echo $process not found: seems like nothing to kill; }
done
}</
* '''gr(){ egrep -v '^#|^$' $1; }''' - Вывести в стандартный вывод файл без комментариев и пустых строк (например, gr /etc/fstab)
* '''alias pwg='pwgen -cnB 8 10 | while read PASS; do echo -n -e "$PASS\t"; echo -n "$PASS" | md5sum | cut -f1 -d" "; done'''' - Генерирование 10-ти запоминаемых восьмизначных паролей (pwgen -B 8 10), c цифрами (-n), с буквами из верхнего регистра (-с) и хэш md5 к нему (linux only). Хэш подходит для mysql
* '''Функция, эмулирующая поведение redhat'овской утилиты service (особенно удобна в сочетании с zsh):'''
<blockquote><
init_path="/etc/rc.d"
if [ -f ${init_path}/${1} ]; then service=${1}
Строка 95:
echo "usage: $0 <service name> <action>"
esac
}</
* '''Делает скриншот участка экрана, выделенного мышью и отправляет его на хостинг изображений:'''
<blockquote><
scrot -s "%Y-%m-%d_$wx$h.png" -e 'ompload $f ; rm $f'
}</
=== Скрипты ===
Строка 158:
* '''let "a = 2 + 2"'''
* '''bс -l'''
<blockquote><
$ result=$(echo "scale=2; 5 * (7 +3) / 3;" | bc)
$ echo $result
16.6666
</
* '''echo $((2+2))'''
* '''awk 'BEGIN{ print exp(1)+2^(1.0/3); }''''
Строка 233:
* '''cat /tmp/text | /usr/local/bin/topnwords.pl | head -n 5''' - показать TOP5 слов в файле text
<blockquote><
#! /usr/bin/env perl
Строка 244:
print "$x{$_} $_\n" foreach sort { $x{$b} <=> $x{$a} } keys %x;
</
=== Модификация ===
Строка 265:
* '''cat /proc/PID/cmdline | xargs -0 echo''' - То же самое
*'''Пример, заменяющий шаблон ip-адрес/маска на '*.*.*.*', '/префикс' на '/*' и поднимающими регистр букв:
<
*'''Пример, поднимающий регистр букв в файле /etc/fstab в строках, содержащей 'sda' кроме самой подстроки 'sda':
<
*'''Пример, заменяющий последний октет ip адреса на ноль:
<
==== Кодировки ====
Строка 629:
** '''crontab -l''' - вывести список заданий
* '''at''' - Для разового выполнения заданий
<blockquote><
# at 7:30
warning: commands will be executed using /bin/sh
Строка 635:
at> <EOT>
job 1 at Thu Feb 23 07:30:00 2012
</
=== Конфигурация ===
Строка 663:
* '''chfn''' - изменение информации о пользователе
<blockquote><
# chfn -o 'User for ftp' userftp
</
* '''useradd -r -N -g <groupname> --uid 1000 <username>''' - Создать системного пользователя <username>. -N не даёт создавать одноимённую группу для пользователя, -g <groupname> - назначает основной для пользователя группу <groupname>
* '''userdel -r <username>''' - Удалить пользователя <username> вместе с домашним каталогом
Строка 674:
* '''PASS=666; useradd testuser -m -p $(echo $PASS | mkpasswd -m sha-512 -s)''' - Создание пользователя в скрипте сразу с паролем
* Использование утилиты '''newusers''' для массового создания системных пользователей по шаблону "user1 - userN" со случайными паролями; список пользователей с настройками и паролями выводится в файл users.txt:
<blockquote><
uid=`cat /etc/passwd | cut -d ":" -f 3 | sort -gr | head -1`
for user in {1..100}; do
Строка 680:
echo user${user}:$(pwgen -cnB 8 1):${uid}:1000:user${user}:/home/user${user}:/bin/zsh
done | tee users.txt | newusers
</
* '''groupadd <group_name>''' - Создать группу <group_name>
Строка 694:
==== Автовход в систему ====
* Для '''GNOME''' добавить в '''/etc/gdm/custom.conf''' (Для новых версий в '''/etc/gdm3/daemon.conf''')
<blockquote><
AutomaticLoginEnable=true
AutomaticLogin=username</
* Для '''KDE''' добавить в '''/etc/kdm/kdmrc'''
<blockquote><
AutoLoginEnable=true
AutoLoginUser=username
AutoLoginPass=userpassword</
* Для '''LXDE''' и всего остального сначала установить пакет '''autologin'''. Потом создать и отредактировать файл '''/etc/sysconfig/autologin''':
<blockquote><
USER=username
EXEC=/usr/bin/startx</
* Автологин и запуск иксов без *DM(Display Manager):
Для '''LXDE''' добавить в '''/etc/rc.local'''
<blockquote><
su - user -c startx</
Изменить в '''/etc/X11/Xwrapper.config'''
<blockquote><
allowed_users=anybody</
Добавить в '''~/.xinitrc'''
<blockquote><
exec ck-launch-session dbus-launch startlxde</
=== Железо (Модули) ===
Строка 897:
* '''sshfs -o allow_other user@host:/home/user/ /mnt/host_user/''' - монтирует /home/user/ удаленного хоста(host) в /mnt/host_user/. Опция allow_other позволяет другим пользователям обращаться к ресурсу
* Просмотр статистики неудачного логина
<
sudo cat /var/log/auth.log* \
| awk '/Failed password/ && /sshd/ {print $1,$2}' \
| sort -k 1,1M -k 2n | uniq -c</
*: Отметим, что если добавить выполняющего эту команду пользователя в имеющую доступ к файлам <code>/var/log</code> группу <code>adm</code>, использование <code>sudo</code> станет ненужным.
Строка 906:
:Проброс UDP трафика с узла '''A''' на узел '''C''' через промежуточный узел '''B''', к которому есть доступ по ssh:
- на узле '''A''' - проброс 12345 порта с узла A на порт 6789 узла B
<blockquote><
ssh -tNf -L12345:127.0.0.1:6789 "B" -l user
</
- на узле '''B''' - переводим содержимое TCP пакетов в FIFO и тут же забираем и упаковываем в UDP и отсылаем на узел C порт 2056:
<blockquote><
mkfifo /tmp/fifo
nc -l -p 6789 < /tmp/fifo | nc -u "C" 2056 > /tmp/fifo
</
- на узле '''A''' - переводим содержимое UDP пакетов, отсылаемых локальным сервисом на localhost:2056 в FIFO и сразу забираем из FIFO и отправляем на localhost:12345:
<blockquote><
mkfifo /tmp/fifo
nc -l -u -p 2056 < /tmp/fifo | nc 127.0.0.1 12345 > /tmp/fifo
</
* ''' corkscrew''' - Утилита для работы ssh через https прокси
Строка 975:
Запись видео с вебкамеры:
<blockquote>
<
lavc -oac lavc -lavcopts vcodec=mpeg4:acodec=mp3 -ffourcc divx -o test.avi</
</blockquote>
«Склеиваем» два видеофайла:
<blockquote>
<
</blockquote>
Вырезаем пятисекундный кусок из видеофайла:
<blockquote>
<
</blockquote>
Кодируем видеофайл в 3gp:
<blockquote>
<
</blockquote>
Исправляем «битые» индексы:
<blockquote>
<
или же:
<
</blockquote>
Скрипт для кодирования DVD:
<blockquote>
<
#!/bin/bash
Строка 1107:
mencoder dvd://${TITLE} -dvd-device ${DVDDEV} ${SPOS} ${EPOS} -ovc xvid \
-xvidencopts pass=2:vhq=1:vhq=4:gmc:bitrate=-${VBR} \
-vf ${CROP}${SCALE},hqdn3d=2:1:2 -oac copy -o ${OUT}.avi</
</blockquote>
|