Saya perlu menempelkan kode bash multi-baris ke terminal, tetapi setiap kali saya melakukannya, setiap baris dijalankan sebagai perintah terpisah segera setelah ditempel.
107
Coba letakkan \
di akhir setiap baris sebelum menyalinnya.
Contoh:
echo "Hello world" && \
script_b.sh
echo $?
Kode keluar ( $?
) sekarang merupakan urutan lengkap dari perintah, dan bukan hanya perintah terakhir.
Saya sangat terkejut jawaban ini tidak ditawarkan di sini, saya sedang mencari solusi untuk pertanyaan ini dan saya pikir ini adalah pendekatan termudah, dan lebih fleksibel / pemaaf ...
Jika Anda ingin menempelkan beberapa baris dari situs web / editor teks / dll., Ke dalam bash, terlepas dari apakah itu perintah per baris atau fungsi atau seluruh skrip ... cukup mulai dengan a
(
dan diakhiri dengan a)
dan Enter, seperti pada contoh berikut:Jika saya memiliki gumpalan berikut
function hello { echo Hello! } hello
Anda dapat menempel dan memverifikasi di terminal menggunakan bash dengan:
Dimulai dengan
(
Menempelkan teks Anda, dan menekan Enter (untuk membuatnya cantik) ... atau tidak
Mengakhiri dengan a
)
dan menekan EnterContoh:
imac:~ home$ ( function hello { > echo Hello! > } > hello > ) Hello! imac:~ home$
Teks yang ditempelkan secara otomatis dilanjutkan dengan persiapan
>
untuk setiap baris. Saya telah menguji dengan banyak baris dengan perintah per baris, fungsi, dan seluruh skrip. Semoga ini membantu orang lain menghemat waktu!sumber
Jika Anda menekan
C-x C-e
perintah yang akan membuka editor default Anda yang ditentukan.bashrc
, setelah itu Anda dapat menggunakan semua fitur canggih dari editor Anda. Ketika Anda menyimpan dan keluar, garis akan menunggu Anda masuk.Jika Anda ingin mendefinisikan editor Anda, tulis saja untuk Ex.
EDITOR=emacs -nw
atauEDITOR=vi
di dalam~/.bashrc
sumber
emacs
dan yangvi
dilakukan), dan saat menyimpan dan keluar, perintah akan dijalankan secara instan .Selain backslash, jika garis diakhiri dengan
|
atau&&
atau||
, itu akan dilanjutkan pada baris berikutnya.sumber
Tambahkan tanda kurung di sekitar baris. Contoh:
$ ( sudo apt-get update dokku apps dokku ps:stop APP # repeat to shut down each running app sudo apt-get install -qq -y dokku herokuish sshcommand plugn dokku ps:rebuildall # rebuilds all applications )
sumber
(
, kawat gigi{
juga akan bekerja sama dalam contoh di atasKemungkinan lain:
bash << EOF echo "Hello" echo "World" EOF
sumber
Untuk mencegah baris perintah yang panjang dalam file teks, saya menyimpan cuplikan copy-pase saya seperti ini:
echo a;\ echo b;\ echo c
sumber
Coba cara ini:
echo $( cmd1 cmd2 ... )
sumber
iTerm menangani perintah banyak baris dengan sempurna, ini menyimpan perintah banyak baris sebagai satu perintah, kemudian kita dapat menggunakan
Cmd
+Shift
+;
untuk menavigasi riwayat.Lihat lebih banyak tip iTerm tentang Bekerja secara efektif dengan iTerm
sumber
Mencoba
Kemudian tempel baris Anda dan tekan Ctrl-D (masukkan karakter EOF). Semua masukan hingga Ctrl-D akan dialihkan ke cat's stdout.
sumber
$ out=$(cat) && eval "$out"
. tekan enter setelah baris terakhir lalu CTRL + D seperti yang disarankan di atas.