GNU/Linux >> Belajar Linux >  >> Linux

Jalankan menggabungkan beberapa perintah Linux dalam satu baris

Anda dapat memisahkan perintah menggunakan titik koma:

cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install

Apakah itu yang Anda maksud?


Jika Anda ingin menjalankan setiap perintah hanya jika yang sebelumnya berhasil, gabungkan mereka menggunakan && operator:

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

Jika salah satu perintah gagal, maka semua perintah lain yang mengikutinya tidak akan dijalankan.

Jika Anda ingin menjalankan semua perintah terlepas dari apakah yang sebelumnya gagal atau tidak, pisahkan dengan titik koma:

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

Dalam kasus Anda, saya rasa Anda menginginkan kasus pertama di mana eksekusi perintah berikutnya bergantung pada keberhasilan perintah sebelumnya.

Anda juga dapat meletakkan semua perintah dalam skrip dan menjalankannya sebagai gantinya:

#! /bin/sh

cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install

Garis miring terbalik di akhir baris ada untuk mencegah shell berpikir bahwa baris berikutnya adalah perintah baru; jika Anda menghilangkan garis miring terbalik, Anda harus menulis seluruh perintah dalam satu baris.

Cara yang lebih nyaman dibandingkan menggunakan garis miring terbalik dan && di mana-mana adalah menginstruksikan shell untuk keluar dari skrip jika ada perintah yang gagal. Anda melakukannya dengan menggunakan set fungsi bawaan dengan -e argumen. Dengan itu, Anda dapat menulis skrip dengan cara yang jauh lebih alami:

#! /bin/sh
set -e

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

Simpan itu ke file, misalnya myscript , dan membuatnya dapat dieksekusi:

chmod +x myscript

Anda sekarang dapat menjalankan skrip itu seperti program lain di mesin. Tetapi jika Anda tidak menempatkannya di dalam direktori yang terdaftar di PATH Anda variabel lingkungan (misalnya /usr/local/bin , atau pada beberapa distribusi Linux ~/bin ), maka Anda perlu menentukan jalur ke skrip tersebut. Jika berada di direktori saat ini, Anda menjalankannya dengan:

./myscript

Perintah dalam skrip bekerja dengan cara yang sama seperti perintah pada contoh pertama; perintah selanjutnya hanya dijalankan jika yang sebelumnya berhasil. Untuk eksekusi semua perintah tanpa syarat, jangan panggil set -e :

#! /bin/sh

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

Saya telah menemukan bahwa menggunakan; untuk memisahkan perintah hanya berfungsi di latar depan. misalnya:

cmd1; cmd2; cmd3 & - hanya akan mengeksekusi cmd3 di latar belakang, sedangkan cmd1 && cmd2 && cmd3 & - akan mengeksekusi seluruh rantai di latar belakang JIKA tidak ada kesalahan.

Untuk melayani eksekusi tanpa syarat, menggunakan tanda kurung menyelesaikan ini :

(cmd1; cmd2; cmd3) & - akan menjalankan rangkaian perintah di latar belakang, bahkan jika ada langkah yang gagal.


Untuk menjalankan semuanya sekaligus, Anda dapat menggunakan kunci jalur pipa "|" seperti itu:

$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install

Linux
  1. Jalankan Perintah Shell dari Program yang berjalan di WINE

  2. mengirim email dari terminal linux dalam satu baris

  3. Dapatkan baris ke-N dari banyak file di linux

  1. Kirim perintah ke beberapa sesi SSH dengan Terminator

  2. Perintah Linux untuk menampilkan informasi perangkat keras Anda

  3. matlab mengeksekusi skrip dari baris perintah linux

  1. Cara Menginstal Banyak Distribusi Linux pada Satu USB

  2. Jalankan Baris Perintah Dengan Satu Sudo?

  3. Tutorial Unix Sed:Cara Mengeksekusi Beberapa Perintah Sed