Het gebruik van het Echo-Commando onder Linux
de opdracht echo
is perfect voor het schrijven van opgemaakte tekst naar het terminalvenster. En het hoeft geen statische tekst te zijn. Het kan shell variabelen, bestandsnamen en mappen bevatten. U kunt echo ook omleiden om tekstbestanden en logbestanden te maken. Volg deze eenvoudige gids om uit te vinden hoe.
Echo herhaalt wat u het vertelt te herhalen
Zeus was dol op het verlaten van de berg Olympus OM te gaan met mooie nimfen. Op een reis, Hij vertelde een berg nimf genaamd Echo om waylay zijn vrouw, Hera, als ze hem volgde. Hera kwam op zoek naar Zeus, en Echo deed alles wat ze kon om Hera in gesprek te houden. Uiteindelijk verloor Hera haar geduld en vervloekte arme Echo, zodat ze alleen de laatste woorden herhaalt die iemand anders had gezegd. Wat Hera Zeus aandeed toen ze hem inhaalde is een gok.
en dat is eigenlijk echo
‘ s lot in life. Het herhaalt wat het gezegd is te herhalen. Dat is een eenvoudige functie, maar een vitale. Zonder echo
zouden we bijvoorbeeld geen zichtbare uitvoer van shell-scripts kunnen krijgen.
hoewel niet beladen met een veelheid aan toeters en bellen, is er een goede kans dat echo
een aantal mogelijkheden heeft die u niet wist of die u vergeten was.
echo? echo!
De meeste Linux-systemen bieden twee versies van echo
. De Bash shell heeft zijn eigen echo
ingebouwd, en er is ook een binaire uitvoerbare versie van echo
.
We kunnen de twee verschillende versies zien met behulp van de volgende commando ‘ s:
type echo
whereis echo
de opdracht type
vertelt ons of het commando dat we eraan geven het argument is een shell builtin, een binair uitvoerbaar bestand, een alias, of een functie. Het rapporteert ons dat echo
een ingebouwde shell is.
zodra het antwoord gevonden is, stopt type
met zoeken naar verdere overeenkomsten. Dus het vertelt ons niet of er andere commando ‘ s met dezelfde naam aanwezig zijn in het systeem. Maar het vertelt ons wel welke het eerst vindt. En dat is degene die standaard zal worden gebruikt wanneer we dat commando uit te geven.
het whereis
Commando zoekt naar het binaire uitvoerbare bestand, de broncode en de man page voor het commando dat we aan het doorgeven als de opdrachtregelparameter. Het zoekt niet naar shell builtins omdat ze geen apart binair uitvoerbaar bestand hebben. Ze zijn een integraal onderdeel van de Bash uitvoerbare.
het commando whereis
meldt dat echo
een binair uitvoerbaar bestand is in de /bin
map.
om die versie van echo
te gebruiken, moet u het expliciet aanroepen door het pad naar het uitvoerbare bestand op de opdrachtregel op te geven:
/bin/echo --version
De ingebouwde shell weet niet wat de --version
command-line argument is, het herhaalt het gewoon in het terminalvenster:
echo --version
De hier getoonde voorbeelden gebruiken allemaal de standaardversie van echo
, in de Bash-shell.
tekst schrijven naar de Terminal
om een eenvoudige tekenreeks naar het terminalvenster te schrijven, typt u echo
en de tekenreeks die u wilt weergeven:
echo My name is Dave.
de tekst wordt voor ons herhaald. Maar als je experimenteert, zul je snel ontdekken dat dingen iets ingewikkelder kunnen worden. Kijk naar dit voorbeeld:
echo My name is Dave and I'm a geek.
het terminalvenster toont een >
teken en zit daar te wachten. Ctrl + C keert u terug naar de opdrachtprompt. Wat is daar gebeurd?
Het enkele citaat of apostrof in het woord “Ik ben” verward echo
. Het interpreteerde dat ene citaat als het begin van een Geciteerd gedeelte van de tekst. Omdat het geen enkele aanhalingsteken detecteerde, wachtte echo
op meer invoer. Het verwacht dat verdere input om de ontbrekende enkele citaat Het was te wachten op te nemen.
om een enkele aanhalingsteken in een tekenreeks op te nemen, is de eenvoudigste oplossing om de hele tekenreeks Binnen dubbele aanhalingsteken te wikkelen:
echo "My name is Dave and I'm a geek."
uw tekst in dubbele aanhalingsteken wikkelen is een goed algemeen advies. In scripts worden de parameters die je doorgeeft aan echo
netjes afgebakend. Dit maakt het lezen—en debuggen-scripts veel gemakkelijker.
Wat als u een dubbel aanhalingsteken in uw tekststring wilt opnemen? Dat is eenvoudig, zet gewoon een backslash \
Voor het dubbele aanhalingsteken (zonder spatie tussen hen).
echo "My name is Dave and I'm a \"geek.\""
Dit wraps het woord” geek ” in dubbele aanhalingstekens voor ons. We zullen binnenkort meer van deze backslash-ontsnapte personages zien.
met behulp van variabelen met echo
tot nu toe hebben we voorgedefinieerde tekst naar het terminalvenster geschreven. We kunnen variabelen gebruiken met echo
om uitvoer te produceren die dynamischer is en waardes bevat die voor ons door de shell zijn ingevoegd. We kunnen een eenvoudige variabele definiëren met dit commando:
my_name="Dave"
een variabele genaamd my_name
is aangemaakt. Het is toegewezen aan de waarde van de tekst “Dave.”We kunnen de variabelnaam gebruiken in de strings die we doorgeven aan echo
, en de waarde van de variabele zal naar het terminalvenster worden geschreven. U moet een dollarteken $
voor de variabele naam zetten om echo
te laten weten dat het een variabele is.
Er is een voorbehoud. Als je je tekenreeks hebt ingepakt in enkele aanhalingstekens zal echo
alles letterlijk behandelen. Om de variabele waarde te laten weergeven, en niet de naam van de variabele, gebruik dubbele aanhalingstekens.
echo 'My name is $my_name'
echo "My name is $my_name"
enigszins treffend, dat is de moeite waard om te herhalen:
- met enkele aanhalingstekens wordt de tekst letterlijk naar het terminalvenster geschreven.
- het gebruik van dubbele aanhalingstekens resulteert in het interpreteren van de variabele—ook wel variable expansion genoemd—en de waarde wordt naar het terminalvenster geschreven.
gerelateerd: hoe te werken met variabelen in Bash
met behulp van commando ‘ s met echo
We kunnen een commando met echo
gebruiken en de uitvoer ervan opnemen in de string die naar het terminalvenster wordt geschreven. We moeten het dollarteken $
gebruiken alsof het commando een variabele is, en het hele Commando tussen haakjes plaatsen.
We gaan het date commando gebruiken. Een tip is om het commando alleen te gebruiken voordat je het begint te gebruiken met echo
. Op die manier, als er iets mis is met de syntaxis van je commando, identificeer je het en corrigeer je het voordat je het opneemt in het echo
Commando. Als het echo
commando niet doet wat je verwacht, dan weet je dat het probleem met de echo
syntaxis moet zijn omdat je de syntaxis van het commando al hebt bewezen.
dus, probeer dit in het terminalvenster:
date +%D
En, tevreden dat we krijgen wat we verwachten van het date commando, we zullen integreren in een echo
commando:
echo "Today's date is: $(date +%D)"
Opmerking de opdracht is binnen de haakjes en het dollar-teken $
onmiddellijk vóór de eerste haakje.
Tekst opmaken met echo
de -e
(Backslash-escapes inschakelen) optie laat ons enkele Backslash-escapes gebruiken om de lay-out van de tekst te wijzigen. Dit zijn de backslash-escaped karakters die we kunnen gebruiken:
laten we een aantal van hen gebruiken en zien wat ze doen.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
de tekst wordt opgesplitst in een nieuwe regel waar we de \n
karakters hebben gebruikt en er wordt een tab ingevoegd waar we de \t
karakters hebben gebruikt.
echo -e "Here\vare\vvertical\vtabs"
net als de \n
nieuwe regeltekens verplaatst een verticaal tabblad \v
de tekst naar de onderstaande regel. Maar in tegenstelling tot de \n
nieuwe regeltekens, start het verticale tabblad \v
de nieuwe regel niet op kolom nul. Het gebruikt de huidige kolom.
de \b
backspace karakters verplaats de cursor één teken terug. Als er meer tekst naar de terminal moet worden geschreven, zal die tekst het vorige teken overschrijven.
echo -e "123\b4"
de” 3 “is overschreven door de”4”.
het\r
carriage return karakter zorgt ervoor datecho
terugkeert naar het begin van de huidige regel en verdere tekst uit kolom nul schrijft.
echo -e "123\r456"
de” 123 “karakters worden overschreven door de” 456 ” karakters.
het \a
alert teken zal een hoorbare “bleep produceren.”Het maakt gebruik van de standaard alert geluid voor uw huidige thema.
echo -e "Make a bleep\a"
de -n
(geen newline) optie is geen backslash-escaped reeks, maar het heeft wel invloed op de cosmetica van de tekst lay-out, dus we zullen het hier bespreken. Het voorkomt dat echo
een nieuwe regel aan het einde van de tekst toevoegt. De opdrachtprompt verschijnt direct na de tekst die naar het terminalvenster is geschreven.
echo -n "no final newline"
met behulp van echo met bestanden en mappen
u kunt echo
gebruiken als een soort slechte versie van ls
. Uw opties zijn weinig en ver tussen wanneer u echo
op deze manier gebruikt. Als u enige vorm van betrouwbaarheid of fijne controle nodig hebt, kunt u beter ls
en zijn legioen van opties gebruiken.
Dit commando toont alle bestanden en mappen in de huidige map:
echo *
Dit commando toont alle bestanden en mappen in de huidige map waarvan de naam begint met” D”:
echo D*
Dit commando toont alle”.desktop “bestanden in de huidige map:
echo *.desktop
Ja. Dit speelt niet volgens echo
‘ s sterke punten. Gebruik ls
.
schrijven naar bestanden met echo
We kunnen de uitvoer vanecho
omleiden en tekstbestanden aanmaken of naar bestaande tekstbestanden schrijven.
als we de >
redirection operator gebruiken, wordt het bestand aangemaakt als het niet bestaat. Als het bestand bestaat, wordt de uitvoer van echo
aan het begin van het bestand toegevoegd, waarbij eerdere inhoud wordt overschreven.
als we de >>
redirection operator gebruiken, wordt het bestand aangemaakt als het niet bestaat. De uitvoer van echo
wordt toegevoegd aan het einde van het bestand en overschrijft geen bestaande inhoud van het bestand.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
met het eerste commando wordt een nieuw bestand aangemaakt en er wordt tekst in ingevoegd. Het tweede commando voegt een regel tekst toe aan de onderkant van het bestand. Het commando cat
toont de inhoud van het bestand naar het terminalvenster.
en natuurlijk kunnen we variabelen toevoegen om wat nuttige informatie aan ons bestand toe te voegen. Als het bestand een logbestand is, willen we er misschien een tijdstempel aan toevoegen. We kunnen dat doen met het volgende commando.
noteer de enkele aanhalingstekens rond de parameters voor hetdate
Commando. Ze voorkomen dat de ruimte tussen de parameters wordt geïnterpreteerd als het einde van de parameterlijst. Ze zorgen ervoor dat de parameters correct worden doorgegeven aan date
.
echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt
ons logbestand wordt voor ons aangemaakt en cat
toont ons dat de datestamp en tijdstempel er beide aan zijn toegevoegd.
gerelateerd: wat zijn stdin, stdout en stderr op Linux?
dat is echo ‘ s Repertoire
een eenvoudig commando, maar onmisbaar. Als het niet bestond, zouden we het moeten uitvinden.
Zeus ‘ s shenanigans hebben toch wat goeds gedaan.