15 специјалних знакова које треба да знате за Басх

Ако желите да савладате Басх љуску на Линук-у, мацОС-у или другом систему сличном УНИКС-у, специјални знакови (као што су ~, *, | и >) су критични. Помоћи ћемо вам да откријете ове загонетне секвенце Линук команди и постанете херој хијероглифа.

Шта су посебни ликови?

Постоји скуп карактера Басх схелл третира на два различита начина. Када их откуцате у љусци, они делују као упутства или команде и говоре љусци да изврши одређену функцију. Замислите их као команде од једног карактера.

Понекад само желите да одштампате знак и не треба вам да делује као магични симбол. Постоји начин на који можете користити карактер да представља себе, а не његову посебну функцију.

Показаћемо вам који су знакови „посебни“ или „мета-“ знакови, као и како можете да их користите функционално и дословно.

~ Хоме Дирецтори

Тилда (~) је скраћеница за ваш почетни именик. То значи да не морате да куцате пуну путању до вашег матичног директоријума у ​​командама. Где год да се налазите у систему датотека, можете користити ову команду да одете у свој кућни директоријум:

cd ~

Тхе

Ову команду можете користити и са релативним путањама. На пример, ако се налазите негде у систему датотека који није у вашој матичној фасцикли и желите да се промените у директоријум архиве у вашем радном директоријуму, користите тилду да бисте то урадили:

cd ~/work/archive

Тхе

. Текући директоријум

Тачка (.) представља тренутни директоријум. Видећете га у листама директоријума ако користите опцију -а (све) са лс.

ls -a

Тхе

Такође можете користити тачку у наредбама да представите путању до вашег тренутног директоријума. На пример, ако желите да покренете скрипту из тренутног директоријума, назвали бисте је овако:

./script.sh

Ово говори Басху да потражи датотеку сцрипт.сх у тренутном директоријуму. На овај начин, неће претраживати директоријуме на вашој путањи у потрази за одговарајућим извршним фајлом или скриптом.

Тхе

.. Родитељски именик

Двострука тачка или „двострука тачка“ (..) представља родитељски директоријум вашег тренутног. Ово можете користити да бисте се померили за један ниво у стаблу директоријума.

cd ..

Тхе

Ову команду можете користити и са релативним путањама—на пример, ако желите да се попнете за један ниво у стаблу директоријума, а затим унесете други директоријум на том нивоу.

Такође можете да користите ову технику да бисте брзо прешли на директоријум на истом нивоу стабла директоријума као и ваш тренутни. Прескочите један ниво горе, а затим се вратите доле у ​​други директоријум.

cd ../gc_help

Тхе

/ Раздвајач директоријума путање

Можете користити косу црту унапред (/)—коју се често називају само косом цртом—да бисте одвојили директоријуме у имену путање.

ls ~/work/archive

Тхе

Једна коса црта представља најкраћу могућу путању до директоријума. Пошто све у стаблу Линук директоријума почиње у основном директоријуму, можете користити ову команду да брзо пређете на основни директоријум:

cd /

Тхе

# Коментирајте или Скратите жице

Најчешће користите хеш или знак броја (#) да кажете љусци шта следи је коментар и не би требало да делује на то. Можете га користити у схелл скриптама и – мање корисно – у командној линији.

# This will be ignored by the Bash shell

Тхе

Међутим, није истински занемарен јер је додат вашој историји команди.

  Како снимити екран на иПхоне-у?

Такође можете да користите хеш да исечете променљиву низа и уклоните неки текст са почетка. Ова команда креира стринг променљиву под називом тхис_стринг.

У овом примеру, додељујемо текст „Даве Геек!“ на променљиву.

this_string="Dave Geek!"

Ова команда користи ехо за штампање речи „Како да“ у прозор терминала. Он преузима вредност сачувану у променљивој стринг преко а проширење параметара. Пошто додајемо хеш и текст „Дејв“, он сече тај део стринга пре него што се проследи у ехо.

echo How-To ${this_string#Dave}

Ан

Ово не мења вредност сачувану у променљивој стринг; утиче само на оно што се шаље у ехо. Можемо користити ехо да још једном одштампамо вредност стринг променљиве и проверимо ово:

echo $this_string

Тхе

? Замолни знак за један знак

Басх схелл подржава три џокер знака, од којих је један знак питања (?). За замену знакова у предлошцима имена датотека користите џокер знакове. Име датотеке које садржи џокер знак формира шаблон који одговара низу имена датотека, а не само једном.

Џокер знак питања представља тачно један знак. Размотрите следећи шаблон имена датотеке:

ls badge?.txt

Ово се преводи као „наведите било коју датотеку са именом које почиње са ‘значка’ и праћено било којим појединачним знаком пре екстензије назива датотеке.

Поклапа се са следећим датотекама. Имајте на уму да неки имају бројеве, а неки слова иза „значке“ дела назива датотеке. Упитник ће одговарати и словима и бројевима.

Тхе

Међутим, тај шаблон имена датотеке не одговара „бадге.ткт“, јер име датотеке нема ниједан знак између „значке“ и екстензије датотеке. Џокер знак питања мора да одговара одговарајућем знаку у имену датотеке.

Такође можете користити знак питања да пронађете све датотеке са одређеним бројем знакова у називима датотека. Ово наводи све текстуалне датотеке које садрже тачно пет знакова у имену датотеке:

ls ?????.txt

А

* Замјенски знак секвенце знакова

Можете користити звездицу

ls badge*

џокер знак за било који низ знакова, укључујући ниједан карактер. Размотрите следећи шаблон имена датотеке:

Ово се поклапа са свим следећим:

Ан

Одговара „бадге.ткт“ јер џокер представља било коју секвенцу знакова или ниједан карактер.

ls source.*

Ова команда одговара свим датотекама које се зову „извор“, без обзира на екстензију датотеке.

[] Ан

Замјенски знак скупа знакова

  Како лечити мучнину узроковану играма

Као што је горе објашњено, користите знак питања за представљање било ког појединачног знака, а звездицу за представљање било којег низа знакова (укључујући ниједан карактер). [] Можете формирати џокер знак са угластим заградама (

) и знакове које садрже. Релевантни знак у називу датотеке тада мора одговарати најмање једном од знакова у скупу знакова џокера.

ls badge_0[246].txt

У овом примеру, команда се преводи у: „било која датотека са екстензијом „.пнг“, име датотеке које почиње са „пипес_0“ и у коме је следећи знак 2, 4 или 6.“

Ан

ls badge_[01][789].txt

Можете користити више од једног скупа заграда по шаблону имена датотеке:

Ан

ls badge_[23][1-5].txt

Такође можете укључити опсеге у скуп знакова.  Следећа команда бира датотеке са бројевима од 21 до 25 и 31 до 35 у називу датотеке.

Ан

; Схелл Цомманд Сепаратор

ls > count.txt; wc -l count.txt; rm count.txt

У командну линију можете да укуцате колико год желите команди, све док сваку од њих одвојите тачком и зарезом (;).  То ћемо урадити у следећем примеру: Ан

цоунт.ткт; вц -л цоунт.ткт; рм цоунт.ткт” команда у прозору терминала’ видтх=”646″ хеигхт=”122″ онлоад=”пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);” онеррор=”тхис.онеррор=нулл;пагеспеед.лазиЛоадИмагес.лоадИфВисиблеАндМаибеБеацон(тхис);”>

Имајте на уму да се друга команда покреће чак и ако прва не успе, трећа се покреће чак и ако друга не успе и тако даље.

cd ./doesntexist && cp ~/Documents/reports/* .

Ако желите да зауставите секвенцу извршавања ако једна команда не успе, користите двоструки амперсанд (&&) уместо тачке и зареза:

А

& Позадински процес

Након што укуцате команду у прозор терминала и она се заврши, враћате се на командну линију. Обично ово траје само тренутак или два. Али ако покренете другу апликацију, као што је гедит, не можете користити прозор терминала док не затворите апликацију.

gedit command_address.page &

Међутим, можете покренути апликацију као позадински процес и наставити да користите прозор терминала.  Да бисте то урадили, само додајте амперсанд у командну линију:

А

Басх вам показује ИД процеса онога што је покренуто, а затим вас враћа у командну линију. Затим можете наставити да користите прозор терминала.

sort 

Многе Линук команде прихватају датотеку као параметар и преузимају своје податке из те датотеке.  Већина ових команди такође може узети унос из тока.  Да бисте креирали ток, користите леву угаону заграду (

When a command has input redirected into it, it might behave differently than when it reads from a named file.

If we use wc to count the words, lines, and characters in a file, it prints the values, and then the filename. If we redirect the contents of the file to wc, it prints the same numeric values but doesn’t know the name of the file from which the data came. It cannot print a filename.

Here are some examples of how you can use wc:

wc words.txt
wc 

А

> Output Redirection

You can use the right-angle bracket ( > ) to redirect the output from a command (typically, into a file); here’s an example:

ls > files.txt
cat files.txt

А Ан

филес.ткт" команда у прозору терминала." видтх="646" хеигхт="382" >

wc doesntexist.txt 2> errors.txt
cat errors.txt

Преусмеравање излаза такође може да преусмери поруке о грешци ако користите цифру (2, у нашем примеру) са >.  Ево како да то урадите: А

еррорс.ткт" команда у прозору терминала." видтх="646" хеигхт="122" >

| Цев

„Цев“ повезује команде заједно. Узима излаз из једне команде и преноси га следећој као улаз. Број цевоводних команди (дужина ланца) је произвољан.

Овде ћемо користити цат да бисмо садржај датотеке Вордс.ткт убацили у греп, који извлачи сваки ред који садржи мало или велико „Ц“. греп ће затим проследити ове редове за сортирање. сортирање користи опцију -р (обрнуто), тако да ће се сортирани резултати појавити обрнутим редоследом.

cat words.txt | grep [cC] | sort -r

Откуцали смо следеће:

А

! Логичко НЕ и Оператор историје

Узвичник (!) је логички оператор који значи НЕ.

[ ! -d ./backup ] && mkdir ./backup

У овој командној линији постоје две команде:
Прва команда је текст у угластим заградама;

Друга команда је текст који прати двоструке амперсанде &&.

Прва команда користи ! као логички оператор. Угласте заграде означавају да ће се извршити тест. Опција -д (директориј) тестира присуство директоријума који се зове резервна копија. Друга команда креира директоријум.

Пошто двоструки амперсанди раздвајају две команде, Басх ће извршити другу само ако прва успе. Међутим, то је супротно од онога што нам треба. Ако тест за „бацкуп” директоријум успе, не морамо да га креирамо. А ако тест за директоријум „резервне копије“ не успе, друга команда се неће извршити, а директоријум који недостаје неће бити креиран.

Овде је логички оператор! долази. Делује као логично НЕ. Дакле, ако тест успе (тј. директоријум постоји), ! окреће то на „НЕ успех“, што је неуспех. Дакле, друга команда није активирана.

Ако тест директоријума не успе (тј. директоријум не постоји), ! мења одговор на „НЕ неуспех“, што је успех. Дакле, извршава се команда за креирање директоријума који недостаје.

То мало! има много удараца када вам затреба!

ls -l -d backup

Да бисте проверили статус фасцикле резервне копије, користите команду лс и опције -л (дуга листа) и -д (директоријум), као што је приказано у наставку:

А

!24

Такође можете покренути команде из историје команди са знаком узвика.  Команда историје наводи историју ваше команде, а ви затим укуцате број команде са којом желите да поново покренете!  да га извршите, као што је приказано у наставку:

А

!!

Следеће поново покреће претходну команду:

$ Променљиви изрази У Басх љусци креирате променљиве за чување вредности. Неки воле променљиве окружења,

увек постоје и можете им приступити сваки пут када отворите прозор терминала. Оне садрже вредности, као што су ваше корисничко име, кућни директоријум и путања.

echo $USER
echo $HOME
echo $PATH

Можете да користите ехо да видите вредност коју променљива има - само претходите имену променљиве знаком долара ($), као што је приказано у наставку:

Ан

ThisDistro=Ubuntu
MyNumber=2001
echo $ThisDistro
echo $MyNumber

Да бисте креирали променљиву, морате јој дати име и дати вредност за њу.  Не морате да користите знак долара да бисте креирали променљиву.  $ додајете само када референцирате променљиву, као што је у следећем примеру:

Ан

Додајте заграде ( {} ) око знака за долар и извршите проширење параметра да бисте добили вредност променљиве и омогућили даље трансформације вредности.

MyString=123456qwerty

Ово ствара променљиву која садржи низ знакова, као што је приказано у наставку:

echo ${MyString}

Користите следећу команду да поновите низ у прозор терминала:

echo ${myString:6}

Да бисте вратили подниз који почиње на позицији 6 целог низа, користите следећу команду (постоји померање нуле, тако да је прва позиција нула):

echo ${myString:0:6}

Ако желите да поновите подниз који почиње на позицији нула и садржи следећих шест знакова, користите следећу команду:

echo ${myString:4:4}

Користите следећу команду да поновите подниз који почиње на позицији четири и садржи следећа четири знака:

А

Цитирање посебних знакова

Ако желите да користите посебан карактер као литерални (неспецијални) карактер, морате рећи Басх љусци. Ово се зове цитирање и постоје три начина да се то уради.

Ако ставите текст у наводнике (“…”), то спречава Басх да делује на већину специјалних знакова и они се само штампају. Међутим, један значајан изузетак је знак долара ($). И даље функционише као знак за изразе променљивих, тако да можете укључити вредности из променљивих у свој излаз.

echo "Today is $(date)"

На пример, ова команда штампа датум и време:

echo 'Today is $(date)'

Ако ставите текст у једноструке наводнике ('...') као што је приказано испод, он зауставља функцију свих специјалних знакова:

echo "Today is $(date)"

Можете користити обрнуту косу црту ( ) да спречите да следећи знак функционише као специјални знак. Ово се зове „бежање“ од лика; погледајте пример испод:

Замислите само посебне знакове као врло кратке команде. Ако запамтите њихову употребу, може вам од велике користи у разумевању Басх шкољке — и скрипти других људи.