10 Użi tal-għaġeb u misterjużi ta' (!) Simbolu jew Operatur fil-Kmandi tal-Linux
Is-simbolu jew l-operatur !
fil-Linux jista’ jintuża bħala operatur ta’ Negazzjoni Loġika kif ukoll biex iġib kmandi mill-istorja bi tweaks jew biex imexxi kmand immexxi minn qabel b’modifika. Il-kmandi kollha hawn taħt ġew iċċekkjati b'mod espliċitu f'bash Shell. Għalkemm ma ċċekkjejtx iżda maġġuri minn dawn mhux se jaħdmu f'qoxra oħra. Hawnhekk nidħlu fl-użi aqwa u misterjużi tas-simbolu jew operatur !
fil-kmandi tal-Linux.
Jista' jkun li ma tkunx konxju tal-fatt li tista' tmexxi kmand mill-kmand tal-istorja tiegħek (kmandi diġà esegwiti/qabel). Biex tibda l-ewwel sib in-numru tal-kmand billi tħaddem il-kmand tal-'istorja'.
$ history
Issa mexxi kmand mill-istorja biss bin-numru li fih jidher, fl-output tal-istorja. Ngħidu mexxi kmand li jidher fin-numru 1551 fl-output tal-kmand storja.
$ !1551
U, imexxi l-kmand (kmand ta 'fuq fil-każ ta' hawn fuq), li kien elenkat fin-numru 1551. Dan il-mod biex jiġi rkuprat kmand diġà esegwit huwa utli ħafna speċjalment fil-każ ta 'dawk il-kmandi li huma twal. Għandek bżonn biss li ssejħilha bl-użu ![Numru li fih jidher fl-output tal-kmand tal-istorja].
Tista' tmexxi dawk il-kmandi li ħadt qabel billi s-sekwenza ta' tħaddim tagħhom tkun l-aħħar kmand tal-ġirja se jkun rappreżentat bħala -1, it-tieni l-aħħar bħala -2, is-seba' l-aħħar bħala -7,....
L-ewwel mexxi kmand tal-istorja biex tikseb lista tal-aħħar kmand esegwit. Huwa meħtieġ li tmexxi kmand tal-istorja, sabiex tkun tista 'tkun ċert li m'hemm l-ebda kmand bħal rm command > file
u oħrajn biss biex tiżgura li ma tmexxi l-ebda kmand perikoluż aċċidentalment. U mbagħad iċċekkja s-Sitt l-aħħar kmand, Tmien l-aħħar kmand u l-Għaxar l-aħħar kmand.
$ history $ !-6 $ !-8 $ !-10
Għandi bżonn inniżżel il-kontenut tad-direttorju '/home/$USER/Binary/firefox' u għalhekk sparejt.
$ ls /home/$USER/Binary/firefox
Imbagħad indunajt li kelli nispara 'ls -l' biex nara liema fajl huwa eżekutibbli hemmhekk? Allura għandi ttajpja l-kmand kollu mill-ġdid! Le m'għandix bżonn. Għandi bżonn biss inġorr l-aħħar argument għal dan il-kmand il-ġdid bħala:
$ ls -l !$
Hawnhekk !$
se jġorr argumenti mgħoddija fl-aħħar kmand lil dan il-kmand il-ġdid.
Ejja ngħidu li ħloqt fajl test 1.txt fuq id-Desktop.
$ touch /home/avi/Desktop/1.txt
u mbagħad ikkopjaha għal '/home/avi/Downloads' billi tuża mogħdija sħiħa fuq kull naħa bil-kmand cp.
$ cp /home/avi/Desktop/1.txt /home/avi/downloads
Issa għadna żewġ argumenti bil-kmand cp. L-ewwel huwa '/home/avi/Desktop/1.txt' u t-tieni huwa '/home/avi/Downloads', ejja nittrattawhom b'mod differenti, biss tesegwixxi echo [argumenti]
biex tipprintja ż-żewġ argumenti b'mod differenti.
$ echo “1st Argument is : !^” $ echo “2nd Argument is : !cp:2”
Innota l-ewwel argument jista' jiġi stampat bħala \!^”
u l-bqija tal-argumenti jistgħu jiġu stampati billi tesegwixxi \![Name_of_Command]:[Number_of_argument]”
.
Fl-eżempju ta 'hawn fuq l-ewwel kmand kien 'cp' u t-tieni argument kien meħtieġ għall-istampar. Għalhekk \!cp:2”
, jekk xi kmand jgħid li xyz jitħaddem b'5 argumenti u għandek bżonn tikseb ir-4 argument, tista' tuża \!xyz:4”
, u użaha kif tixtieq. L-argumenti kollha jistgħu jiġu aċċessati minn \!*”
.
Nistgħu nwettqu l-aħħar kmand esegwit fuq il-bażi tal-kliem kjavi. Nistgħu nifhmuh kif ġej:
$ 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]
Hawnhekk użajna l-istess kmand (ls) iżda bi swiċċijiet differenti u għal folders differenti. Barra minn hekk bgħatna lill-output ta 'kull kmand lil '/dev/null' peress li mhux se nittrattaw l-output tal-kmand ukoll il-console tibqa nadifa.
Issa Esegwixxi l-aħħar kmand tal-ġirja fuq il-bażi tal-kliem kjavi.
$ ! ls [Command 1] $ ! ls -l [Command 2] $ ! ls -la [Command 3] $ ! ls -lA [Command 4]
Iċċekkja l-output u tkun mistagħġeb li qed tmexxi kmandi diġà esegwiti biss bil-kliem kjavi ls
.
Tista' tmexxi/tbiddel il-kmand tal-aħħar ġirja tiegħek billi tuża (!!)
. Se jsejjaħ il-kmand tal-aħħar run b'alter/tweak fil-kmand attwali. Ejja nuruk ix-xenarju
L-aħħar ġurnata nmexxi script one-liner biex nikseb l-IP privat tiegħi u għalhekk niġri,
$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/
Imbagħad f'daqqa waħda sibt li għandi bżonn nidderieġi mill-ġdid l-output ta 'l-iskrittura ta' hawn fuq għal fajl ip.txt, allura x'għandi nagħmel? Għandi erġa' nikteb il-kmand kollu u nerġa' nidderieġi l-output għal fajl? Ukoll soluzzjoni faċli hija li tuża UP
ċavetta tan-navigazzjoni u żid > ip.txt
biex terġa 'tidderieġi l-output għal fajl bħala.
$ ip addr show | grep inet | grep -v 'inet6'| grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d/ > ip.txt
Grazzi għall-ħajja Saviour UP
ċavetta tan-navigazzjoni hawn. Issa ikkunsidra l-kundizzjoni hawn taħt, il-ħin li jmiss I run taħt skript ta 'linja waħda.
$ ifconfig | grep "inet addr:" | awk '{print $2}' | grep -v '127.0.0.1' | cut -f2 -d:
Malli nmexxi l-iskript, il-pront tal-bash irritorna żball bil-messaġġ \bash: ifconfig: kmand not found”
, Ma kienx diffiċli għalija li naħseb li nmexxi dan il-kmand bħala utent fejn huwa għandu jitmexxa bħala għerq.
Allura x'inhi s-soluzzjoni? Huwa diffiċli li tidħol għall-għeruq u mbagħad ittajpja l-kmand kollu mill-ġdid! Ukoll (UP Navigation Key) fl-aħħar eżempju ma waslitx biex isalva hawn. Allura? Għandna bżonn insejħu \!!”
mingħajr kwotazzjonijiet, li se jsejjaħ l-aħħar kmand għal dak l-utent.
$ su -c “!!” root
Hawnhekk su huwa swiċċ utent li huwa root, -c
huwa li tmexxi l-kmand speċifiku bħala l-utent u l-aktar parti importanti !!
se tiġi sostitwita bil-kmand u l-aħħar ġirja kmand se jiġi sostitwit hawn. Iva! Għandek bżonn tipprovdi l-password tal-għeruq.
Jien nagħmel użu minn !!
l-aktar fix-xenarji li ġejjin,
1. Meta nmexxi apt-get kmand bħala utent normali, normalment niġi żball li ngħid li m'għandekx permess biex tesegwixxi.
$ apt-get upgrade && apt-get dist-upgrade
Żball Opps... tinkwetax tesegwixxi taħt il-kmand biex tirnexxi..
$ su -c !!
L-istess mod nagħmel għal,
$ service apache2 start or $ /etc/init.d/apache2 start or $ systemctl start apache2
Utent OOPS mhux awtorizzat li jwettaq tali kompitu, għalhekk niġri ..
$ su -c 'service apache2 start' or $ su -c '/etc/init.d/apache2 start' or $ su -c 'systemctl start apache2'
Il-!
(Loġiku MHUX) jista' jintuża biex imexxi l-kmand fuq il-fajls/estensjonijiet kollha ħlief dak wara !
.
A. Neħħi l-fajls kollha minn direttorju ħlief dak li l-isem tiegħu huwa 2.txt.
$ rm !(2.txt)
B. Neħħi t-tip ta 'fajl kollu mill-folder ħlief dak li l-estensjoni tiegħu hija 'pdf'.
$ $ rm !(*.pdf)
Hawnhekk se nużaw ! -d
biex tivvalida jekk id-direttorju jeżistix jew le segwit minn Logical AND Operator (&&)
biex tipprintja dak id-direttorju ma jeżistix u Logical OR Operator (||)
> biex jistampaw id-direttorju huwa preżenti.
Il-loġika hija, meta l-output ta '[ ! -d /home/avi/Tecmint ]
huwa 0, se jesegwixxi dak li jinsab lil hinn mill-Loġiku U inkella se jmur għal Loġiku JEW (||)
u jesegwixxi dak li jinsab lil hinn mill-Loġiku JEW.
$ [ ! -d /home/avi/Tecmint ] && printf '\nno such /home/avi/Tecmint directory exist\n' || printf '\n/home/avi/Tecmint directory exist\n'
Simili għall-kundizzjoni ta 'hawn fuq, iżda hawnhekk jekk id-direttorju mixtieq ma jeżistix se joħroġ mill-kmand.
$ [ ! -d /home/avi/Tecmint ] && exit
Implimentazzjoni ġenerali fl-Scripting Language fejn jekk id-direttorju mixtieq ma jeżistix, joħloq wieħed.
[ ! -d /home/avi/Tecmint ] && mkdir /home/avi/Tecmint
Dak kollu għalissa. Jekk taf jew tiltaqa' ma' xi użu ieħor ta' !
li ta' min ikun jaf, tista' tixtieq tagħtina s-suġġeriment tiegħek fir-rispons. Żomm konnessi!