Слайд 2Текстовые редакторы.
■ emacs
■ nano
■ vim
Слайд 4Быстрые клавиши nano.
Символ каретки ( ^ ) - использование клавиши Ctrl.
Например,
для перемещения вниз по странице нажмите и удерживайте клавишу Ctrl, а затем нажмите клавишу V. Комбинация клавиш Ctrl + G служит для получения справки.
Слайд 5Быстрые клавиши nano.
Команда M-\
M – это комбинация Esc, Alt . Символ
\ просто представляет символ на клавиатуре.
Слайд 6Редактор по умолчанию.
Редактор по умолчанию : vim
Сменить умолчание:
Для строковых редакторов(ed)
$ export EDITOR=ed
Для
экранных редакторов(nano,emacs,vim)
$ export VISUAL=nano
Слайд 8Примеры быстрых клавиш emacs
■ Нажмите Ctrl + X, а затем комбинации клавиш
Ctrl + S, чтобы сохранить содержимое буфера редактора.
в файл.
■ Нажмите Ctrl + X, а затем комбинации клавиш Ctrl + C, чтобы выйти из редактора.
■ Нажмите комбинацию клавиш Ctrl + H, а затем клавишу T, чтобы перейти к руководству по e macs .
Слайд 9Комбинации быстрых клавиш emacs
Комбинация клавиш:
C- - клавиша Ctrl и символ клавиатуры
M- -
клавиша Alt и символ клавиатуры
Слайд 10Редактор vi(vim)
$ which vim
/usr/bin/vim
$
$ which vi
alias vi='vim'
/usr/bin/vim
$
Слайд 11Режимы vim
Vim работает в буфере ОП.
Три стандартных режима :
1. Командный режим Это
режим, который vim использует при первом входе в буферную область.
2. Режим вставки Режим вставки также называется режимом редактирования или ввода. Переход по клавише i . Выход - ESC
3. Ex Mode Этот режим команд двоеточия.
Слайд 14Команды редактирования текста в vim.
Слайд 15Поиск в vim
В командном режиме:
Поиск вперед по буферу:
? Строка поиска
2. Поиск назад
по буферу:
/ строка поиска
Слайд 16Общий синтаксис команд в командном режиме.
COMMAND [ NUMBER-OF-TIMES ] ITEM
Например:
Удаление 3 слов:
d
3 w
Скопировать текст от курсора до конца строки
y $
Вставить текст от курсора
p
Слайд 18Команды режима Ex Mode (Сохранить).
Слайд 19Обработка текстовых данных
Конкатенация текстовых файлов:
$ cat numbers.txt random.txt
42
2A
52
0010 1010
*
42
Flat Land
Schrodinger's Cat
0010 1010
0000
0010
$
Слайд 20Обработка текстовых данных
Слияние текстовых файлов:
$ cat random.txt
42
Flat Land
Schrodinger's Cat
0010 1010
0000 0010
$
$ cat
numbers.txt
42
2A
52
0010 1010
*
$
Слайд 21Обработка текстовых данных
Слияние файлов
$ paste random.txt numbers.txt
42 42
Flat Land 2A
Schrodinger's Cat 52
0010
1010 0010 1010
0000 0010 *
Слайд 22Обработка текстовых данных
Команда трансформации содержимого файлов:
od [ OPTION ]... [ FILE ]...
$
cat fourtytwo.txt
42
fourty two
quarante deux
zweiundvierzig
forti to
$
$ od fourtytwo.txt
0000000 031064 063012 072557 072162 020171 073564 005157 072561
0000020 071141 067141 062564 062040 072545 005170 073572 064545
0000040 067165 073144 062551 075162 063551 063012 071157 064564
0000060 072040 005157
0000064
Слайд 23Обработка текстовых данных
$ od -cb fourtytwo.txt
0000000 4 2 \n f o u
r t y t w o \n q u
064 062 012 146 157 165 162 164 171 040 164 167 157 012 161 165
0000020 a r a n t e d e u x \n z w e i
141 162 141 156 164 145 040 144 145 165 170 012 172 167 145 151
0000040 u n d v i e r z i g \n f o r t i
165 156 144 166 151 145 162 172 151 147 012 146 157 162 164 151
0000060 t o \n
040 164 157 012
0000064
$
Слайд 24Обработка текстовых данных
Команда разделения файла:
split [ OPTION ]... [ INPUT [ PREFIX
]]
Слайд 25Пример разделения по кол-ву строк:
$ cat fourtytwo.txt
fourty two
quarante deux
zweiundvierzig
forti to
$
$ split -l
3 fourtytwo.txt split42
$
$ ls split42*
split42aa split42ab
$
$ cat split42aa
42
fourty two
quarante deux
$
$ cat split42ab
zweiundvierzig
forti to
$
Слайд 26Обработка текстовых данных- Команды форматирования файлов.
Сортировка.
sort [ OPTION ]... [ FILE
]...
$ cat alphabet.txt
Alpha
Tango
Bravo
Echo
Foxtrot
$
$ sort alphabet.txt
Alpha
Bravo
Echo
Foxtrot
Tango
$
Слайд 27Обработка текстовых данных- Команды форматирования файлов.
Сортировка числовых данных:
$ sort counts.txt
105
37
42
54
8
$ sort -n
counts.txt
8
37
42
54
105
$ sort –o newfile.sort -n counts.txt
Слайд 28Обработка текстовых данных
Нумерация строк в файле:
nl [ OPTION ]... [ FILE ]...
$
nl ContainsBlankLines.txt
1 Alpha
2 Tango
3 Bravo
4 Echo
5 Foxtrot
Слайд 29Обработка текстовых данных
Нумерация строк в файле, учитывая пустые строки:
$ nl -ba ContainsBlankLines.txt
1
Alpha
2 Tango
3
4 Bravo
5 Echo
6
7
8 Foxtrot
$
Слайд 30Обработка текстовых данных.
Утилиты просмотра содержимого:
cat [ OPTION ] FILE [...]
more [ OPTION
] FILE [...]
Less [ OPTION ] FILE [...]
Слайд 31Обработка текстовых данных.
Утилиты просмотра содержимого:
head [ OPTION ]... [ FILE ]...
$ head
/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
$
Слайд 32Обработка текстовых данных.
Утилита head:
$ head -n 2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
$
$ head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
$
Слайд 33Обработка текстовых данных.
Утилита tail :
tail [OPTION]... [FILE]...
$ tail /etc/passwd
saslauth:x:992:76:Saslauthd user:/run/saslauthd:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
…….
tcpdump:x:72:72::/:/sbin/nologin
avahi:x:70:70:Avahi
mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
Слайд 34Обработка текстовых данных.
$ tail -n 2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
$
$ tail -n +42
/etc/passwd
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
$
Слайд 35Обработка текстовых данных.
$ sudo tail -f /var/log/auth.log
[sudo] password for Christine:
Aug 27 10:15:14
Ubuntu1804 sshd[15662]: Accepted password […]
Aug 27 10:15:14 Ubuntu1804 sshd[15662]: pam_unix(sshd:sess[…]
Aug 27 10:15:14 Ubuntu1804 systemd-logind[588]: New sessio[…]
Aug 27 10:15:50 Ubuntu1804 sudo: Christine : TTY=pts/1 ; P[…]
Aug 27 10:15:50 Ubuntu1804 sudo: pam_unix(sudo:session): s[…]
Aug 27 10:16:21 Ubuntu1804 login[10703]: pam_unix(login:se[…]
Aug 27 10:16:21 Ubuntu1804 systemd-logind[588]: Removed se[…]
^C
$
Слайд 36Обработка текстовых данных.
Некоторые дистрибутива LINUX имеют в своем составе демон journald. Просмотр
журналов:
$ journalctl --follow <имя лог-файла>
Слайд 37Обработка текстовых данных.
Команды обработки для получения сводной информации.
wc [ OPTION ]... [
FILE ]...
$ wc random.txt
5 9 52 random.txt
$
Слайд 38Обработка текстовых данных.
Опции команды wc:
Слайд 39Обработка текстовых данных.
Утилита разделения содержимого на поля
cut OPTION... [FILE]...
Слайд 40Обработка текстовых данных.
Утилита обнаружения повторяющихся строк
$ cat NonUniqueLines.txt
A
C
C
A
$
$ uniq NonUniqueLines.txt
A
C
A
$
Слайд 41Обработка текстовых данных.
Утилита расчета хэш md5 для дайджестов сообщений.
$ md5sum fourtytwo.txt
0ddaa12f06a2b7dcd469ad779b7c2a33
fourtytwo.txt
$
Слайд 42Обработка текстовых данных.
Другие алгоритмы хеширования
$ ls -1 /usr/bin/sha???sum
/usr/bin/sha224sum
/usr/bin/sha256sum
/usr/bin/sha384sum
/usr/bin/sha512sum
$
Слайд 43Обработка текстовых данных.
$ sha256sum fourtytwo.txt
0b2b6e2d8eab41e73baf0961ec707ef98978bcd8c7
74ba8d32d3784aed4d286b fourtytwo.txt
$
$ sha512sum fourtytwo.txt
ac72599025322643e0e56cff41bb6e22ca4fbb76b1d
7fac1b15a16085edad65ef55bbc733b8b68367723ced
3b080dbaedb7669197a51b3b6a31db814802e2f31 fourtytwo.txt
$
Слайд 44Обработка текстовых данных.
Команды использующие регулярные выражения:
grep [OPTION] PATTERN [FILE...]
$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
$
Слайд 45Обработка текстовых данных.
Опции grep:
Слайд 46Обработка текстовых данных.
$ cat accounts.txt
sshd
Christine
nfsnobody
$
$ fgrep -f accounts.txt /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Christine:x:1001:1001::/home/Christine:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
$
$
grep -F -f accounts.txt /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Christine:x:1001:1001::/home/Christine:/bin/bash
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
$
Слайд 47Регулярные выражения.
Basic regular expressions (BRE):
.* - несколько любых символов;
. - один любой
символ;
[a,e,i,o,u] - список символов;
[A-z] - диапазон символов;
Якоря:
^ - в начале строки;
$ - в конце строки
Слайд 48Регулярные выражения.
$ grep daemon.*nologin /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[…]
daemon:/dev/null:/sbin/nologin
[…]
$
$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
$
$ grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$
Слайд 49Регулярные выражения.
$ grep -v nologin$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
[…]
Christine:x:1001:1001::/home/Christine:/bin/bash
$
Слайд 50Регулярные выражения.
Не выводить(игнорировать) пустые строки файла:
$ grep -v ^$ filename
Слайд 51Регулярные выражения.
Специальная группа bracket expressions - классы символов(character classes):
[:alnum:] Matches any alphanumeric
characters (any case), and is equal to using
the [0-9A-Za-z] bracket expression
[:alpha:] Matches any alphabetic characters (any case), and is equal to using the
[A-Za-z] bracket expression
[:blank:] Matches any blank characters, such as tab and space
[:digit:] Matches any numeric characters, and is equal to using the [0-9] bracket
expression
[:lower:] Matches any lowercase alphabetic characters, and is equal to using the
[a-z] bracket expression
Слайд 52Регулярные выражения.
Специальная группа bracket expressions - классы символов(character classes):
[:punct:] Matches punctuation characters,
such as !, #, $, and @
[:space:] Matches space characters, such as tab, form feed, and space
[:upper:] Matches any uppercase alphabetic characters, and is equal to using the
[A-Z] bracket expression
Слайд 53Регулярные выражения.
Примеры использования классов символов:
$ cat random.txt
42
Flat Land
Schrodinger's Cat
0010 1010
0000 0010
$
$ grep
[[:digit:]] random.txt
42
0010 1010
0000 0010
$
Слайд 54Расширенные регулярные выражения(ERE).
$ grep -E "^root|^dbus" /etc/passwd
root:x:0:0:root:/root:/bin/bash
dbus:x:81:81:System message bus:/:/sbin/nologin
$
$ egrep "(daemon|s).*nologin" /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[…]
Опция
–E тоже самое, что и egrep. То что в () – это подвыражение.
Слайд 55Потоки, перенаправления и каналы.
Перенаправление:
Каждый объект обрабатывается как файл;
Каждый файл имеет файловый дескриптор;
0
– stdin, 1 – stdout, 2 – stderr
Примеры:
$ rm example.txt 2>1.txt
$ rm example.txt >1.txt 2>&1
По умолчанию stdout и stderr - /dev/tty
Слайд 56Потоки, перенаправления и каналы.
Перенаправление:
$ echo "Nov 16, 2019" > AccountAudit.txt
$
$ wc -l
/etc/passwd >> AccountAudit.txt
$
$ cat AccountAudit.txt
Nov 16, 2019
44 /etc/passwd
$
Слайд 57Потоки, перенаправления и каналы.
Перенаправление стандартного потока ошибок:
$ grep -d skip hosts: /etc/*
grep:
/etc/anacrontab: Permission denied
grep: /etc/audisp: Permission denied
[…]
$
$ grep -d skip hosts: /etc/* 2> err.txt
/etc/nsswitch.conf:#hosts: db files nisplus nis dns
/etc/nsswitch.conf:hosts: files dns myhostname
[…]
$
$ cat err.txt
grep: /etc/anacrontab: Permission denied
grep: /etc/audisp: Permission denied
[…]
Слайд 58Потоки, перенаправления и каналы.
$ grep -d skip hosts: /etc/* 2> /dev/null
/etc/nsswitch.conf:#hosts: db
files nisplus nis dns
/etc/nsswitch.conf:hosts: files dns myhostname
[…]
$
Слайд 59COMMAND1 | COMMAND2 [| COMMANDN]…
Перенаправление ввода.
$ cat Grades.txt
89 76 100 92 68
84 73
$
$ tr " " "," < Grades.txt
89,76,100,92,68,84,73
$
Слайд 60Резюме по перенаправлению потоков.
> Redirect STDOUT to specified file. If file exists,
overwrite it. If it does not
exist, create it.
>> Redirect STDOUT to specified file. If file exists, append to it. If it does not
exist, create it.
2> Redirect STDERR to specified file. If file exists, overwrite it. If it does not
exist, create it.
2>> Redirect STDERR to specified file. If file exists, append to it. If it does not
exist, create it.
&> Redirect STDOUT and STDERR to specified file. If file exists, overwrite it. If it
does not exist, create it.
&>> Redirect STDOUT and STDERR to specified file. If file exists, append to it. If it
does not exist, create it.
< Redirect STDIN from specified file into command.
<> Redirect STDIN from specified file into command and redirect STDOUT to
specified file.
Слайд 61Использование pipe(канала).
Синтаксис :
COMMAND1 | COMMAND2 [| COMMANDN]…
$ grep /bin/bash$ /etc/passwd | wc
-l
3
$
$ grep /sbin/nologin$ /etc/passwd | cut -d ":" -f 1 | sort | less
abrt
adm
avahi
bin
chrony
[…]
: