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

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

 

 

Các thao tác cơ bản trên Terminal

Hôm nay mình sẽ giới thiệu các thao tác trên terminal. Các bạn đọc bài giới thiệu của mình tại đây.

Giao diện sau khi mở của Terminal sẽ khác nhau đôi chút tùy vào hệ điều hành bạn sử dụng. Ví dụ Elementary OS nó sẽ trông như thế này:

cr0ss@cr0ss-X455LA:~$

Đầu tiên, ta test thử bàn phím trên Terminal bằng cách nhập 1 chuỗi ký tự bất kỳ, ví dụ

cr0ss@cr0ss-X455LA:~$ lskdjslakjfl

Terminal sẽ trả về kết quả như sau:

lskdjslakjfl: command not found

Nếu bạn nhận lại dòng lệnh như trên thì đừng lo lắng, mọi thứ đang vận hành tốt.

Ngoài bàn phím, bạn cũng có thể sử dụng chuột trên Terminal bằng cách cuộn trang lên-xuống, bôi đen kí tự, dòng,…

Ok, tất cả đã sẵn sàng cho các dòng lệnh đầu tiên trên Shell

Nhóm lệnh điều hướng (Nagavition) trên Shell: pwd (in ra thư mục làm việc hiện hành – print working directory), cd (chuyển thư mục – change directory), và ls (in ra danh sách các file và thư mục có trong thư mục đang làm việc), file (xác định kiểu dữ liệu được chứa trong file và in nó ra)

pwd

Trước tiên, các bạn xem cấu trúc thư mục của Linux và các hệ điều hành Unix-like

filesystem-structure

Về ý nghĩa và công dụng của các tên thư mục trong cây thư mục mình sẽ giải thích ở bài sau, giờ chúng ta sẽ tìm hiểu cách thao tác các lệnh cơ bản, nên mình nói sơ lược, hệ thống thư mục trên Linux bắt đầu bằng thư mục /, nó là thư mục gốc, các thư mục khác là thư mục con của nó. Thông thường khi các bạn mở Terminal lên, thư mục làm việc của các bạn sẽ là /home/user_name.  Các bạn có thể dùng lênh pwd để kiểm tra:

cr0ss@cr0ss-X455LA:~$ pwd

và kết quả sẽ là

/home/cr0ss

cd

Lệnh cd chuyển thư mục làm việc tới một thư mục nào đó bất kỳ tồn tại trên hệ thống. Cú pháp như sau: cd  _directory, trong đó, directory là đường dẫn tới một thư mục. Ví dụ:

cr0ss@cr0ss-X455LA:~$ cd /mnt   #mình chuyển tới thư mục /mnt
cr0ss@cr0ss-X455LA:/mnt$  #bây giờ thư mục làm việc sẽ chuyển đến đây

cr0ss@cr0ss-X455LA:/mnt$ pwd  #in ra thư mục hiện hành
/mnt

các câu sau dấu “#” trong đoạn demo trên là các comment, Shell sẽ bỏ qua các kí tự sau dấu #. Về sau mình sẽ nói rõ trong phần trong phần viết một Shell script.

Khi cd tới một thư mục không tồn tại trên hệ thống thì sẽ báo lỗi, ví dụ:

cr0ss@cr0ss-X455LA:/mnt$ cd /home/cr0ss/adad
bash: cd: /home/cr0ss/adad: No such file or directory

––> Lưu ý phím tắt cho thư mục /home/user_name sẽ là ~/, ví dụ mình sẽ chuyển thư mục làm việc của mình tới thư mục /home/cr0ss/Dowloads bằng cách sử dụng phím tắt:

cr0ss@cr0ss-X455LA:~$ cd ~/Downloads
cr0ss@cr0ss-X455LA:~/Downloads$

––> Ngoài ra còn có thể  chuyển thư mục làm việc ra  thư mục cha của nó bằng cách dùng lệnh cd ..

cr0ss@cr0ss-X455LA:~/Downloads$ cd ..
cr0ss@cr0ss-X455LA:~$

––> Lưu ý trong lệnh cd, kí hiệu “.” chính là thư mục đó tự tham chiếu đến chính nó, ví dụ khi đang ở thư mục làm việc là /home/user_name, bạn dùng lệnh “cd .” chính là chuyển thư mục làm việc đến chính nó, “cd ./directory” là chuyển thư mục làm việc tới thư mục con nằm trong /home/user_name.  Ví dụ:

cr0ss@cr0ss-X455LA:~$ cd .
cr0ss@cr0ss-X455LA:~$ pwd
/home/cr0ss

cr0ss@cr0ss-X455LA:~$ cd ./Downloads
cr0ss@cr0ss-X455LA:~/Downloads$

ls

Lệnh ls có nghĩa là in ra danh sách các file và  thư mục trong thư mục đang làm việc. ls có một số dạng như sau:

  1. ls: in ra danh sách các file và thư mục chứa trong thư mục hiện đang làm việc
  2. ls _directory: in ra danh sách các file trong _directory
  3. ls -l: in ra danh sách các file trong thư mục hiện hành theo dạng đầy đủ
  4. ls -l _directory: in ra danh sách các file trong _directory dưới dạng đầy đủ
  5. ls -la .. : in ra danh sách các file (gồm cả các file ẩn –  file ẩn  hoặc thư mục ẩn trên linux  bắt đầu bằng dấu chấm, bạn có thể xem bằng cách bấm Ctrl+H trong ứng dụng Files) trong thư mục cha đang làm việc với định dạng đầy đủ

Ví dụ:

ls

cr0ss@cr0ss-X455LA:~$ ls
cocos2d-x-3.10   Dropbox   opencv   Qt   Videos
Documents   Music   Pictures   sketchbook   WP_backup_codespdf
Downloads   MyData   Public   Templates

ls ~/Downloads

cr0ss@cr0ss-X455LA:~$ ls ~/Downloads
android-sdk_r24.4.1-linux.tgz   filesystem-structure.png
arduino-1.6.8-linux64.tar.xz   thuat-toan-horner.doc
codeblocks_16.01.tar.gz   vlc-2.2.1.tar.xz
cr0ss@cr0ss-X455LA:~$

ls -l

cr0ss@cr0ss-X455LA:~$ ls -l
total 112
drwxrwxr-x 15 cr0ss cr0ss 4096 Th03 3 18:11 cocos2d-x-3.10
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Documents
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 28 15:42 Downloads
drwx—— 6 cr0ss cr0ss 4096 Th03 28 13:56 Dropbox
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Music
drwx—— 4 cr0ss cr0ss 4096 Th03 3 13:24 MyData
drwxrwxr-x 13 cr0ss cr0ss 4096 Th03 3 16:38 opencv
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 13 20:24 Pictures
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Public
drwxrwxrwx 8 cr0ss cr0ss 4096 Th03 3 16:28 Qt
drwxrwxr-x 3 cr0ss cr0ss 4096 Th03 20 02:41 sketchbook
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Templates
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Videos
-rw——- 1 cr0ss cr0ss 57940 Th03 28 01:53 WP_backup_codespdf

ls -l ~/Downloads

cr0ss@cr0ss-X455LA:~$ ls -l ~/Downloads
total 453040
-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
-rw-rw-r– 1 cr0ss cr0ss 20250097 Th03 10 16:43 codeblocks_16.01.tar.gz
-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:~$

ls -la ..

cr0ss@cr0ss-X455LA:~$ ls -la ..
total 12
drwxr-xr-x 3 root root 4096 Th03 3 12:03 .
drwxr-xr-x 23 root root 4096 Th03 23 14:24 ..
drwxr-xr-x 31 cr0ss cr0ss 4096 Th03 28 13:55 cr0ss
cr0ss@cr0ss-X455LA:~$

––> Lưu ý, các thư mục hay file mà ls in ra có màu khác nhau đối với từng loại.

file

Lệnh file được dùng theo cú pháp như sau: file name_of_file. Nó sẽ in ra xem xét thông tin về kiểu dữ liệu mà file đang chứa. Dưới đây là bảng mô tả các loại file trên Linux

Capture

––> Lưu ý trong phần ví dụ in ra của lệnh ls -l, ls -l ~/Downloads có các đoạn như:

drwxrwxr-x 15 cr0ss cr0ss 4096 Th03 3 18:11 cocos2d-x-3.10
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Documents
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 28 15:42 Downloads
drwx—— 6 cr0ss cr0ss 4096 Th03 28 13:56 Dropbox
drwxr-xr-x 2 cr0ss cr0ss 4096 Th03 3 12:15 Music
drwx—— 4 cr0ss cr0ss 4096 Th03 3 13:24 MyData
drwxrwxr-x 13 cr0ss cr0ss 4096 Th03 3 16:38 opencv
-rw——- 1 cr0ss cr0ss 57940 Th03 28 01:53 WP_backup_codespdf

các bạn để ý những chỗ mình underline, phần sau mình sẽ phân tích chi tiết về những kí tự này, sơ lược thì những chữ được underline ở đầu các dòng đó là “permissions” nôm na là quyền truy cập file, còn những số mình gạch dưới đó là kích thước (byte) của thư mục/file đó

Nguồn hình ảnh: sưu tầm

 

 

Tổng quan về Shell

Chào các bạn! Trước khi bắt đầu bài viết, mình xin giới thiệu đôi chút về mục đích bài viết. Thực tế đa số hệ điều hành của các máy tính hiện nay chủ yếu thuộc hai kiểu đó là Microsoft Windows (năm 1985 bởi Microsoft) và kiểu Unix (năm 1960-1970 tại AT&T Bell Labs bởi Dennis Ritche và Ken Thompson), trong đó Linux (1991 bởi Linus Tovald) là một họ các hệ điều hành kiểu Unix được xây dựng từ chung một nhân Linux và các tiện ích đi kèm gọi là các Linux Distribution. Nếu các bạn đã quá quen thuộc Windows thì có vẻ như  Linux hay các hệ điều hành kiểu Unix còn hơi xa lạ và khó sử dụng (nhất là đối với Việt Nam mình 🙂 ). Ở đây mình không so sánh Windows với Linux hoặc Unix, mình viết bài này để giới thiệu cho các bạn mới làm quen và còn lạ lẫm với Unix-Linux để các bạn có thể làm chủ hệ điều hành của mình (dĩ nhiên là một cách tương đối thôi nhé, vì mình cũng không am hiểu tất tần tật về Unix-Linux, mình chỉ giới thiệu những gì mình biết thôi, hihi 🙂 ). Bài viết này và các bài viết sau của mình về Shell chủ yếu đều tham khảo trong cuốn The Linux Command Line của tác giả William E. Shotts, Jr. Nào, giờ thì bắt đầu thôi!

Nếu bạn đã và đang tìm hiều về  Linux hoặc một hệ điều hành Unix nào đó thì chắc hẳn ít nhất một lần các bạn đã nghe tới Shell, vậy Shell là cái gì? 🙂

Như bạn đã biết, hệ điều hành tương tác với người dùng thông qua giao diện đồ họa (GUIs) và giao diện dòng lệnh (CLIs). Thì Shell là một trình thông dịch lệnh tương tác giữa người dùng và hệ điều hành theo giao diện dòng lệnh có trên các hệ điều hành Unix-like như Linux, MacOS,…. Shell tương tự như Command Prompt trên Windows dùng để phục vụ các mục đích giống như các chương trình dùng  giao diện đồ họa. Giờ chúng ta cùng đi vào tìm hiểu chi tiết về Shell nhé!

Các loại Shell:

Hầu hết trên các hệ điều hành Linux đều có sẵn bash (viết tắt của Bourne Again Shell, là một phiên bản nâng cao của shell nguyên thủy sh trên Unix được viết bởi Steve Bourne). Ngoài bash ra còn có các loại shell khác trên các hệ thống Linux như tcsh, ksh, zsh.

Một Terminal là gì?

Dịch sát nghĩa thì nó là một thiết bị đầu cuối dùng để tương tác với người dùng, tuy nhiên ở đây mình chỉ nêu ý nghĩa của nó chứ không cố gắng dịch nghĩa nó ra cho các bạn  😀 Nó là một chương trình gọi là terminal emulator. Khi bạn gọi nó thì nó mở ra 1 cửa sổ và để bạn tương tác với shell. Có nhiều loại terminal emulator tùy vào các Linux distribution như kconsole, gnome-terninal, xterm, eterm, nxterm, rxvt, kvt.

Khởi động Terminal.

Trình quản lý cửa sổ của bạn có thể khởi động terminal theo các cách khác nhau. Ví dụ mình sử dụng Elementary OS, muốn mở Terminal có thể rê chuột lên trên góc trái màn hình click vào Applications, trong ô search gõ Terminal -> Enter. Nếu bạn sử dụng môi trường desktop KDE có thể gọi kconsole hoặc sử dụng Gnome có thể gọi gnome-terminal bằng cách sử dụng các phím tắt,…

Bài đầu tiên kết thúc ở đây. Bài sau mình sẽ hướng dẫn các bạn sử dụng Terminal thao tác với shell. Chào các bạn!