Cum se utilizează comanda Echo pe Linux
echo
comanda este perfectă pentru scrierea textului formatat în fereastra terminalului. Și nu trebuie să fie text static. Poate include variabile shell, nume de fișiere și directoare. De asemenea, puteți redirecționa echo pentru a crea fișiere text și fișiere jurnal. Urmați acest ghid simplu pentru a afla cum.
Ecoul repetă ceea ce îi spui să repete
lui Zeus îi plăcea să părăsească Muntele Olimp pentru a se consoarta cu nimfe frumoase. Într-o călătorie, el i-a spus unei nimfe de munte numită Echo să-și rătăcească soția, Hera, dacă îl va urma. Hera a venit să-l caute pe Zeus, iar Echo a făcut tot ce a putut pentru a o ține pe Hera în conversație. În cele din urmă, Hera și-a pierdut cumpătul și l-a blestemat pe bietul Echo, astfel încât să repete doar ultimele cuvinte pe care le spusese altcineva. Ceea ce i-a făcut Hera lui Zeus când l-a ajuns din urmă este presupunerea oricui.
și asta, destul de mult, esteecho
‘s lot în viață. Repetă ceea ce i s-a spus să repete. Aceasta este o funcție simplă, dar una vitală. Fără echo
, nu am putea obține o ieșire vizibilă din scripturile shell, de exemplu.
deși nu este încărcat cu o multitudine de clopote și fluiere, există șanse mari ca echo
să aibă unele capabilități despre care nu știați sau pe care le-ați uitat.
ecou? echo!
majoritatea sistemelor Linux oferă două versiuni deecho
. Shell-ul Bash are propriul echo
încorporat în el și există și o versiune executabilă binară aecho
de asemenea.
putem vedea cele două versiuni diferite folosind următoarele comenzi:
type echo
whereis echo
type
comanda ne spune dacă comanda pe care o transmitem ca argument este un shell încorporat, un executabil binar, un alias sau o funcție. Ne raportează că echo
este o coajă încorporată.
De îndată ce a găsit un răspuns,type
nu mai caută alte potriviri. Deci nu ne spune dacă există alte comenzi cu același nume prezente în sistem. Dar ne spune pe care o găsește mai întâi. Și acesta este cel care va fi folosit în mod implicit atunci când emitem acea comandă.comanda
whereis
caută executabilul binar, codul sursă și pagina de manual pentru comanda pe care o transmitem ca parametru al liniei de comandă. Nu caută Shell builtins, deoarece nu au un executabil binar separat. Sunt o parte integrantă a executabilului Bash.
whereis
comanda raportează căecho
este un executabil binar situat în directorul/bin
.
pentru a utiliza acea versiune deecho
va trebui să o apelați în mod explicit furnizând calea către executabil pe linia de comandă:
/bin/echo --version
shell-ul încorporat nu știe ce--version
argumentul liniei de comandă este, doar îl repetă în fereastra terminalului:
echo --version
exemplele prezentate aici folosesc versiunea implicită aecho
, în shell-ul Bash.
Scrierea textului pe Terminal
pentru a scrie un șir simplu de text în fereastra terminalului, tastațiecho
și șirul pe care doriți să îl afișeze:
echo My name is Dave.
textul se repetă pentru noi. Dar pe măsură ce experimentați, veți descoperi în curând că lucrurile se pot complica puțin. Uită-te la acest exemplu:
echo My name is Dave and I'm a geek.
fereastra terminalului afișează un>
semn și stă acolo, așteptând. Ctrl + C vă va readuce la promptul de comandă. Ce s-a întâmplat acolo?
citatul unic sau apostroful din cuvântul „sunt” confuzecho
. A interpretat acel citat unic ca începutul unei secțiuni de text citate. Deoarece nu a detectat o singură cotație de închidere, echo
aștepta mai multe intrări. Se aștepta ca o contribuție suplimentară să includă citatul unic lipsă pe care îl aștepta.
pentru a include un singur citat într-un șir, cea mai simplă soluție este să înfășurați întregul șir în ghilimele duble:
echo "My name is Dave and I'm a geek."
înfășurarea textului în ghilimele duble este un sfat general bun. În scripturi, delimitează curat parametrii pe care îi treceți la echo
. Acest lucru face citirea—și depanare-script-uri mult mai ușor.
Ce se întâmplă dacă doriți să includeți un caracter de citat dublu în șirul dvs. de text? Este ușor, trebuie doar să puneți un backslash \
în fața mărcii de ofertă dublă (fără spațiu între ele).
echo "My name is Dave and I'm a \"geek.\""
aceasta înfășoară cuvântul „geek” în ghilimele duble pentru noi. Vom vedea mai multe dintre aceste personaje care au scăpat în curând.
folosind variabile cu ecou
până acum, am scris text predefinit în fereastra terminalului. Putem folosi variabile cu echo
pentru a produce ieșire care este mai dinamică și are valori inserate în ea pentru noi de shell. Putem defini o variabilă simplă cu această comandă:
my_name="Dave"
a fost creată o variabilă numitămy_name
. I s-a atribuit valoarea textului „Dave.”Putem folosi numele variabilei în șirurile pe care le trecem la echo
, iar valoarea variabilei va fi scrisă în fereastra terminalului. Trebuie să puneți un semn dolar $
în fața numelui variabilei pentru a lăsa echo
să știe că este o variabilă.
există un avertisment. Dacă v-ați înfășurat șirul în ghilimele unice echo
va trata totul literal. Pentru a afișa valoarea variabilei și nu numele variabilei, utilizați ghilimele duble.
echo 'My name is $my_name'
echo "My name is $my_name"
oarecum pe bună dreptate, care este în valoare de repetare:
- folosind ghilimele singur duce la textul fiind scris la fereastra terminalului într-un mod literal.
- folosind ghilimele duble rezultă că variabila este interpretată—numită și expansiune variabilă—iar valoarea este scrisă în fereastra terminalului.
RELATED: cum se lucrează cu variabile în Bash
folosind comenzi cu ecou
putem folosi o comandă cuecho
și încorporăm ieșirea acesteia în șirul care este scris în fereastra terminalului. Trebuie să folosim semnul dolarului$
ca și cum comanda ar fi o variabilă și să înfășurăm întreaga comandă între paranteze.
vom folosi comanda data. Un sfat este să utilizați comanda pe cont propriu înainte de a începe să o utilizați cu echo
. În acest fel, dacă există ceva în neregulă cu sintaxa comenzii dvs., o identificați și o corectați înainte de a o include în comanda echo
. Apoi, dacăecho
comanda nu face ceea ce vă așteptați, veți ști că problema trebuie să fie cuecho
sintaxa deoarece ați dovedit deja sintaxa comenzii.
deci, încercați acest lucru în fereastra terminalului:
date +%D
și, mulțumiți că obținem ceea ce ne așteptăm de la comanda date, o vom integra într-oecho
comandă:
echo "Today's date is: $(date +%D)"
notă comanda se află în paranteze și semnul dolar$
este imediat înainte de prima paranteză.
formatarea textului cu echo
opțiunea-e
(enable backslash escapes) ne permite să folosim câteva caractere scăpate de backslash pentru a schimba aspectul textului. Acestea sunt personajele scăpate de backslash pe care le putem folosi:
să folosim unele dintre ele și să vedem ce fac.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
textul este împărțit într-o nouă linie în care am folosit caracterele\n
și se introduce o filă în care am folosit caracterele\t
.
echo -e "Here\vare\vvertical\vtabs"
la fel ca\n
caractere noi de linie, o filă verticală\v
mută textul pe linia de mai jos. Dar, spre deosebire de \n
caractere de linie noi, \v
fila verticală nu pornește noua linie la coloana zero. Acesta utilizează coloana curentă.
\b
caracterele backspace mută cursorul înapoi cu un caracter. Dacă există mai mult text pentru a fi scris la terminal, acel text va suprascrie caracterul anterior.
echo -e "123\b4"
„3” este suprascris de „4”.
\r
caracterul de retur al carului determinăecho
să revină la începutul liniei curente și să scrie orice text suplimentar din coloana zero.
echo -e "123\r456"
caracterele „123” sunt suprascrise de caracterele „456”.
\a
caracterul de alertă va produce un „bleep sonor.”Se folosește sunetul de alertă implicit pentru tema curentă.
echo -e "Make a bleep\a"
opțiunea-n
(fără linie nouă) nu este o secvență scăpată de backslash, dar afectează cosmeticele aspectului textului, așa că o vom discuta aici. Împiedicăecho
să adauge o nouă linie la sfârșitul textului. Promptul de comandă apare direct după textul care este scris în fereastra terminalului.
echo -n "no final newline"
folosind echo cu fișiere și directoare
puteți utiliza echo
ca un fel de versiune a omului sărac ls
. Opțiunile dvs. sunt puține și rare între atunci când utilizați echo
ca aceasta. Dacă aveți nevoie de orice fel de fidelitate sau control fin, sunteți mai bine folosind ls
și legiunea sa de opțiuni.
această comandă listează toate fișierele și directoarele din directorul curent:
echo *
această comandă listează toate fișierele și directoarele din directorul curent al căror nume începe cu „D”:
echo D*
această comandă listează toate „.fișierele „desktop” din directorul curent:
echo *.desktop
Da. Acest lucru nu se joacă la punctele forte ale echo
. Utilizațils
.
scrierea în fișiere cu echo
putem redirecționa ieșirea dinecho
și fie să creăm fișiere text, fie să scriem în fișiere text existente.
dacă folosim>
operatorul de redirecționare, fișierul este creat dacă nu există. Dacă fișierul există, ieșirea din echo
este adăugată la începutul fișierului, suprascriind orice conținut anterior.
dacă folosim>>
operatorul de redirecționare, fișierul este creat dacă nu există. Ieșirea din echo
este adăugată la sfârșitul fișierului și nu suprascrie niciun conținut existent al fișierului.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
un nou fișier este creat de prima comandă și textul este introdus în el. A doua comandă adaugă o linie de text în partea de jos a fișierului. Comandacat
afișează conținutul fișierului în fereastra terminalului.
și, desigur, putem include variabile pentru a adăuga câteva informații utile în fișierul nostru. Dacă fișierul este un fișier jurnal, am putea dori să aibă un marcaj de timp adăugat la acesta. Putem face asta cu următoarea comandă.
notați semnele unice de cotare în jurul parametrilor pentru comandadate
. Acestea împiedică interpretarea spațiului dintre parametri ca sfârșitul listei de parametri. Acestea asigură transmiterea corectă a parametrilor ladate
.
echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt
logfile-ul nostru este creat pentru noi și cat
ne arată că marcajul de dată și marcajul de timp au fost adăugate ambele.
RELATED: ce sunt stdin, stdout și stderr pe Linux?
acesta este repertoriul lui echo
o comandă simplă, dar indispensabilă. Dacă nu ar exista, ar trebui să-l inventăm.
shenanigans lui Zeus a făcut ceva bun, la urma urmei.