Com s'utilitza l'ordre Echo a Linux
El ressò
L'ordre és perfecte per escriure text formatat a la finestra del terminal. I no ha de ser un text estàtic. Pot incloure variables de shell, noms de fitxers i directoris. També podeu redirigir eco per crear fitxers de text i fitxers de registre. Seguiu aquesta senzilla guia per esbrinar com fer-ho.
Echo repeteix el que li dieu que es repeteixi
A Zeus li agradava deixar el mont Olimp per maridar-se amb belles nimfes. En un viatge, va dir a una nimfa de la muntanya que es deia Echo que encapçalés la seva dona, Hera, si ella el seguia. Hera va venir a buscar Zeus i Echo va fer tot el possible per mantenir Hera en conversa. Finalment, Hera va perdre la calma i va maleir el pobre Eco, de manera que només repetia les darreres paraules que algú havia dit. El que Hera li va fer a Zeus quan el va agafar és una suposició de ningú.
I això, pràcticament, és així ressò
Molt a la vida. Repeteix el que se li ha dit de repetir. Aquesta és una funció senzilla, però vital. Sense ressò
, per exemple, no seríem capaços d'obtenir una sortida visible dels scripts de l'intèrpret d'ordres.
Tot i que no està carregat de multitud de campanes i xiulets, hi ha moltes possibilitats ressò
té algunes funcions que desconeixíeu o que havíeu oblidat.
ressò? ressò!
La majoria dels sistemes Linux proporcionen dues versions de ressò
. El shell Bash té el seu propi ressò
integrat i hi ha una versió executable binària de ressò
també.
Podem veure les dues versions diferents mitjançant les ordres següents:
escriu eco
on es fa ressò
El tipus
Comanda ens indica si l'ordre que li passem com a argument és un shell integrat, un executable binari, un àlies o una funció. Ens ho informa ressò
és un shell integrat.
Tan aviat com ha trobat una resposta, tipus
deixa de buscar més partits. Per tant, no ens indica si hi ha altres ordres amb el mateix nom presents al sistema. Però sí que ens diu quina es troba primer. I aquest és el que s'utilitzarà de manera predeterminada quan publiquem aquesta ordre.
El on es
L'ordre cerca l'executable binari, el codi font i la pàgina de man de l'ordre que li passem com a paràmetre de línia d'ordres. No busca incorporats de l'intèrpret d'ordres perquè no tenen un executable binari separat. Són una part integral de l’executable de Bash.
El on es
ordre informa que ressò
és un executable binari situat a / bin
directori.
Per utilitzar aquesta versió de ressò
hauríeu de trucar explícitament proporcionant el camí a l'executable a la línia d'ordres:
/ bin / echo --version
El shell integrat no sap què és el --versió
L'argument de línia d'ordres és que només el repeteix a la finestra del terminal:
eco --versió
Els exemples mostrats aquí utilitzen la versió per defecte de ressò
, a la closca de Bash.
S'està escrivint text al terminal
Per escriure una cadena de text simple a la finestra del terminal, escriviu ressò
i la cadena que vulgueu que es mostri:
eco Em dic Dave.
El text es repeteix per a nosaltres. Però mentre experimenteu, aviat descobrireu que les coses es poden complicar una mica. Mireu aquest exemple:
eco Em dic Dave i sóc un friqui.
La finestra del terminal mostra un fitxer>
signa i s’asseu allà esperant. Ctrl + C tornarà a l’indicador d’ordres. Què va passar allà?
La cita única o l’apòstrof de la paraula "estic" confós ressò
. Va interpretar aquesta cita única com l'inici d'una secció de text citada. Com que no va detectar cap sol·licitud de tancament,ressò
esperava més aportacions. S'esperava que les aportacions addicionals incloguessin la cita que faltava que esperava.
Per incloure una cometa única en una cadena, la solució més senzilla és embolicar tota la cadena entre cometes dobles:
eco "Em dic Dave i sóc un friqui".
Embolicar el text entre cometes dobles és un bon consell general. Als scripts, delimita netament els paràmetres als quals esteu passant ressò
. Això facilita molt la lectura i la depuració de scripts.
Què passa si voleu incloure un caràcter de cometes dobles a la vostra cadena de text? Això és fàcil, només cal posar una barra invertida \
davant de la cometa doble (sense espai entre elles).
eco "Em dic Dave i sóc un \" friki \ ""
Això ens envolta la paraula "friki" entre cometes dobles. En veurem més barra invertida escapada personatges en breu.
Ús de variables amb eco
Fins ara hem estat escrivint text predefinit a la finestra del terminal. Podem utilitzar variables amb ressò
per produir una sortida més dinàmica i amb valors inserits per a nosaltres per l'intèrpret d'ordres. Amb aquesta ordre podem definir una variable simple:
my_name = "Dave"
Una variable anomenada el meu nom
s'ha creat. Se li ha assignat el valor del text "Dave". Podem utilitzar el nom de la variable a les cadenes a les que passem ressò
, i el valor de la variable s'escriurà a la finestra del terminal. Heu de posar un signe de dòlar $
davant del nom de la variable a deixar ressò
sap que és una variable.
Hi ha una advertència. Si heu embolicat la vostra cadena amb cometes simples ressò
tractarà tot literalment. Tenir la variable valor es mostra, i no el fitxer nom de la variable, utilitzeu cometes dobles.
echo "El meu nom és $ my_name"
eco "El meu nom és $ my_name"
Una mica encertadament, val la pena repetir-ho:
- Utilitzant solter les cometes fan que el text s’escrigui a la finestra del terminal en un fitxer literal moda.
- Utilitzantdoble les cometes donen lloc a la interpretació de la variable —també anomenada expansió variable— i a valor s'escriu a la finestra del terminal.
RELACIONATS:Com treballar amb variables a Bash
Ús d’ordres amb eco
Podem utilitzar una ordre amb ressò
i incorporeu la seva sortida a la cadena que s’escriu a la finestra del terminal. Hem d’utilitzar el signe del dòlar $
com si l’ordre fos una variable i emboliqués tota l’ordre entre parèntesis.
Utilitzarem l’ordre date. Un consell és utilitzar l’ordre tot sol abans de començar a utilitzar-la amb ressò
. D’aquesta manera, si hi ha alguna cosa malament en la sintaxi de la vostra comanda, l’identifiqueu i la corregiu abans d’incloure-la a la ressò
comandament. Llavors, si el ressò
command no fa el que espereu, sabreu que el problema ha de ser amb ressò
sintaxi perquè ja heu demostrat la sintaxi de l’ordre.
Per tant, proveu-ho a la finestra del terminal:
data +% D
I, satisfets d’obtenir el que esperem de l’ordre data, l’integrarem en un ressò
comandament:
eco "La data d'avui és: $ (data +% D)"
Tingueu en compte que l'ordre es troba entre parèntesis i el signe dòlar $
és immediatament anterior al primer parèntesi.
Format del text amb ressò
El -e
L'opció (habilitar escapes de barra invertida) ens permet utilitzar alguns caràcters de barra invertida per canviar el disseny del text. Aquests són els caràcters que s’escapen de la barra invertida que podem utilitzar:
- \ a: Alerta (històricament coneguda com a BEL). Això genera el so d'alerta per defecte.
- \ b: Escriu un personatge de retrocés.
- \ c: Abandona qualsevol altra sortida.
- \ e: Escriu un personatge d'escapament.
- \ f: Escriu un caràcter de feed de formularis.
- \ n: Escriu una nova línia.
- \ r: Escriu una devolució de carro.
- \ t: Escriu una pestanya horitzontal.
- \ v: Escriu una pestanya vertical.
- \\: Escriu un caràcter de barra invertida.
Utilitzem-ne alguns i vegem què fan.
echo -e "Aquesta és una llarga línia de text \ ndividida en tres línies \ namb \ ttabs \ ton \ tla \ tercera \ tline"
El text es divideix en una nova línia on hem utilitzat el fitxer \ n
i s’insereix una pestanya on hem utilitzat \ t
personatges.
echo -e "Aquí \ vare \ vvertical \ vtabs"
Com el \ n
nous caràcters de línia, una pestanya vertical \ v
mou el text a la línia següent. Però, a diferència del\ n
nous caràcters de línia, el \ v
la pestanya vertical no inicia la línia nova a la columna zero. Utilitza la columna actual.
El \ b
els caràcters de retrocés fan moure el cursor cap enrere un caràcter. Si hi ha més text per escriure al terminal, aquest text sobreescriurà el caràcter anterior.
echo -e "123 \ b4"
El "3" està sobreescrit pel "4".
El \ r
causa de retorn del carroressò
per tornar a l'inici de la línia actual i per escriure qualsevol altre text des de la columna zero.
echo -e "123 \ r456"
Els caràcters "123" se sobreescriuen pels caràcters "456".
El \ a
el caràcter d'alerta produirà un "pit" audible. Utilitza el so d'alerta predeterminat per al tema actual.
echo -e "Fer un pitit \ a"
El -n
L'opció (sense línia nova) no és una seqüència d'escapada de barra invertida, però sí que afecta els cosmètics de la disposició del text, de manera que en parlarem aquí. Impedeix ressò
d'afegir una línia nova al final del text. El símbol del sistema apareix directament després del text que s’escriu a la finestra del terminal.
echo -n "no hi ha cap línia nova final"
Ús de eco amb fitxers i directoris
Pots fer servir ressò
com una mena de versió de l’home pobre ls
. Les vostres opcions són escasses quan les feu servir ressò
com això. Si necessiteu algun tipus de fidelitat o control multa, és millor que utilitzeu ls
i la seva legió d'opcions.
Aquesta ordre llista tots els fitxers i directoris del directori actual:
ressò *
Aquesta ordre llista tots els fitxers i directoris del directori actual el nom del qual comença per “D”:
eco D *
Aquesta ordre llista tots els fitxers ".desktop" del directori actual:
echo * .desktop
Sí. Això no juga ressò
Punts forts. Ús ls
.
Escrivint a fitxers amb ressò
Podem redirigir la sortida des de ressò
i ja sigui crear fitxers de text o escriure en fitxers de text existents.
Si fem servir el fitxer >
operador de redirecció, el fitxer es crea si no existeix. Si el fitxer existeix, la sortida de ressò
s'afegeix al començament del fitxer, sobreescrivint qualsevol contingut anterior.
Si fem servir el fitxer >>
operador de redirecció, el fitxer es crea si no existeix. La sortida de ressò
s’afegeix al final del fitxer i no sobreescriu cap contingut existent del fitxer.
echo "Creació d'un fitxer nou". > sample.txt
echo "Afegint al fitxer". >> sample.txt
cat sample.txt
La primera ordre crea un fitxer nou i s’hi insereix text. La segona ordre afegeix una línia de text a la part inferior del fitxer. El gat
L'ordre mostra el contingut del fitxer a la finestra del terminal.
I, per descomptat, podem incloure variables per afegir informació útil al nostre fitxer. Si el fitxer és un fitxer de registre, és possible que vulguem afegir-hi una marca de temps. Ho podem fer amb la següent ordre.
Tingueu en compte les cometes simples al voltant dels paràmetres del fitxer data
comandament. Eviten que l'espai entre els paràmetres s'interpreti com el final de la llista de paràmetres. Asseguren que es transmeten els paràmetresdata
correctament.
echo "Fitxer de registre iniciat: $ (data + '% D% T')"> logfile.txt
cat logfile.txt
El nostre fitxer de registre està creat per a nosaltres i gat
ens mostra que se li van afegir la marca de dades i la marca de temps.
RELACIONATS:Què són stdin, stdout i stderr a Linux?
Aquest és el repertori de eco
Una ordre senzilla, però indispensable. Si no existís, l’hauríem d’inventar.
Al cap i a la fi, els enganys de Zeus van fer un bé.