Polecenia Linuksa

Bash Tac Command

Bash Tac Command
Tac jest jednym z tych poleceń, z których nie zdajesz sobie sprawy, dopóki tego nie zrobisz, nie wymyślisz koła na nowo, co nie jest rzadkością w praktyce programowania, niezależnie od tego, czy dopiero uczysz się podstaw, czy jesteś profesjonalistą z wieloletnim doświadczeniem w programowaniu. pochwalić się, jesteś niesamowity. Jeśli twoje ręce są czyste, to dobrze dla ciebie; Tak czy inaczej, czeka Cię smakołyk, zamierzam wyładować wszystko, co wiem o poleceniu tac i nie tylko. Czytaj.

Znany również jako reverse cat, tac to proste narzędzie wiersza poleceń, które pozwala odwrócić wiersze na wyjściu za pomocą | wbudowany operator rur i tac. Oznacza to, że jeśli masz polecenie po lewej stronie (lhs) i chcesz odwrócić zawartość jego danych wyjściowych, wystarczy, że wpiszesz lhs | tac. Otóż ​​to!

Trzeba przyznać, że jest więcej do taktu, niż na pierwszy rzut oka. Nie martw się. Omówimy to wszystko w odpowiednim czasie.

Porady dotyczące tac

Używać czy nie używać, oto jest pytanie. Przecież nie będziesz chciał tac, kiedy nie musisz. Jeśli jednak chcesz rozprowadzić tak, jak chleb z masłem, to zależy od Ciebie. W międzyczasie, oto moja rada, jak taktować obie strony, aby pozostać neutralnymi.

Kiedy używać tac

Są chwile, kiedy używać tac, które pomagają uzyskać więcej z wiersza poleceń przy mniejszej ilości kodu i czasu spędzonego na badaniu opcji poleceń lhs.

Gdy nie masz pewności co do opcji lhs

Wiele poleceń, takich jak sort, ma opcję odwrócenia wyniku polecenia. Jeśli jednak nie jesteś pewien, czy polecenie po lewej stronie ma opcję -r do odwrócenia wyjścia, użycie tac jest pewnym sposobem na odwrócenie linii wyjściowych.

Kiedy wydajność nie ma znaczenia

Chociaż nieistotne, większość poleceń używanych w połączeniu z wbudowaną opcją odwrócenia wyjścia działa lepiej niż przesyłanie wyjścia do tac. Więc jeśli niewielkie opóźnienie wydajności nie stanowi problemu, przejście do taktu w celu odtworzenia wyjścia w odwrotnej kolejności jest w porządku.

Kiedy nie używać tac

Są chwile, kiedy nie możesz użyć taktu, ponieważ wiesz lepiej. Oto kilka, na które warto zwrócić uwagę.

Gdy wiesz, że polecenie na lhs ma opcję odwrócenia linii wyjściowych

Jak powiedziałem: „Większość poleceń ma opcję odwrócenia wyjścia.” Jeśli wiesz, że określone polecenie lhs ma opcję, nie możesz używać tac. W końcu -r jest krótsze niż - | tac.

Kiedy wydajność ma znaczenie

Tak jak powiedziałem: „Korzystanie z opcji odwrotnej lewej strony może działać lepiej niż tac.” Jeśli chcesz wycisnąć kilka sekund w skrypcie bash lub masz do czynienia z większymi plikami, które wymagają czasu na odczytanie, nie możesz używać tac.

Tac pomoc

Uruchomienie polecenia pomocy dla tac lub man tac pokazuje użycie wraz z opcjami, które mogą być użyte. Oto czego się spodziewać.

Polecenia

tac --pomoc

Wynik

Wersja taktyczna

W jakiej wersji jestem??
Jesteś najnowszą wersją siebie. Jednak w przypadku, w jakiej wersji jest twój tac, jest na to opcja.

Polecenia

tac --wersja

Wynik

Uwagi

Jeśli używasz tac na FreeBSD lub macOS, długa opcja wersji może być niedostępna. W takim przypadku spróbuj -v lub man tac. Jeśli próbowałeś, daj mi znać. Jestem ciekaw. Dzięki

Opcje taktyczne

Oprócz pomocy i wersji tac nie ma wielu opcji. Za to, co ma, na pewno przekonasz się, że tac to nie tylko stary odwrócony kot.

Tac przed opcją

Opcja -b pozwala zmienić sposób dołączania separatora na wyjściu. Domyślnie separator nowego wiersza jest dołączany po każdym wierszu.

Wiem, że to mylące. Podzielmy to na przykład.

Najpierw zobaczmy, jak wygląda nasz wynik, zanim użyjemy tac -b.

Polecenia

sekw. 10

Wynik

Zobaczmy teraz, w co zamienia się nasze wyjście po użyciu tac bez -b.

Polecenia

sekw. 10 | tac

Wynik

Zobaczmy teraz, w co wyjście zamienia się przy użyciu tac -b.

Polecenia

sekw. 10 | tac -b

Wynik

Opcja separatora Tac

Opcja separatora -s 'łańcuch literalny' pozwala określić znak lub sekwencję znaków używanych przez tac do odróżnienia linii. Domyślnie używany jest znak nowej linii ('0a' w szesnastce).

Jak korzystać z opcji separatora tac na początku nie jest oczywiste. Jednak gdy już wiesz, że tam jest, trudno nie spróbować go użyć.

Rozważmy następujący przykład, operując na liniach reprezentowanych w szesnastce.

Polecenia

sekw. 20 | xxd -ps | tac -s '0a' | xxd -ps -r

Wynik

Uwagi

(1) To może wydawać się trywialne, jak użycie sekwencji 20 | komenda tac, jednak w tym przypadku nie spędziliśmy czasu pracując nad strumieniem wyjściowym w hex. Używanie tego wzorca jest przydatne, gdy separacja nie jest czymś trywialnym, jak znak nowej linii, taki jak bajt zerowy.

Teraz mniej próbuj używać tac na czymś mniej surowym i bardziej meta, takim jak prosty HTML.

Rozważ następujący plik.

Plik

ZA
b
do

Polecenia

plik () echo -e " A
b
do
";
plik | tac -s "
"

Wynik

Udało nam się przekonwertować stronę HTML

ZA
b
do

w

do
b
ZA

używając tac.

Załóżmy, że musisz zrobić coś bardziej skomplikowanego, na przykład traktować dowolny tag jako separator tac. W takim przypadku nie ujdzie ci na sucho samo użycie opcji separatora. Tutaj pojawia się opcja regex. W połączeniu z opcją separator pozwala to zrobić więcej z poleceniem tac niż odwrócić linię w pliku. Oto jak.

Opcja wyrażeń regularnych Tac

Opcja regex -r -s 'regex' pozwala określić, że ciąg separatora ma być traktowany jako wyrażenie regularne.

Korzystanie z opcji tac regex jest tak proste, jak dodanie opcji -r przed lub za separatorem.

Rozważ poprzedni przykład, używając opcji regex w połączeniu z opcją separatora. Niech tac traktuje dowolny znacznik znacznika jako separator.

Plik



proste funkcje


Funkcje w bashu są proste. Przynajmniej ten jest. Umieszcza na ekranie sznurek.


Polecenia


prosta funkcja
()
Echo
tak proste, jak to tylko możliwe prosta funkcja

Źródło: https://temptemp3.github.Funkcje io/bash

Polecenia

plik ()

Echo '



proste funkcje

Funkcje w bashu są proste. Przynajmniej ten jest. To stawia
napis na ekranie.

Polecenia



prosta funkcja

(
)

Echo tak proste, jak to tylko możliwe

prosta funkcja
'

plik | tac -r -s "]*."

Wynik

Udało nam się przekonwertować stronę HTML odwracając plik za pomocą tagów HTML HTML. Jeśli przyjrzysz się szczegółom, zauważysz, że jeszcze nie jest idealny.

Polecenie Tac w czystym bash

Oto prymitywna wersja implementacji tac w czystym basha, która odwraca linie przesyłane przez polecenie lhs. Przyszłe wersje są pozostawione jako ćwiczenie.

#!/bin/bash
## tak
## wersja 0.0.1 - inicjał
##################################################
tak()
lokalne -a arr
lokalne -i ja
plik mapy arr -
i="$#arr[@]"
while [ $i -ge 0 ]
zrobić
echo $arr[i]
niech ja-=1
gotowy

##################################################
tac
##################################################

Źródło: https://github.com/temptemp3/ba.sh/blob/master/tac.cii

Polecenie Tac przy użyciu innych poleceń

Oto kilka prymitywnych wersji implementacji tac, używających innych poleceń, które odwracają linie przesyłane przez polecenie lhs. Przyszłe wersje są pozostawione jako ćwiczenie.

Zanim zaczniemy, zamknij oczy i pomyśl: „Co można wykorzystać do wdrożenia prymitywnej wersji tac?”
Przychodzi mi na myśl wiele poleceń, ale skupię się na tych, na które mamy miejsce.

gapić się

Podobnie do polecenia Tac w czystym przykładzie basha, aby zaimplementować tac, najpierw przechowamy odczytane wiersze do odtworzenia w odwrotnej kolejności po przeczytaniu wszystkich wierszy. Oto jak by to wyglądało przy użyciu gawk.

 gawk ' linia[++line[0]]=$(0)  KONIEC  for(i=0;i

Teraz spróbuj użyć polecenia lhs seq 10.

 sekw. 10 | gawk '  linia[++line[0]]=$(0)  KONIEC  for(i=0;i

Jak można się spodziewać, wynik jest

Ćwiczenia

1. Funkcja lhs() seq 10 ; wyświetla liczby całkowite od 1 do 10. Napisz polecenie rhs takie, że lhs | rhs równa się 10864213579 tylko przy użyciu tac (Wskazówka: zobacz Tac przed przykładem opcji)
2. Odwróć wyjście rhs() find -mindepth 1 -maxdepth 1 -print0 ; używając tac (Wskazówka: zobacz przykład opcji separatora Tac)
3. Rozszerz tac.sh (w poleceniu Tac w czystym bash), aby zachowywać się dokładnie jak tac. Będziesz musiał dodać opcje i upewnić się, że przetestowałeś ich zachowanie.
4. Zaimplementuj prymitywną wersję tac w czystym basha jako funkcję rekurencyjną.

TL; DR

Znowu podobało mi się pisanie polecenia Bash tac. Po przeczytaniu mam nadzieję, że zgodzisz się, że jest więcej do taktu, niż myślałeś. Mam nadzieję, że po próbie zrobienia rzeczy na samym dole, wiesz, jak przydatne może być polecenie tac. Jeśli komuś uda się ukończyć któreś z ćwiczeń lub potrzebujesz pomocy w odrabianiu zadań domowych, daj mi znać. Dzięki,

Gry 5 najlepszych gier zręcznościowych dla systemu Linux
5 najlepszych gier zręcznościowych dla systemu Linux
W dzisiejszych czasach komputery to poważne maszyny używane do gier. Jeśli nie możesz uzyskać nowego wysokiego wyniku, będziesz wiedział, o co mi chod...
Gry Bitwa o Wesnoth 1.13.6 Wydanie rozwojowe
Bitwa o Wesnoth 1.13.6 Wydanie rozwojowe
Bitwa o Wesnoth 1.13.6 wydana w zeszłym miesiącu jest szóstą wersją rozwojową w 1.13.Seria x i zapewnia szereg ulepszeń, w szczególności w interfejsie...
Gry Jak zainstalować League Of Legends na Ubuntu 14.04
Jak zainstalować League Of Legends na Ubuntu 14.04
Jeśli jesteś fanem League of Legends, to jest okazja do przetestowania League of Legends. Pamiętaj, że LOL jest obsługiwany w PlayOnLinux, jeśli jeste...