-n
komutunu echo
komutunu kullanarak yazdırmaya çalışıyorum. Ancak, yalnızca echo -n
yazıyorsam, yalnızca bir satırsonu verir, -n
görünmez, bunun yerine yeni bir satır çıkarır.
-n
komutunu echo
komutunu kullanarak yazdırmaya çalışıyorum. Ancak, yalnızca echo -n
yazıyorsam, yalnızca bir satırsonu verir, -n
görünmez, bunun yerine yeni bir satır çıkarır.
Sorun echo
'si -n
' yi argüman olarak yorumlamasıdır. Varsayılan bash uygulamasında, bu ( help echo
'den):
-n do not append a newline
Bunu ele almak için çeşitli yollar vardır:
Başka bir karakter ekleyerek bir seçenek olmayan bir şeye dönüştürün. Örneğin, echo
ters eğik çizgi -n
ile kaçar yorumlamak ve açıkça yeni satır eklemek için bunu söylemek, sonra -e
ile bir yeni satır yazdırmak için değil söyle.
$ echo -ne '-n\n'
-n
Alternatif olarak, yalnızca bir boşluk ekleyin
$ echo " -n"
-n
Ancak, bu, muhtemelen istemediğiniz bir alan ekler.
Önceden yazdırılmamış bir karakter kullanın. İşte. Backspace kullanıyorum ( \b
)
$ echo -e "\b-n"
-n
Bu, muhtemelen istemediğiniz ekstra bir karakter ekler.
Hile kullan
$ echo n- | rev
-n
rev
komutu, çıktılarını tersine çevirir.
$ printf -- '-n\n'
-n
Bazen doğru aracı kullanmak iyi bir fikirdir. Bunun yerine printf
kullanabilirsiniz:
% printf "-n\n"
-n
Bu komutu kullanabilirsiniz, ancak fazladan bir boşluk ekler.
echo -e "\r-n"
Bu bir çeşit hack.
-e
, ters eğik çizgi komut sembollerini etkinleştirir.
\r
bir satır başıdır.
Aslında herhangi bir \
geçerli karakter dizenin herhangi bir yerinde yapılacaktır.
Hangisinin help echo
tarafından geçerli olduğunu görebilirsiniz.
echo "-n"
, -n
parametresi olarak kullanıldığından echo
çalışmıyor.
P.S. En iyi çözüm IMHO’dur
echo -e "-n\c"
fazladan karakter eklemez .
echo -e "-n\n"
aynı şeyi yazdırır ancak yeni bir satır char.
Kesinlikle yalnızca echo
'yi kullanmak istiyorsanız, bu sizi tatmin etmelidir:
echo "-n "
Bu, -n
'si echo
, -n
için geçerli bir seçenek iken% boşluktan sonra olduğu için çalışır. Bir seçenek olmadığından, echo
bunu yazdırır.
Sizler gerçekten fazla düşünüyorsunuz.
echo -e \055n
Ya da takip eden yeni satır yok
echo -en \055n
A.B'nin cevabını genişletmek için, echo
kullanmanın tek taşınabilir yolu -n
gibi herhangi bir seçenek kullanmaktan kaçınmaktır. Kullanılabilir olduğu yerde printf
kullanın. Bu referans sayfası daha fazla ayrıntı sağlar ve ne zaman ve nasıl echo
ve% nasıl çok iyi açıklar % co_de kullanılmalıdır:
Bugünlerde, eko (1) yalnızca bayrakları ve çıkış sıralarını atladığınızda taşınabilir. Düz metinden daha fazlasına ihtiyacınız varsa printf (1) kullanın.
Bash komut dosyasında şunları çalıştırabilirsiniz:
echo -n -
echo n
Veya interaktif kabukta:
echo -n - ; echo n
Bu echo
, bir -
karakteri ve n
karakteridir.
Diğer üç yol:
$ echo -e '\x2dn' # ASCII hexadecimal value
-n
$ echo -e '\u002dn' # Unicode code point
-n
$ echo -e '\u2dn' # Unicode code point shortened
-n
Çalıştırabilirsiniz
printf -n;echo
Busybox Ash'ta Test Edildi