14/09/2018, 21:13

16 lệnh và thao tác hữu ích trên terminal

Gần đây mình có present về chủ đề Một số thao tác và lệnh đơn giản nhưng hữu ích khi sử dụng Linux cho một vài bạn bè. Mặc dù nó khá là đơn giản và quen thuộc với những người làm hệ thống nhưng mình nhận ra là không phải ai cũng biết. Nên mình viết ra đây, để hi vọng nó sẽ hữu ích ...

Gần đây mình có present về chủ đề Một số thao tác và lệnh đơn giản nhưng hữu ích khi sử dụng Linux cho một vài bạn bè. Mặc dù nó khá là đơn giản và quen thuộc với những người làm hệ thống nhưng mình nhận ra là không phải ai cũng biết. Nên mình viết ra đây, để hi vọng nó sẽ hữu ích với ai đó và tăng productivity khi mọi người làm việc hoặc bớt cảm thấy nhàm chán khi sử dụng terminal nhiều.

1. Xem log realtime

Thông thường ta hay dùng lệnh tail -f /var/log/nginx/access.log để xem realtime log. Nhưng ta có thể không cần dùng option -f mà dùng trực tiếp lệnh tailf /var/log/nginx/access.log cũng có chức năng tương tự.

Đỡ mỏi tay hơn 1 chút

2. Xem cấu trúc cây thư mục bằng lệnh tree

Lệnh tree cho phép ta xem cấu trúc và cấp thư mục của một thư mục, kiểu như thế này

~$ tree t

t

├── a

│   ├── x

│   ├── y

│   └── z

├── b

│   ├── x

│   ├── y

│   └── z

└── c

    ├── x

    ├── y

    └── z

Với t là tên thư mục của mình

3. Tạo nhiều thư mục cùng lúc

Như ở trên ta thấy có thư mục cha là t, trong đó có 3 thư mục con tương ứng là a, bc trong mỗi thư mục con lại có x, yz.

Để có thể tạo liền một lúc cấu trúc thư mục trên ta có thể dùng lệnh

Lưu ý là giữa các dấu phẩy trong {} không có khoảng trắng.

4. Trở về thư mục trước đó

Ví dụ ta cd tới một đường dẫn rất là dài, sau đó lại cd đi chỗ khác. Nếu quay lại thư mục trước thì phải gõ rất dài, có thể dùng lệnh

Thực chất là sử dụng biến môi trường OLDPWD

5. Copy public-key lên server tự động

Ta cần ssh lên server bằng key. Cách thủ công thường làm là

Rất phiền phức nên ta có thể sử dụng lệnh ssh-copy-id user@ip_address, sau đó nhập password của user thì public-key sẽ tự được copy lên server. Thư mục .ssh và tập tin authorized_keys cũng sẽ được tạo đúng quyền chúng ta cần.

6. Thực thi định kì một lệnh và xuất ra màn hình

Ví dụ mình chuyển 1 file 10GB qua một server khác, mình có thói quen kiểm tra xem kích thước của file đó bên server kia tới đâu rồi nên hay phải ls -lh 10GB.txt lặp đi lặp lại.

Có một cách khác để tự động thực thi lệnh trên mỗi 2s (mặc định) bằng lệnh watch như sau

7. Sử dụng vim tới một dòng xác định

Khi cấu hình nginx, ta có option nginx -t để check config có đúng syntax hay không. Ví dụ nginx báo lỗi syntax ở dòng 19. Ta có thể mở file config tới trực tiếp dòng 19 như sau

8. Xem các file log mới nhất

Trong thư mục /var/log/nginx có rất nhiều file, có khi cả vài trăm file. Một mẹo ta có thể dùng lệnh ls với các tùy chọn sau để hiển thị file được thay đổi mới nhất nằm ở dưới cùng.

Giải thích

  • -l: để long list
  • -a: để hiển thị file ẩn
  • -h: để hiển thị size dễ đọc
  • -t: để sort theo modify time
  • -r: để đảo ngược, nghĩa là file được sửa gần nhất ở cuối

9. Thao tác với các tập tin nén

Trên server thường có một dịch vụ logrotate để nén log định kì. Nếu ta muốn điều tra log của những ngày trước thì ta sẽ cần giải nén các tập tin log này trước khi dùng grep, awk

Ta cũng có thể sử dụng các lệnh như zcat, zgrep, zless để đọc hay lọc các tập tin này mà không cần giải nén.

10. Kiểm tra process

Ta hay kiểm tra xem một process có được chạy hay không bằng lệnh

Hoặc

Để loại bỏ chính lệnh kiểm tra. Nhưng ta cũng có thể dùng lệnh sau mà không cần grep -v

11. Dùng httpie thay curl

httpie cho phép hiển thị kết quả đẹp và màu sắc hơn, bớt nhàm chán hơn như hình

Screen Shot 2016-06-21 at 11.07.42 AM

12. Dùng ncdu thay cho du

Lệnh ncdu giúp kiểm tra kích thước của từng thư mục, tập tin trong một thư mục nào đó. Ngoài ra có thể xóa trực tiếp bằng key-binding

Screen Shot 2016-06-21 at 11.07.59 AM

13. Xử lý file json, csv với jq và csvkit

Mình đã từng viết 2 bài về jqcsvkit. Các bạn có thể vào đó và đọc thêm về 2 công cụ này.

14. Một số thao tác trên terminal

Ví dụ ta gõ một lệnh khá dài như sau

Ta có thể dùng

  • Ctrl + w: để xóa từng từ từ vị trí con trỏ thay vì xài backspace để xóa từng kí tự
  • Ctrl + u: để xóa từ vị trí con trỏ về đầu dòng
  • Alt + f: để di chuyển tới từng từ
  • Alt + b: để di chuyển lùi từng từ

15. Một số alias hữu ích

Có nhiều repo dotfiles trên github chia sẻ về vấn đề này. Cá nhân mình thì hay dùng 2 alias mình tự định nghĩa là lệnh p để lấy public ip và r để random password

Ngoài ra thì mình rất hay có thói quen gõ nhầm lệnh ll thành l hoặc lll nên mình cũng alias 2 lệnh này luôn

16. chown/chgrp

Ví dụ ta muốn chown các file thuộc về user và group nginx. Bình thường ta sẽ làm vầy

Ta cũng có thể không cần chỉ định group, mà sẽ lấy group mặc định của user đó bằng lệnh

Sử dụng dấu hai chấm : và dấu chấm . ngay sau user

17. Tóm lại

Nói chung là còn rất nhiều mẹo hữu ích giúp tăng productivity khi thao tác lệnh nữa, nhưng phía trên là những thứ mà mình dùng hằng ngày, Hi vọng nó sẽ hữu ích với ai đó. Nếu mọi người có mẹo gì hay ho có thể chia sẻ thêm nhé

Techtalk via kipalog

0