Jak korzystać z polecenia Echo w systemie Linux

Fatmawati Achmad Zaenuri/

jest idealne do zapisu sformatowanego tekstu do okna terminala. I nie musi to być statyczny tekst. Może zawierać Zmienne powłoki, nazwy plików i katalogi. Można również przekierować echo do tworzenia plików tekstowych i plików dziennika. Postępuj zgodnie z tym prostym przewodnikiem, aby dowiedzieć się, jak.

Echo powtarza to, co mówisz, aby powtórzyć

Zeus lubił opuszczać górę Olimp, aby zadowolić się pięknymi nimfami. Podczas jednej z podróży, powiedział górskiej nimfie o imieniu Echo, aby waylay jego żona, Hera, jeśli ona go śledzi. Hera przyszła szukać Zeusa, a Echo zrobiła wszystko, aby utrzymać Herę w rozmowie. W końcu Hera straciła panowanie nad sobą i przeklęła biedne Echo, tak że powtórzyła tylko ostatnie słowa, które powiedział ktoś inny. To, co Hera zrobiła Zeusowi, gdy go dogoniła, jest zgadywaniem.

i to w zasadzieecho Powtarza to, co mu kazano powtórzyć. To prosta funkcja, ale ważna. Bez echo nie bylibyśmy w stanie uzyskać widocznego wyjścia ze skryptów powłoki , na przykład.

chociaż nie jest obciążony mnóstwem dzwonków i gwizdków, istnieje duża szansa, że echo ma pewne możliwości, o których nie wiedziałeś lub o których zapomniałeś.

echo? echo!

Większość Systemów Linux udostępnia dwie wersjeecho. Powłoka Bash ma wbudowany echo, a także jest binarna wersja wykonywalna echo.

możemy zobaczyć dwie różne wersje za pomocą następujących poleceń:

type echo
whereis echo

type polecenie mówi nam, czy polecenie, które przekazujemy jako argument, jest wbudowaną powłoką, binarnym plikiem wykonywalnym, aliasem lub funkcją. Informuje nas, że echo jest wbudowaną powłoką.

gdy tylko znajdzie odpowiedź, type przestaje szukać dalszych dopasowań. Więc nie mówi nam, czy są inne polecenia o tej samej nazwie obecne w systemie. Ale mówi nam, który znajdzie PIERWSZY. I to jest ten, który będzie używany domyślnie, gdy wydajemy to polecenie.

polecenie whereis szuka binarnego pliku wykonywalnego, kodu źródłowego i strony podręcznika dla polecenia, które przekazujemy do niego jako jego parametr wiersza poleceń. Nie szuka wbudowanych powłok, ponieważ nie mają oddzielnego binarnego pliku wykonywalnego. Są integralną częścią pliku wykonywalnego Bash.

poleceniewhereis informuje, żeecho jest binarnym plikiem wykonywalnym znajdującym się w katalogu/bin.

aby użyć tej wersji echo, musisz jawnie wywołać ją, podając ścieżkę do pliku wykonywalnego w wierszu poleceń:

/bin/echo --version

wbudowana powłoka nie wie, co

--version argument wiersza polecenia jest, po prostu powtarza go w oknie terminala:

echo --version

wszystkie pokazane tutaj przykłady używają domyślnej wersjiecho, w powłoce Bash.

zapisanie tekstu do terminala

aby zapisać prosty ciąg tekstu do okna terminala, wpisz echo I łańcuch, który ma być wyświetlony:

echo My name is Dave.

tekst powtarza się dla nas. Ale jak eksperymentować, wkrótce odkryjesz, że rzeczy mogą się nieco bardziej skomplikowane. Spójrz na ten przykład:

echo My name is Dave and I'm a geek.

okno terminala wyświetla> znak i siedzi tam, czekając. Ctrl + C powróci do wiersza polecenia. Co się tam stało?

pojedynczy cytat lub apostrof w słowie „jestem” zdezorientowany echo. Interpretował ten pojedynczy cytat jako początek cytowanej części tekstu. Ponieważ nie wykrył zamykającego się pojedynczego cytatu,echo czekał na kolejne wejście. Spodziewano się, że kolejne wejście obejmie brakujący pojedynczy cytat, na który czekał.

aby dołączyć pojedynczy cytat do ciągu, najprostszym rozwiązaniem jest zawinięcie całego ciągu w podwójne znaki cudzysłowu:

echo "My name is Dave and I'm a geek."

owinięcie tekstu w podwójne znaki cudzysłowu jest dobrą ogólną radą. W skryptach wyraźnie oddziela parametry, które przekazujesz do echo. To znacznie ułatwia czytanie i debugowanie skryptów.

Co zrobić, jeśli chcesz dołączyć podwójny znak cudzysłowu do ciągu tekstu? To proste, wystarczy umieścić ukośnik \ przed podwójnym znakiem cudzysłowu (bez spacji między nimi).

echo "My name is Dave and I'm a \"geek.\""

To zawija słowo „geek” w podwójne znaki cytatu dla nas. Wkrótce zobaczymy więcej tych znaków z odwrotnym ukośnikiem.

używając zmiennych z echo

do tej pory zapisywaliśmy predefiniowany tekst do okna terminala. Możemy użyć zmiennych z echo, aby uzyskać wyjście, które jest bardziej dynamiczne i ma wartości wstawione do niego dla nas przez powłokę. Możemy zdefiniować prostą zmienną za pomocą tego polecenia:

my_name="Dave"

została utworzona zmienna o nazwie my_name. Przypisano mu wartość tekstu ” Dave.”Możemy użyć nazwy zmiennej w łańcuchach, które przekazujemy do echo, a wartość zmiennej zostanie zapisana do okna terminala. Musisz umieścić znak dolara $ przed nazwą zmiennej, aby echo wiedział, że jest to zmienna.

jest zastrzeżenie. Jeśli twój ciąg znaków został opakowany w pojedyncze znaki cudzysłowu echopotraktuje wszystko dosłownie. Aby wyświetlić wartość zmiennej, a nie nazwę zmiennej, użyj podwójnych znaków cudzysłowu.

echo 'My name is $my_name'
echo "My name is $my_name"

w pewnym sensie warto to powtórzyć:

  • użycie pojedynczych znaków cudzysłowu powoduje, że tekst jest zapisywany do okna terminala w dosłowny sposób.
  • użycie podwójnych znaków cudzysłowu powoduje, że zmienna jest interpretowana—zwana również rozszerzeniem zmiennej—a wartość jest zapisywana do okna terminala.

RELATED: jak pracować ze zmiennymi w Bash

używając poleceń z echo

możemy użyć polecenia zecho I włączyć jego wyjście do łańcucha, który jest zapisywany do okna terminala. Musimy użyć znaku dolara $ tak, jakby polecenie było zmienną i zawinąć całe polecenie w nawiasy.

użyjemy polecenia date. Jedną z porad jest użycie tego polecenia samodzielnie, zanim zaczniesz go używać z echo. W ten sposób, jeśli coś jest nie tak ze składnią Twojego polecenia, identyfikujesz je i poprawiasz zanim umieścisz je w poleceniu echo. Następnie, jeśli polecenieecho nie zrobi tego, czego oczekujesz, będziesz wiedział, że problem musi dotyczyć składniecho, ponieważ już sprawdziłeś składnię tego polecenia.

więc spróbuj to w oknie terminala:

date +%D

i, zadowoleni, że otrzymujemy to, czego oczekujemy od polecenia date, zintegrujemy je zecho polecenie:

echo "Today's date is: $(date +%D)"

Uwaga polecenie znajduje się wewnątrz nawiasów, a znak dolara$ znajduje się bezpośrednio przed pierwszym nawiasem.

formatowanie tekstu za pomocą ECHA

opcja-e (enable backslash escapes) pozwala nam użyć niektórych znaków specjalnych odwrotnego ukośnika do zmiany układu tekstu. Są to znaki unikalne odwrotnym ukośnikiem, których możemy użyć:

użyjmy niektórych z nich i zobaczmy, co robią.

echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"

tekst zostanie podzielony na nową linię, w której użyliśmy znaków\n i zostanie wstawiona zakładka, w której użyliśmy znaków\t.

echo -e "Here\vare\vvertical\vtabs"

podobnie jak\n znaki nowej linii, pionowa zakładka\v przenosi tekst do poniższej linii. Jednak w przeciwieństwie do znaków nowej linii\n, zakładka pionowa\v nie rozpoczyna nowej linii w kolumnie zero. Używa bieżącej kolumny.

\b znaki backspace przesuwają kursor do tyłu o jeden znak. Jeśli do terminala ma zostać zapisanych więcej tekstów, tekst ten nadpisze poprzedni znak.

echo -e "123\b4"

\r znak powrotu karetki powoduje, żeecho powraca do początku bieżącej linii i zapisuje dowolny tekst z kolumny zero.

echo -e "123\r456"

„123” znaki są nadpisywane przez „456” znaków.

znak alertu \a wytworzy słyszalny „bleep”.”Używa domyślnego dźwięku alertu dla bieżącego motywu.

echo -e "Make a bleep\a"

-n (brak nowej linii) opcja -n (brak nowej linii) nie jest sekwencją poprzedzoną ukośnikiem wstecznym, ale wpływa na wygląd układu tekstu, więc omówimy to tutaj. Zapobiega to dodawaniu nowej linii na końcu tekstu przez echo. Wiersz polecenia pojawia się bezpośrednio po tekście zapisanym w oknie terminala.

echo -n "no final newline"

używając echo z plikami i katalogami

możesz użyćecho jako swego rodzaju ubogiej wersjils. Twoje opcje są nieliczne, gdy używasz echo w ten sposób. Jeśli potrzebujesz jakiejkolwiek wierności lub dokładnej kontroli, lepiej Użyj ls I jego legionu opcji.

To polecenie wyświetla wszystkie pliki i katalogi w bieżącym katalogu:

echo *

To polecenie wyświetla wszystkie pliki i katalogi w bieżącym katalogu, których nazwa zaczyna się od „D”:

echo D*

To polecenie wyświetla wszystkie „.desktop” pliki w bieżącym katalogu:

echo *.desktop

tak. To nie jest odtwarzanie doecho’s mocne. Użyj ls.

zapis do plików za pomocą echo

możemy przekierować wyjście zecho I albo utworzyć pliki tekstowe, albo zapisać do istniejących plików tekstowych.

jeśli użyjemy operatora przekierowania >, plik zostanie utworzony, jeśli nie istnieje. Jeśli plik istnieje, wyjście z echo jest dodawane na początku pliku, zastępując poprzednią zawartość.

jeśli użyjemy operatora przekierowania >>, plik zostanie utworzony, jeśli nie istnieje. Wyjście z echo jest dodawane na końcu pliku i nie nadpisuje żadnej istniejącej zawartości pliku.

echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt

nowy plik jest tworzony przez pierwsze polecenie i wstawiany jest do niego tekst. Drugie polecenie dodaje wiersz tekstu na dole pliku. Poleceniecat wyświetla zawartość pliku w oknie terminala.

i oczywiście możemy dołączyć zmienne, aby dodać kilka przydatnych informacji do naszego pliku. Jeśli plik jest plikiem dziennika, możemy chcieć dodać do niego znacznik czasu. Możemy to zrobić za pomocą następnego polecenia.

zwróć uwagę na pojedyncze znaki cudzysłowu wokół parametrów dla polecenia date. Zapobiegają one interpretacji odstępu między parametrami jako końca listy parametrów. Zapewniają one prawidłowe przekazanie parametrów do date.

echo "Logfile started: $(date +'%D %T')" > logfile.txt
cat logfile.txt

nasz plik dziennika jest tworzony dla nas i cat pokazuje nam, że znacznik daty i znacznik czasu oba zostały do niego dodane.

RELATED: Co to są stdin, stdout i stderr w Linuksie?

to repertuar echo

proste polecenie, ale niezastąpione. Gdyby to nie istniało, musielibyśmy to wymyślić.

w końcu coś dobrego Zeus zrobił.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.