Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
so:redirects [2023/04/01 20:16] jkonczak |
so:redirects [2025/04/01 22:53] (aktualna) jkonczak |
||
---|---|---|---|
Linia 13: | Linia 13: | ||
''**paste** //plik_1// [//plik_2//]...'' czyta po jednej linii z każdego z plików | ''**paste** //plik_1// [//plik_2//]...'' czyta po jednej linii z każdego z plików | ||
i wypisuje je oddzielone tabem, powtarzając to do wyczerpania najdłuższego pliku. | i wypisuje je oddzielone tabem, powtarzając to do wyczerpania najdłuższego pliku. | ||
+ | |||
+ | <small> | ||
+ | ''**join** [-t //separator//] [-1 //filed_1//] [-2 //filed_2//] //infile_1// //infile_2//'' łączy te wiersze z pliku //infile_1// z wierszami pliku //infile_2//, które na polu //filed_1// w pliku //infile_1// mają tę samą wartość co na polu //field_2// w pliku //infile_2// (pola w wierszu są oddzielane //separator//em). Oba pliki muszą być posortowane względem pola które jest używane jako klucz połączenia. | ||
+ | </small> | ||
''**fold** [-w //szer//] [//plik//]...'' wyświetla podane pliki (lub standardowe | ''**fold** [-w //szer//] [//plik//]...'' wyświetla podane pliki (lub standardowe | ||
Linia 56: | Linia 60: | ||
==== Wyświetlanie tekstu ==== | ==== Wyświetlanie tekstu ==== | ||
- | ''**echo** //tekst//'' wypisuje //tekst// i znak nowej linii (to ostatnie można wyłączyć podając ''-n''). \\ | + | ''**echo** //tekst//'' wypisuje //tekst// i znak nowej linii. \\ |
- | Przełącznik ''-e'' powoduje zamianę sekwencji takich jak ''\t'' czy ''\n'' na odpowiadające im znaki (tutaj: tab i nowa linia). | + | Większość implementacji ''echo'' implementuje przełącznik ''-n'' który pomija |
+ | dodawnie znaku nowej linii.\\ | ||
+ | Część implementacji zna też przełącznik ''-e'', który powoduje zamianę sekwencji | ||
+ | takich jak ''\t'' czy ''\n'' na odpowiadające im znaki (tutaj: tab i nowa linia). | ||
+ | Część implementacji zawsze zmienia sekwencje sterujące na odpowiadające im znaki | ||
+ | (i zgłasza błąd jeśli napotka przełącznik ''-e''). | ||
''**printf** //format// [//argument//]...'' działa jak funkcja ''printf'' z języka C (z pewnymi dodatkami). | ''**printf** //format// [//argument//]...'' działa jak funkcja ''printf'' z języka C (z pewnymi dodatkami). | ||
Linia 69: | Linia 78: | ||
++++ Przykłady | {{page>so:redirects:echo&inline}} ++++ | ++++ Przykłady | {{page>so:redirects:echo&inline}} ++++ | ||
- | ~~Zadanie.#~~ Sprawdź działanie ''echo -e 'foo\n\nbaz' '' \\ oraz ''echo -e '\n\n one \033[A \033[A two \033[B \033[B \n \033[1;31m red \033[0m' '' \\ <small>[[https://en.wikipedia.org/wiki/ANSI_escape_code|Sekwencje sterujące ANSI]] są dobrze opisane [[https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797|tutaj]]</small> | + | ~~Zadanie.#~~ Sprawdź działanie ''echo -e 'foo\n\nbaz' '' \\ oraz ''echo -e '\n\n one \033[A \033[A two \033[B \033[B \n \033[1;31m red \033[0m' '' \\ <small>[[https://en.wikipedia.org/wiki/ANSI_escape_code|Sekwencje sterujące ANSI]] są dobrze opisane [[https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797|tutaj]] oraz w podręczniku systemowym na stronie ''[[https://man7.org/linux/man-pages/man4/console_codes.4.html|console_codes]]''.</small> |
~~Zadanie.#~~ Sprawdź działanie ''printf "|%4.2f|%3s|%-16s|\n|%4.2f|%3s|%-16s|\n" 3.1428 pi obwod/srednica 9.8 g grawitacja'' | ~~Zadanie.#~~ Sprawdź działanie ''printf "|%4.2f|%3s|%-16s|\n|%4.2f|%3s|%-16s|\n" 3.1428 pi obwod/srednica 9.8 g grawitacja'' | ||
Linia 235: | Linia 244: | ||
| ''>>'' | otwiera plik //słowo// do dopisywania i zastępuje //deskryptor_pliku// nowo otwartym | | | ''>>'' | otwiera plik //słowo// do dopisywania i zastępuje //deskryptor_pliku// nowo otwartym | | ||
| ''<>'' | otwiera plik //słowo// do odczytu i zapisu, oraz zastępuje //deskryptor_pliku// nowo otwartym | | | ''<>'' | otwiera plik //słowo// do odczytu i zapisu, oraz zastępuje //deskryptor_pliku// nowo otwartym | | ||
- | | ''<<'' | 1) tworzy tymczasowy plik \\ 2) czyta linię ze standardowego wejścia\\ 3) jeśli cała linia to dokładnie //słowo//, idź do 6 \\ 4) jeśli w //słowie// nie ma cudzysłowów (pary ''"'' lub <html><code>'</code></html>), wykonuje podstawienia((Np. pod ''$VAR'' podstawia wartość zmiennej ''VAR'', ''`date`'' jest zastąpione wynikiem komendy ''date'' etc.)) w linii \\ 5) pisze linię do pliku tymczasowego \\ 6) otwiera plik tymczasowy do odczytu \\ 7) zastępuje //deskryptor_pliku// nowo otwartym \\ 8) uruchamia komendę | | + | | ''<<'' | 1) tworzy tymczasowy plik \\ 2) czyta linię ze standardowego wejścia\\ 3) jeśli cała linia to dokładnie //słowo//, idź do 7 \\ 4) jeśli //słowo// nie było ujęte w cudzysłowy (pary ''"'' lub <html><code>'</code></html>), wykonuje podstawienia((Np. pod ''$VAR'' podstawia wartość zmiennej ''VAR'', ''`date`'' jest zastąpione wynikiem komendy ''date'' etc.)) w linii \\ 5) pisze linię do pliku tymczasowego \\ 6) wraca do 2 \\ 7) otwiera plik tymczasowy do odczytu \\ 8) zastępuje //deskryptor_pliku// nowo otwartym \\ 9) uruchamia komendę | |
| ''<<-''| działa jak ''<<'', ale po kroku 2 dodaje jeszcze krok: \\ 2a) usuwa wszystkie początkowe tabulatory (''\t'') \\ uwaga: spacje nie są usuwane| | | ''<<-''| działa jak ''<<'', ale po kroku 2 dodaje jeszcze krok: \\ 2a) usuwa wszystkie początkowe tabulatory (''\t'') \\ uwaga: spacje nie są usuwane| | ||
| ''<<<''| Uwaga: to jest rozszerzenie powłoki Bash \\ 1) tworzy tymczasowy plik \\ 2) pisze //słowo// do pliku tymczasowego \\ 3) pisze znak nowego wiersza do pliku tymczasowego \\ 4) otwiera plik tymczasowy do odczytu \\ 5) zastępuje //deskryptor_pliku// nowo otwartym \\ 6) uruchamia komendę | | | ''<<<''| Uwaga: to jest rozszerzenie powłoki Bash \\ 1) tworzy tymczasowy plik \\ 2) pisze //słowo// do pliku tymczasowego \\ 3) pisze znak nowego wiersza do pliku tymczasowego \\ 4) otwiera plik tymczasowy do odczytu \\ 5) zastępuje //deskryptor_pliku// nowo otwartym \\ 6) uruchamia komendę | | ||
Linia 255: | Linia 264: | ||
i zduplikuj standardowe wejście do standardowego wyjścia. Sprawdź co się stało. | i zduplikuj standardowe wejście do standardowego wyjścia. Sprawdź co się stało. | ||
\\ | \\ | ||
- | Uwaga: nie używaj ''<>'' dwukrotnie z z tym samym plikiem dla standardowego wejścia | + | Uwaga: nie używaj dwukrotnie ''<>'' z tym samym plikiem dla standardowego wejścia |
- | i standardowego błędu (chyba że jesteś gotowy ponieść konsekwencje swojego czynu). | + | i standardowego wyjścia (chyba że jesteś gotowy ponieść konsekwencje swojego czynu). |
</small> | </small> | ||