Saya perlu menempelkan kode bash multi-baris ke terminal, tetapi setiap kali saya melakukannya, setiap baris dijalankan sebagai perintah terpisah segera setelah ditempel.
Jawaban:
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 Enter
Contoh:
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!
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
atau EDITOR=vi
di dalam~/.bashrc
emacs
dan yang vi
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.
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
)
(
, kawat gigi {
juga akan bekerja sama dalam contoh di atas
Kemungkinan lain:
bash << EOF
echo "Hello"
echo "World"
EOF
Coba cara ini:
echo $(
cmd1
cmd2
...
)
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
Mencoba
out=$(cat)
Kemudian tempel baris Anda dan tekan Ctrl-D (masukkan karakter EOF). Semua masukan hingga Ctrl-D akan dialihkan ke cat's stdout.
$ out=$(cat) && eval "$out"
. tekan enter setelah baris terakhir lalu CTRL + D seperti yang disarankan di atas.