Linux Bash Cheat Sheet

Beberapa parameter baris perintah alat

Konten Halaman

Bukan daftar yang sangat komprehensif, hanya beberapa yang berguna bagi saya

bash dan shell anniversary!

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

https://stackoverflow.com/questions/954302/how-to-make-a-program-continue-to-run-after-log-out-from-ssh

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>

Tautan yang berguna