Аднастрочнікі Shell

Материал из Вікі Фаланстэра
Версия от 11:38, 19 марта 2018; Svetit (обсуждение | вклад) (wc - вывад колькасці строк, словаў і байтаў)

Перейти к: навигация, поиск

Мэта: Пазнаёміцца і папрактыкавацца з асноўнымі камандамі перанакіравання у shell.

Тэорыя

Адна з крыхут магчымасцяў каманднага радка: перанакіраванне ўвода/вывада. Дзякуючы ёй магчыма перанакіроўваць увод і вывад каманд з файлаў і ў файлы, а таксама складаць з камандаў цэлыя канвейеры. Для дэманстрацыі гэтай магчымасці увядзем наступныя каманды:

  • cat - аб'ядноўвае файлы.
  • sort - сарціруе радкі тэкста.
  • uniq - паведамляе пра паўторныя радкі ці выдаляе іх.
  • wc - выводзіць колькасць сімвалаў пераводу радка, слоў і байтаў у кожным пазначаным файле.
  • grep - знаходзіць і выводзіць радкі суадносна з шаблонам.
  • head - выводзіць першыя радкі файла.
  • tail - выводзіць апошнія радкі файла.
  • tee - чытае дадзеныя са стандартнага увода і запісвае у стандартны вывад і у файлы.

Стандартны увод, вывад і вывад памылак

Шматлікія прылады shell выводзяць што-небудзь на кансоль. Гэты вывад часта дзеліцца на два тыпа. Першы - вынікі працы прылады, значыць, дадзеныя, для атрымання якіх стваралася прылада. Другі - паведамленні пра станы ці памылкі, якія паведамляюць пра самаадчуванне прылады. Напрыклад, калі глянуць на вывад каманды ls, можна пабачыць, што яна выводзіць на экран вынікі сваёй працы і часам паведамленні пра памылкі.

Згодна з цэнтральнай ідэяй Unix, што "усё існае ёсць файл", такія прылады, як ls, насамрэч выводзяць свае вынікі ў спецыяльны файл, які называецца стандартным вывадам (standard output, часта вызначаецца як stdout), а паведамленні пра стан - у спецыяльны файл стандартны вывад памылак (standard error, stderr). Па змоўчанні оба файла, стандартны вывад і стандартны вывад памылак, звязаны з экранам і не захоўваюцца на дыске.

Акрамя таго, шматлікія прылады прымаюць увод са спецыяльнага файла з назвай стандартны увод (standard input, stdin), які па змоўчанні звязаны з клавіятурай.

Механізм перанакіравання увода/вывада дазваляе змяняць кірунак вывада і уводу. Звычайна вывад адбываецца на экран, а увод - з клавіятуры, але механізм перанакіраванні дазваляе змяніць гэты парадак рэчаў.

Перанакіраванне стандартнага вывада

Каб перанакіраваць стандартны вывад у іншы файл замест экрана, трэба дадаць у каманду аператар перанакіравання > і імя файла.

ls -l /usr/bin > ls-output.txt

Тут доўгі спіс зместу файла /usr/bin будзе накіраваны ў ls-output.txt

Праглядзім змест файла ls-output.txt

less ls-output.txt

Ачысціць файл можна наступным чынам:

> ls-output.txt

Каб дадаць вывад у канец існуючага файла:

ls -l /usr/bin >> ls-output.txt

Перанакіраванне стандартнага ўвода

cat - аб'ядноўвае файлы.

cat [файл...]

Каманда cat выкарыстоўваецца для вывада зместу файла без магчымасці пастаронкавага прагляду. Напрыклад,

cat ls-output.txt

пакажа змест файла ls-output.txt.

Cat здольна прымаць адразу некалькі файлаў. Яна выкарыстоўваецца, каб аб'яднаць іх.

Напрыклад, у нас есць файлы movie.mpeg.001 movie.mpeg.002 ... movie.mpeg.099

Іх можна аб'яднаць наступнай камандай:

cat movie.mpeg.0* > movie.mpeg

Проста вызаў каманды cat дазволіць увесці дадзеныя з клавіятуры

cat
Напішыце свой тэкст у кансолі
Увядзіце CTRL-D

Па-змоўчанні (без дадатковых аргулентаў) cat вывядзе у кансоль той жа тэкст, які вы набралі.

Каб перанакіравать тэкст у файл запішам:

cat > new_file.txt

І праглядзем файл, які атрымаўся:

cat new_file.txt

Канвейеры

"Уменне" каманд чытаць дадзеныя са стандартнага увода і выводзіць вынікі ў стандартны вывад выкарыстоўваецца механізмам каманднай абалонцы, які называецца канвейерам. З дапамогай аператара канвейера | (вертыкальная рыска) стандартны вывад адной каманды можна звязаць з стандартным уводам другой.

каманда1 | каманда2

Паспрабуем :

ls -l /usr/bin | less

Мы вывелі вынікі каманды ls праз less.

Фільтры

Канвейеры часта выкарыстоўваюцца для выканання складаных аперацы з дадзенымі. Яны дазваляюць аб'яднаць разам некалькі камандаў.

Часта каманды, якія выкарыстоўваюцца такім чынам называюцца - фільтры. Яны прымаюць увод, змяняюць яго адмысловым чынам і выводзяць вынік.

sort - сарціроўка радкоў тэкста

Саставім спіс усіх праграм на выканане ў каталогах /bin i /usr/bin, размесцім іх па алфавіту і вывядзем спіс:

ls /bin /usr/bin | sort | less

Так як у камандзе прысутнічаюць два каталогі, то звычайны вывад каманды ls будзе складацца з дзвюх сарціраваных спісаў, па аднаму для кжнага каталога. Калі ж мы дадаем каманду sort у канвейер, мы змяняем дадзеныя, каб атрымаць адзіны сарціраваны спіс.

uniq - пошук ці выдаленне паўторных радкоў

Каманда uniq часта ўжываецца разам з камандай sort. uniq прымае сарціраваны спіс дадзеных або са стандартнага ўвода, ці з файла, імя якога можна перадаць у адным аргуменце, і па змоўчанні выдаляе паўторныя радкі са спісу.

У нашым выпадку. Каб пазбегнуць паўторных радкоў у папярэдняй камандзе сарціроўкі вывада ls /bin /usr/bin, дададзім у uniq канвейер:

ls /bin /usr/bin | sort | uniq | less

З дапамогай uniq і параметра -d мы можам зрабіць наадварот - вывесці спіс дублікатаў:

ls /bin /usr/bin | sort | uniq -d | less

wc - вывад колькасці строк, словаў і байтаў

wc палічвае каолькасць радкоў, словаў і байтаў для кожнага файла, і агульную колькасць, калі пералічаны не адзін файл.

wc файл1 файл2 ...
Каманда Скапіруе
Падлічыць колькаць байтаў
Падлічыць колькасць літар
Падлічыць колькасць новых радкоў
Падлічыць даўжыню самага дліннага радка
Падлічыць колькасць словаў

Заданне

Для выканання заданняў вам спатрэбіцца шукаць дадатковую інфармацыю пра каманды shell у інтэрнэце!

Удаленае падключэнне да сэврвера на Windows

  1. Зайсці у тэчку "Загрузки", запусціць прыладу putty.exe
  2. У поле Host Name (or IP Address) запісаць 10.194.0.220
  3. У акне кансолі ўвесці лагін: user і пароль: user.

Цяпер вы працуеце на ўдаленам Linux сэрверы.

Літаратура

  1. Уильям Шоттс, "Командная строка Linux", 2017, с.70.