Chắc các bạn cũng đã từng nghe nói: Để làm chủ và thấy được cái hay, cái đẹp, cái mạnh của Linux thì phải sử dụng chế độ dòng lệnh thật “pro”. Vậy thế nào là “pro”? Những thói quen tôi kể ra dưới đây làm tôi thấy “pro” hơn, bạn hãy thử xem. Không khó hiểu đâu, tin tôi đi, vì cũng như bạn, tôi chưa biết những “pro” làm gì, nhưng tôi biết những người chưa “pro” làm như thế nào. Hãy tập những thủ thuật này thành những thói quen tốt khi dùng dòng lệnh luôn nhé.
1. Tạo cây thư mục bằng một lệnh
Để tạo thư mục /home/a/b/c, tôi hay dùng:
~ $ cd /home
~/home $ mkdir a
~/home $ cd a
~/home/a $ mkdir b
~/home/a $ cd b
~/home/a/b/ $ mkdir c
Tốn thời gian và công sức. Hãy thay bằng chỉ một lệnh mkdir với tham số -p
~$ mkdir -p /home/a/b/c
OK, còn một lệnh sau đây sẽ tiết kiệm cho bạn bao nhiêu dòng lệnh tạo thư mục? Hãy thử xem nhé
~ $ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
2. Đổi đường dẫn khi giải nén
Đừng di chuyển file đến thư mục cần rồi mới giải nén,
~$ cp newarc.tar.gz tmp/a/b/c
~$ cd tmp/a/b/c
~$ tar xvf newarc.tar.gz
hãy giải nén nó đến thư mục cần
~ $ tar xvf newarc.tar.gz -C /a/b/c
3. Kết hợp các lệnh bằng các toán tử điều khiển
&&: nếu lệnh 1 thực hiện thành công thì làm lệnh 2. Lệnh 1 fail thì không làm lệnh 2
~ $ cd tmp/a/b/c && tar xvf ~/archive.tar
||: nếu lệnh 1 thành công thì không làm lệnh 2. Lệnh 1 fail thì làm lệnh 2
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c
Kếthợp hai toán tử trên:
~ $ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar
4. Cẩn thận với các biến và dấu trích dẫn
Hãy xem các trường hợp sau:
~ $ ls tmp/
a b
~ $ VAR=”tmp/*”
~ $ echo $VAR
tmp/a tmp/b
~ $ echo “$VAR”
tmp/*
~ $ echo $VARa
~ $ echo “$VARa”
~ $ echo “${VAR}a”
tmp/*a
~ $ echo ${VAR}a
tmp/a
Nếu bạn muốn xuất ra chuỗi “tmp/*a” thì hãy sử dụng các dấu ngoặc cho hợp lý.
5. Dùng dấu back slash để quản lý dòng lệnh dài
~ $ cd tmp/a/b/c || \
> mkdir -p tmp/a/b/c && \
> tar xvf -C tmp/a/b/c ~/archive.tar
hoặc đẹp hơn:
~ $ cd tmp/a/b/c \
> || \
> mkdir -p tmp/a/b/c \
> && \
> tar xvf -C tmp/a/b/c ~/archive.tar