Ters kedi olarak da bilinir, çıktıdaki satırları | yerleşik boru operatörü ve tac. Yani, sol tarafta (lhs) bir komutunuz varsa ve çıktısının içeriğini tersine çevirmek istiyorsanız, tek yapmanız gereken lhs | tak. Bu kadar!
Kuşkusuz, göründüğünden daha fazlası var. Endişelenme. Hepsini iyi bir zamanda kapatacağız.
tac hakkında tavsiye
Kullanmak ya da kullanmamak işte bütün mesele bu. Mecbur kalmadığında dokunmak istemezsin. Ancak, ekmek ve tereyağı emriniz olarak ta'yı yaymak istiyorsanız, bu size kalmış. Bu arada, her iki tarafı da tarafsız tutmak için taktik konusunda tavsiyem.
tac ne zaman kullanılır
Daha az kod ve lhs komut seçeneklerini araştırmak için harcanan zaman ile komut satırından daha fazlasını elde etmenize yardımcı olan tac'ın kullanıldığı zamanlar vardır.
lhs seçeneklerinden emin olmadığınızda
Sıralama gibi birçok komut, bir komutun çıktısını tersine çevirme seçeneğiyle birlikte gelir. Ancak, sol taraftaki bir komutun çıktıyı tersine çevirmek için -r seçeneğine sahip olup olmadığından emin değilseniz, tac kullanmak çıktı satırlarını tersine çevirmenin kesin bir yoludur.
Performans önemli olmadığında
Önemsiz olmasına rağmen, çıktıyı tersine çevirmek için yerleşik bir seçenekle birlikte kullanılan komutların çoğu, çıktıyı tac'a aktarmaktan daha iyi performans gösterir. Bu nedenle, biraz performans gecikmesi sorun değilse, çıktıyı tersten tekrar oynatmak için tac'a bağlantı kurmak sorun değil.
tac ne zaman kullanılmamalı
Daha iyi bildiğiniz için tac'ı kullanamayacağınız zamanlar vardır. İşte dikkat edilmesi gereken birkaç.
lhs'deki komutun çıktı satırlarını tersine çevirme seçeneği olduğunu bildiğinizde
Dediğim gibi, "Çoğu komut çıktıyı tersine çevirme seçeneğiyle gelir.” Belirli bir lhs komutunun bir seçeneği olduğunu biliyorsanız, tac kullanmayabilirsiniz. Sonuçta, -r, - | tak.
Performans önemli olduğunda
Dediğim gibi, "lhs ters seçeneğini kullanmak, tac'den daha iyi performans gösterebilir.” Bir bash betiğinde birkaç saniyeyi sıkıştırmak istiyorsanız veya okumak için zaman gerektiren daha büyük dosyalarla uğraşıyorsanız, tac kullanamazsınız.
yardım
tac veya man tac için yardım komutunu çalıştırmak, kullanılabilecek seçeneklerle birlikte kullanımı gösterir. İşte ne bekleniyor.
Komutlar
tac --yardımÇıktı
Tak sürümü
ben hangi versiyonum?
sen kendinin en son versiyonusun. Ancak, tac'nizin hangi sürümde olduğu durumunda, bunun için bir seçenek var.
Komutlar
tac --versiyonÇıktı
Notlar
FreeBSD veya macOS'ta tac kullanıyorsanız, sürüm için uzun seçenek mevcut olmayabilir. Bu durumda, -v veya man tac'ı deneyin. denediysen haber ver. meraklıyım. Teşekkürler
Taktik seçenekleri
Yardım ve sürümün yanı sıra, tac'de fazla seçenek yok. Sahip olduğu şey için, tac'nin herhangi bir eski ters kedi olmadığını öğreneceğinizden emin olabilirsiniz.
seçeneğinden önce Tac
-b seçeneği, ayırıcının çıktıya nasıl eklendiğini değiştirmenize olanak tanır. Varsayılan olarak, yeni satır ayırıcısı her satırdan sonra eklenir.
kafa karıştırıcı olduğunu biliyorum. Örnek olarak parçalayalım.
İlk olarak, tac -b kullanmadan önce çıktımızın nasıl göründüğüne bakalım.
Komutlar
10. sıraÇıktı
Şimdi -b olmadan tac kullandıktan sonra çıktımızın neye dönüştüğünü görelim.
Komutlar
sıra 10 | takÇıktı
Şimdi tac -b kullanarak çıktının neye dönüştüğünü görelim.
Komutlar
sıra 10 | tak -bÇıktı
Tac ayırıcı seçeneği
Ayırıcı seçeneği -s 'literal string', satırları birbirinden ayırmak için tac tarafından kullanılan karakteri veya karakter dizisini belirtmenize izin verir. Varsayılan olarak, yeni satır karakteri (onaltılı olarak '0a') kullanılır.
Tac ayırıcı seçeneğinin nasıl kullanılacağı ilk başta açık değil. Ancak, orada olduğunu bildikten sonra, onu kullanmaya çalışmamak zor.
Onaltılık olarak gösterilen satırlarda çalışan aşağıdaki örneği göz önünde bulundurun.
Komutlar
sıra 20 | xxd -ps | tac -s '0a' | xxd -ps -rÇıktı
Notlar
(1) Sıra 20 | tac komutu, ancak bu durumda, çıktı akışı üzerinde onaltılı olarak çalışmak için zaman harcamadık. Bu kalıbı kullanmak, sıfırıncı bayt gibi yeni satır karakteri kadar önemsiz bir şey olmadığında faydalıdır.
Şimdi biraz daha az ham ve basit HTML gibi daha fazla meta üzerinde tac kullanmayı daha az deneyin.
Aşağıdaki dosyayı göz önünde bulundurun.
Dosya
birB
C
Komutlar
dosya () echo -e " AB
C
" ;
dosya | tak -s"
"
Çıktı
HTML sayfasını dönüştürmeyi başardık
birB
C
içine
CB
bir
tac kullanmak.
Herhangi bir etiketi tac ayırıcı olarak ele almak gibi biraz daha karmaşık bir şey yapmanız gerektiğini varsayalım. Bu durumda, sadece ayırıcı seçeneğini tek başına kullanmaktan kurtulamayacaksınız. Normal ifade seçeneğinin devreye girdiği yer burasıdır. Ayırıcı seçeneğiyle birlikte, tac komutuyla bir dosyadaki bir satırı tersine çevirmekten daha fazlasını yapmanızı sağlar. İşte nasıl.
Tac normal ifade seçeneği
Normal ifade seçeneği -r -s 'regex', ayırıcı dizenin normal bir ifade olarak ele alınacağını belirtmenize olanak tanır.
tac regex seçeneğinin nasıl kullanılacağı, ayırıcıdan önce veya sonra -r seçeneğini eklemek kadar basittir.
Ayırıcı seçeneğiyle birlikte normal ifade seçeneğini kullanan önceki örneği düşünün. Herhangi bir işaretleme etiketini ayırıcı olarak ele alalım.
Dosya
basit fonksiyonlar
Bash'de işlevler basittir. En azından bu. Ekrana bir dize koyar.
Komutlar
basit işlev
()
Eko
aldığı kadar basit basit işlev
Kaynak: https://temptemp3.github.io/bash fonksiyonları
Komutlar
dosya ()Eko '
basit fonksiyonlar
Bash'de işlevler basittir. En azından bu. bir koyar
ekrandaki dize.
Komutlar
basit işlev
()
Eko aldığı kadar basit
basit işlev
dosya | tac -r -s "]*."
Çıktı
HTML etiketlerini kullanarak dosyayı tersine çevirerek HTML sayfasını dönüştürmeyi başardık. Ayrıntılara bakarsanız, henüz mükemmel olmadığını fark edeceksiniz.
Saf bash içinde Tac komutu
İşte, bir lhs komutuyla aktarılan satırları tersine çeviren, saf bash içindeki tac uygulamasının ilkel bir sürümü. Gelecek sürümler bir alıştırma olarak bırakılmıştır.
#!/bin/bash## tak
## sürüm 0.0.1 - başlangıç
#################################################
tak()
yerel -a arr
yerel -i ben
harita dosyası dizini -
i="$#arr[@]"
while [ $i -ge 0 ]
yapmak
yankı $arr[i]
i-=1 olsun
bitti
#################################################
tak
#################################################
Kaynak: https://github.com/temptemp3/ba.sh/blob/master/tac.ş
Diğer komutları kullanarak Tac komutu
Burada, bir lhs komutuyla aktarılan satırları tersine çeviren diğer komutları kullanan tac uygulamasının bazı ilkel sürümleri bulunmaktadır. Gelecek sürümler bir alıştırma olarak bırakılmıştır.
Başlamadan önce, gözlerinizi kapatın ve "Tac'ın ilkel bir sürümünü uygulamak için ne kullanılabilir??”
Aklıma birçok komut geliyor ama ben yerimiz olanlara odaklanacağım.
gawk
Saf bash örneğindeki Tac komutuna benzer şekilde, tac'yi uygulamak için önce tüm satırlar okunduktan sonra okunacak satırları tersten oynatacağız. İşte gawk kullanarak nasıl görüneceği.
gawk ' line[++line[0]]=$(0) END for(i=0;i
Şimdi seq 10 lhs komutunu kullanmayı deneyin.
sıra 10 | gawk ' line[++line[0]]=$(0) END for(i=0;i
Çıktı beklediğiniz gibi
Egzersizler
1. lhs() sıra 10 ; 1 ile 10 arasındaki tam sayıları listeler. lhs | rhs, yalnızca tac kullanıldığında 10864213579'a eşittir (İpucu: seçenek örneğinden önce Tac'e bakın)
2. rhs() find -mindepth 1 -maxdepth 1 -print0 ; tac kullanarak (İpucu: Tac ayırıcı seçenek örneğine bakın)
3. tac'yi uzat.sh (saf bash'ta Tac komutunda) tam olarak tac gibi davranmak için. Seçenekler eklemeniz ve davranışlarını test ettiğinizden emin olmanız gerekecek.
4. Özyinelemeli bir işlev olarak saf bash içinde tac'nin ilkel bir sürümünü uygulayın.
TL; DR
Bash tac komutunu yazmaktan yine keyif aldım. Okuduktan sonra, umarım düşündüğünüzden daha fazlasının olduğu konusunda hemfikirsinizdir. Ayrıca, en alta yakın yerlerde işleri zor yoldan yapmaya çalıştıktan sonra, umarım tac komutunun ne kadar yararlı olabileceğini biliyorsunuzdur. Herhangi biri alıştırmalardan herhangi birini tamamlamayı başarırsa veya ödevinde yardıma ihtiyacı olursa bana bildirin. Teşekkürler,