Các lệnh Linux cơ bản (phần 2 – dùng lệnh mà không phải tra Google)

Bài hôm nay tiếp tục về chủ đề các lệnh cơ bản trên Linux mà mình đã bắt đầu ở bài trước. Chắc hẳn nhiều lúc các bạn đã gặp phải một số tác vụ mà không biết thực thi thế nào trên dòng lệnh, hoặc không biết có lệnh nào trợ giúp cho tác vụ đó hay không, hay oái oăm hơn là biết lệnh gì rồi mà khi gõ --help lại chẳng ra một chút thông tin nào, thế là bạn mò ngay lên Google tìm kiếm câu trả lời.

Well, cách này không sai, nhưng có thể bạn chưa biết là bản thân Linux cũng đã có hướng dẫn sử dụng một cách chi tiết rồi, mình chỉ cần đọc một chút là ra ngay thôi. Nào, hãy cùng nhau tìm hiểu cách nào mà có thể dùng lệnh một cách mượt mà mà không phải tra Google nhé.

Làm việc với câu lệnh

Trước hết chúng ta có thể hiểu, câu lệnh (hay Linux commands) có thể là 1 trong 4 thứ sau:

  1. Một chương trình có thể được thực thi (viết bằng C/C++ hoặc viết bằng ngôn ngữ như Python, Ruby, Perl,…)
  2. Shell built-in: bash support một vài câu lệnh gọi là shell built-in.
  3. Shell functions: một dạng shellscript thu nhỏ tích hợp trong environment.
  4. Một alias: câu lệnh được chúng ta tự định nghĩa, từ các câu lệnh các

Vậy chúng ta có cách để nhận diện một câu lệnh thuộc loại nào trong 4 loại trên bằng lệnh:

type [command]

với command là câu lệnh mà ta muốn biết nó là gì

➜  ~ type ls
ls is an alias for ls --color=tty
➜  ~ type cd
cd is a shell builtin
➜  ~ type ps
ps is /bin/ps
➜  ~ type rails
rails is /home/hunguyen/.rvm/gems/ruby-2.4.4/bin/rails
➜  ~ type git
git is /usr/bin/git

Chúng ta có thể biết ls là một alias của chính nó với một option cho phép nó hiển thị màu trên kết quả, cd là một shell built-in, các lệnh còn lại là chương trình thực thi.

Đối với nhưng câu lệnh thực thi chương trình, chúng ta có thể biết được nơi thực thi của nó nằm ở đâu nhờ vào lệnh which

which [command]

Ví dụ

➜  ~ which rails 
/home/hunguyen/.rvm/gems/ruby-2.4.4/bin/rails
➜  ~ which ruby
/home/hunguyen/.rvm/rubies/ruby-2.4.4/bin/ruby
➜  ~ which ps
/bin/ps

Đối với các lệnh shell built-in, which sẽ trả về lỗi hoặc thông báo chúng là shell built-in nên không có executable location

“Hướng dẫn sử dụng” của câu lệnh

Sau khi đã biết được chính xác loại câu lệnh dựa vào type chúng ta có thể tìm “hướng dẫn sử dụng trước khi dùng” của câu lệnh đó.

Chắc ai cũng biết là đối với đa phần hầu hết các lệnh thì việc sử dụng option --help là chúng ta có thể lấy được “bí kíp võ công” của lệnh đó, nhưng ngoài ra còn vài câu lệnh không phải ai cũng biết.

Đối với shell built-in, chúng ta có thể dùng lệnh:

help [command]

Đối với các lệnh thực thi chương trình thì chúng ta có lệnh:

man [command]
man [section] [search term]

để xem manual page của chương trình đó. Trong đó: command là lệnh hay chương trình, section là phần muốn search trong manual page (được đánh số 1-8), search term là cụm từ muốn tìm trong phần đó (Phần này để các bạn tự tìm hiểu nhé, vì mình nghĩ ít ai sử dụng đến phần này nhiều :D)

Một vài lệnh khác về câu lệnh trên Linux:

  • apropos: search manual page với cụm từ nào đó để output là list manual page có cụm từ đó, section chứa cụm từ đó. Dùng với options -e/--exact để tìm kiếm với nhiều keyword và cho ra kết quả match chính xác nhất (các bạn có thể tự dùng lệnh man để tìm hiểu thêm về lênh này nhé)
➜ apropos -e add user
[email protected]:~$ apropos -e add user
HEAD (1p)            - Simple command line user agent
access (2)           - check user's permissions for a file
add-shell (8)        - add shells to the list of valid login shells
add_key (2)          - add a key to the kernel's key management facility
addgroup (8)         - add a user or group to the system
adduser (8)          - add a user or group to the system
apport-cli (1)       - Apport user interfaces for reporting problems
  • whatis: hiển thị mô tả ngắn gọn của một câu lệnh
  • info: hiển thị program info, giống với manual page

Tạo alias

Alias là cách để chúng ta tạo ra một lệnh riêng bằng cách kết hợp nhiều câu lệnh đã có sẵn:

alias name='string'

trước khi tạo alias chúng ta có thể sử dụng lệnh type để test xem tên đó đã tồn tại hay chưa.

Ví dụ:

➜  ~ alias foo='cd /usr/bin; ls; cd -'
➜  ~ foo
[                                   evince
...
~
➜  ~
➜  ~ type foo
foo is an alias for cd /usr/bin; ls; cd -

Để xóa alias chúng ta dùng lệnh sau:

➜  ~ unalias foo
➜  ~ type foo
foo not found

Để list hết các alias trong môi trường, ta chạy alias mà không truyền vào tham số nào

➜  ~ alias
-='cd -'
...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
_=sudo
afind='ack -il'
g=git
ga='git add'
gaa='git add --all'
gap='git apply'
gapa='git add --patch'
gau='git add --update'
gav='git add --verbose'
gb='git branch'

Đây là một vài alias khi chúng ta sử dụng zsh

Bài viết hôm nay kết thúc ngắn gọn ở đây thôi, phần này mình viết hy vọng có thể giúp các bạn biết thêm một cách tự mình tìm hiểu document thay vì tìm ngay ở Google. Bài tiếp theo trong series sẽ là một chủ đề quan trọng khi làm việc với terminal đó là: Redirection I/O

  • Linux

Leave a Reply

Your email address will not be published. Required fields are marked *