Mengapa pbpaste mengembalikan kursor pada baris baru di bash?

1

Saya menjalankan perintah pbpastedi Terminal (bash) untuk mendapatkan hasil clipboard saya, tetapi tidak seperti perintah lain yang meninggalkan kursor pada baris baru di bawah stdout sebelumnya, pbpastemeninggalkannya di sebelah kanannya, seperti pada contoh, menunjukkan perintah diapit di antara dua echo hellos:

hostname:~ jesse$ echo hello
hello
hostname:~ jesse$ pbpaste
https://itunes.apple.com/us/app/noizio/id928871589?mt=12hostname:~ jesse$ echo hello
hello
hostname:~ jesse$ 

Kenapa seperti ini? Tampaknya sangat aneh dan membuatnya sulit dibaca.

jsejcksn
sumber
Apa tepatnya yang Anda salin?
Tandai
@ Mark Karakter dalam string pada baris 4 dari kode saya sebelum "hostname"
jsejcksn

Jawaban:

6

pasta pbpaste persis apa yang Anda salin.

Dalam kasus Anda, Anda telah menyalin baris yang tidak termasuk CR / LF di akhir. Untuk mendapatkan pengembalian, Anda harus menyalin dari awal baris ke awal baris berikutnya

Dari @patrix komentar

Kebanyakan perintah diakhiri dengan CR / LF. misalnya echo "Hello"akan mengeluarkan baris baru, namun untuk gema ini dapat diubah echo -n "Hello".

Jika mau, Anda dapat menambahkan baris baru setelah pbpaste dengan menggunakan echo "$(pbpaste)".

Menandai
sumber
Jadi apa yang Anda katakan adalah bahwa hampir semua perintah lain dengan output menyertakan baris baru yang berhenti?
jsejcksn
@JesseJackson Tidak secara langsung. pbpastemenampilkan apa pun yang ada di clipboard, yang biasanya tidak mengandung baris baru. echo some textmenambahkan baris baru secara default, tetapi itu adalah sesuatu yang dapat Anda cegah agar tidak terjadi echo -n some text. Jika Anda ingin memastikan baris baru setelahnya pbpaste, gunakan echo $(pbpaste)saja.
nohillside
@patrix Perintah lain mana yang tidak menyertakan baris baru secara default? Saya belum pernah melihat perilaku ini di bash sebelum menggunakan perintah pbpaste.
jsejcksn
@JesseJackson tidak banyak tetapi pbpaste menyalin yang didapatnya yang perlu digunakan di mana ia diganti di tengah perintah. Seperti yang saya perhatikan cut dan paste biasanya bagi saya memotong baris baru saat saya menyalin ke awal baris. Lihat juga pertanyaan tentang python tanpa garis baca
Mark
@JesseJackson Perbedaannya adalah antara perintah yang dimaksudkan untuk menampilkan beberapa teks di Terminal (seperti echo, lsdll.) Dan perintah yang dimaksudkan untuk mengembalikan teks / data dari suatu tempat. Yang pertama menambahkan baris baru secara otomatis, kemudian hanya mengembalikan (mencetak) apa pun yang mereka dapatkan (yang dalam hal clipboard mungkin atau mungkin tanpa baris baru).
nohillside
-1

Ini tidak secara langsung menjawab pertanyaan Anda tentang pbpaste secara khusus, tetapi saya adalah pengguna zsh (dengan oh-my-zsh ) dan menangani skenario yang Anda gambarkan dengan hasil yang Anda inginkan untuk keluaran terminal apa pun.

  ~ echo -n hello
hello%                                                                          
  ~
  ~
  ~ /bin/bash
bash-3.2$ echo -n hello
hellobash-3.2$

Saya menyadari itu mengeluarkan bazooka untuk membunuh nyamuk , tetapi itu memecahkan masalah Anda yang sebenarnya di mana kurangnya garis baru tentang apa yang Anda tempel tidak ditangani dengan baik.

ikan paus
sumber
Info bagus, bahkan jika itu tidak relevan.
jsejcksn