Nasıl çok satırlı bash kodlarını terminale yapıştırıp hepsini aynı anda çalıştırırım?


108

Terminale çok satırlı bir bash kodu yapıştırmam gerekiyor, ancak ne zaman yapsam, her satır yapıştırılır yapıştırılmaz ayrı bir komut olarak çalıştırılıyor.

Yanıtlar:


111

\Kopyalamadan önce her satırın sonuna koymayı deneyin .

Misal:

echo "Hello world" && \
script_b.sh

echo $?

Çıkış kodu ( $?) artık yalnızca son komut değil, tam komut dizisidir.


21
Not: Sondaki boşluklar onu kırar!
Max Reeder

56

Bu cevabın burada verilmemesine gerçekten şaşırdım, bu soruya bir çözüm arıyordum ve bence bu en kolay yaklaşım ve daha esnek / bağışlayıcı ...

Bir web sitesinden / metin düzenleyiciden / vb. Birden çok satırı bash'ye yapıştırmak isterseniz, satır başına komut veya işlev veya tüm komut dosyası olsun ... basitçe a ile başlayın (ve a )ve Enter ile bitirin , örneğin aşağıdaki örnekte:

Aşağıdaki blobum olsaydı

function hello {
    echo Hello!
}
hello

Bash kullanarak bir terminale yapıştırıp doğrulayabilirsiniz:

  1. İle başlayan (

  2. Metninizi yapıştırın ve Enter tuşuna basın (güzelleştirmek için) ... ya da değil

  3. A ile biten )ve Enter'a basılması

Misal:

imac:~ home$ ( function hello {
>     echo Hello!
> }
> hello
> )
Hello!
imac:~ home$ 

Yapıştırılan metin otomatik olarak >her satır için bir ön ekleme ile devam eder . Satır başına komutlar, işlevler ve tüm komut dosyaları içeren birden çok satırı test ettim. Umarım bu, başkalarının biraz zaman kazanmasına yardımcı olur!


4
en kolay yöntem IMO
Hobroker

1
@ Toolkit basit şeyler için açıkladığınız gibi çalışacaktır, ancak sunduğum çözüm daha karmaşık durumlar için (satır sonları, çoklu işlevler, tüm komut dosyaları vb.)
Try TryAgain

1
Bu, yapıştırılan komutları bir alt kabukta çalıştırır, böylece genellikle istediğinizi yapmaz. Geçerli kabukta çalışmaya zorlamak için parantez yerine kaşlı ayraç kullanabilirsiniz; ama gerçekten, sadece ikisini de yapma. Kabuk başa çıkabilir.
2018

34

C-x C-eTanımladığınız varsayılan düzenleyicinizi açacak komuta basarsanız .bashrc, bundan sonra editörünüzün tüm güçlü özelliklerini kullanabilirsiniz. Kaydedip çıktığınızda, satırlar girişinizi bekleyecektir.

Editörünüzü tanımlamak istiyorsanız, sadece Ex için yazın. EDITOR=emacs -nwveya EDITOR=viiçinde~/.bashrc


2
Teknik yararlıdır, ancak düzenleyicinin eşzamanlı olarak (olduğu gibi emacsve viyaptığı gibi) çalışması gerektiğine ve komutların kaydedilip çıkıldığında anında çalıştırılacağına dikkat edin .
mklement 0

16

Ters eğik çizgiye ek olarak, bir satır |veya &&veya ile biterse ||, sonraki satırda da devam eder.



12

Bir başka olasılık:

bash << EOF
echo "Hello"
echo "World"
EOF

5

Bir metin dosyasında uzun bir komut satırını önlemek için, kopya-ilerletme parçacıklarımı şu şekilde tutuyorum:

echo a;\
echo b;\
echo c

Bu cevap, 3 (&&) karakter yerine sadece 2 ile kabul edilen cevaba ulaşıyor gibi görünüyor. Kabul edilen cevap neden bu kadar tercih edilir?
al-ash


0

iTerm çok satırlı komutu mükemmel bir şekilde işler, birden çok satırlı komutu tek bir komut olarak kaydeder, ardından geçmişte gezinmek için Cmd+ Shift+ kullanabiliriz ;.

İTerm ile verimli çalışma konusunda daha fazla iTerm ipucu kontrol edin


-1

Deneyin

out=$(cat)

Ardından satırlarınızı yapıştırın ve Ctrl-D'ye basın (EOF karakterini girin). Ctrl-D'ye kadar olan tüm girişler kedinin standart çıkışına yönlendirilecektir.


Bu deneyin: $ out=$(cat) && eval "$out". son satırdan sonra enter tuşuna ve yukarıda önerildiği gibi CTRL + D'ye basın.
Mohamed Bana
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.