Các lệnh trên Shell (P2)

 

Bài viết này sẽ đề cập đến một số vấn đề mình đã nói sơ qua ở bài trước như cấu trúc thư mục trong Linux hay hệ thống Unix-like, quyền truy cập file (permisson),.. và mình sẽ giới thiệu một số lệnh khác.

Thư mục trên Linux.

Để hiểu được ý nghĩa của các tham số trong các câu lệnh, chẳng hạn như  cd ~/Downloads, bạn phải hiểu được cấu trúc của hệ thống thư mục trên Linux và Unix-likes

Không giống như trên Windows, các cây thư mục đều bắt nguồn từ các ổ đĩa, các hệ thống Unix-like lại bắt đầu bằng thư mục gốc, hay thư mục root (ký hiệu là /). Khái niệm ổ đĩa của Windows hay thư mục / của Unix-like đều là sự trừu tượng hóa tài nguyên lưu trữ (phần cứng) của hệ điều hành mà thôi. Các cây thư mục đều biểu diễn cấu trúc tổ chức thư mục trên một hệ điều hành, chỉ khác nhau một điểm đó là Windows có thể có nhiều cây thư mục tùy thuộc vào việc bộ nhớ của nó được trừu tượng thành bao nhiêu ổ đĩa, còn hệ thống Unix-like chỉ có một cây thư mục duy nhất bắt nguồn từ /.

Tóm tắt ý nghĩa của từng thư mục chính trên Unix-Linux.

Directory Description
/ Đây là thư mục gốc (root directory), là nơi bắt đầu của các file hệ thống, trong hầu hết các trường hợp, thư mục gốc chỉ chứa các thư mục con
/boot Đây là nơi mà Nhân Linux và file boot của hệ thống được lưu trữ, Nhân linux là file được gọi là vzlinuz.
/etc Thư mục /etc chứa các file cấu hình (configuration) của hệ thống. Các file trong /etc đa số là các file text. Điển hình là:

/etc/passwd: file này chứa thông tin cần thiết cho mỗi người dùng, trên đó chứa những người dùng được định nghĩa trên hệ thống

/etc/fstab: file này chứa một bảng các thiết bị được gắn kết khi hệ thống boot. File này định nghĩa ổ đĩa của bạn

/etc/hosts: file này liệt kê danh sách các host mạng  và địa chỉ IP và bản chất của hệ thống

/etc/init.d: thư mục này chứa các script, bắt đầu những dịch vụ thông thường khác nhau của hệ thống tại thời điểm boot

/bin, /usr/bin Hai thư mục này chưa hầu hết các chương trình trên hệ thống. /bin chứa các chương trình cần thiết để hệ thống yêu cầu tổ chức. Trong khi đó, /usr/bin lại chứa các chương trình ứng dụng cho các người dùng trên hệ thống
/sbin, /usr/sbin Thư mục /sbin chứa các chương trình cho người quản trị hệ thống, được sử dụng thông qua tên gọi superuser
/usr Thư mục này chứa các thứ đa dạng hỗ trợ cho người dùng ứng dụng. Ví dụ như:

/usr/share/X11: hỗ trợ người dùng hệ thống X windows

/usr/share/dict: các từ điển kiểm tra chính tả, Linux có một bộ phận kiểm tra chính tả, tiêu biểu là look và ispell

/usr/share/doc: các file tài liệu khác nhau trong một sự đa dạng các định dạng

/usr/share/man: các trang người dùng được giữ ở đây

/usr/src: chứa các file source code, nếu bạn cài đặt gói mã nguồn của nhân, bạn sẽ tìm thấy toàn thể source code của nhân ở trong này

/usr/local Nó là thư mục con dùng để cài đặt phần mềm hoặc các file khác dùng trên máy cục bộ. Nó có ý nghĩa khi phần mềm không là một phần của sự phân tán chính thức (thường ở trong /usr/bin).

Khi bạn tìm thấy một chương trình yêu thích trên hệ thống, chúng được cài đặt trong một trong các thư mục nằm trong /usr/local. Hầu hết, thư mục được chọn là /usr/local/bin

/var Thư mục này có chứa các file thay đổi khi hệ thống khởi chạy. Bao gồm:

/var/log: thư mục chứa các file log, chúng sẽ cập nhật khi hệ thống chạy, bạn nên xem file này trong từng thời điểm để nắm bắt “sức khỏe” của hệ thống.

/var/spool: thư mục này giữ các file được xếp hàng cho một vài tiến trình, như tin nhắn mail hoặc in công việc. Khi mail của người dùng gửi đến hệ thống lần đầu tiên trong một hệ thống cục bộ, tin nhắn được lưu trữ đầu tiên ở /var/spool

/lib Chứa các thư viện chia sẻ được (tương tự như các thư viện DLL trên windows)
/home Là nơi người dùng giữ việc của mình. Thông thường, nó chỉ là nơi người dùng được phép viết file. Nó giữ mọi thứ tốt và sạch sẽ. Bởi vì hệ thống Linux cho phép nhiều người dùng khác nhau trên một hệ thống. Sẽ thật tê nếu như bạn làm gì ảnh hưởng đến người dùng khác J
/root Là thư mục của superuser
/tmp Thư mục mà chương trình có thể viết các file tạm
/dev Là một thư mục khá đặc biệt, nó không chứa các file theo đúng nghĩa, nó chỉ chứa các thiết bị trên hệ thống. (trong hệ thống Linux hoặc Unix, các thiết bị được xem như file, chẳng hạn, bàn phím, màn hình, ổ đĩa,… đều là file trên Unix-Linux) ví dụ /dev/SDA là IDE ổ cứng đầu tiên trên hệ thống (nếu bạn cài Linux rồi thì bạn sẽ biết tới cái này)
/proc Nó cũng là thư mục khá đặc biệt. Trên thực tế, không phải tất cả các thư mục đều tồn tại, có một số là ảo. /proc là một trong số đó, nó chứa các lỗ dẫn tới nhân. Chúng là một nhóm các lối vào trong thư mục này tương ứng với tất cả các tiến trình đang chạy trên hệ thống. Một vài trong số chúng có thể view được, chẳng hạn bạn vào /proc/cpuinfo.
/media, /mnt /media là một thư mục đặc biêt, nó dùng để chuyển các điểm. Như chúng ta đã biết, các thiết bị lưu trữ vật lý như ổ cứng được đính kèm trong hệ thống cây thư mục. Tiến trình đính kèm một thiết bị vào cây  gọi là mounting.

Khi hệ thống khởi động, nó đọc danh sách các lệnh mounting trong /etc/fstab mô tả thiết bị được chuyển và trong cây thư mục. Tuy nhiên có nhiều thiết bị yêu cầu file tạm(tempotary file) như CD-ROM,  /media được dùng cho các thiết bị mounting tự đông, còn /mnt cung cấp một nơi thuận tiện để mounting các thiết bị có thể tháo được như CD-ROM, bạn sẽ thường thấy  thư mục /mnt/cdrom. Để xem các thiết bị và mount point bạn có thể gõ mount trên Terminal.

Tiếp theo sẽ là các Permission của người dùng.

Bài trươc mình đã nói sơ qua về quyên của người dùng đối với một file, cụ thể sau khi gõ ls -l hoặc ls -l ~/Downloads (hai lệnh này mình đã nói ở bài viết trước, các bạn tham khảo lại nhé) thì nó sẽ hiện ra một danh sách các file/thư mục có trong thư mục hiện hành (đối với ls -l) hoặc trong thư mục /hom/user_name/Downloads (đối với lệnh ls -l ~/Downloads) với định dạng đầy đủ, ví dụ mình lấy một trong các kết quả in ra sau khi gõ lệnh ls -l ~/Downloads trên Terminal của mình (thư mục hiện hành của mình là /hom/cr0ss/) là:

cr0ss@cr0ss-X455LA:~$ ls -l ~/Downloads
total 453160
-rw-rw-r– 1 cr0ss cr0ss 326412652 Th03 11 03:25 android-sdk_r24.4.1-linux.tgz
-rw-rw-r– 1 cr0ss cr0ss 96036772 Th03 19 23:56 arduino-1.6.8-linux64.tar.xz

-rwxr-xr-x 1 cr0ss cr0ss 108 Th03 28 06:58 example.sh
-rw-rw-r– 1 cr0ss cr0ss 52758 Th03 28 20:02 bash.png
-rw-rw-r– 1 cr0ss cr0ss 20250097 Th03 10 16:43 codeblocks_16.01.tar.gz
-rw-rw-r– 1 cr0ss cr0ss 59092 Th03 29 14:08 file_permissions.png
-rw-rw-r– 1 cr0ss cr0ss 68472 Th03 28 15:42 filesystem-structure.png
-rw-rw-r– 1 cr0ss cr0ss 161280 Th03 28 01:04 thuat-toan-horner.doc
-rw-rw-r– 1 cr0ss cr0ss 20940288 Th03 25 21:55 vlc-2.2.1.tar.xz
cr0ss@cr0ss-X455LA:~$

Hai trong số các kết quả in ra :

-rw-rw-r--   1 cr0ss     cr0ss   20940288  Th03 25 21:55 vlc-2.2.1.tar.xz
-rwxr-xr-x   1 cr0ss     cr0ss      108    Th03 28 06:58 example.sh

----------     -------  -------  -------- ------------ -------------
    |             |        |         |         |             |
    |             |        |         |         |         File Name
    |             |        |         |         |
    |             |        |         |         +---  Modification Time
    |             |        |         |
    |             |        |         +-------------   Size (in bytes)
    |             |        |
    |             |        +-----------------------        Group
    |             |
    |             +--------------------------------        Owner
    |
    +----------------------------------------------   File Permissions

các dòng khác thì tương tự. Đi từ phải sang trái:

  • vlc-2.2.1.tar.xz hoặc example.sh là file name.
  • Th03 25 21:25  hoặc Th03 28 06:58 là thời gian gần nhất bạn thao tác lên file đó (đọc, ghi, thực thi).
  • 20940288 hoặc 108 là kích thước của file.
  • cr0ss là nhóm người dùng có thể sử dụng được file đó.
  • cr0ss tiếp theo là tên user sở hữu file đó 1 là số thành phần có trong file/thư mục.
  • -rw-rw-r-- hoặc -rwxr-xr-x là file permissions là quyền truy cập file, trên hệ thống,do Linux là hệ thống phân quyền nên thông số này rất quan trọng.

∗ Ở đây mình chỉ tập trung vào thông số file permissions, các tham số file permissions có 4 nhóm: - Đầu tiên là dấu - có nghĩa là file hoặc d có nghĩa là thư mục - Tiếp theo là nhóm 3 ký tự kế tiếp: là các quyền của chủ sở hữu của file đó - Tiếp đến là nhóm 3 ký tự tiếp theo: là quyền của nhóm chủ sở hữu của file - Cuối cùng là nhóm 3 ký tự cuối: là quyền của các user khác Các chữ cái r, w, x, - tiếp theo nghĩa là quyền đọc ( r ), ghi ( w ),thực thi ( x ) và không được phép ( - ). Tất cả được giải thích theo hình vẽ dưới đây:

file_permissions

Bài viết sau này khi giới thiệu chi tiết về thay đổi quyền truy cập file sẽ nói chi tiết nhất về vấn đề này. Còn một lệnh nữa là lệnh less. less dùng để view một file text bất kỳ trong thư mục hiện hành hoặc trong bất kỳ thư mục nào kèm theo đường dẫn tới đó. Ví dụ mình đang ở thư mục /home/cr0ss/Downloads, khi gõ lệnh less example.sh trên Terminal sẽ cho kết quả như sau:

cr0ss@cr0ss-X455LA:~/Downloads$ less example.sh

 

#!/bin/bash
if [ $(id -u) != “0” ]; then
echo “You must be the superuser to run this script” >&2
exit 1
fi

và để thoát khỏi lệnh less thì bạn chỉ cần bấm q.

Các điều hướng trong less:

  • Page Up or b: Cuộn lên một trang
  • Page Down or space: Cuộn xuống một trang
  • G: Tới Cuối tập tin
  • 1G: Tới đầu tập tin
  • lcharacter: Tìm kiếm theo chiều xuôi của tập tin cho tới khi một ký tự character xuất hiện
  • n: Lặp lại tìm kiếm trước đó
  • h: Hiển thị danh sách đầy đủ ít các lệnh và lựa chọn
  • q: Thoát ra khỏi less

Bài này kết thúc ở đây, bài sau mình sẽ giới thiệu tiếp với các bạn các lệnh thao tác như cp, mv, rm,… và các lệnh thay đổi permission. Xin chào!

Advertisements

Author: phuoctv

My name is Phuoc. I'm interested in computer programming and sharing the knowledge. My email: phuoctv14@gmail.com

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s