Bagaimana cara membuat file skrip untuk perintah terminal?

114

Di Windows saya dapat menulis file yang berisi perintah untuk cmd (biasanya .cmdatau .batfile). Ketika saya mengklik file-file itu akan membuka cmd.exedan menjalankannya perintah file berisi.

Bagaimana saya melakukan ini di Ubuntu?

Saya yakin ini adalah duplikat, tetapi saya tidak dapat menemukan jawaban saya.
Mirip dengan pertanyaan-pertanyaan ini, tetapi mereka tidak menjawab pertanyaan:

Menyimpan perintah terminal yang sering digunakan dalam file

CMD.exe Emulator di Ubuntu untuk menjalankan file .cmd / .bat

Seth
sumber

Jawaban:

150

Ada dua metode.

Pertama, yang paling umum adalah menulis file, pastikan baris pertama adalah

#!/bin/bash

Kemudian simpan file tersebut. Selanjutnya tandai itu dapat dieksekusi menggunakanchmod +x file

Kemudian ketika Anda mengklik (atau menjalankan file dari terminal) perintah akan dieksekusi. Secara konvensional file-file ini biasanya tidak memiliki ekstensi, namun Anda dapat membuatnya berakhir .shatau dengan cara lain.

Beberapa catatan:

  • File apa pun (dan maksud saya apa saja) dapat dieksekusi di Linux asalkan baris pertama adalah jalur ke program yang harus menginterpretasikan file tersebut. Contoh umum termasuk /bin/python, /bin/sh, /bin/dash, tapi bahkan aneh bola hal bekerja seperti/bin/mysql
  • Bash adalah bahasa lengkap. Ini jauh lebih kompleks daripada cmd.exe di windows. Ini memiliki bahasa pemrograman yang kuat yang mendukung fungsi, loop, kondisional, operasi string, dll.
  • Dokumen-dokumen ini dapat membantu jika Anda mengalami masalah.
  • Jika Anda tidak ingin membuat file tersebut dapat dieksekusi maka Anda dapat menjalankannya dengan meneruskannya sebagai argumen untuk bash: bash file/to/run.sh

Contoh Bash Sederhana

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

Metode kedua adalah merekam perintah menggunakan script. Jalankan scriptkemudian lakukan saja. Ketika Anda selesai melakukan jenis barang exitdan skrip akan menghasilkan file untuk Anda dengan semua "barang" yang Anda lakukan. Ini kurang digunakan tetapi berfungsi cukup baik untuk membuat hal-hal seperti makro. man scriptuntuk info lebih lanjut.

coteyr
sumber
Anda mungkin ingin perubahan itu /bin/bashuntuk /bin/sh, bash bahkan tidak default untuk Ubuntu.
TC1
@ TC1 Terinstal secara default, jadi tidak masalah apakah itu default atau tidak.
Carlos Campderrós
1
Saya ingin menunjukkan bahwa /bin/dash(yang /bin/shbiasanya disatukan), jauh lebih cepat daripada bash (saya mengukur sekitar 15 kali lebih cepat). Jika memungkinkan, gunakan /bin/dashuntuk skrip shell :)
MiJyn
4
Jika Anda berada di folder yang sama dengan file pastikan untuk ./file.sh
coteyr
1
Saya mencoba kedua metode, tetapi jika saya mencoba mengklik dua kali file skrip bash, itu hanya membuka file teks di geany / gedit yang siap diedit. Saya ingin skrip dieksekusi pada klik dua kali. Pertanyaan ini memiliki lebih banyak detail mengenai apa yang ingin saya lakukan.
thymaro
15

Maksud Anda menulis ke file menggunakan skrip shell? Berikut ini beberapa cara:

touch file

Metode ini hanya akan membuat file, tetapi jika file sudah ada, itu hanya mengubah tanggal modifikasi ke waktu Anda menggunakan perintah itu.

echo "text" > file

Metode itu menimpa konten fileuntuk text. Jika Anda ingin menghapus file, Anda bisa melakukan ini:

echo "" > file

Katakanlah Anda ingin menulis lebih dari satu baris untuk itu, dan Anda tidak ingin menggunakan ribuan echoperintah, Anda akan menggunakan perintah ini:

cat << EOF > file
test
test1
foo
bar
EOF

Itu memungkinkan Anda untuk menulis beberapa baris dalam satu perintah. Isi dari ini fileakan menjadi ini:

test
test1
foo
bar

Jika Anda ingin menambahkan file, ganti >ke >>.

Semoga ini membantu!


EDIT : Oh, begitu, jadi Anda akan menulis file di gedit, menggunakan .shekstensi (opsional, tapi itu ide yang bagus), dan kemudian pada manajer file, klik kanan pada file tersebut, pilih Properties-> Izin, dan periksa Allow executing file as program. Kemudian Anda dapat mengklik dua kali di atasnya dan itu akan berjalan :). Juga, jika Anda ingin melakukannya di terminal, Anda dapat menjalankan perintah ini untuk membuatnya dapat dieksekusi (Anda mungkin ingin menambahkan sudojika itu bukan milik Anda):

chmod +x file

Dan untuk menjalankan:

./file
MiJyn
sumber
Sebenarnya yang ingin saya lakukan adalah menulis file, katakan gedit, yang berisi perintah terminal. Kemudian ketika saya klik dua kali file ini, ia akan menjalankan perintah-perintah di terminal.
Seth
Jawaban yang bagus, perbarui perhatian. Untuk sekadar membuat file, saya selalu hanya menggunakantouch filename
TryTryAgain
@TryTryAgain, ya itu metode yang mudah, mungkin lebih cepat daripada echo "" > file. Apakah boleh jika saya memasukkan metode itu dalam jawaban saya?
MiJyn
@ Mijyn Benar-benar memasukkannya, jangan ragu. Terima kasih
TryTryAgain
Bagaimana saya bisa menjalankannya di terminal mana saja ... seperti perintah global?
Omer
14

Setara dengan file batch Windows adalah skrip shell, dan panduan memulai yang sangat baik adalah Bash Scripting .

Sebagian besar, perintah yang dapat Anda masukkan pada baris perintah dapat ditempatkan dalam skrip shell.

Beberapa hal yang berbeda dari file batch Windows:

  • Ada penerjemah perintah yang berbeda, yang disebut cangkang. Defaultnya adalah bash, tetapi jika Anda tertarik, ada yang lain, seperti zsh, ksh, dash, perl, python, dll.

  • Untuk menjalankan skrip shell, Anda perlu membuat file tersebut dapat dieksekusi, yang dapat Anda lakukan dengan chmod +x <filename>

  • Di Ubuntu, direktori saat ini bukan jalur pencarian program, jadi Anda harus menjalankannya ./<filename>, bukan<filename>

  • Nama variabel $<varname>tidak%<varname>%

  • Perintah dalam skrip shell tidak dicetak secara default, seperti dalam file batch.

  • Ekstensi nama file bisa .shatau (lebih umum) Anda tidak perlu menggunakan ekstensi. Letakkan #!/bin/bashdi baris pertama file , yang memberi tahu Ubuntu program apa yang digunakan untuk menjalankan file.

  • Komentar dimulai dengan #, bukan rem.

Semoga ini bisa membantu dan bersenang-senang scripting!

aku percaya
sumber