-
Operasi Dasar
1.1. Operasi File
1.2. Operasi Teks
1.3. Operasi Direktori
1.4. SSH, Informasi Sistem & Operasi Jaringan
1.5. Operasi Monitoring Proses -
Basic Shell Programming
2.1. Variabel
2.2. Array
2.3. Substitusi String
2.4. Triks String Lainnya
2.5. Fungsi
2.6. Pernyataan Kondisional
2.7. Pengulangan
Menampilkan semua variabel lingkungan (environment variable). Jika Anda ingin mendapatkan detail dari variabel tertentu, bisa mengunakan echo $VARIABLE_NAME
.
export
Contoh:
$ export
AWS_HOME=/Users/kastau/.aws
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LESS=-R
$ echo $AWS_HOME
/Users/kastau/.aws
whatis menampilkan deskripsi dari perintah yang diinputkan user atau pengguna, system calls, library functions, dan lainnya pada terminal.
whatis something
Example:
$ whatis bash
bash (1) - GNU Bourne-Again SHell
whereis digunakan untuk mencari executable file, source filesnya, dan ditampilkan di terminal menggunakan database yang dibuat oleh sistem secara otomatis.
whereis name
Example:
$ whereis php
/usr/bin/php
which digunakan untuk mencari executable file yang ada di direktori tertentu yang sudah ditentukan sebelumnya oleh PATH environment variable. Perintah ini akan menampilkan PATH
dari executable file yang ingin kamu cari.
which program_name
Example:
$ which php
/c/xampp/php/php
Menghapus isi dari console atau terminal.
cat | chmod | chown | cp | diff | file | find | gunzip | gzcat | gzip | head |
lpq | lpr | lprm | ls | more | mv | rm | tail | touch |
Ini dapat digunakan untuk tujuan berikut di dalam UNIX atau Linux.
- Menampilkan file teks di terminal
- Menyalin file teks
- Menggabungkan 2 file teks
- Membuat file teks baru
cat filename
cat file1 file2
cat file1 file2 > newcombinedfile
cat < file1 > file2 #salin file1 ke file2 file1 > file2 #salin file1 ke file2
Perintah atau command chmod adalah singkatan dari "change mode" yang memungkinkan Kita untuk mengubah izin read
, write
, dan execute
pada file dan folder. Untuk informasi lebih lanjut tentang perintah ini, kunjungi tautan berikut Link.
chmod -options filename
Perintah chown yang merupakan singkatan dari "change owner", memungkinkan Kita untuk mengubah pemilik atau owner dari file atau folder, yang mana dapat berupa user atau group. Kombinasi penggunaannya yaitu user (owner), kemudian groupnya, yang dipisahkan oleh titik dua (:)
.
chown -options user:group filename
Menyalin file dari satu lokasi ke lokasi lain.
cp filename1 filename2
Dimana filename1
adalah file sumbernya dan filename2
adalah file destinasinya.
Gunakan opsi -r
untuk menyalin direktori.
cp -r dir1 dir2
Membandingkan file, dan membuat daftar perbedaannya.
diff filename1 filename2
Menentukan tipe atau jenis dari suatu file.
file filename
Example:
$ file index.html
index.html: HTML document, ASCII text
Menemukan suatu file dalam direktori tertentu.
find directory options pattern
Example:
find . -name README.md
find /home/user1 -name '*.png'
Membuka kompresi file yang dikompresi oleh gzip.
gunzip filename
Memungkinkan Anda melihat file gzip tanpa harus melakukan gunzip.
gzcat filename
Kompres file.
gzip filename
Menampilkan informasi dari 10 baris pertama suatu file.
head filename
Melihat antrian printer.
lpq
Contoh:
$ lpq
Rank Owner Job File(s) Total Size
active adnanad 59 demo 399360 bytes
1st adnanad 60 (stdin) 0 bytes
Digunakan untuk print suatu file.
lpr filename
Menghapus job dari antrian printer.
lprm jobnumber
Menampilkan list file atau direktori. ls
memiliki banyak opsi: -l
mencantumkan file dalam 'format panjang', yang berisi ukuran file yang tepat, siapa pemilik file, siapa yang berhak melihatnya, dan kapan file tersebut terakhir dimodifikasi. -a
mencantumkan semua berkas, termasuk berkas tersembunyi. Untuk informasi lebih lanjut mengenai perintah ini, lihat [link] ini (https://ss64.com/bash/ls.html).
ls option
Example:
$ ls -la rwxr-xr-x 33 adnan staff 1122 Mar 27 18:44 . drwxrwxrwx 60 adnan staff 2040 Mar 21 15:06 .. -rw-r--r--@ 1 adnan staff 14340 Mar 23 15:05 .DS_Store -rw-r--r-- 1 adnan staff 157 Mar 25 18:08 .bumpversion.cfg -rw-r--r-- 1 adnan staff 6515 Mar 25 18:08 .config.ini -rw-r--r-- 1 adnan staff 5805 Mar 27 18:44 .config.override.ini drwxr-xr-x 17 adnan staff 578 Mar 27 23:36 .git -rwxr-xr-x 1 adnan staff 2702 Mar 25 18:08 .gitignore
Menampilkan bagian pertama dari file (gunakan spasi untuk navigasi dan ketik q untuk keluar).
more filename
Memindahkan file dari satu lokasi ke lokasi lainnya.
mv filename1 filename2
Yang mana filename1
adalah file sumbernya filename2
adalah destinasinya.
Juga digunakan untuk mengganti nama atau rename file.
mv old_name new_name
Digunakan untuk menghapus file. Akan error jika command ini digunakan untuk menghapus direktori.
rm: directory: is a directory
Untuk menghapus direktori cukup tambahkan argumen -r
sehingga akan menghapus isi direktori secara rekursif. Opsi lainnya yaitu jika ingin mengahapus file atau direktori tanpa konfirmasi terlebih dahulu gunakan argumen -f
.
rm filename
Mengeluarkan 10 baris terakhir dari file. Gunakan -f
untuk menampilkan data yang ditambahkan saat file bertambah.
tail filename
Memperbarui akses dan time stamps dari file. Kita juga bisa memanfaatkan touch untuk membuat file baru.
touch filename
Contoh:
touch trick.md
awk | cut | echo | egrep | fgrep | fmt | grep | nl | sed | sort |
tr | uniq | wc |
awk adalah perintah yang sangat berguna dalam menangani file teks. Beroperasi pada file baris per baris. Secara default menggunakan spasi untuk memisahkan bidang-bidangnya. Berikut ini sintaks-sintaks yang umum digunakan
awk '/search_pattern/ { action_to_take_if_pattern_matches; }' file_to_parse
Mari kita ambil contoh dari file berikut /etc/passwd
. Berikut data ada:
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
Sekarang coba kita dapatkan usernamenya saja dari file tadi. Dimana -F
menentukan basis mana yang dipisahkan. dalam kasus ini :
. { print $1 }
artinya mencetak bidang pertama yang cocok.
awk -F':' '{ print $1 }' /etc/passwd
Setelah menjalankan perintah tersebut dalam menghasilkan output atau keluaran seperti berikut.
root
daemon
bin
sys
sync
Untuk informasi lebih lanjut mengenai penggunaan awk
, cek link berikut link.
Hapus bagian tertentu dari baris teks tertentu
example.txt
red riding hood went to the park to play
tunjukkan kolom 2 , 7 , dan 9 dengan spasi sebagai pemisah
cut -d " " -f2,7,9 example.txt
riding park play
Menampilkan setiap baris dalam teks
tampilkan "Hello World"
echo Hello World
Hello World
tampilkan "Hello World" dengan baris baru di antara kata-kata (enter)
echo -ne "Hello\nWorld\n"
Hello
World
Mencetak baris dengan pola yang diinginkan - Extended Expression (alias for: 'grep -E')
example.txt
Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.
tampilkan baris yang memiliki "Lorem" or "dolor" di dalamnya.
egrep '(Lorem|dolor)' example.txt
or
grep -E '(Lorem|dolor)' example.txt
Lorem ipsum
dolor sit amet,
et dolore magna
duo dolores et ea
sanctus est Lorem
ipsum dolor sit
Mencetak baris yang cocok dengan pola - FIXED pattern matching (alias for: 'grep -F')
example.txt
Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
foo (Lorem|dolor)
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.
Menemukan string yang tepat '(Lorem|dolor)' in example.txt
fgrep '(Lorem|dolor)' example.txt
or
grep -F '(Lorem|dolor)' example.txt
foo (Lorem|dolor)
Format teks dengan simpel
example: example.txt (1 line)
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
keluaran example.txt hingga 20 baris
cat example.txt | fmt -w 20
Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.
Mencari teks di dalam file. Anda dapat menggunakan grep untuk mencari baris teks yang cocok dengan satu atau banyak ekspresi reguler, dan hanya mengeluarkan baris yang cocok.
grep pola namafile
Contoh:
$ grep admin /etc/passwd
_kadmin_admin:*:218:-2:Kerberos Admin Service:/var/empty:/usr/bin/false
_kadmin_changepw:*:219:-2:Kerberos Change Password Service:/var/empty:/usr/bin/false
_krb_kadmin:*:231:-2:Open Directory Kerberos Admin Service:/var/empty:/usr/bin/false
Anda juga dapat memaksa grep untuk mengabaikan huruf besar/kecil dengan menggunakan opsi -i
. -r
dapat digunakan untuk mencari semua file didalam direktori tertentu, contohnya:
grep -r admin /etc/
Dan -w
untuk mencari kata saja. Untuk detail lebih lanjut tentang grep
, silahkan kunjungi [link] berikut (https://www.cyberciti.biz/faq/grep-in-bash).
Menghitung jumlah baris dari sebuah file teks
example.txt
Lorem ipsum
dolor sit amet,
consetetur
sadipscing elitr,
sed diam nonumy
eirmod tempor
invidunt ut labore
et dolore magna
aliquyam erat, sed
diam voluptua. At
vero eos et
accusam et justo
duo dolores et ea
rebum. Stet clita
kasd gubergren,
no sea takimata
sanctus est Lorem
ipsum dolor sit
amet.
tampilkan example.txt dengan nomor barisnya
nl -s". " example.txt
1. Lorem ipsum
2. dolor sit amet,
3. consetetur
4. sadipscing elitr,
5. sed diam nonumy
6. eirmod tempor
7. invidunt ut labore
8. et dolore magna
9. aliquyam erat, sed
10. diam voluptua. At
11. vero eos et
12. accusam et justo
13. duo dolores et ea
14. rebum. Stet clita
15. kasd gubergren,
16. no sea takimata
17. sanctus est Lorem
18. ipsum dolor sit
19. amet.
Sed atau kepanjangannya Stream editor
biasas digunakan untuk memfilter dan mengubah teks
example.txt
Hello This is a Test 1 2 3 4
ganti semua spasi dengan tanda hubung
sed 's/ /-/g' example.txt
Hello-This-is-a-Test-1-2-3-4
ganti semua digit/angka dengan "d"
sed 's/[0-9]/d/g' example.txt
Hello This is a Test d d d d
Mengurutkan baris file teks
example.txt
f
b
c
g
a
e
d
mengurutkan example.txt
sort example.txt
a
b
c
d
e
f
g
mengacak yang sebelumnya sudah disort example.txt
sort example.txt | sort -R
b
f
a
c
d
g
e
Menerjemahkan atau menghapus karakter.
example.txt
Hello World Foo Bar Baz!
mengambil semua huruf kecil dan menjadikannya huruf kapital
cat example.txt | tr 'a-z' 'A-Z'
HELLO WORLD FOO BAR BAZ!
mengganti semua spasi dengan menjadikannya sebagai baris baru
cat example.txt | tr ' ' '\n'
Hello
World
Foo
Bar
Baz!
Laporkan atau hilangkan baris yang berulang
example.txt
a
a
b
a
b
c
d
c
tampilkan hanya baris-baris unik dari example.txt (pertama-tama Anda harus mengurutkannya, jika tidak maka tidak akan terlihat tumpang tindih)
sort example.txt | uniq
a
b
c
d
tampilkan item unik untuk setiap baris, dan beri tahu saya berapa banyak contoh yang ditemukan
sort example.txt | uniq -c
3 a
2 b
2 c
1 d
Memberitahukan kepada Kita berapa banyak baris, kata, dan karakter yang ada dalam file.
wc filename
Contoh:
$ wc demo.txt
7459 15915 398400 demo.txt
Di mana 7459
adalah jumlah baris, 15915
adalah jumlah kata, dan 398400
adalah jumlah karakter.
cd | mkdir | pwd |
Navigasi dari satu direktori ke direktori lainnya. Coba jalankan ini:
cd
memindahkan Kita ke direktori home. Perintah ini menerima sebuah dirname
opsional, yang akan memindahkan Anda ke direktori tersebut.
cd dirname
Membuat direktori baru.
mkdir dirname
Anda dapat menggunakan ini untuk membuat beberapa direktori sekaligus di dalam direktori Anda saat ini.
mkdir 1stDirectory 2ndDirectory 3rdDirectory
Anda juga dapat menggunakan ini untuk membuat direktori utama pada saat yang sama dengan flag -p (atau --parents). Sebagai contoh, jika Anda menginginkan direktori bernama 'project1' di subdirektori lain di '/samples/bash/projects/', Anda dapat menjalankan:
mkdir -p /samples/bash/projects/project1
mkdir --parents /samples/bash/projects/project1
Kedua perintah di atas akan melakukan hal yang sama. Jika salah satu direktori ini belum ada, maka direktori tersebut akan dibuat juga.
Memberi tahu Anda di direktori mana Anda saat ini berada (posisi saat ini).
pwd
bg | cal | date | df | dig | du | fg | finger | jobs | last |
man | passwd | ping | ps | quota | scp | ssh | top | uname | uptime |
w | wget | whoami | whois | sync | curl |
Melihat daftar pekerjaan (jobs) yang dihentikan atau proses yang berjalan dilatar belakang (background); melanjutkan pekerjaan yang dihentikan di latar belakang.
Menampilkan kalender dalam format bulan.
Menampilkan tanggal dan waktu saat ini.
Menunjukkan penggunaan disk.
Mendapatkan informasi DNS dari suatu domain.
dig domain
Menunjukkan penggunaan disk dari file atau direktori. Untuk informasi lebih lanjut mengenai perintah ini, lihat [link] ini (http://www.linfo.org/du.html).
du [option] [filename|directory]
Options:
-h
(human readable) Menampilkan output dalam kilobyte (K), megabyte (M), dan gigabyte (G).-s
(supress or summarize) Menghasilkan total ruang disk dari suatu direktori dan menyembunyikan laporan untuk subdirektori.
Example:
du -sh pictures
1.4M pictures
Menampilkan pekerjaan terbaru di latar depan (foreground).
Menampilkan informasi dari pengguna tertentu.
finger username
Mencantumkan pekerjaan yang berjalan di latar belakang, dengan memberikan penomoran pada pekerjaan itu.
Mencantumkan login terakhir dari pengguna tertentu.
last yourUsername
man
atau manual
digunakan untuk menampilkan panduan dari perintah tertentu.
man command
Memungkinkan pengguna yang masuk saat ini untuk mengubah kata sandi mereka (password).
Mem-ping host dan menampilkan hasilnya.
ping host
Menampilkan daftar proses Anda.
ps -u yourusername
Gunakan flag ef. e untuk setiap proses dan f untuk daftar lengkap.
ps -ef
Menampilkan berapa kuota disk yang dimiliki.
quota -v
Mentransfer file antara host lokal dan host jarak jauh atau antara dua host jarak jauh (remote host).
menyalin dari host lokal ke host jarak jauh (remote host)
scp source_file user@host:directory/target_file
menyalin dari host jarak jauh ke host lokal
scp user@host:directory/source_file target_file
scp -r user@host:directory/source_folder target_folder
Perintah ini juga menerima opsi -P
yang dapat digunakan untuk konek ke port tertentu.
scp -P port user@host:directory/source_file target_file
ssh (SSH client) adalah program untuk mengakses mesin(komputer) dan menjalankan perintah pada mesin tersebut.
ssh user@host
Perintah ini juga menerima opsi -p
yang dapat digunakan untuk konek ke port tertentu.
ssh -p port user@host
Menampilkan proses Anda yang sedang aktif.
Menampilkan informasi kernel.
uname -a
Menunjukkan waktu aktif saat ini.
Menampilkan siapa yang sedang online.
Downloads file.
wget file
Menampilkan nama pengguna yang kita pakai saat ini.
Gets whois information for domain.
whois domain
Melakukan pekerjaan yang sama persis dengan perintah scp
, tetapi hanya mentransfer file yang diubah. Berguna saat mentransfer folder yang sama ke/dari server beberapa kali.
rsync source_folder user@host:target_folder
rsync user@host:target_folder target_folder
Curl adalah alat bantu untuk meminta atau mengirim data menggunakan sintaks URL. Berguna pada sistem di mana Anda hanya memiliki terminal yang tersedia untuk membuat berbagai permintaan.
curl url
Gunakan -X
atau --request
untuk menentukan metode mana yang ingin Anda panggil (GET, POST, DELETE, ...).
Gunakan -d <data>
atau --data <data>
untuk POST data pada URL tertentu.
kill | killall | & | nohup |
Mengakhiri proses dengan ID yang Anda berikan.
kill PID
Mengakhiri semua proses berdasarkan namanya.
killall namaproses
Simbol &
menginstruksikan perintah untuk dijalankan sebagai proses latar belakang (background) dalam subshell.
command &
nohup adalah singkatan dari "No Hang Up". Ini memungkinkan untuk menjalankan perintah/proses atau skrip shell yang dapat terus berjalan di latar belakang setelah Anda keluar dari shell.
nohup command
Kombinasikan dengan &
untuk membuat proses latar belakang.s
nohup command &
Baris pertama yang akan Anda tulis dalam file skrip bash disebut shebang
. Baris ini dalam skrip apa pun menentukan kemampuan skrip untuk dieksekusi seperti eksekusi mandiri tanpa mengetikkan sh, bash, python, php, dan lain-lain terlebih dahulu di terminal.
#!/usr/bin/env bash
Membuat variabel dalam bash mirip dengan bahasa lain. Tidak ada tipe data. Variabel dalam bash dapat berisi angka, karakter, string karakter, dll. Anda tidak perlu mendeklarasikan variabel, cukup dengan memberikan nilai pada referensinya saja sudah cukup untuk membuatnya.
Contoh:
str="hello world"
Baris di atas membuat variabel str
dan menetapkan "hello world" ke variabel tersebut. Nilai variabel diambil dengan meletakkan $
di awal nama variabel.
Contoh:
echo $str # hello world
Seperti bahasa lain, bash juga memiliki array. Sebuah array adalah sebuah variabel yang berisi banyak nilai. Tidak ada batasan maksimum pada ukuran array. Array dalam bash berbasis nol. Elemen pertama diindeks dengan elemen 0. Ada beberapa cara untuk membuat array di bash yang diberikan di bawah ini.
Contoh:
array[0]=val
array[1]=val
array[2]=val
array=([2]=val [0]=val [1]=val)
array=(val val val)
Untuk menampilkan nilai pada indeks tertentu, gunakan sintaks berikut:
${array[i]} # dimana i adalah indeksnya
Jika tidak ada indeks yang diberikan, elemen larik 0 diasumsikan. Untuk mengetahui berapa banyak nilai yang ada dalam larik, gunakan sintaks berikut:
${#array[@]}
Bash juga mendukung kondisi terner. Lihat beberapa contoh di bawah ini.
${varname:-word} # jika varname ada dan bukan null, kembalikan nilainya; jika tidak, kembalikan kata
${varname:=word} # jika varname ada dan bukan null, kembalikan nilainya; jika tidak, setel kata dan kembalikan nilainya
${varname:+word} # jika varname ada dan bukan null, kembalikan kata; jika tidak, kembalikan null
${varname:offset:length} # melakukan ekspansi substring. Ini mengembalikan substring dari $varname mulai dari offset dan sampai dengan panjang karakter
Periksa beberapa sintaks tentang cara memanipulasi string
${variabel#pola} # jika pola cocok dengan awal nilai variabel, hapus bagian terpendek yang cocok dan kembalikan sisanya
${variabel#pola} # jika pola cocok dengan awal nilai variabel, hapus bagian terpanjang yang cocok dan kembalikan sisanya
${variabel%pola} # jika pola cocok dengan akhir nilai variabel, hapus bagian terpendek yang cocok dan kembalikan sisanya
${variabel%%pola} # jika pola cocok dengan akhir nilai variabel, hapus bagian terpanjang yang cocok dan kembalikan sisanya
${variabel/pola/string} # kecocokan terpanjang dengan pola dalam variabel diganti dengan string. Hanya kecocokan pertama yang diganti
${variabel//pola/string} # kecocokan terpanjang dengan pola dalam variabel diganti dengan string. Semua kecocokan diganti
${#varname} # mengembalikan panjang nilai variabel sebagai string karakter
Bash memiliki beberapa trik singkatan untuk melakukan berbagai hal pada string.
${variabel ,,} #ini mengubah setiap huruf dalam variabel menjadi huruf kecil
${variabel^^} #ini mengubah setiap huruf dalam variabel menjadi huruf besar
${variabel:2:8} #ini mengembalikan substring dari sebuah string, dimulai dari karakter pada indeks ke-2 (string dimulai dari indeks 0, jadi ini adalah karakter ke-3),
#Substring akan memiliki panjang 8 karakter, jadi ini akan mengembalikan string yang terdiri dari karakter ke-3 hingga ke-11.
Berikut ini beberapa trik pencocokan pola yang praktis
if [ [ "$variabel" == *subString* ]] #ini mengembalikan nilai true jika substring yang diberikan ada di dalam variabel
if [[ "$variabel" != *subString* ]] #ini mengembalikan nilai true jika substring yang diberikan tidak ada di dalam variabel
if [[ "$variabel" == subString* ]] #ini mengembalikan nilai true jika variabel dimulai dengan subString yang diberikan
if [[ "$variabel" == *subString ]] #ini mengembalikan nilai true jika variabel diakhiri dengan subString yang diberikan
Hal di atas dapat dipersingkat dengan menggunakan pernyataan kasus dan kata kunci IN
case "$var" in
begin*)
#variabel dimulai dengan "begin"
;;
*subString*)
#subString ada di dalam variabel
;;
* subSubString lainnya*)
#subString lainnya ada di dalam variabel
;;
esac
Seperti pada hampir semua bahasa pemrograman, Anda dapat menggunakan fungsi untuk mengelompokkan potongan-potongan kode dengan cara yang lebih logis atau mempraktikkan seni rekursi. Mendeklarasikan sebuah fungsi hanyalah masalah menulis fungsi my_func { my_code }. Memanggil sebuah fungsi sama seperti memanggil program lain, Anda cukup menuliskan namanya.
nama fungsi() {
perintah shell
}
Contoh:
#!/bin/bash
function hello {
echo world!
}
hello
function say {
echo $1
}
say "hello world!"
Ketika Anda menjalankan contoh di atas, fungsi hello
akan mengeluarkan output "world!". Kedua fungsi di atas, hello
dan say
, adalah sama. Perbedaan utamanya adalah fungsi say
. Fungsi ini, mencetak argumen pertama yang diterimanya. Argumen, di dalam fungsi, diperlakukan dengan cara yang sama seperti argumen yang diberikan ke skrip.
Pernyataan kondisional dalam bash mirip dengan bahasa pemrograman lainnya. Kondisi memiliki banyak bentuk seperti bentuk yang paling dasar adalah pernyataan if
ekspresi then
di mana pernyataan hanya dieksekusi jika ekspresi bernilai true.
if [ ekspresi]; then
akan dieksekusi hanya jika ekspresi bernilai benar
else
akan dieksekusi jika ekspresi bernilai salah
fi
Terkadang jika kondisi menjadi membingungkan, Anda dapat menulis kondisi yang sama menggunakan pernyataan kasus
.
case expression in
pola1 )
statements ;;
pola2 )
statements ;;
...
esac
COntoh penggunaan ekspresi:
pernyataan1 && pernyataan2 # kedua pernyataan tersebut benar
pernyataan1 || pernyataan2 # setidaknya salah satu dari pernyataan bernilai benar
str1=str2 # str1 cocok dengan str2
str1!=str2 # str1 tidak cocok dengan str2
str1<str2 # str1 kurang dari str2
str1>str2 # str1 lebih besar dari str2
-n str1 # str1 tidak nol (memiliki panjang lebih besar dari 0)
-z str1 # str1 adalah null (memiliki panjang 0)
-a file # file ada
-d file # file ada dan merupakan sebuah direktori
-e file # file ada; sama dengan -a
-f file # file ada dan merupakan file biasa (yaitu, bukan direktori atau jenis file khusus lainnya)
-r file # Anda memiliki izin baca
-s berkas # berkas ada dan tidak kosong
-w file # Anda memiliki izin menulis
-x berkas # Anda memiliki izin eksekusi pada berkas, atau izin pencarian direktori jika berkas tersebut adalah sebuah direktori
-N file # file telah dimodifikasi sejak terakhir kali dibaca
-O file # file Anda sendiri
-G file # ID grup file cocok dengan ID grup Anda (atau salah satu ID grup Anda, jika Anda berada dalam beberapa grup)
file1 -nt file2 # file1 lebih baru dari file2
file1 -ot file2 # file1 lebih tua dari file2
-lt # kurang dari
-le # kurang dari atau sama dengan
-eq # sama dengan
-ge # lebih besar dari atau sama dengan
-gt # lebih besar dari
-ne # tidak sama
Ada tiga jenis perulangan dalam bash. for
, while
dan until
.
for
Sintaks:
for x := 1 to 10 do
mulai
pernyataan
end
for nama [in list]
do
pernyataan yang dapat menggunakan $nama
done
for (( inisialisasi ; kondisi akhir ; update ))
do
pernyataan-pernyataan
done
while
Sintaks:
while kondisi; do
pernyataan
done
until
Sintaks:
until kondisi; do
pernyataan
done
Jalankan nano ~/.bash_profile
lalu tambahkan baris berikut:
alias dockerlogin='ssh www-data@adnan.local -p2222' # add your alias in .bash_profile
Jalankan nano ~/.bashrc
dan tambahkan baris berikut:
export hotellogs="/workspace/hotel-api/storage/logs"
Sekarang Anda dapat menggunakan jalur yang disimpan di alias:
source ~/.bashrc
cd $hotellogs
This goes back to the days before you could rely on keyboards to have an "up" arrow key, but can still be useful. To run the last command in your history
!!
Kesalahan yang sering terjadi adalah lupa menggunakan sudo
untuk mengawali perintah yang membutuhkan eksekusi khusus. Daripada mengetikkan seluruh perintah lagi, Anda dapat:
sudo !!
Ini akan mengubah mkdir somedir
menjadi sudo mkdir somedir
.
Jadikan skrip bash Anda lebih kuat dengan melakukan pembersihan secara andal.
function finish {
# pembersihan Anda di sini. misal, bunuh semua proses bercabang
jobs -p | xargs kill
}
trap finish EXIT
Ketika Anda melakukan export FOO = BAR
, variabel Anda hanya diekspor dalam shell saat ini dan semua anak-anaknya, untuk mempertahankannya di masa depan, Anda cukup menambahkan perintah untuk mengekspor variabel Anda dalam berkas ~/.bash_profile
.
echo export FOO=BAR >> ~/.bash_profile
Anda dapat dengan mudah mengakses skrip Anda dengan membuat folder bin di /home Anda dengan mkdir ~/bin
, sekarang semua skrip yang Anda taruh di folder ini dapat Anda akses di direktori mana pun.
Jika Anda tidak dapat mengakses, coba tambahkan kode di bawah ini pada berkas ~/.bash_profile
Anda dan setelah melakukan source ~/.bash_profile
.
# setel PATH agar menyertakan tempat sampah pribadi pengguna jika ada
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Anda dapat dengan mudah men-debug skrip bash dengan memberikan opsi yang berbeda pada perintah bash
. Sebagai contoh -n
tidak akan menjalankan perintah dan hanya memeriksa kesalahan sintaks. -v
menggemakan perintah sebelum menjalankannya. Perintah echo -x
setelah pemrosesan baris perintah.
bash -n scriptname
bash -v scriptname
bash -x scriptname
Anda dapat dengan mudah melakukan multi-threading pekerjaan Anda dengan menggunakan &
. Semua pekerjaan tersebut akan berjalan di latar belakang secara bersamaan dan Anda dapat melihat proses-proses di bawah ini berjalan menggunakan jobs
.
sleep 15 & sleep 5 &
Perintah opsional wait
kemudian akan menunggu sampai semua pekerjaan selesai.
sleep 10 & sleep 5 &
wait
- Silahkan membaca panduan kontribusi sebelum menambahkan referensi atau terjemahan baru.
Proyek ini mengambil referensi dari: Idnan/bash-guide