Linux команди

Команда Bash Tac

Команда Bash Tac
Tac е една от онези команди, които не осъзнавате, докато вече не сте го направили и не сте преоткрили колелото, което не е необичайно в практиката на програмиране дали просто изучавате въжетата или сте професионалист с дългогодишен опит хвалете се, страхотни сте. Ако ръцете ви са чисти, тогава добре за вас; Така или иначе ви очаква почерпка, ще разтоваря всичко, което знам за командата tac и други. Прочетете.

Известен също като обратна котка, tac проста помощна програма за команден ред, която ви позволява да обръщате редове в изхода с помощта на | вграден тръбен оператор и tac. Тоест, ако имате команда отляво (lhs) и искате да обърнете съдържанието на резултата от нея, всичко, което бихте направили, е да напишете lhs | tac. Това е!

Трябва да се признае, че има още какво да се лекува, отколкото изглежда на пръв поглед. Не се притеснявайте. Ще покрием всичко, своевременно.

Съвети относно tac

Да се ​​използва или да не се използва, това е въпросът. Няма да не искаш да лепиш, когато не се налага. Ако обаче искате да разпространявате tac като ваша команда за хляб и масло, зависи от вас. Междувременно ето моят съвет за приемане на двете страни, за да останат толкова неутрални.

Кога да се използва tac

Има моменти, когато трябва да използвате tac, които ви помагат да извлечете повече от командния ред с по-малко код и време, прекарано в проучване на lhs командните опции.

Когато не сте сигурни за опциите на lhs

Много команди като сортиране идват с опция за обръщане на изхода на команда. Ако обаче не сте сигурни дали команда отляво има опция -r за обръщане на изхода, използването на tac е сигурен начин за обръщане на изходните линии.

Когато изпълнението няма значение

Макар и незначителни, повечето команди, използвани заедно с вградена опция за обръщане на изхода, се представят по-добре от извеждането на изхода към tac. Така че, ако малкото забавяне на производителността не е проблем, тръбопровода в tac за повторно възпроизвеждане на изхода в обратна посока е наред.

Кога да не се използва tac

Има моменти, в които може да не използвате tac, защото знаете по-добре. Ето няколко за отбелязване.

Когато знаете, че командата на lhs има опция за обръщане на изходните редове

Както казах, „Повечето команди идват с опция за обратен изход.”Ако знаете, че определена команда lhs има опция, не можете да използвате tac. В края на краищата, -r е по-кратък от - | tac.

Когато изпълнението има значение

Както казах, „Използването на lhs обратната опция може да се представи по-добре от tac.”Ако искате да изцедите няколко секунди в bash скрипт или имате работа с по-големи файлове, които изискват време за четене, може да не използвате tac.

Tac помощ

Изпълнението на командата за помощ за tac или man tac показва използването заедно с опциите, които могат да бъдат използвани. Ето какво да очаквате.

Команди

tac --помощ

Изход

Tac версия

Каква версия съм?
Вие сте най-новата версия на себе си. Въпреки това, в случая с каква версия е вашият tac, има опция за това.

Команди

tac --версия

Изход

Бележки

Ако използвате tac на FreeBSD или macOS, дългата опция за версия може да не е налична. В този случай опитайте -v или man tac. Ако сте го опитали, кажете ми. Любопитен съм. Благодаря

Tac опции

Освен помощ и версия, tac няма много опции. За това, което има, със сигурност ще разберете, че tac не е просто някаква стара обратна котка.

Опция Tac before

Опцията -b ви позволява да промените начина на закрепване на разделителя в изхода. По подразбиране разделителят за нов ред е прикрепен след всеки ред.

Знам, че е объркващо. Нека да го разделим чрез пример.

Първо, нека видим как изглежда нашият изход, преди да използваме tac -b.

Команди

сл. 10

Изход

Сега нека видим в какво се превръща изходът ни след използване на tac без -b.

Команди

сл. 10 | tac

Изход

Сега нека видим в какво се превръща изходът, използвайки tac -b.

Команди

сл. 10 | tac -b

Изход

Опция за разделяне на Tac

Опцията за разделител -s 'буквален низ' ви позволява да посочите символа или последователността от символи, използвани от tac за разграничаване на редовете. По подразбиране се използва символът за нов ред ('0a' в шестнадесетичен знак).

Начинът на използване на опцията за разделяне на тач в началото не е очевиден. След като знаете обаче, че е там, е трудно да не се опитате да го използвате.

Да разгледаме следния пример, работещ върху линии, представени в шестнадесетичен.

Команди

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

Изход

Бележки

(1) Може да изглежда тривиално, като се използва последователността 20 | tac команда, но в този случай не отделяхме време за работа върху изходния поток в шестнадесетичен. Използването на този модел е полезно, когато разделянето не е нещо тривиално като новия ред, като нулевия байт.

Сега по-малко се опитвайте да използвате tac за нещо малко по-малко сурово и повече мета като прост HTML.

Обмислете следния файл.

Файл

A
Б
° С

Команди

файл () echo -e "A
Б
° С
";
файл | tac -s "
"

Изход

Успяхме да конвертираме HTML страницата

A
Б
° С

в

° С
Б
A

с помощта на tac.

Да предположим, че трябва да направите нещо малко по-сложно, като да третирате всеки етикет като разделител на тач. В този случай няма да се измъкнете, като използвате само опцията за разделяне. Тук идва опцията за регулярно изражение. В комбинация с опцията за разделител ви позволява да направите повече с командата tac, отколкото да обърнете ред във файл. Ето как.

Tac regex опция

Опцията за регулярно изражение -r -s 'regex' ви позволява да посочите, че разделителният низ трябва да се третира като регулярен израз.

Как да използвате опцията tac regex е толкова просто, колкото добавянето на опцията -r преди или след разделителя.

Помислете за предишния пример, като използвате опцията за регулярно изражение заедно с опцията за разделяне. Нека да разгледаме всеки маркер за маркиране като разделител.

Файл



прости функции


Функциите са прости в bash. Поне този е. Поставя низ на екрана.


Команди


проста функция
()
ехо
толкова просто, колкото става проста функция

Източник: https: // temptemp3.github.io / bash-функции

Команди

файл ()

ехо



прости функции

Функциите са прости в bash. Поне този е. Той поставя a
низ на екрана.

Команди



проста функция

(
)

ехо толкова просто, колкото става

проста функция
'

файл | tac -r -s "] *."

Изход

Успяхме да конвертираме HTML страницата, обръщаща файла, използвайки HTML тагове. Ако разгледате подробностите, ще забележите, че все още не е перфектно.

Tac команда в чист bash

Ето примитивна версия на tac изпълнение в чист bash, която обръща редовете, въведени от команда lhs. Бъдещите версии са оставени като упражнение.

#!/ bin / bash
## tac
## версия 0.0.1 - начален
####################################################
tac ()
местно -а обр
местно -i i
mapfile обр -
i = "$ # arr [@]"
докато [$ i -ge 0]
направете
ехо $ arr [i]
нека i- = 1
Свършен

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

Източник: https: // github.com / temptemp3 / ba.sh / blob / master / tac.ш

Tac команда, използваща други команди

Ето някои примитивни версии на tac изпълнение, използващи други команди, които обръщат редовете, въведени от lhs команда. Бъдещите версии са оставени като упражнение.

Преди да започнем, затворете очи и си помислете: „Какво може да се използва за прилагане на примитивна версия на tac?”
Много команди ми идват на ум, но ще се спра на тези, за които имаме място.

gawk

Подобно на командата Tac в чист пример на bash, за да приложим tac, първо бихме съхранили прочетените редове, за да бъдат възпроизведени в обратен ред, след като всички редове бъдат прочетени. Ето как би изглеждал, използвайки gawk.

 gawk 'ред [++ ред [0]] = $ (0) END за (i = 0; i

Сега опитайте да използвате командата lhs seq 10.

 сл. 10 | gawk 'ред [++ ред [0]] = $ (0) END за (i = 0; i

Както бихте очаквали, изходът е

Упражнения

1. Функцията lhs () sq 10; изброява целите числа от 1 до 10. Изпишете rhs команда, така че lhs | rhs се равнява на 10864213579 само с помощта на tac (Съвет: вижте Tac преди пример за опция)
2. Обърнете изхода на rhs () find -mindepth 1 -maxdepth 1 -print0; използвайки tac (Съвет: вижте пример за опция за разделител на Tac)
3. Удължете tac.sh (в командата Tac в чист bash), за да се държи точно като tac. Ще трябва да добавите опции и задължително да тествате поведението им.
4. Внедрете примитивна версия на tac в pure bash като рекурсивна функция.

TL; DR

Отново ми хареса да пиша командата Bash tac. След като прочетох, надявам се, че можете да се съгласите, че има още какво да се направи, отколкото сте предполагали. Освен това, след като се опитахте да направите нещата по трудния начин отдолу, надявам се, че знаете колко полезна може да бъде командата tac. Ако някой успее да изпълни някое от упражненията или се нуждае от помощ за домашните си, да ме уведоми. Благодаря,

Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...