Pendahuluan
set
command adalah perintah shell Linux bawaan yang menampilkan dan menetapkan nama dan nilai variabel lingkungan shell dan Linux. Pada sistem operasi mirip Unix, set
fungsi perintah dalam shell Bourne (sh
), C shell (csh
), dan Korn shell (ksh
).
Dalam tutorial ini, Anda akan mempelajari apa yang set
perintah dan cara menggunakannya.
Prasyarat
- Sistem yang menjalankan Linux.
- Akses ke terminal/baris perintah.
Linux mengatur Sintaks Perintah
Sintaks umum untuk set
perintahnya adalah:
set [options] [arguments]
Opsi
Dalam konteks set
perintah, [options]
adalah pengaturan atau tanda yang disetel atau tidak disetel di lingkungan shell Bash. Gunakan untuk memengaruhi perilaku skrip shell yang ditentukan dan membantu menjalankan tugas yang diinginkan.
- Setel opsi dengan menggunakan tanda minus (
-
) diikuti dengan opsi yang sesuai. - Batalkan opsi dengan menggunakan tanda tambah (
+
) diikuti dengan opsi yang sesuai.
Argumen
[arguments]
adalah parameter posisi dan ditetapkan secara berurutan dengan parameter berikut:
$1
$2
- ...
$n
Tidak menentukan opsi atau argumen apa pun menyebabkan perintah mencetak semua variabel shell.
Keluar Nilai
set
perintah memiliki tiga nilai keluar:
0
. Menandai penyelesaian yang berhasil.1
. Kegagalan yang disebabkan oleh argumen yang tidak valid.2
. Kegagalan mengakibatkan pesan penggunaan, biasanya karena argumen tidak ada.
Linux mengatur Opsi Perintah
set
perintah menyediakan daftar pilihan yang luas yang dapat digabungkan.
Sebagian besar opsi memiliki -o flag
yang sesuai yang dapat digunakan untuk memanggil opsi. Tabel di bawah ini mencantumkan semua opsi dan bentuk alternatifnya masing-masing menggunakan -o flag
sintaks.
Opsi | -o bendera | Deskripsi |
---|---|---|
-a | -o allexport | Menandai semua variabel atau fungsi yang dibuat atau dimodifikasi untuk diekspor. |
-b | -o notify | Memperingatkan pengguna tentang penghentian pekerjaan di latar belakang. |
-e | -o errexit | Menginstruksikan shell untuk keluar jika perintah gagal, yaitu, jika mengeluarkan status keluar bukan nol. |
-f | -o noglob | Menonaktifkan pembuatan nama file (globbing). |
-h | -o hashall | Menemukan dan menyimpan perintah fungsi ketika suatu fungsi didefinisikan. -h opsi diaktifkan secara default. |
-k | -o keyword | Menempatkan semua argumen penetapan di lingkungan untuk sebuah perintah, bukan hanya yang mendahului nama perintah. |
-n | -o noexec | Membaca perintah tetapi tidak menjalankannya. |
-m | -o monitor | Menampilkan pesan saat tugas selesai. |
-p | -o privileged | Menonaktifkan $ENV pemrosesan file dan impor fungsi shell. -p opsi diaktifkan secara default ketika ID pengguna yang sebenarnya dan efektif tidak cocok. Menonaktifkannya akan menyetel uid dan gid yang efektif ke uid dan gid yang sebenarnya. |
-t | -o onecmd | Membaca satu perintah lalu keluar. |
-u | -o nounset | Memperlakukan variabel yang tidak disetel atau tidak ditentukan sebagai kesalahan saat mengganti (selama ekspansi parameter). Tidak berlaku untuk parameter khusus seperti wildcard * atau @ . |
-v | -o verbose | Mencetak baris input shell saat membacanya. |
-x | -o xtrace | Mencetak argumen perintah selama eksekusi. |
-B | -o braceexpand | Melakukan ekspansi penyangga shell. |
-C | -o noclobber | Mencegah menimpa file biasa yang ada dengan pengalihan output. Secara default, Bash mengizinkan keluaran yang dialihkan untuk menimpa file yang ada. |
-E | -o errtrace | Menyebabkan fungsi shell mewarisi perangkap ERR. |
-H | -o histexpand | Mengaktifkan penggantian riwayat gaya. Opsi ini aktif secara default saat shell bersifat interaktif. |
-P | -o physical | Mencegah tautan simbolis mengikuti saat menjalankan perintah. |
-T | -o functrace | Menyebabkan fungsi shell mewarisi jebakan DEBUG. |
-- | t/a | Menetapkan argumen yang tersisa ke parameter posisi. Jika tidak ada argumen yang tersisa, setel parameter posisi. |
- | t/a | Menetapkan argumen yang tersisa ke parameter posisi. Mematikan -x dan -v pilihan. |
t/a | -o emacs | Menggunakan dan antarmuka pengeditan baris bergaya emacs. |
t/a | -o history | Mengaktifkan riwayat perintah. |
t/a | -o ignoreeof | Shell tidak berhenti setelah membaca akhir file. |
t/a | -o interactive-comments | Mengizinkan komentar dalam perintah interaktif. |
t/a | -o nolog | Tidak merekam definisi fungsi dalam file riwayat. |
t/a | -o pipefail | Nilai kembalian dari sebuah pipeline adalah status dari perintah terakhir yang memiliki status bukan nol saat keluar. Jika tidak ada perintah yang memiliki status bukan nol saat keluar, nilainya adalah nol. |
t/a | -o posix | Menyebabkan Bash cocok dengan standar ketika operasi default berbeda dari standar Posix. |
t/a | -o vi | Menggunakan antarmuka pengeditan baris yang mirip dengan vi . |
Linux mengatur Contoh Perintah
Bagian ini mencantumkan contoh penggunaan paling umum dari set
perintah.
Menggunakan Perintah yang Diset Tanpa Opsi
Menjalankan perintah tanpa opsi atau argumen menghasilkan daftar semua pengaturan - nama dan nilai semua variabel dan fungsi shell. Karena daftarnya sangat panjang, Anda dapat menggulirnya menggunakan Page Up dan Page Down kunci.
Berikut adalah contoh sebagian set
keluaran perintah:
Men-debug Skrip
set
perintah sangat berguna ketika Anda mencoba untuk men-debug skrip Anda. Gunakan -x
opsi dengan set
perintah untuk melihat perintah mana dalam skrip Anda yang dieksekusi setelah hasilnya, memungkinkan Anda untuk menentukan hasil setiap perintah.
Contoh berikut menunjukkan cara men-debug skrip dengan set -x
. Ikuti langkah-langkah di bawah ini:
1. Jalankan set -x
:
set -x
2. Gunakan editor teks favorit Anda (kami menggunakan editor vi) untuk membuat skrip. Kami membuat loop sederhana yang memungkinkan kami melihat -x
efek opsi:
x=10
while [ $x -gt 0 ]; do
x=$[ $x-1 ]
echo $x
sleep 2
done
3. Pastikan untuk chmod skrip agar dapat dieksekusi. Langkah ini selalu wajib sebelum menjalankan skrip . Sintaksnya adalah:
chmod +x [script-name.sh]
4. Jalankan skrip. Sintaksnya adalah:
./[script-name.sh]
Output mencetak satu baris pada satu waktu, menjalankannya, menunjukkan hasil jika ada, dan pindah ke baris berikutnya.
Cara lain untuk mengaktifkan debugging adalah dengan menempatkan -x
tandai pada baris skrip shebang:
#!/bin/bash -x
Pengeksporan Skrip
Ekspor otomatis variabel atau fungsi apa pun yang dibuat menggunakan -a
pilihan. Mengekspor variabel atau fungsi memungkinkan subkulit dan skrip lain untuk menggunakannya.
Aktifkan ekspor skrip dengan menjalankan perintah berikut:
set -a
Contoh berikut menunjukkan cara kerja ekspor skrip. Ikuti langkah-langkah di bawah ini:
1. Buat skrip baru menggunakan editor pilihan Anda. Misalnya:
one=1
two=2
three=3
four=4
/bin/bash
/bin/bash
argumen menandai awal dari shell baru.
2. Periksa apakah skrip berfungsi di shell baru:
echo $one $two $three $four
Outputnya membuktikan bahwa fungsi yang kita buat telah diekspor dan berfungsi bahkan saat memulai shell baru.
Keluar Saat Perintah Gagal
Gunakan -e
opsi untuk menginstruksikan skrip untuk keluar jika menemukan kesalahan selama eksekusi. Menghentikan skrip yang berfungsi sebagian membantu mencegah masalah atau hasil yang salah.
Buat skrip dengan konten berikut untuk menguji opsi ini:
#!/bin/bash
set -e
cat nonexistingfile
echo "The end"
Pada contoh di atas, skrip menemui kesalahan saat mencoba menampilkan konten nonexistingfile
karena file itu tidak ada, menyebabkannya keluar pada saat itu. Jadi, echo
final terakhir perintah tidak dijalankan.
Mencegah Kehilangan Data
Pengaturan Bash default adalah untuk menimpa file yang ada. Namun, menggunakan -C
opsi mengonfigurasi Bash untuk tidak menimpa file yang ada saat pengalihan output menggunakan >
, >&
, atau <>
diarahkan ke file itu.
Misalnya:
Bash pertama memungkinkan kita untuk menimpa listing.txt
mengajukan. Namun, setelah menjalankan set -C
perintah, Bash mengeluarkan pesan yang menyatakan bahwa itu tidak dapat menimpa file yang ada.
Laporkan Variabel yang Tidak Ada
Pengaturan default di Bash adalah mengabaikan variabel yang tidak ada dan bekerja dengan yang sudah ada. Menggunakan -u
opsi mencegah Bash mengabaikan variabel yang tidak ada dan membuatnya melaporkan masalah.
Misalnya, skrip berikut tidak berisi set -u
perintah dan Bash mengabaikan $var2
. itu tidak didefinisikan.
#!/bin/bash
var1="123"
echo $var1 $var2
Keluaran hanya berisi $var1
.
Namun, mengubah skrip dan menambahkan set -u
perintah mencegah Bash mengabaikan masalah dan melaporkannya:
#!/bin/bash
set -u
var1="123"
echo $var1 $var2
Setel Parameter Posisi
set
perintah juga dapat menetapkan nilai ke parameter posisi. Parameter posisi adalah variabel shell yang nilainya direferensikan menggunakan sintaks berikut:
$[N]
[N]
nilai adalah digit yang menunjukkan posisi parameter. Misalnya, $1
adalah parameter posisi pertama, $2
adalah parameter kedua, dll.
Misalnya:
set first second third
Menjalankan perintah di atas set first
agar sesuai dengan $1
parameter posisi, second
ke $2
, dan third
ke $3
. Periksa ini dengan perintah echo:
echo $2
Hapus parameter posisi dengan menjalankan:
set --
Membagi String
Gunakan set
perintah untuk membagi string berdasarkan spasi menjadi variabel terpisah. Misalnya, pisahkan string dalam variabel yang disebut myvar
, yang mengatakan "Ini adalah ujian" .
myvar="This is a test"
set -- $myvar
echo $1
echo $2
echo $3
echo $4
Gunakan opsi ini untuk mengekstrak dan memfilter informasi dari output perintah, mirip dengan apa yang dilakukan perintah awk.
Setel allexport dan beri tahu Bendera
-o allexport
flag memungkinkan Anda untuk mengekspor semua variabel yang ditentukan selanjutnya secara otomatis, sedangkan -o notify
flag memerintahkan shell untuk segera mencetak pesan penyelesaian pekerjaan.
Untuk menyetel bendera, jalankan:
set -o allexport -o notify
Dalam contoh berikut, kami melihat bahwa shell memberi tahu Anda setelah penyelesaian pekerjaan latar belakang sejak skrip diekspor: