Dobrodošli v drug petek ...
Čas je, da odkrijete majhen del terminala. Po dolgem premisleku sem se odločil, da ustvarim objavo o standardni tokovi; Čeprav bo površno, mislim, da bi to morali vedeti vsi.
Standardni tok
Standardni tok Sestavljen je iz več komunikacijskih kanalov med uporabnikom in terminalom. Ti vhodno / izhodni "kanali" prikažejo ali zajamejo informacije, ko se ukaz izvede.
3 I / O povezave so: stdin Standardni vhod, stdout Standardni izhod, stderr Standardna napaka.
stdin: standardni vhod
Standardni vnos je način, kako zajemamo informacije iz ukaza bodisi prek cevi, preusmeritve, tipkovnice itd. Identificiramo ga z deskriptorjem datoteke 0.
Primer stdina bi bil:
razvrsti <seznam
Zavzame vse informacije s seznama - v tem primeru naključno zapisane številke - in pri preusmeritvi datoteke v ukaz ls numerični seznam razvrsti po abecedi. V tem primeru so zastavice implicitne.
stdout: standardni izhod
Standardni izhod, kot pove že njegovo ime, prikazuje izhod ukaza prek konzole. Če napišemo, so vsi podatki, ki jih prikazuje na zaslonu, standardni izhod. Predstavlja ga deskriptor 1.
Zdaj bom poskusil ustvariti stdin in stdout s skriptom, napisanim v bash, preprosto zato, ker imam rad bash hahaha. 🙂
test.sh
#! / bin / bash, če je [-t 0]; nato echo "Uporabljate stdout" elif [-t 1]; potem echo "Uporabljate stdin" else echo "Brutal error" fi
Zdaj posnetek zaslona, ki prikazuje, kako uporabljati skript. Pri preusmerjanju ali uporabi cevi z uporabo skripta test -t vedeti, ali se izvaja samo stdout skript, in če ne, je očitno stdin.
bash test.sh ls | bash test.sh bash test.sh </ etc / passwd
Ne pozabite spremeniti ukaza in vadbe, da se boste naučili.
stderr: Standardna napaka
Standardna napaka je način, kako programi prikažejo napake ali diagnostiko. Predstavlja ga deskriptor 2.
Za razumevanje koncepta je takšna situacija: ko želimo iz ukaza shraniti napako, najprej pomislimo, da izhod preusmerimo v navadno besedilo.
ls> info.txt
To bi delovalo, podatki o ukazu bodo shranjeni v navadni besedilni datoteki. Ko pa napake shrani, je ne shrani, temveč jo prikaže na zaslonu in navadna besedilna datoteka je prazna.
Namesto tega, če uporabimo 2> za označevanje shranitve stderr v datoteko:
ls foo 2> info.txt
Zdaj bo podatke o napaki shranil v besedilno datoteko.
Večina Shell dovolite, da se stderr in stdout shranita v enem ukaznem ukazu z &> kjer Foo ne obstaja
ls Downloads Foo &> info.txt
Ta datoteka bo vsebovala informacije o napaki pri izvajanju ls v Foo in bo imenike našla v razdelku Prenosi.
In končno, kaj pomeni ta slavni 2> & 1?
Preprosto, preusmerite stderr v stdout. To & sredi> in 1 pomeni, da bo preusmeril na stdout. Če ga ne bi bilo, bi bilo približno tako ... "preusmerite napako v datoteko 1".
In s tem je mogoče preusmeriti:
- stdout v datoteko
- stderr v datoteko
- stdout do stderr
- stderr v stdout
- stderr in stdout v datoteko
- med drugim
To je to za današnje ljudi. Beremo in se vam zahvaljujemo, da ste se ustavili. 😀
Zanimivo. Zahvaljujoč vašim vadnicam mi je Bash veliko bolj všeč.
Spoštovani, zanimivo, vendar imate napako v naslednji vrstici:
"In pri preusmerjanju datoteke na ukaz ls", mora biti "in pri preusmerjanju datoteke na ukaz za razvrščanje".
Pozdrav.
Na začetku besedila je napaka. Ko navedete ukaz "ls", mora biti "razvrsti":
"Vzemite vse informacije s seznama - v tem primeru naključno zapisane številke - in datoteko preusmerite v ukaz ls (tukaj bi bilo razvrščanje)"
Lep pozdrav in hvala, ker ste delili svoje delo
To je super za cron, kjer želite, da se izhod izbriše (/ dev / null), vendar se napake shranijo v datoteke. Ko to storim, običajno z ukazom datum natančno določim, kdaj niso uspeli.
Bash (sh) ima ta orodja, ki jih je razvila filozofija Unix, "naredi eno stvar in to dobro"
No, nisem ničesar izvedel
Haha no dobro je razloženo, česa niste razumeli?