Linux buýruklarynda (!) Nyşanyň ýa-da operatoryň 10 geň we syrly ulanylyşy


Linux-daky ! nyşany ýa-da operator Logiki negatiw operator hökmünde ulanylyp bilner, şeýle hem taryhdan buýruklary çişirip alyp ýa-da ozal üýtgedilen buýrugy işledip biler. Aşakdaky buýruklaryň hemmesi Baş Shell-de aç-açan barlandy. Barlamadym, ýöne bularyň köpüsi beýleki gabykda işlemez. Bu ýerde Linux buýruklarynda ! nyşanynyň ýa-da operatoryň ajaýyp we syrly ulanylyşyna girýäris.

Taryh buýrugyňyzdan (eýýäm/öň ýerine ýetirilen buýruklar) buýruk işledip biljekdigiňizden habarsyz bolmagyňyz mümkin. Başlamak üçin ilki bilen taryh buýrugyny işledip buýruk belgisini tapyň.

$ history

Indi taryhyň çykyşynda diňe görkezilen san boýunça taryhdan buýruk işlediň. “Taryh” buýrugynyň çykyşynda 1551 belgide peýda bolan buýrugy işlediň diýiň.

$ !1551

Şeýle hem, 1551 belgili sanawda görkezilen buýrugy (ýokardaky ýagdaýdaky iň ýokary buýruk) işledýär. Uzyn buýruklar bolan ýagdaýynda eýýäm ýerine ýetirilen buýrugy almak üçin bu usul gaty peýdalydyr. Diňe ulanyp jaň etmeli! [Taryh buýrugynyň çykyşynda görkezilen san].

Öň işledilen buýruklary iň soňky iş buýrugy -1, ikinji iň soňky -2, ýedinji iň soňky -7,… görnüşinde görkezer.

Iň soňky ýerine ýetirilen buýrugyň sanawyny almak üçin ilki bilen taryh buýrugyny işlediň. Töwekgelçilikli buýrugy tötänleýin işlemeýändigiňize göz ýetirmek üçin rm command> file we beýlekiler ýaly buýrugyň ýokdugyna göz ýetirmek üçin taryh buýrugyny işletmeli. Soň bolsa altynjy soňky buýrugy, sekiz soňky buýrugy we onunjy soňky buýrugy barlaň.

$ history
$ !-6
$ !-8
$ !-10

/ Home/$USER/Binary/firefox katalogynyň mazmunyny sanamaly, şonuň üçin işden kowdum.

$ ls /home/$USER/Binary/firefox

Soň haýsy faýlyň ýerine ýetirilip bilinjekdigini görmek üçin ls -l işden kowmalydygyma düşündim? Şonuň üçin tutuş buýrugy täzeden ýazmalymy! Nook, maňa gerek däl. Diňe şu täze buýruga iň soňky argumenti getirmeli:

$ ls -l !$

Bu ýerde ! $ bu täze buýruga soňky buýrukda berlen argumentleri alyp barar.

Iş stolunda 1.txt tekst faýly döretdim diýeliň.

$ touch /home/avi/Desktop/1.txt

soň bolsa cp buýrugy bilen iki tarapda doly ýoly ulanyp, '/ home/avi/süklemeler' -e göçüriň.

$ cp /home/avi/Desktop/1.txt /home/avi/downloads

Indi cp buýrugy bilen iki sany argument geçdik. Birinjisi “/home/avi/Desktop/1.txt”, ikinjisi “/ home/avi/süklemeler”, olary başgaça dolandyrmaga mümkinçilik beriň, iki argumenti başgaça çap etmek üçin diňe echo [argumentler] ýerine ýetiriň.

$ echo “1st Argument is : !^”
$ echo “2nd Argument is : !cp:2”

Bellik 1-nji argument \! ^ görnüşinde çap edilip bilner, galan argumentler bolsa \ýerine ýetirip çap edilip bilner! [Name_of_Command]: [Number_of_argument] .

Aboveokardaky mysalda birinji buýruk cp boldy we çap etmek üçin 2-nji argument gerekdi. Şonuň üçin \! Cp: 2 , haýsydyr bir buýruk xyz 5 argument bilen işleýär diýseňiz we 4-nji argument almaly bolsaňyz, \! Xyz: 4 ulanyp bilersiňiz we isleýşiňiz ýaly ulanyň. Thehli argumentlere \! * girip bolýar.

Iň soňky ýerine ýetirilen buýrugy açar sözler esasynda ýerine ýetirip bileris. Biz muňa aşakdaky ýaly düşünip bileris:

$ ls /home > /dev/null						[Command 1]
$ ls -l /home/avi/Desktop > /dev/null		                [Command 2]	
$ ls -la /home/avi/Downloads > /dev/null	                [Command 3]
$ ls -lA /usr/bin > /dev/null				        [Command 4]

Bu ýerde şol bir buýrugy (ls) ulandyk, ýöne dürli wyklýuçateller we dürli bukjalar üçin. Mundan başga-da, buýrugyň çykyşy bilen iş salyşjak däldigimiz üçin, her buýrugyň çykyşyna “/ dev/null” iberdik, konsol hem arassalygyna galýar.

Indi açar sözler esasynda iň soňky iş buýrugyny ýerine ýetiriň.

$ ! ls					[Command 1]
$ ! ls -l				[Command 2]	
$ ! ls -la				[Command 3]
$ ! ls -lA				[Command 4]

Çykyşy barlaň we eýýäm ýerine ýetirilen buýruklary diňe ls açar sözler bilen ýerine ýetirýändigiňize haýran galarsyňyz.

Iň soňky iş buýrugyňyzy (!!) ulanyp işledip/üýtgedip bilersiňiz. Iň soňky iş buýrugyny häzirki buýrukda üýtgetmek/üýtgetmek bilen çagyrar. Ssenariýany görkezeliň

Geçen gün şahsy IP-ni almak üçin bir gezeklik skript işledim, şonuň üçin ylgaýaryn,

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/

Soň birden ýokardaky skriptiň çykyşyny ip.txt faýlyna gönükdirmelidigime düşündim, näme etmeli? Commandhli buýrugy täzeden ýazyp, çykyşy bir faýla gönükdirmelimi? Aňsat çözgüt, UP nawigasiýa açaryny ulanmak we çykyşy bir faýla gönükdirmek üçin > ip.txt goşmakdyr.

$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt

Durmuşda Halasgär UP nawigasiýa açary üçin sag boluň. Indi aşakdaky ýagdaýy göz öňünde tutuň, indiki gezek bir setirli skriptiň aşagynda işlänimde.

$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:

Scriptazgy işleden badyma, baş haýyş \bash: ifconfig: buýruk tapylmady habary bilen ýalňyşlyk gaýtardy, bu buýrugy nirede ulanyjy hökmünde işleýändigimi çaklamak kyn däldi. kök hökmünde işlemeli.

Onda çözgüt näme? Köklemek üçin girmek, soňra bolsa buýrugy täzeden ýazmak kyn! Şeýle hem (UP Navigation Key) soňky mysalda bu ýere halas edilmedi. Onda? Şol ulanyjy üçin iň soňky buýrugy çagyrjak sitatalar bolmazdan \!! jaň etmeli.

$ su -c “!!” root

Bu ýerde kök ulanyjy bolan kommutator, -c ulanyjy hökmünde belli bir buýrugy işletmeli we iň möhüm bölegi !! buýruk we iň soňky iş buýrugy bilen çalşyrylar. bu ýerde çalşylar. Hawa! Kök parolyny bermeli.

!! esasan aşakdaky ssenariýalarda ulanýaryn,

1. Adaty ulanyjy hökmünde apt-get buýrugyny işledenimde, ýerine ýetirmäge rugsadyňyz ýok diýen ýalňyşlyk ýüze çykýar.

$ apt-get upgrade && apt-get dist-upgrade

Opps ýalňyşlygy ... üstünlik gazanmak üçin aşakdaky buýrugy ýerine ýetirmekden gorkmaň ..

$ su -c !!

Edil şonuň ýaly

$ service apache2 start
or
$ /etc/init.d/apache2 start
or
$ systemctl start apache2

OOPS Ulanyjy beýle işi ýerine ýetirmäge ygtyýarly däl, şonuň üçin ylgaýaryn ..

$ su -c 'service apache2 start'
or
$ su -c '/etc/init.d/apache2 start'
or
$ su -c 'systemctl start apache2'

! (Logiki NOTOK) buýrugy ! aňyrsyndan başga ähli faýllarda/giňeltmelerde işletmek üçin ulanyp bolýar.

A. 2.txt adyndan başga ähli faýllary katalogdan aýyryň.

$ rm !(2.txt)

B. Giňeldilen “pdf” görnüşinden başga ähli faýl görnüşini bukjadan aýyryň.

$ $ rm !(*.pdf)

Bu ýerde ulanarys! -d katalogyň bardygyny ýa-da ýokdugyny barlamak üçin Logiki we Operator (&&) şol katalogyň ýokdugyny we Logiki OR Operator (||) katalogy çap etmek üçin bar.

Logika, [! -d/home/avi/Tecmint] 0, Logical-dan başga zatlary ýerine ýetirer we Logical OR (||) -e geçer we Logical OR-dan başga zatlary ýerine ýetirer.

$ [ ! -d /home/avi/Tecmint ] && printf '\nno such /home/avi/Tecmint directory exist\n' || printf '\n/home/avi/Tecmint directory exist\n'

Aboveokardaky şerte meňzeş, ýöne bu ýerde islenýän katalog ýok bolsa buýrukdan çykar.

$ [ ! -d /home/avi/Tecmint ] && exit

Scriptazuw dilinde umumy ýerine ýetiriş, eger islenýän katalog ýok bolsa, ony döreder.

[ ! -d /home/avi/Tecmint ] && mkdir /home/avi/Tecmint

Bularyň hemmesi häzirlikçe. Eger bilmäge mynasyp bolan ! başga bir ulanylyşyny bilýän bolsaňyz ýa-da başga bir ulanyş bilen ýüzbe-ýüz bolsaňyz, pikirleriňizde teklipleriňizi bize hödürläp bilersiňiz. Baglanyşyň!