Sau hơn 10 năm dùng Ubuntu/OSX/OpenBSD, các combo câu lệnh mình sử dụng đã có nhiều thay đổi, bài này sẽ cập nhật các combo hay dùng nhất:
ls
ls -la
vốn là combo ưa thích, thì ngày nay, tay đã quen với 2 combo khác:
ls -Fhtl
hiển thị file và sắp xếp theo file mới nhất ở trên đầu
ls -lFS
hiển thị file theo size giảm dần (dễ nhớ: LinuxFromScratch)
free -m
free là câu lệnh chỉ có trên Linux như Ubuntu, trên OSX và OpenBSD đều không có, vậy nên dùng top | head
sẽ thay thế được cho lệnh free.
Combo sau khi login vào 1 máy sẽ là: w; df -h; top | head
grep
Vẫn là combo grep -Rin pattern dir
nhưng ngày nay mình đã thay grep bằng ripgrep
nên thường chỉ gõ rg pattern dir
ripgrep nhanh hơn grep nhiều lần, chú ý khi tìm file "ẩn"/ignored.
curl
curl
vốn phổ biến như 1 CLI HTTP client tiện dùng khi dev, nhưng curl
không có sẵn ở nhiều nơi như wget
(ubuntu, busybox mặc định, trong các Alpine based container).
$ curl -L -o elm.gz https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz
tương đương với
$ wget -O elm.gz https://github.com/elm/compiler/releases/download/0.19.1/binary-for-linux-64-bit.gz
wget
cũng có thể dùng để thực hiện HTTP GET request:
# wget -qO- https://httpbin.org/get
{
"args": {},
"headers": {
"Host": "httpbin.org",
"User-Agent": "Wget",
"X-Amzn-Trace-Id": "Root=1-604387fc-24ae289768ff475a730532f7"
},
"origin": "171.246.107.102",
"url": "https://httpbin.org/get"
}
su
Sau vụ lỗ hổng bảo mật của sudo dậy sóng cộng đồng mạng đầu 2021, thật ra chẳng ảnh hưởng gì do
mình dùng OpenBSD, nơi mà quyết định thay sudo
bằng 1 phần mềm tên là doas
.
Sử dụng su
khi cần chuyển sang root, combo là su -l
để đổi sang ENV
của user root (ví dụ chuyển đúng đến $HOME của root chứ không ở thư mục hiện
tại)
ss -nltp
Combo này chỉ hoạt động trên Linux với gói iproute
.
Trên MacOS/OpenBSD, sử dụng: netstat -nl
nếu cần chọn tcp
thì thêm netstat -nl -p tcp
vi
Thói quen khi dùng vim
(không phải vi
) là gõ gg
để lên đầu file, vi
không có phím tắt này.
Thay vào đó vi
dùng 1G
để go to dòng số 1, và G
để tới dòng cuối cùng.
bash ^a^b^
Trên OpenBSD, shell mặc định là KSH và nó không giống bash ở việc thay 1 phần câu lệnh cũ:
bash:
$ ls /etc
...
$ ^/etc^/etc/passwd^
sẽ chạy lệnh ls /etc/passwd (thay /etc ở câu lệnh cuối cùng bằng /etc/passwd)
ksh:
$ ls /etc
...
$ r /etc=/etc/passwd
ls /etc/passwd
cho kết quả tương ứng.
fg
Xưa nay sau khi chuyển job về backgroup (ctrl Z), để bật thành foreground sẽ gõ: fg 1 với job 1
Combo này không chạy trên ksh, phải gõ fg %1
, và sử dụng % đảm bảo hoạt động
mọi nơi, kể cả bash.
$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=59 time=32.009 ms
^Z
[1]+ Stopped ping 1.1.1.1
$ fg %1
ping 1.1.1.1
64 bytes from 1.1.1.1: icmp_seq=1 ttl=59 time=4161.095 ms
source
source
là 1 câu lệnh built-in của bash
để đọc và chạy các câu lệnh
từ 1 file trong môi trường shell hiện tại. Nhưng source
là của riêng bash.
Dùng .
cho tác dụng tương tự, nhưng chạy trên mọi shell khác.
tail -F
Trên Linux, lệnh tail
có 2 option khác nhau là -f
và -F
,
-F
sẽ theo file mới nếu file cũ bị thay thế (VD: log rotate),
nhưng trên OpenBSD, -f
hoạt động như -F
trên Linux.