Sunday, August 28, 2016

Kumpulan Command Line Harian Dengan Ubuntu

The CLI
Sudah lama saya tidak posting di blog saya ini. Selain karena banyak aktivitas dan managemen waktu yang kurang bagus, males nulis adalah masalah paling serius yang harus saya hadapi soal dokumentasi kehidupan (apaan si).

Namun, dokumentasi tetaplah hal yang mutlak harus dimiliki. Karena otak kita selalu memiliki keterbatasan dalam mengingat sesuatu. Dibawah ini adalah perintah-perintah yang umumnya kita gunakan saat berinteraksi dengan komputer berbasis Command Line Interprets. Catatan ini saya buat secara kasar, ke depan catatan  ini akan saya buat spesifik per postingan sehingga penjabarannya lebih baik dan lebih detail.

Selain itu, saya sertakan pula versi command line beberapa aplikasi yang (mungkin) bisa anda jadikan "shortcut" sehingga dapat membantu anda dalam bercommandline ria. Catatan ini akan saya update setiap saya menemukan perintah-perintah yang kiranya bisa memberikan manfaat lebih, sehingga boleh sekali di bookmark atau anda comot commandnya. ;)

Oh ya, kebanyakan catatan ini saya  rangkum saat saya menggunakan distro Linux Ubuntu, jadi mungkin di distro lain perintah nya bisa sedikit berbeda.

Berikut adalah commandline harian yang sudah pernah saya coba dan saya dokumentasikan :

Per-List-an dan Metadata File
list file dalam direktori dengan sorting tanggal
ls -lt
list file dalam direktori dengan sorting tanggal, ekstensi tertentu, jumlah tertentu
ls -lt *.ekstensi_file 
list file dengan batas jumlah file tertentu
ls -lt | head -n banyak_file
list semua file dalam direktori tanpa menampilkan folder "." dan ".."
ls -A # biasanya untuk cek apakah folder itu kosong atau tidak 
list file dan direktori beserta owner dan permission
tree -pufi /path/to/list
Mengetahui size sebuah folder
du -sh /nama/folder
Mengetahui size semua file dalam sebuah folder
du -sh *
Mengetahui usage hardisk dan berbagai mounting pada komputer
df -h
Melakukan cek status pada sebuah file
stat [nama_file]

Per-SSH-an
mengcopy file ke pc lain (dalam jaringan) melalui ssh
scp -P port_ssh /direktori/file/yang/akan/dicopy username@domain_atau_ip:/directory/target
agar aplikasi yang dipanggil (pada pc yang diremote) tampil secara gui ke pc yang meremote
ssh -X -Y -p port_ssh username@domain_atau_ip
mengirim perintah via ssh
ssh -P -p port_ssh username@domain_atau_ip 'perintah_yang_dikirim'
jika perlu interaksi seperti memasukkan password saat perintah sudo
ssh -P -t -p port_ssh username@domain_atau_ip 'perintah_yang_dikirim' 
ssh tunnel, tunnel ssh ke server tertentu sebagai proxy
ssh -p port_ssh username@domain_atau_ip -D [port_proxy] 

VirtulBox CLI
list vm pada virtualbox
VBoxManage list vms
list vm pada virtualbox
VBoxManage list runningvms
start vm pada virtualbox menggunakan cli
VBoxManage startvm "nama_vm" --type headles
mematikan vm pada virtualbox
VBoxManage controlvm Windows7 poweroff soft
menambahkan vm yang ada (mungkin dari pc lain) ke virtualbox
VBoxManage registervm /path/ke/file/[nama_file].vbox

Per-Download-an
download file menggunakan cli
wget "http://urlatauip.domain/nama/folder/yang/akan/di/download" -O [nama_file_terdownload]
atau
curl "http://urlatauip.domain/nama/folder/yang/akan/di/download" -o [nama_file_terdownload]
download seluruh file dalam sebuah folder webserver (tested pada folder ftp)
wget -r --no-parent -e robots=off "http://urlatauip.domain/nama/folder/yang/akan/di/download"
download beberapa file pada sebuah list url dalam file sebuah file
wget -i /path/ke/file/list/url.txt

Memecah dan Menggabung Isi File
memecah file menjadi beberapa bagian
split --verbose -d -n banyak_pecahan_file nama_file_yang_displit nama_depan_pecahan_
Menggabungkan file yang di split (cara kerja mirip hjsplit)
cat namafile* > namafilebaru.ekstensi

Manipulasi String
Menghapus white space / baris kosong (e.g menggabungkan paragraf)
cat namafile | sed '/^$/d'
Menimpa karakter pada nama file/teks, menjadi karakter yang lain, misal misal semua spasi pada teks akan berubah menjadi underscore
cat namafile | sed "s/ /_/g" > namafile_baru
Menambahkan line number di depan text output
cat namafile | nl
Atau mengganti huruf a menjadi o
echo "ki joko bodo" | tr "o" "a"
Mengambil kata terakhir dari sebuah variabel
echo $var_string | awk '{print $NF}'
Menghapus karakter tertentu pada teks atau operasi file (e.g. menghapus spasi)
echo "susu ndak pakai s" | tr -d "s"
Menghapus karakter selain yang disebutkan (e.g. menghapus spasi)
echo "dekat sama mbak cantik" | tr -d " " 
Menambah line angka pada saat menampikan isi file
cat nama_file | grep -n ""
Mengambil value pada kolom 1, baris 3 ("df -h" hanya sebagai contoh string)
df -h | grep -v grep | awk 'NR==3{print $1}'
Menghapus kolom 2 pada sebuah list detail ("df -h" hanya sebagai contoh string)
df -h | grep -v grep |awk '!($2="")'
memproses string dengan kata sebagai limiter
cat file.txt| awk -F '[kata_sebagai_limiter]' '{print $1}'
Mengetahui tanggal berapa linux kita di install (fresh install bukan upgrade)
sudo ls -alct / | tail -1 | awk '{print $7" "$6" "$8}'
Generate angka random, dibawah ini contoh menggenerate ip-address secara random
echo $((RANDOM%254+0))"."$((RANDOM%254+0))"."$((RANDOM%254+0))"."$((RANDOM%254+0))
Mengubah menjadi huruf kapital diawal string
STRING="saya ganteng"
echo ${STRING^}
Mengubah menjadi huruf kapital keseluruhan
STRING="saya ganteng"
echo ${STRING^^}
Mengubah menjadi huruf kecil di awal string
STRING="SAYA GANTENG"
echo ${STRING,}
Mengubah menjadi huruf kecil keseluruhan
STRING="SAYA GANTENG"
echo ${STRING,,}

Cari-Mencari
Mencari kata atau kalimat dalam file pada sebuah kumpulan folder
grep -rnw '/path/folder/yang/dicari' -e "pola yang dicari"
Menampilkan perbedaan konten dua buah file yang identik,
grep -xvFf file1 file2 # pastikan file2 adalah file yang paling lengkap
Mencari string tertentu pada file ekstensi tertentu
grep -r -i --include \*.[ekstensi_file] "string yang dicari"
Mencari jenis file, folder, symbolic link dengan pola nama tertentu.
find . -name *polaNama* -type f # untuk tipe file
find . -name *polaNama* -type d # untuk tipe folder
find . -name *polaNama* -type l # untuk tipe symbolic link
Mencari file dengan ekstensi tertentu dalam sebuah komputer, misal file *.3gp
find / -name '*.3gp*'
Mencari file dengan pola tertentu, lalu mengcopy file ke dalam sebuah folder
find /path/to/find -name '*pola*' -exec cp {} /destination/folder  \;
Mencari file yang tidak memiliki ekstensi file
find . -type f ! -name "*.*"
Mencari file symbolic links yang rusak dalam sebuah folder
find . -type l ! -exec test -e {} \; -print

Perhistorian
Menampilkan history command dengan jumlah tertentu
history 7 # menampilkan history 7 perintah terakhir yang
Menghapus seluruh history command line
history -c # awas ilang semua history nya

Pertanggalan
Styling pada tanggal
date +"%H:%M:%S" # menampilkan jam:menit:detik
date +"%d-%m-%Y" || date +"%D" # menampilkan jam:menit:detik
Mengetahui waktu, tanggal yang lalu atau yang akan datang
date --date='91 days ago' # 91 hari kebelakang
date --date='91 days' # 91 hari kedepan
date --date='5 hours' # 5 jam kedepan
date --date='5 hours ago' # 5 jam yang lalu

Cek Process Pada PC
Mengetahui usage cpu dan ram sebuah proses
ps --no-headers -o "%cpu,%mem" -p pid_process
Mengetahui seluruh child process dari sebuah process
ps --pid pid_proses
Mencari parent proses dari sebuah proses
ps -aux | grep -w "  $(ps -ef | grep pid_proses | awk '{print $3}')  " #beta
Mencari zombie proses yang ada pada sistem
ps axo stat,ppid,pid,comm | grep -w defuncts  " #beta
Mengetahui lama running sebuah proses pada PC Desktop/Server
ps -p "$pid_proses" -o etime=   #(atau)  ps -o stime,time $pid_proses
Mengurutkan proses berdasarkan urutan eksekusi
ps -ef --sort=start_time
Mencatat durasi proses yang dieksekusi
/usr/bin/time -f "%E" command_dan_parameter

Networking
Cek ip address di tiap interface
ip add show
atau
ifconfig -a # jika gagal, install net-tools
Cek ip address pada interface
ip add show [nama_interface]
atau
ifconfig [nama_interface]
Menghapus virtual interface
sudo ip link set br100 down
sudo brctl delbr br100
cek DNS yang kita gunakan
nslookup [situs.yang.dituju.domain]
mengetahui ip public kita
curl -s ipinfo.io/ip
cek kecepatan lan network interface card (perlu install ethtool)
ethtool [id_nic]

Miscellaneous dan lain-lain
cURL ke website dengan otentikasi username dan password
curl -vv -H 'Accept:[content]/[type]' --anyauth http://[username]:[password]@hostname.domain/
cek status website dengan curl (mengembalikan return code http)
curl -L -s -o /dev/null -w "%{http_code}" http://[ip_atau_domain_web]
atau lebih lengkap dengan kecepatan download, waktu koneksi dll
curl -L -s -o /dev/null http://[ip_atau_domain_web] -w "time : %{time_connect} \ntime-total : %{time_total} \ntime-total : %{speed_download} \nreturn-code : %{http_code} \ndownload-size : %{size_download} \nURL-target : %{url_effective}\n"
Run apache foreground
source /etc/apache2/envvars; apache2 -X
Melihat status file yang sudah di delete, namun masi berstatus oleh aplikasi tertentu (detail)
lsof +L1
Menggabungkan file1 dan file2 secara kolom
pr -mts" " file1 file2
Ekstrak file bz2
bzip2 -d filename.bz2
Mencari configurasi file pada php
php --ini
Membuat dummy file dengan ukuran file
dd if=/dev/zero of=[nama_file] bs=[ukuran_file] count=1
Melakukan trace perintah pada commandline
strace -f [command param_command11 param_command2]
List cron yang aktif pada user
crontab -l| while read -r command; do if [[ $(echo $command | cut -c 1) != "#" ]];then echo "$command"; fi; done 
cek shell yang sedang digunakan
echo $0
menampilkan baris secara random pada sebuah file
shuf -n 1 namafile # -n adalah jumlah line yang muncul 
cek ssl expiration
echo | openssl s_client -servername [domain] -connect [domain]443 2>/dev/null | openssl x509 -noout -dates| cut -d "=" -f2

Maaf jika kurang rapi dalam penataan dan kategori perintah. Next time akan saya rapikan. Apabila ada kritik atau saran, komentar, dan lain sebagainya, silahkan koment dibawah, atau kontak saya via email.

Semoga bermanfaat. :)

referensi :

No comments:

Post a Comment