Thói quen tốt với Linux command line
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
Ví dụ: Để tạo một thư mục có đường dẫn như sau /home/demo/test/demo2/test2 sẽ làm như sau:
Ví du: Tôi có 1 file ctnhatho.tar.gz và muốn giải nén nó
Thông thường:
Thông thường thì hay dùng lệnh cat kết hợp grep nhưng điều này hoàn toàn không nên vì trong lệnh grep cũng đã đọc dữ liệu của file vào:
Nguồn: kythuatmaytinh
1. Tạo cây thư mục
Ví dụ: Để tạo một thư mục có đường dẫn như sau /home/demo/test/demo2/test2 sẽ làm như sau:
~$ cd /homeRất tốn thời gian phải không? Sao không thử với lệnh sau nhỉ?
/home$ mkdir demo
/home$ cd demo/
/home/demo$ mkdir test
/home/demo$ cd test/
/home/demo/test$ mkdir demo2
/home/demo/test$ cd demo2/
/home/demo/test/demo2$ mkdir test2
~$ mkdir -p /home/demo/test/demo2/test2Bạn phải tạo một cấu trúc thư mục có rất nhiều thư mục con??? Yên tâm, lệnh sau sẽ giúp bạn:
~$ mkdir -p /home/test/{test1/{demo1/{ctnhatho,kma},demo2,demo3},test2,test3}2. Giải nén file
Ví du: Tôi có 1 file ctnhatho.tar.gz và muốn giải nén nó
Thông thường:
cp ctnhatho.tar.gz /tmp/ctnhatho/Đừng di chuyển file tới thư mục cần rồi mới giải nén mà hãy giải nén file tới thư mục cần:
cd /tmp/ctnhatho/
tar xvzf ctnhatho.tar.gz
tar xvzf ctnhatho.tar.gz -c /tmp/ctnhatho
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 \
> && \
6. Sử dụng Grep> tar xvf -C tmp/a/b/c ~/archive.tar
Để đếm số dòng output, có thể bạn sẽ quen với cách đưa kết quả qua đường ống (pipeline) đến trình wc (dùng man!), một chương trình đếm byte, word, line thông dụng. Hãy thử thay thói quen đó bằng sử dụng tham số -c của grep xem, lợi ích đầu tiên là về mặt thời gian
~ $ time grep word tmp/a/longfile.txt | wc -l
2811real 0m0.097s
user 0m0.006s
sys 0m0.032s
~ $ time grep -c word tmp/a/longfile.txt
2811real 0m0.013s
user 0m0.006s
sys 0m0.005s
~ $
Ngoài lợi ích về mặt thời gian, khi bạn đếm trong nhiều file, tham số -c sẽ cho kết quả riêng biệt với từng file trong khi wc sẽ cho kết quả tổng cộng của các file.
Tuy nhiên bạn sẽ lưu ý một điểm là nếu như trong một dòng của file xuất hiện nhiều lần từ “word” thì kết quả của hai cách trên sẽ như thế nào? Lúc này tham số -c sẽ xem dòng chưa 1 từ word với dòng chứa 5 từ word là như nhau, vì nó đếm số dòng. Nếu bạn muốn trả về số lần xuất hiện của từ đó trong file, hãy dùng wc với tham số -o của grep.
Tìm kiếm nội dung file :~ $ grep -o and tmp/a/longfile.txt | wc -l
3402
Thông thường thì hay dùng lệnh cat kết hợp grep nhưng điều này hoàn toàn không nên vì trong lệnh grep cũng đã đọc dữ liệu của file vào:
~ $ time cat tmp/a/longfile.txt | grep and2811
real 0m0.015s
user 0m0.003s
sys 0m0.013s
~ $ time grep and tmp/a/longfile.txt2811
real 0m0.010s
user 0m0.006s
sys 0m0.004s
~ $
Nguồn: kythuatmaytinh
Thói quen tốt với Linux command line
Reviewed by Unknown
on
10:26
Rating:
Không có nhận xét nào: