Linux Bash Cheat Sheet
Beberapa parameter baris perintah alat
Bukan daftar yang sangat komprehensif, hanya beberapa yang berguna bagi saya
Memeriksa versi linux ubuntu
Metode 1
lsb_release -a
akan menghasilkan sesuatu seperti
Tidak ada modul LSB yang tersedia.
Distributor ID: Linuxmint
Description: Linux Mint 22.1
Release: 22.1
Codename: xia
Metode 2
cat /etc/os-release
akan menghasilkan sesuatu seperti
NAME="Linux Mint"
VERSION="22.1 (Xia)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.1"
VERSION_ID="22.1"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=xia
UBUNTU_CODENAME=noble
Mengarsipkan & mengekstrak
Mengkompresi
tar -zcvf archive-name.tgz directory-name
Mengekstrak
tar -zxvf archive-name.tgz
Server jarak jauh
Mengirim identitas pengguna ke server jarak jauh
ssh-copy-id user@10.0.0.225
Sehingga memungkinkan login tanpa kata sandi berikutnya seperti
ssh user@10.0.0.225
Mengunggah file
scp ~/file.ext user@host-ip:/home/user/file.ext
Mengunduh folder dengan konten bersarang secara rekursif
scp -r user@host-ip:/home/user/dir ~/dir
Folder dan file
Memeriksa keberadaan
# membuat folder jika tidak ada, dengan semua folder antara
[ -d $repdir ] || mkdir -p $repdir
# atau
if [ -d $fname ]; then
echo "File tidak ada: $fname"
return
fi
Membuat folder untuk pengguna tertentu
sudo mkdir dir1
sudo chown specific_user dir1
sudo chown :specific_group dir1
Mengiterasi file dalam folder
# ini mengubah semua file jpg dalam suatu folder menjadi fits
for f in some-folder/*.jpg
do
convert "$f" "${f/.jpg/.fits}"
done
Menggabungkan semua file menjadi satu
cat ./* > merged.txt
Menambahkan eksekusi perintah ke crontab
(crontab -l 2>/dev/null | \
grep -v control-marker-1; \
echo '*/15 * * * * /bin/bash /home/user/stest/stest.sh /home/user/stest >> /home/user/stest/stest.log 2>&1 #control-marker-1') | \
crontab -
di sini:
- */15 - dijalankan setiap 15 menit
- control-marker-1 - adalah penanda dari perintah ini dalam konfigurasi cron untuk memperbarui dengan skrip yang sama berikutnya
- /bin/bash - perintah yang akan dieksekusi
- /home/user/stest/stest.sh - parameter bash - bash akan menjalankan skrip ini
- /home/user/stest - parameter skrip - akan diakses oleh $1
- /home/user/stest/stest.log - file log dengan output konsole dari stest.sh
Periksa
grep /home/user/stest/stest.sh /var/log/syslog
crontab -e
Log
Menonton log file secara langsung
sudo tail -f /var/log/megalog.log
Kode status dari curl
response=$(curl --write-out '%{http_code}' --silent --output /dev/null servername)
# atau
url='http://localhost:8080/'
status=$(curl --head --location --connect-timeout 5 --write-out %{http_code} --silent --output /dev/null ${url})
[[ $status == 500 ]] || [[ $status == 000 ]] && echo restarting ${url} # lakukan logika mulai/ulang
Biarkan perintah ssh tetap berjalan setelah logout
Asumsikan bahwa Anda memiliki program yang berjalan di foreground, tekan
- ctrl-Z, lalu:
[1]+ Stopped myprogram
- disown -h %1
- bg 1
[1]+ myprogram &
- logout
Membuat JSON
Pasang jo
sudo apt-get install jo
a="123"
b="456"
jo "model=a" "prompt=b" "stream=false"
akan menghasilkan
{"model":"a", "prompt":"b", "stream":false}
Sedikit lebih kompleks:
jo -p name=Jane point[]=1 point[]=2 geo[lat]=10 geo[lon]=20
{
"name": "Jane",
"point": [
1,
2
],
"geo": {
"lat": 10,
"lon": 20
}
}
Memformat JSON
Gunakan
| jq .
Untuk memformat JSON di atas:
a="123"
b="456"
jo "model=$a" "prompt=$b" "stream=false" | jq .
JSON yang diformat akan menjadi:
{
"model": 123,
"prompt": 456,
"stream": false
}
Mengekstrak nilai dari bidang JSON
Pasang jq terlebih dahulu
sudo apt-get install jq
Gunakan
| jq -r '.fieldName'
Seperti memparse output dari panggilan ke Ollama:
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Mengapa langit biru?",
"stream": false
}' | jq -r '.response'
Menghitung jumlah kata dalam file
Hitung kata:
wc -w filename.txt
akan mengembalikan sesuatu seperti
261 filename.txt
Jika Anda ingin hanya bilangan bulat, Anda dapat memotong kata pertama, yang merupakan angka
words=`wc -w filename.txt | cut -f1 -d' '`
echo "$words kata"
Atau gunakan wc seperti:
words=`wc -w < filename.txt`
echo "$words kata"
Periksa seberapa banyak ruang yang digunakan oleh direktori pada HDD
du ~/dirname
Dapatkan nama folder di mana skrip yang berjalan berada
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
Mengukur waktu eksekusi skrip
Salah satu pilihan adalah menggunakan fungsi time
time your_script.sh
Cara lain sedikit lebih rumit:
start=`date +%s`
# kode penting
# disini
end=`date +%s`
runtime=$((end-start))
Membandingkan dua file dengan vs code
code -d <file 1> <file 2>
Memeriksa paket yang tersedia di repositori ubuntu
sudo apt-cache policy <packageName>