9 Eylül 2020 Çarşamba

bash kodlama printf built-in komutu

Giriş
printf her zaman echo komutuna tercih edilmeli

1. Unicode
Açıklaması şöyle. Unicode için \u veya \U ile başlayan karakterler kullanılır.
\uHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)

\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
Örnek
Şöyle yaparız. \U ile başlayan sayı 5 karakter.
# printf "\u2660 \u1F0A1 \U1F0A1\n"
 1 🂡
2. Renkli Çıktı
Metin Rengi
256 renk kullanılabilir.
Örnek
Şöyle yaparız
printf "\033[38;5;196mhello\n"
Arka Plan Rengi
8 renk kullanılabilir.
Örnek
Şöyle yaparız.
printf "\033[41mhello\n"
3. Formatlama Seçenekleri
Açıklaması şöyle. Yani C dili gibidir.
Arguments to non-string format specifiers are treated as C language constants, except that a leading plus or minus sign is allowed, and if the leading character is a single or double quote, the value is the ASCII value of the following character.
Tek veya çift tırnak içinde formatlanacak string formatlama seçenekleri ile belirtilir. Daha sonra da boşluk bırakılarak değişkenler verilir.

Örnek
Şöyle yaparız
$ var="Hello"
$ printf '%s\n' "$var"
Hello
%b seçeneği
Örnek
Şöyle yaparız
printf '%b\n' 'hello\nworld'
%d seçeneği
Örnek
Şöyle yaparız.
$ printf %d\\n "'a'"
97
$ printf %d\\n "'0'"
48
$ printf %d\\n "'"$'\1'
1
Örnek
Dosyadan bir sayı okuyalım.
BN=$($cat Build.number)
3 basamaklı yazdırmak için şöyle yaparız.
printf "%.3d\n" $((++BN)) > Build.number
%f seçeneği
Açıklaması şöyle.
The floating-point formatting conversion specifications of printf() are not required because all arithmetic in the shell is integer arithmetic. The awk utility performs floating-point calculations and provides its own printf function. The bc utility can perform arbitrary-precision floating-point arithmetic, but does not provide extensive formatting capabilities. (This printf utility cannot really be used to format bc output; it does not support arbitrary precision.) Implementations are encouraged to support the floating-point conversions as an extension.
Örnek
Şöyle yaparız.
printf "%.18f\n" 5.10
5.100000000000000000
%s seçeneği
Örnek
NULL ile biten string için şöyle yaparız.
printf '%s\0' small*jpg
Örnek
%s'in kaç kere kullanıldığının önemi yok. Parametre sayısı kadar tekrar edebiliyor. Şöyle yaparız. Çıktı olarak şunu alırız
$ printf "%s" a b
ab
Şöyle yaparız. Çıktı olarak şunu alırız
$ printf "%s%s" a b
ab
Escape Karakterler
Örnek - \n
Şöyle yaparız.
$ printf "hi"
hi$ printf "hi\n"
hi

Hiç yorum yok:

Yorum Gönder