Eko ile yeni satır karakteri nasıl yazdırılır?


15

Ben hexdumpböyle bir dize dökümü 2031 3334 2e30 0a32 2032 3331 302e 000a. 0x0aYeni satır karakteri olduğu açıktır , ancak bu dizeyi yankılamaya çalıştığımda, her zaman aldım 1 430.2 2 13.0- yeni satırın yerini bir boşluk bırakıyor, hatta -ebayrağı kullanıyorum.

Sorun ne olabilir? Kuyruk \0çıkışı mahvediyor mu? 0x0aYeni bir çizgi yazdırmanın alternatifleri var mı ?

Teşekkür ve saygılarımla.


Bu dizeyi yankılamaya çalıştığımda bunu tam olarak nasıl yapıyorsun? Tam olarak kullandığınız komut nedir?
Dennis

@Dennis demek istiyorum echo -e. Teşekkürler, bir çözüm buldum.
Summer_More_More_Tea

1
tercih edilen çözüm sadece printf "...\n"yerine kullanmaktır echo.
michael

Yanıtlar:


26

echoKomutu olan yeni satır karakteri "\ n". Aşağıdaki örneği alarak:

echo -e "This is line 1\nThis is line 2"

Çıktı ile sonuçlanır

This is line 1
This is line 2

"-E" parametresi olan Burada önemli.


3
btw, bu "echo -e ..."doğru bir şekilde çalışmak için bash'ın yankısına dayanır (örneğin, dashsadece "-e" yi basacaktır); ancak '/ bin / echo' da işe yarayabilir (veya çalışmayabilir). Ne yazık ki (belki de uygun bir şekilde), etrafta çok sayıda yankı var ve hangisini alacağınızı gerçekten önemsemek istemiyorsunuz. 'printf "....\n"Env ve kabuklarda kullanmak daha taşınabilir bir seçenektir.
michael

@michael_n aslında OP'nin sonunda geri döndüğü şey de bu . Ama soru açıkça "yankı ile" belirtiyordu - bu yüzden cevabım bu şekilde. Her neyse, "Bash ile" değildi - bu farklılıkları işaret ettiğiniz için teşekkürler!
Izzy

5

POSIX 7 yapamayacağınızı söylüyor

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e tanımlanmamıştır ve ters eğik çizgiler uygulama olarak tanımlanmıştır:

İlk işlenen -n ise veya işlenenlerden herhangi biri <backslash> karakteri içeriyorsa, sonuçlar uygulama tanımlıdır.

isteğe bağlı bir XSI uzantınız yoksa.

Bunun printfyerine şunu kullanın:

biçim işlenen XBD Dosya Biçimi Gösterimi [...] 'de açıklanan biçim dizesi olarak kullanılacaktır

Dosya Formatı Gösterim :

\ n <newline> Baskı konumunu sonraki satırın başına götür.

Ayrıca Ubuntu 15.10 ve dağıtımların çoğunun şu şekilde uygulandığını unutmayın echo:

  • Dahili Bash: help echo
  • bağımsız bir yürütülebilir dosya: which echo

bazı karışıklıklara yol açabilir.


2

Sonunda bu dizeyi düzgün bir şekilde biçimlendirdim printf "$string". Hepinize teşekkür ederim.


Bu nedir $stringbahsettiğiniz o? Bu soru ile nasıl bağlantılıdır? \nDiğer iki cevapta olduğu gibi ne içermiyor ?
Peter Mortensen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.