Yeni bir satır yayınlamadan “-n” nasıl yazdırılır?

16

-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.

    
sordu Star OS 23.11.2015 18:46

9 cevap

28

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:

  1. 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
    
  2. Alternatif olarak, yalnızca bir boşluk ekleyin

    $ echo " -n"
     -n
    

    Ancak, bu, muhtemelen istemediğiniz bir alan ekler.

  3. Ö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.

  4. Hile kullan

    $ echo n- | rev
    -n
    

    rev komutu, çıktılarını tersine çevirir.

  5. kullanın
    $ printf -- '-n\n'
    -n
    
verilen cevap terdon 23.11.2015 19:06
15

Bazen doğru aracı kullanmak iyi bir fikirdir. Bunun yerine printf kullanabilirsiniz:

% printf "-n\n"       
-n
    
verilen cevap A.B. 23.11.2015 18:50
7

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.

    
verilen cevap Pilot6 23.11.2015 18:56
5

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.

    
verilen cevap Sadi 23.11.2015 18:53
5

Sizler gerçekten fazla düşünüyorsunuz.

 echo -e \055n

Ya da takip eden yeni satır yok

 echo -en \055n
    
verilen cevap Joshua 23.11.2015 22:53
2

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.

    
verilen cevap Dmitry Grigoryev 24.11.2015 13:17
2

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.

    
verilen cevap jiwopene 23.11.2015 21:30
1

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
    
verilen cevap kos 25.11.2015 21:01
0

Çalıştırabilirsiniz

printf -n;echo

Busybox Ash'ta Test Edildi

    
verilen cevap jiwopene 08.12.2015 21:46

Etiketlerdeki diğer soruları oku