Cum se folosește comanda Echo pe Linux
- Dave McKay
@TheGurkha
- 29 octombrie 2019, 8:00 EDT
echo
este perfectă pentru a scrie text 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 ecoul pentru a crea fișiere text și fișiere jurnal. Urmați acest ghid simplu pentru a afla cum.
Echo repetă ceea ce îi spuneți să repete
Zeus a plăcut să părăsească muntele Olimp pentru a se însoți cu nimfe frumoase. Într-o călătorie, i-a spus unei nimfe de munte numită Echo să-și arate soția, Hera, dacă ea îl urma. Hera a venit în căutarea lui Zeus, iar Echo a făcut tot ce a putut pentru a-l ț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-a spus altcineva. Ceea ce i-a făcut Hera lui Zeus când l-a prins din urmă este o presupunere a oricui.
Și asta, cam, este echo
mult în viață. Repetă ceea ce i sa spus să repete. Aceasta este o funcție simplă, dar vitală. Fără echo
, de exemplu, nu vom putea obține rezultate vizibile din scripturile shell,
Deși nu suntem încărcați cu o multitudine de clopote și fluiere, există șanse mari ca echo
să aibă niște capacități despre care nu știați sau pe care le-ați uitat.
ecou? echo!
Majoritatea sistemelor Linux oferă două versiuni ale echo
. Shell-ul Bash are propriul său echo
încorporat și există și o versiune executabilă binară a echo
.
Putem vedea cele două versiuni diferite utilizând următoarele comenzi:
type echo
whereis echo
type
ne spune dacă comanda pe care i-o transmitem ca argument este un shell integrat, un executabil binar, un alias sau o funcție. Ne raportează că echo
este un shell shell.
De îndată ce a găsit un răspuns, nu mai caută alte meciuri. 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 utilizat în mod implicit atunci când lansăm comanda respectivă.
Comanda whereis
caută executabilul binar, codul sursă și pagina de manual pentru comanda pe care i-o transmitem ca parametru din linia de comandă. Nu caută integrările shell deoarece nu au un executabil binar separat. Acestea fac parte integrantă din executabilul Bash.
Comanda whereis
raportează că echo
este un executabil binar aflat în directorul /bin
.
Pentru a utiliza acea versiune a echo
, ar trebui să o apelați în mod explicit, oferind calea către executabil pe linia de comandă:
/bin/echo --version
Încorporarea shell-ului nu știe ce --version
argumentul liniei de comandă este, doar îl repetă în fereastra terminalului:
echo --version
Exemplele prezentate aici folosesc toate valorile implicite versiunea echo
, în shell-ul Bash.
Scrierea textului la terminal
Pentru a scrie un șir simplu de text în fereastra terminalului , tastați echo
ș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 întoarce la promptul de comandă. Ce s-a întâmplat acolo?
Citatul unic sau apostroful din cuvântul „Sunt” confuz echo
. Acesta a interpretat citatul unic ca începutul unei secțiuni citate de text. Deoarece nu a detectat nici un ghilimel de închidere, echo
aștepta mai multe intrări. Se aștepta ca introducerea ulterioară să includă ghilimelul unic lipsă pe care îl aștepta.
Pentru a include un singur ghilimel într-un șir, cea mai simplă soluție este să înfășurați întregul șir între ghilimele duble:
echo "My name is Dave and I"m a geek."
Împachetarea textului între ghilimele duble este un bun sfat general. În scripturi, delimitează în mod curat parametrii pe care îi transmiteți echo
. Acest lucru face ca citirea și depanarea scripturilor să fie mult mai ușoară.
Ce se întâmplă dacă doriți să includeți un caracter de ghilimelă dublă în șirul dvs. de text?Este ușor, pur și simplu puneți o bară inversă \
în fața ghilimelei duble (fără spațiu între ele).
echo "My name is Dave and I"m a \"geek.\""
Acest lucru înfășoară cuvântul „geek” între ghilimele duble. Vom vedea în scurt timp mai multe dintre aceste caractere care au scăpat înapoi.
Utilizarea variabilelor cu ecou
Până acum , am scris text predefinit în fereastra terminalului. Putem folosi variabile cu echo
pentru a produce ieșiri mai dinamice și cu valori inserate pentru noi de către shell. poate defini o variabilă simplă cu această comandă:
my_name="Dave"
A fost creată o variabilă numită my_name
. a atribuit valoarea textului „Dave”. Putem folosi numele variabilei în șirurile pe care le transmitem către echo
, iar valoarea variabilei va fi scrisă în fereastra terminalului. Trebuie să puneți un semn dolar $
în fața numelui variabilei pentru a anunța echo
că este o variabilă.
Există o avertizare. Dacă ați înfășurat șirul în ghilimele simple echo
va trata totul literal. Pentru a afișa valoarea variabilei, și nu numele variabilei, folosiți ghilimele duble.
echo "My name is $my_name"
echo "My name is $my_name"
Oarecum corect, merită repetat:
- Utilizarea ghilimelelor unice are ca rezultat ca textul să fie scris în fereastra terminalului în mod literal.
- Utilizarea ghilimelelor duble duce la variabila interpretată – numită și expansiune variabilă – și valoarea este scrisă în fereastra terminalului.
LEGATE: Cum se lucrează cu variabile în Bash
Utilizarea comenzilor cu echo
Putem folosi o comandă cu echo
și să încorporăm ieșirea sa în șirul care este scris în fereastra terminalului. Trebuie să folosim semnul dolar $
ca și cum comanda ar fi o variabilă și să înfășurăm întreaga comandă între paranteze.
Vom folosi comanda date . Un sfat este să folosiț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 ao include în comanda echo
. Apoi, dacă comanda echo
nu face ceea ce vă așteptați, veți ști că problema trebuie să fie cu sintaxa echo
deoarece Am dovedit deja sintaxa comenzii.
Deci, încercați acest lucru în fereastra terminalului:
date +%D
Și, mulțumit că suntem obținând ceea ce așteptăm de la comanda date, îl vom integra într-o comandă echo
:
echo "Today"s date is: $(date +%D)"
Rețineți că comanda se află în paranteze, iar semnul dolar $
este imediat înainte de prima paranteză.
Formatarea textului cu ecou
Opțiunea -e
(activate backslash scapes) ne permite să folosim câteva caractere backslash-escaped pentru a schimba aspectul textului. Acestea sunt caracterele evadate înapoi pe care le putem folosi:
Să le folosim pe unele ș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ă unde am folosit caracterele \t
.
echo -e "Here\vare\vvertical\vtabs"
La fel ca \n
caractere de linie noi, o filă verticală \v
mută textul pe linia de mai jos. Dar, spre deosebire de \n
noile caractere de linie, fila verticală \v
nu pornește noua linie la coloana zero. Acesta folosește coloana curentă.
Caracterele \b
backspace mută cursorul înapoi cu un caracter. Dacă este mai mult text de scris pe terminal, textul respectiv va suprascrie caracterul anterior.
echo -e "123\b4"
„3” este suprascris de „ 4 ”.
Caracterul \r
returnează transportul determină revenirea echo
la începutul liniei curente și la scrieți orice text suplimentar din coloana zero.
echo -e "123\r456"
Caracterele „123” sunt suprascrise de caracterele „456”.
div id = „8945a4295d”> caracterul de alertă va produce un „bip” audibil. Utilizează sunetul de alertă implicit pentru tema dvs. actuală.
echo -e "Make a bleep\a"
-n
(fără linie nouă) opțiunea nu este o secvență de tip backslash, dar afectează produsele cosmetice ale aspectului textului, așa că vom discuta aici. Împiedică adăugarea echo
o linie nouă la sfârșitul textului. promptul de comandă apare imediat după textul care este scris în fereastra terminalului.
echo -n "no final newline"
Utilizarea ecoului cu fișiere și directoare
Puteți utiliza echo
ca sortare a versiunii ls
a omului sărac. Opțiunile dvs. sunt puține și sunt foarte mici atunci când utilizați echo
astfel. Dacă aveți nevoie de orice fel de fidelitate sau control fin, este mai bine să utilizați ls
și o gamă largă de opțiuni.
Această comandă listează toate fișierele și directoare din directorul curent:
echo *
Această comandă listează toate fișierele și directoarele din directorul curent al cărui nume începe cu „D”:
echo D*
Această comandă listează toate fișierele „.desktop” din directorul curent:
echo *.desktop
Da. Acest lucru nu se joacă după punctele forte ale lui echo
. Utilizați ls
.
Scrierea în fișiere cu ecou
Putem redirecționa ieșirea din echo
și fie creați fișiere text, fie scrieți în fișiere text existente.
Dacă folosim operatorul de redirecționare >
, fișierul este creat dacă nu există. Dacă fișierul există, rezultatul de la echo
este adăugat la începutul fișierului, suprascriind orice conținut anterior.
Dacă folosim >>
operator 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 se introduce text în el. A doua comandă adaugă o linie de text în partea de jos a fișierului. Comanda cat
afișează conținutul fișierului în fereastra terminalului.
Și, desigur, putem include variabile pentru a adăuga informații utile în fișierul nostru. Dacă fișierul este un fișier jurnal, s-ar putea să dorim să i se adauge un timestamp. Putem face asta cu următoarea comandă.
Rețineți ghilimelele unice în jurul parametrilor pentru comanda date
. Acestea împiedică interpretarea spațiului dintre parametri ca fiind sfârșitul listei de parametri. Se asigură că parametrii sunt trecuți corect către date
corect.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Fișierul nostru de jurnal este creat pentru noi și cat
ne arată că amândouă au fost adăugate data și marca de timp.
RELATED : Ce sunt stdin, stdout și stderr pe Linux?
Acesta este Repertoriul echo
O comandă simplă, dar indispensabilă. Dacă nu ar exista, ar trebui să-l inventăm.
Shenanigans lui Zeus au făcut ceva bun, la urma urmei.
Dave McKay a folosit computerele pentru prima dată când banda de hârtie perforată era la modă și de atunci programează. După peste 30 de ani în industria IT, el este acum un jurnalist tehnologic cu normă întreagă. În timpul carierei sale, a lucrat ca programator independent, manager al unei echipe internaționale de dezvoltare software, manager de proiect pentru servicii IT și, cel mai recent, ca responsabil cu protecția datelor. Dave este un evanghelist Linux și un avocat open source. Citește biografia completă „