GNU/Linux Cơ Bản- Nâng Cao


Sử dụng và lập trình trên GNU/Linux từ cơ bản đến nâng cao [Các thành viên congdongcviet biên soạn và sưu tầm]



Mục lục của topic này :

#1 - Những kiến thức căn bản về terminal ; về hệ thống file và thư mục trong ; một số lệnh thông dụng thao tác file và thư mục ; về BASH trong GNU/Linux. ( luc13aka47 )

#2 và #3 - Tìm hiểu về trình biên soạn EMACS, trình biên dịch GCC ( GNU Compiler Collection ) và trình tự động biên dịch GNU Make trong GNU/Linux. ( luc13aka47 )

Mọi người chia sẻ nào  Mình sẽ cập nhật mục lục thường xuyên.

Command line interface trong Linux


The shell program

Shell là chương trình tương tác giữa bạn và OS. Khi bạn gõ lệnh, shell đọc các lệnh đó từ bàn phím, xử lý chúng và gửi chúng tới OS. Có nhiều chương trình shell khác nhau, nhưng trên hầu hết Linux OS, bash (Bourne Again SHell) là mặc định.
Nếu bạn đang sử dụng GUI, bạn muốn sử dụng CLI ( Command line interface ), có 2 cách, 1 là chuyển tới virtual terminal , 2 là khởi động terminal emulator.

Terminal emulator

Là chương trình tạo 1 cửa sổ và chạy shell trên nó. Nó giống như cmd trong Windows.
Có nhiều termianl emulator, như : xterm, rxvt, gnome-terminal, konsole, kvt, eterm, …

Virtual terminal

Một cách khác để sử dụng CLI là rời khỏi GUI hoàn toàn. Ta có thể tắt GUI, nhưng có 1 cách khác, đó là chuyển tới virtual terminal khác. Theo mặc định, linux có 6 virutal terminal, và cái thứ 7 chạy GUI.
Nhấn Ctrl + Alt + F1 để chuyển tới virtual terminal thứ nhất, Ctrl + Alt + F2 để chuyển tới cái thứ 2, … Thông thường, Ctrl + Alt + F7 sẽ đưa ta về GUI.

The command prompt

Thông thường, prompt gồm tên user và tên máy, theo sau là $, hoặc > ; nếu là # thì bạn đang sử dụng root.

Wildcards

Là 1 tính năng giống như regex, cho phép theo tác với pattern tùy chọn.

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_10.png
Lần xem: 4
Size:  12.9 KB
ID:  10390

Ví dụ.

Xóa toàn bộ file trong thư mục đang là việc.
rm *
Di chuyển các file có pattern :
mv *linux*.html dir1
Đọc các file với pattern :
less d*.txt
Xóa các file với pattern:
rm junk.???
Liệt kê các file với pattern :
ls hda[0-9]
ls hda[0-9][0-9]
Copy các file tới pattern :
cp [A-Z]* dir2
Remove các file với pattern :
rm *[!cehg]

Hệ thống tập tin và thư mục trên Linux 

Các thư mục và hệ thống tập tin ( mục này tham khảo quantrimang.com )

Hệ thống tập tin của Linux và Unix được tổ chức theo một hệ thống phân bậc tương tự cấu trúc của một cây phân cấp. Bậc cao nhất của hệ thống tập tin là thư mục gốc, được ký hiệu bằng vạch chéo “/” (root directory). Đối với các hệ điều hành Unix và Linux tất các thiết bị kết nối vào máy tính đều được nhận dạng như các tập tin, kể cả những linh kiện như ổ đĩa cứng, các phân vùng đĩa cứng và các ổ USB. Điều này có nghĩa là tất cả các tập tin và thư mục đều nằm dưới thư mục gốc, ngay cả những tập tin biểu tượng cho các ổ đĩa cứng.

Ví dụ, /home/nttvinh/nguyen/scnp.odt chỉ toàn bộ đường dẫn đến tập tin scnp.odt có trong thư mục nttvinh là thư mục phụ nằm trong thư mục home, ngay dưới thư mục gốc (/).

Nằm dưới thư mục gốc (/) có một loạt các thư mục quan trọng của hệ thống tập tin được công nhận ở tất cả các bản phân phối Linux khác nhau. Sau đây là danh sách các thư mục thông thường được nhìn thấy dưới thư mục gốc (/) :
  • /bin – chứa các ứng dụng quan trọng (binary applications),
  • /boot – các tập tin cấu hình cho quá trình khởi động hệ thống (boot configuration files),
  • /dev – chứa các tập tin là chứng nhận cho các thiết bị của hệ thống (device files)
  • /etc – chứa các tập tin cấu hình của hệ thống, các tập tin lệnh để khởi động các dịch vụ của hệ thống...
  • /home – thư mục này chứa các thư mục cá nhân của những người có quyền truy cập vào hệ thống (local users' home directories),
  • /lib – thư mục này lưu các thư viện chia sẻ của hệ thống (system libraries)
  • /lost+found – thư mục này được dùng để lưu các tập tin không có thư mục mẹ mà được tìm thấy dưới thư mục gốc (/) sau khi thực hiện lệnh kiểm tra hệ thống tập tin (fsck).
  • /media – thư mục này được dùng để tạo ra các tập tin gắn (loaded) tạm thời được hệ thống tạo ra khi một thiết bị lưu động (removable media) được cắm vào như đĩa CDs, máy ảnh kỹ thuật số...
  • /mnt – thư mục này được dùng để gắn các hệ thống tập tin tạm thời (mounted filesystems),
  • /opt – thư mục dùng dể chứa các phần mềm ứng dụng (optional applications) đã được cài đặt thêm,
  • /proc – đây là một thư mục đặc biệt linh động để lưu các thông tin về tình trạng của hệ thống, đặc biệt về các tiến trình (processes) đang hoạt động,
  • /root – đây là thư mục nhà của người quản trị hệ thống (root),
  • /sbin – thư mục này lưu lại các tập tin thực thi của hệ thống (system binaries)
  • /sys – thư mục này lưu các tập tin của hệ thống (system files),
  • /tmp – thư mục này lưu lại các tập tin được tạo ra tạm thời (temporary files),
  • /usr – thư mục này lưu và chứa những tập tin của các ứng dụng chính đã được cài đặt cho mọi người dùng (all users),
  • /var – thư mục này lưu lại tập tin ghi các số liệu biến đổi (variable files) như các tập tin dữ liệu và tập tin bản ghi (logs and databases).
Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_1.jpg
Lần xem: 3
Size:  20.0 KB
ID:  10381

Ổ đĩa và các Partition
  • /dev/hda Ổ đĩa cứng IDE đầu tiên (chính)
  • /dev/hdb Ổ đĩa cứng IDE thứ hai (thứ cấp)
  • /dev/sda Ổ đĩa cứng SCSI đầu tiên
  • /dev/sdb Ổ đĩa cứng SCSI thứ hai
  • /dev/fd0 Ổ đĩa mềm đầu tiên
  • /dev/fd1 Ổ đĩa mềm thứ hai
Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_2.jpg
Lần xem: 0
Size:  22.5 KB
ID:  10382

Ví dụ chúng ta chạy lệnh ls –l firstdoc.txt thấy kết quả như sau:
-rwxrw-r-- 1 User1 Testers 512 Oct 24 19:42 firstdoc.txt 
Ý nghĩa của các field là:
  • File Access Permission: -rwxrw-r--
  • Số liên kết: 1
  • File Owner: User1
  • Group: Testers
  • File Size (bytes): 512
  • Lần hiệu chỉnh cuối: Oct 24
  • Last Modification Time: 19:42
  • File name: firstdoc.txt
Ngoài ra, qua lệnh ls -i chúng ta sẽ biết được firstdoc.txt là tập tin hay thư mục dựa theo:
  • Nếu kí tự đầu tiên là (-), thì đây là tập tin.
  • Nếu kí tự đầu tiên là d, thì đối tượng là thư mục.
  • Nếu kí tự đầu tiên là l, thì đầy là một liên kết (symbolic link) trỏ đến một file khác (gần giống với shortcut trên Windows OS).
  • Nếu kí tự đầu tiên là b, đối tượng là block device ví dụ như disk drive.
  • Nếu kí tự đầu tiên là c, đối tượng là character device như serial port.
Object Ownership

Trong ví dụ trên chúng ta thấy các tập tin đều có một group owner và file owner. Trong trường hợp muốn thay đổi ownership cho group hay user khác hãy đăng nhập với quyền root và thự hiện lệnh sau để đổi quyền ownership đối với tập tin payroll.doc cho người dùng vp_finance
chown vp_finance payroll.doc 
Nếu muốn đổi quyền ownership cho group accounting hãy thực hiện lệnh
chown vp_finance.accounting payroll.doc 
Trong trường hợp muốn chuyển quyền ownership toàn bộ thư mục và các tập tin bên trong thì thự hiện lệnh chown với tùy chọn –R:
chown -R vp_marketing.marketing /marketing/June
chown -R .marketing /marketing/June 

Ngoài ra, nếu muốn chuyển quyền ownership mà không có quyền root thì có thể dùng lệnh chgrp nhưng lúc này bạn phải thuộc group có quyền ownership và group muốn chuyển quyền này.

Một số lệnh thao tác với thư mục

Câu lệnh pwd – Print working directory - Bạn đang ở đâu ?

Câu lệnh này in ra địa chỉ tuyệt đối của thư mục mà ta đang làm việc.

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_3.png
Lần xem: 4
Size:  6.6 KB
ID:  10383

Câu lệnh ls – Liệt kê nội dung của thư mục

Câu lệnh này in ra các file hoặc thư mục mà trong thư mục bạn đang làm việc và 1 thư mục được chỉ định bởi đường dẫn.
Có các tùy chọn thêm điều khiển cách liệt kê :

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_4.png
Lần xem: 5
Size:  38.7 KB
ID:  10384

Sử dụng tùy chọn –a để liệt kê cả các file và thư mục ẩn.

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_5.png
Lần xem: 5
Size:  38.4 KB
ID:  10385

Absolute pathnames – địa chỉ tuyệt đối

Là địa chỉ bắt đầu từ thư mục root ( dấu gạch chéo / ).
Ta có thể sử dụng địa chỉ tuyệt đối để truyền tham số tới ls, liệt kê nội dung trong 1 thư mục.

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_6.png
Lần xem: 5
Size:  14.2 KB
ID:  10386

Câu lệnh cd – Change directory – Thay đổi thư mục làm việc hiện tại

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_7.png
Lần xem: 3
Size:  8.0 KB
ID:  10387

Relative pathnames – địa chỉ tương đối

Là 2 dấu chấm ( .. ) hoặc địa chỉ có dấu . ở đầu.
Miêu tả địa chỉ bắt đầu từ thư mục đang làm việc.

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_8.png
Lần xem: 4
Size:  24.3 KB
ID:  10388

Tạo thư mục

Sử dụng lệnh mkdir.
mkdir dir1

Xóa thư mục

Sử dụng lệnh rmdir với thư mục rỗng, sử dụng lệnh rm với tùy chọn -r (recursively ) với thư mục không rỗng.
rmdir dir1
rm -ir dir1

Copy và move thư mục

Sử dụng cp với tùy chọn -r để copy thư mục ( nếu không có tùy chọn -r , sẽ có lỗi ):
cp -r dir1 dir2
Nếu dir2 chưa tồn tại, nó sẽ được tạo trước khi sao chép dir1. Nếu dir2 đã tồn tại, dir1 sẽ được sao chép tới dir2.
Sử dụng lệnh mv để move thư mục.
mv dir1 dir2
Nếu dir2 chưa tồn tại, dir1 sẽ được rename là dir2. Nếu dir2 đã tồn tại, dir1 sẽ được move tới dir2 dưới tên dir2/dir1.

Một số lệnh thao tác file 

Câu lệnh file – Xác định kiểu của file

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_9.png
Lần xem: 11
Size:  21.0 KB
ID:  10389

Câu lệnh cat và less - Đọc file dạng text

Lệnh cat

Đọc text file mà không phân trang.
Topic173.2.png

Lệnh less

Đọc text file theo kiểu phân trang.
Sử dụng giống cat.
Ta cũng có thể đọc nhiều file cùng 1 lúc:
less file1 file2 file3
Các phím điều khiển khi đọc file với less :

Click vào hình ảnh để lấy hình ảnh lớn

Tên:  linux_11.png
Lần xem: 7
Size:  20.3 KB
ID:  10391

Thao tác copy, rename, move, remove file

Lưu ý là Linux không có lệnh undo, bởi vậy hãy cẩn thận khi sử dụng các lệnh thao tác với file.

Copy

Sử dụng lệnh cp.
cp file file2
Nếu file2 không tồn tại, file2 sẽ được tạo, nếu file2 đã tồn tại, nó sẽ bị ghi đè.
Ta có thể sử dụng tùy chọn -i để xác minh việc copy.
cp -i file file2
cp: overwrite `file2'? n
$
Copy file tới 1 thư mục :
cp file dir1
Copy file tới 1 thư mục với tên khác :
cp file dir1/file2
Copy nhiều file tới 1 thư mục :
cp file1 file2 file3 dir1

Move và rename

Sử dụng lệnh mv.
mv file file2
Nếu file2 chưa tồn tại, file2 sẽ được tạo, nếu file2 đã tồn tại, nó sẽ bị ghi đè.
Nên sử dụng tùy chọn -i để xác minh.
Move file tới thư mục khác :
mv file dir1
Move file tới thư mục khác với tên khác :
mv file dir1/file2

Remove

Sử dụng lệnh rm.
rm -i file
Có thể remove nhiều file cùng lúc :
rm file1 file2

Tìm hiểu Bash trong Linux (mục này tham khảo quantrimang.com )

Đó là giao diện lệnh mặc định trên hầu hết những bản phân phối GNU/Linux mới. Bash là giao diện lệnh chính của hệ điều hành Linux, nó nhận, thông dịch và thực thi lệnh, sau đó cung cấp bộ nhớ điều khiển giao diện và thực thi những tác vụ được tự động hóa.
Bash ẩn đi nhiều công cụ mạnh và phím tắt. Nếu thường xuyên làm việc với dòng lệnh, công cụ này có thể giúp bạn tiết kiệm được khá nhiều thời gian. Dưới đây là 10 tính năng hữu dụng nhất của Bash.

1. Dễ gọi lại lệnh
Bash theo dõi mọi lệnh thực thi trong một bộ đệm lược sử, và cho phép người dùng gọi lại những lệnh trước đó bằng cách dùng phím Up (lên) và Down (xuống) để lựa chọn. Thậm chí người dùng có thể gọi lại lệnh thực thi trước đó nhanh hơn nữa bằng cách nhập một vài kí tự đầu tiên của lệnh sau đó nhấn tổ hợp phím Ctrl+R, sau đó bash sẽ kiểm tra lược sử lệnh để tìm ra những lệnh phù hợp nhất với điều kiện tìm và hiển thị chúng trên giao diện console. Nhấn tiếp tổ hợp phím Ctrl+R để xem danh sách lệnh phù hợp tiếp theo.

2. Sử dụng bí danh lệnh

Nếu thường xuyên chạy một lệnh trên cùng một nhóm tùy chọn, bạn có thể sử dụng bash để tạo một bí danh cho lệnh này. Bí danh này sẽ bao gồm những tùy chọn được yêu cầu, vì vậy bạn sẽ không cần phải ghi nhớ chúng hay đặt lại những tùy chọn này mỗi khi chạy lại nó. Ví dụ, nếu thường xuyên sử dụng lệnh ls với tùy chọn -l để xem một danh sách thư mục chi tiết, bạn có thể sử dụng lệnh bash> alias ls='ls -l' để tạo một bí danh tự động tích hợp tùy chọn -l.

Khi bí danh này đã được tạo, nhập ls vào dấu nhắc lệnh, bash sẽ gọi bí danh này và kết xuất kết quả -l của lệnh ls. Bạn có thể xem danh sách bí danh hiện có bằng cách dùng lệnh alias(không có đối số), và xóa một bí danh với lệnh unalias.

3. Sử dụng Filename Auto-Completion

Bash hỗ trợ Filename Auto-Completion tại thông báo lệnh. Để sử dụng tính năng này, nhập những chữ cái đầu tiên trong tên file, sau đó tab.bash sẽ kiểm tra thư mục hiện thời, cũng như mọi thư mục khác trong Search Path (đường dẫn tìm kiếm), để tìm ra file có tên phù hợp nhất với điều kiện tìm. Nếu tìm thấy nhiều kết quả, bạn sẽ được nhắc nhở lựa chọn ra một kết quả.

4. Hiệu chỉnh dòng lệnh bằng phím tắt

Bash hỗ trợ nhiều phím tắt để điều khiển và hiệu chỉnh dòng lệnh. Ví dụ:
  • Tổ hợp phím Ctrl+A di chuyển con trỏ lên đầu dòng lệnh.
  • Tổ hợp phím Ctrl+E di chuyển con trỏ đến cuối dòng lệnh.
  • Tổ hợp phím Ctrl+W xóa từ đứng trước con trỏ.
  • Tổ hợp phím Ctrl+K xóa mọi kí tự sau con trỏ.
  • Tổ hợp phím Ctrl+Y khôi phục xóa.
5. Tự động thông báo thư mới

Người dùng có thê cấu hình bash tự đông thông báo khi có thư đến bằng cách cài đặt biến số $MAILPATH chỉ vào mail spool cục bộ. Ví dụ, lệnh bash> MAILPATH='/var/spool/mail/user' và bash> export MAILPATH Causes bash sẽ đưa ra thông báo trên giao diện console của user mỗi khi mail spool của user có một tin nhắn mới.

6. Chạy tác vụ trong Background

Bash cho phép người dùng chạy một hay nhiều tác vụ trong một background, và lựa chọn hoãn hay chạy lại một tác vụ hiện thời bất kì. Để chạy một tác vụ trong background, chỉ cần thêm một ký tự “&” vào cuối dòng lệnh. Ví dụ:
bash> tail -f /var/log/messages & 
Mỗi tác vụ chạy trên background theo phương pháp này sẽ được gán một ID ược in ra giao diện console. Một tác vụ có thể được đưa trở lại foreground bằng lệnh fg jobnumber, trong đójobnumber là ID của tác vụ bạn muốn đưa lên foreground. Ví dụ:
bash> fg 1 
Bạn có thể xem danh sách tác vụ đang thực hiện bằng cách nhập lệnh jobs vào dấu nhắc lệnh trong bash.

7. Truy cập nhanh vào thư mục thường sử dụng

Có thể bạn đã biết biến số $PATH trong Search Path của bash, Search Path là những thư mục được tìm kiếm tiếp theo sau khi đã tìm kiếm trong thư mục hiện thời. Tuy nhiên bash cũng hỗ trợ biến số $CDPATH liệt kê những thư mục mà lệnh cd sẽ truy lục khi cố gắng thay đổi thư mục. Để sử dụng tính năng này, trước tiên cần phải gán biến số $CDPATH cho một danh sách thư mục. Ví dụ:
bash> CDPATH='.:~:/usr/local/apache/htdocs:/disk1/backups' 
bash> export CDPATH 
Từ giờ, bất cứ khi nào lệnh cd được sử dụng, bash sẽ kiểm tra mọi thư mục trong danh sách $CDPATH để tìm ra những thư mục có tên phù hợp nhất.

8. Thực hiện tính toán

Bash có thể thực hiện một số phép tính đơn giản trong môi trường lệnh. Để sử dụng tính năng này, người dùng chỉ cần nhập biểu thức toán học cần thực hiện vào dấu nhắc lệnh bên trong hai ngoặc đơn, sau đó bash sẽ tính toán và phản hồi kết quả. Ví dụ, khi nhập lệnh bash> echo $((16/2)), bash sẽ trả về kết quả là 8.

9. Tùy chỉnh thông báo trên giao diện

Người dùng cũng có thể tùy chỉnh lời nhắc trong thông báo lệnh của bash để hiển thị tên người dùng, tên máy chủ, thời gian hiện tại, mức trung bình tải và/hoặc thư mục hiện đang làm việc.

Để hiển thị những thông tin này, người dùng phải thay đổi biến số $PS1 như sau:
bash> PS1='\u@\h:\w \@> ' 
bash> export PS1 root@medusa:/tmp 03:01 PM> 
Sau đó tên của người dùng đang đăng nhập, tên máy chủ, thư mục hiện đang làm việc và thời gian hiện tại sẽ được hiển thị trên lời nhắc trong giao diện bash. Bạn cũng có thể xem danh sách kí hiệu của bash trong trang hướng dẫn.

10. Hướng dẫn sử dụng lệnh

Bash còn có tính năng trợ giúp sử dụng tất cả các lệnh tích hợp trên nó. Bạn chỉ cần nhập help vào dấu nhắc lệnh để xem danh sách tất cả các lệnh tích hợp trên bash. Để xem trợ giúp cho mỗi lệnh, nhập lệnh help command, trong đó command là lệnh bạn muốn được trợ giúp. Ví dụ:
bash> help alias 
...some help text... 
Do đó, bạn có thể xem chi tiết trợ giúp trên giao diện bash bằng cách nhập man bash vào dấu nhắc lệnh.

0 nhận xét:

Đăng nhận xét