Тэрмінал Linux, поўны тэксту на ноўтбуку.

Калі вы хочаце асвоіць абалонку Bash на Linux, macOS або іншай сістэме, падобнай да UNIX, спецыяльныя сімвалы (напрыклад, ~, *, | і>) маюць вырашальнае значэнне. Мы дапаможам вам разгадаць гэтыя загадкавыя камандныя паслядоўнасці Linux і стаць героем іерогліфаў.

Якія спецыяльныя персанажы?

Існуе набор сімвалаў, якія абалонка Bash разглядае двума рознымі спосабамі. Калі вы набіраеце іх у абалонцы, яны дзейнічаюць як інструкцыі альбо каманды і загадваюць абалонцы выконваць пэўную функцыю. Разглядайце іх як аднакантрольныя каманды.

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

Мы пакажам вам, якія сімвалы з'яўляюцца "спецыяльнымі" або "мета-" сімваламі, а таксама, як вы можаце выкарыстоўваць іх функцыянальна і літаральна.

~ Хатні даведнік

Tilde (~) - стэнаграма для вашага хатняга каталога. Гэта азначае, што вам не трэба ўводзіць поўны шлях да хатняга каталога ў камандах. Дзе б вы ні знаходзіліся ў файлавай сістэме, вы можаце выкарыстоўваць гэтую каманду, каб перайсці ў свой хатні каталог:

cd ~
Каманда

Вы таксама можаце выкарыстоўваць гэтую каманду з адноснымі шляхамі. Напрыклад, калі вы знаходзіцеся дзе-небудзь у файлавай сістэме, якая не знаходзіцца ў вашай хатняй тэчцы, і хочаце перайсці ў каталог архіваў у працоўным каталогу, выкарыстоўвайце tilde, каб зрабіць гэта:

cd ~ / праца / архіў
Каманда

. Бягучы даведнік

Перыяд (.) Ўяўляе бягучы каталог. Вы бачыце яго ў спісах каталогаў, калі вы карыстаецеся опцыяй -a (усе) з ls.

л -а
Каманда

Вы таксама можаце выкарыстоўваць перыяд у камандах, каб прадставіць шлях да вашай бягучай дырэкторыі. Напрыклад, калі вы хочаце запусціць скрыпт з бягучага каталога, вы назвалі б яго так:

./script.sh

Гэта кажа Bash паглядзець у бягучым каталогу для файла script.sh. Такім чынам, ён не будзе шукаць каталогі на вашым шляху для супастаўлення выкананага файла альбо сцэнарыя.

Каманда

.. Бацькоўскі даведнік

Падвоены перыяд або "двайная кропка" (..) уяўляе бацькоўскі каталог вашага бягучага. Вы можаце выкарыстоўваць яго для перамяшчэння на адзін узровень у дрэве каталогаў.

cd ..
Каманда

Вы можаце таксама выкарыстоўваць гэтую каманду з адноснымі шляхамі - напрыклад, калі вы хочаце перайсці на адзін узровень у дрэве каталогаў, а затым увядзіце іншы каталог на гэтым узроўні.

Вы таксама можаце выкарыстоўваць гэтую тэхніку для хуткага перамяшчэння ў каталог на тым жа ўзроўні ў дрэве каталогаў, што і ў бягучым. Вы пераходзіце на адзін узровень, а потым назад у іншы каталог.

cd ../gc_help
Каманда

/ Сепаратар Path Directory

Вы можаце выкарыстоўваць прамую касую рысу (/), якую часта называюць касой рысай - для аддзялення каталогаў у імені шляху.

ls ~ / праца / архіў
Каманда

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

CD /
Каманда

# Каментар альбо аздабленне радкоў

Часцей за ўсё вы карыстаецеся знак хэша або лічбы (#), каб паведаміць абалонцы, што вынікае з каментара, і ён не павінен дзейнічаць на яго. Вы можаце выкарыстоўваць яго ў сцэнарыях абалонак і - менш карысна - у камандным радку.

# Гэта абалонка Bash будзе праігнаравана
Каманда

Ён сапраўды не ігнаруецца, таму што дададзены ў вашу каманду каманд.

Вы таксама можаце выкарыстоўваць хэш, каб абрэзаць зменную радок і выдаліць тэкст з самага пачатку. Гэтая каманда стварае зменную радок пад назвай this_string.

У гэтым прыкладзе мы прысвойваем тэкст "Дэйв Джык!" да зменнай.

this_string = "Дэйв Джык!"

Гэтая каманда выкарыстоўвае рэха, каб надрукаваць словы "Як" на акно тэрмінала. Ён атрымлівае значэнне, якое захоўваецца ў зменнай радцы з дапамогай пашырэння параметра. Паколькі мы дадаем хэш і тэкст "Дэйв", ён адразае тую частку радкі, перш чым яна перагукнецца.

echo How-To $ {this_string # Дэйв}
Каманда

Гэта не мяняе значэнне, якое захоўваецца ў зменнай радцы; гэта ўплывае толькі на тое, што адпраўляецца рэхам. Мы можам выкарыстоўваць рэха яшчэ раз, каб надрукаваць значэнне зменнай радкі і праверыць гэта:

рэха $ this_string
Каманда

? Адзіны знак сімвала

Абалонка Bash падтрымлівае тры шаблоны, адзін з якіх - знак пытання (?). Выкарыстоўваеце загадзяныя знакі для замены знакаў у шаблонах назваў файлаў. Імя файла, якое змяшчае загалоўны знак, утварае шаблон, які адпавядае дыяпазону імёнаў файлаў, а не аднаму.

Знак пытання ўказальны знак утрымлівае роўна адзін знак. Разгледзім наступны шаблон імя файла:

ls значка? .txt

Гэта перакладаецца як "спіс усіх файлаў з імем, якое пачынаецца з" значка "і які суправаджаецца любым сімвалам перад пашырэннем імя файла."

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

Каманда

Шаблон гэтага файла не адпавядае знаку "badge.txt", паколькі ў назве файла няма адзінага знака паміж значком і пашырэннем файла. Знак пытання павінен адпавядаць адпаведным знаку ў назве файла.

Вы таксама можаце выкарыстоўваць знак пытання, каб знайсці ўсе файлы з пэўнай колькасцю знакаў у назвах файлаў. Тут пералічаны ўсе тэкставыя файлы, якія ўтрымліваюць роўна пяць знакаў у назве файла:

ls ?????. txt
Каманда

* Паслядоўнасць характараў Wildcard

Вы можаце выкарыстоўваць загалоўны знак (*) для азнаямлення з любой паслядоўнасцю знакаў, у тым ліку без сімвалаў. Разгледзім наступны шаблон імя файла:

значок *

Гэта адпавядае ўсім наступным:

Каманда

Ён супадае з "значкам.txt", таму што загадкавая карта ўяўляе сабой любую паслядоўнасць знакаў альбо адсутнасць сімвалаў.

Гэта каманда адпавядае ўсім файлам, якія называюцца "крыніца", незалежна ад пашырэння файла.

крыніца л. *
Каманда

[] Набор персанажаў Wildcard

Як паведамлялася вышэй, вы выкарыстоўваеце знак пытання для прадстаўлення любога асобнага знака, а зорачку для прадстаўлення любой паслядоўнасці сімвалаў (уключаючы сімвалы без).

Вы можаце сфарміраваць падстаноўку з квадратнымі дужкамі ([]) і сімваламі, якія яны ўтрымліваюць. Затым адпаведны сімвал імя файла павінен адпавядаць па меншай меры аднаму з сімвалаў у наборы сімвалаў.

У гэтым прыкладзе каманда перакладаецца як: "любы файл з пашырэннем.

ls badge_0 [246] .txt
Каманда

Вы можаце выкарыстоўваць больш за адзін набор дужак у шаблоне імя файла:

ls badge_ [01] [789] .txt
Каманда

Вы таксама можаце ўключыць дыяпазоны ў набор знакаў. Наступная каманда выбірае файлы з лічбамі 21 да 25 і 31 да 35 у назве файла.

ls badge_ [23] [1-5] .txt
Каманда

; Падраздзяленне камандавання снарадаў

Вы можаце ўвесці столькі каманд, колькі вам падабаецца ў камандным радку, пакуль вы аддзяляеце кожную кропку з коскай (;). Мы зробім гэта ў наступным прыкладзе:

ls> count.txt; wc -l count.txt; rm count.txt
У акне тэрмінала count.txt; wc -l count.txt; rm count.txt"" src="https://imgstore.nyc3.cdn.digitaloceanspaces.com/tvaschool-org/1587087897826.png" />

Звярніце ўвагу, што другая каманда выконваецца, нават калі першая не працуе, трэцяя выконваецца, нават калі другая не працуе і гэтак далей.

Калі вы хочаце спыніць паслядоўнасць выканання, калі адна каманда не працуе, выкарыстоўвайце двайную ампэрсу (&&) замест кропкі з коскай:

cd ./doesntexist && cp ~ / Дакументы / справаздачы / *.
Каманда ў акне тэрмінала

& Фоновы працэс

Пасля таго, як вы ўвядзеце каманду ў акно тэрмінала і яна завершыцца, вы вернецеся ў камандную радок. Звычайна на гэта сыходзіць толькі хвіліна-два. Але калі вы запусціце іншае прыкладанне, напрыклад, gedit, вы не можаце выкарыстоўваць акно свайго тэрмінала, пакуль не зачыніце прыкладанне.

Аднак вы можаце запусціць прыкладанне ў якасці фонавага працэсу і працягваць выкарыстоўваць акно тэрмінала. Для гэтага проста дадайце ў камандны радок ampersand:

gedit command_address.page &
Каманда

Bash паказвае вам ідэнтыфікатар працэсу таго, што запушчаны, а потым вяртае вас у камандны радок. Затым вы можаце працягнуць выкарыстанне акна тэрмінала.

<Перанакіраванне ўводу

Многія каманды Linux прымаюць файл як параметр і бяруць свае дадзеныя з гэтага файла. Большасць гэтых каманд таксама можа браць увод з патоку. Каб стварыць паток, вы выкарыстоўваеце левы кут (<), як паказана ў наступным прыкладзе, каб перанакіраваць файл у каманду:

Сартаваць Каманда 

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

Калі мы выкарыстоўваем wc для падліку слоў, радкоў і знакаў у файле, ён друкуе значэнні, а потым імя файла. Калі мы перанакіроўваем змесціва файла на wc, ён друкуе тыя ж лікавыя значэнні, але не ведае імя файла, з якога пайшлі дадзеныя. Ён не можа надрукаваць імя файла.

Вось некалькі прыкладаў, як можна выкарыстоўваць wc:

wc words.txt
wc Каманда 

> Перанакіраванне вываду

Вы можаце выкарыстоўваць прамавугольны кранштэйн (>) для перанакіравання вываду з каманды (звычайна, у файл); вось прыклад:

ls> files.txt
cat files.txt
Каманда files.txt" у акне тэрмінала." src="https://imgstore.nyc3.cdn.digitaloceanspaces.com/tvaschool-org/1587087900863.png" />

Перанакіраванне вываду можа таксама перанакіраваць паведамленні пра памылкі, калі вы карыстаецеся лічбай (2, у нашым прыкладзе) з>. Вось як гэта зрабіць:

wc doesntexist.txt 2> памылкі.txt
кошкі памылкі.txt
Каманда errors.txt" у акне тэрмінала." src="https://imgstore.nyc3.cdn.digitaloceanspaces.com/tvaschool-org/1587087901637.png" />

Звязаныя: Што такое stdin, stdout і stderr на Linux?

| Труба

"Труба" ланцугуе каманды. Ён прымае выснову з адной каманды і перадае наступную ў якасці ўваходу. Колькасць трубных каманд (даўжыня ланцужка) адвольная.

Тут мы будзем выкарыстоўваць cat, каб перадаць змесціва файла word.txt у grep, які здабывае любую радок, які змяшчае альбо малыя, альбо вялікія літары "С." Затым grep перадасць гэтыя радкі для сартавання. Сартаваць пры дапамозе опцыі -r (адваротнае), таму адсартаваныя вынікі з'явяцца ў зваротным парадку.

Мы набралі наступнае:

словы кошкі.txt | grep [cC] | роду -r
Каманда

! Лагічны трубаправод НЕ і аператар гісторыі

Клічнік (!) - лагічны аператар, які азначае НЕ.

У гэтым камандным радку дзве каманды:

[! -d ./backup] && mkdir ./backup
  • Першая каманда - гэта тэкст у квадратных дужках; Другая каманда - тэкст, які вынікае з падвойных кропак &&.

Першая каманда выкарыстоўвае! як лагічны аператар. Квадратныя дужкі паказваюць, што будзе зроблена выпрабаванне. Параметр -d (каталог) тэстуе наяўнасць каталога пад назвай рэзервовае капіраванне. Другая каманда стварае каталог.

Паколькі двайныя амперсанды аддзяляюць дзве каманды, Bash выканае другую толькі ў тым выпадку, калі першая атрымаецца. Аднак гэта наадварот таго, што нам трэба. Калі тэст для каталога "рэзервовая копія" паспяховы, нам не трэба яго ствараць. І калі тэст для каталога "рэзервовага капіявання" не атрымаецца, другая каманда не будзе выканана, і адсутнічае каталог не будзе створаны.

Тут лагічны аператар! Ён дзейнічае як лагічны НЕ. Такім чынам, калі тэст паспяховы (г.зн. каталог існуе), то! перагортвае, што "НЕ поспех", што з'яўляецца правалам. Такім чынам, другая каманда не актывавана.

Калі тэст каталога не працуе (г.зн. каталог не існуе), the! змяняе рэакцыю на "НЕ правал", які з'яўляецца поспехам. Такім чынам, каманда для стварэння адсутнага каталога выконваецца.

Гэта мала! пакуе шмат удару, калі вам трэба!

Каб праверыць стан папкі рэзервовай копіі, вы карыстаецеся камандай ls і параметрамі -l (доўгі спіс) і -d (каталог), як паказана ніжэй:

рэзервовае капіраванне -l -d
Каманда

Вы таксама можаце запускаць каманды з гісторыі вашай каманды з клічнікам. У камандзе "Гісторыя" паказана гісторыя вашай каманды, і вы ўводзіце нумар каманды, якую хочаце паўторна выканаць! выканаць яго, як паказана ніжэй:

! 24
Каманда

Наступнае паўтарае папярэднюю каманду:

!!

$ Зменныя выразы

У абалонцы Bash вы ствараеце зменныя для ўтрымання значэнняў. Некаторыя, як зменныя асяроддзі, заўсёды існуюць, і вы можаце атрымаць доступ да іх у любы момант, калі вы адкрыеце акно тэрмінала. Гэтыя значэнні ўтрымліваюць, такія як імя карыстальніка, хатні каталог і шлях.

Вы можаце выкарыстоўваць рэха, каб убачыць значэнне, якое ўтрымлівае зменная - проста папярэднічайце назве зменнай са знакам долара ($), як паказана ніжэй:

рэха $ USER
рэха $ ГАЛОЎНАЯ
рэха $ PATH
Каманда

Каб стварыць зменную, вы павінны даць ёй імя і ўказаць для яго значэнне. Вам не трэба выкарыстоўваць знак даляра, каб стварыць зменную. Вы дадасце $ толькі пры спасылцы на зменную, напрыклад, у наступным прыкладзе:

ThisDistro = Ubuntu
MyNumber = 2001
рэха $ ThisDistro
рэха $ MyNumber
Каманда

Дадайце фігурныя дужкі ({}) вакол знака долара і выканайце пашырэнне параметра, каб атрымаць значэнне зменнай і дазволіць далейшае пераўтварэнне значэння.

Гэта стварае зменную, якая змяшчае радок знакаў, як паказана ніжэй:

MyString = 123456qwerty

Выкарыстоўвайце наступную каманду, каб адлучыць радок у акно тэрмінала:

рэха $ {MyString}

Каб вярнуць падрадку, пачынаючы з пазіцыі 6 усёй радкі, выкарыстоўвайце наступную каманду (ёсць зрушэнне нуля, таму першая пазіцыя роўная нулю):

рэха $ {myString: 6}

Калі вы хочаце паўтарыць падрадку, якая пачынаецца з нуля і змяшчае наступныя шэсць знакаў, выкарыстоўвайце наступную каманду:

рэха $ {myString: 0: 6}

Выкарыстоўвайце наступную каманду, каб паўтарыць падрадку, якая пачынаецца з чатырох пазіцый і змяшчае наступныя чатыры знакі:

рэха $ {myString: 4: 4}
Каманда

Цытуючы спецыяльных персанажаў

Калі вы хочаце выкарыстоўваць спецыяльны сімвал у якасці літаральнага (не спецыяльнага) сімвала, вам трэба паведаміць абалонку Bash. Гэта называецца цытаваннем, і ёсць тры спосабы зрабіць гэта.

Калі вы прыкладзеце тэкст у двукоссі ("..."), гэта не дазваляе Bash дзейнічаць на большасць спецыяльных сімвалаў, і яны проста друкуюцца. Але адно характэрнае выключэнне - гэта знак долара ($). Ён па-ранейшаму дзейнічае як сімвал для зменных выразаў, таму вы можаце ўключыць значэнні зменных у свой вывад.

Напрыклад, гэтая каманда друкуе дату і час:

рэха "Сёння $ (дата)"

Калі вы складзеце тэкст адзінкавымі двукоссямі ("..."), як паказана ніжэй, ён спыніць функцыю ўсіх спецыяльных сімвалаў:

рэха "Сёння $ (дата)"

Вы можаце выкарыстоўваць нахіл (\), каб прадухіліць наступны сімвал як адмысловы сімвал. Гэта называецца "ўцёкі" персанажа; глядзіце прыклад ніжэй:

рэха "Сёння гэта \ $ (дата)"
Каманда

Падумайце пра спецыяльных персанажаў як пра вельмі кароткія каманды. Калі вы запомніце іх выкарыстанне, гэта можа прынесці карысць вашаму разуменню абалонкі Bash і іншых сцэнарыяў людзей.

Звязаныя: 37 Важныя Linux каманды, якія вы павінны ведаць