Hệ thống UNIX nhìn đơn thuần có thể khái quát thành 2 phía chính: phía hệ thống - đó chính là phía đặc trưng bởi kernel ( nhân) hệ điều hành, và phía người dùng ( bao gồm các chương trình ứng dụng, công cụ). Hai lớp này giao tiếp với nhau thông qua một giao diện, đó chính là shell.
Về cơ bản, shell là một giao diện ( interface) giữa người dùng với nhân hệ điều hành, shell cung cấp các dịch vụ cho phép thông dịch các dòng lệnh (command lines ) hoặc các mã kịch bản (scripts) và gửi tới nhân (kernel).
Những loại shell thường gặp trên UNIX:
Trên UNIX thông dụng nhất là các shell được chia làm 2 họ ( family):
- Họ Bourne Shell: bao gồm có Bourne Shell ( sh ), Korn Shell ( ksh ), và Bourne Again Shell ( bash).
- Họ C Shell: bao gồm có C Shell ( csh), TC Shell ( tcsh )
Trong các loại trên thì thông dụng nhất và thường gặp nhất là bash.
Vậy dấu hiệu gì để bạn nhận biết một tiến trình shell đang sử dụng thuộc loại nào ? Không quá khó,
- Cách đơn giản nhất là nhìn vào dấu nhắc lệnh ( prompt symbol) ví dụ của sh,ksh là $, của csh,tcsh là %, ... tuy nhiên cách này không đảm bảo 100% vì bạn có thể tùy chỉnh được dấu nhắc này. ( điều này bàn kỹ hơn ở phần sau )
- Cách thứ 2 cũng đơn giản, nhưng kém hơn chút, đó là bạn gõ một lệnh :D, thêm 1 thao tác nhưng đảm bảo trúng 100% :lol: . Hãy gõ vào :
echo $SHELL
Xong, vậy bây giờ chúng ta đã biết mình đang thao tác với shell nào rồi chứ?
Tiếp theo ta sẽ tìm hiểu sơ lược về tiểu sử của các dạng shell này.
- Bourne Shell (sh) : được phát triển bởi Stephen Bourne thuộc phòng thí nghiệm AT&T Bell, được phát hành trên phiên bản Unix 7 năm 1977. Hiện tại vẫn được chọn làm shell mặc định sử dụng cho các tài khoản superuser trên nhiều phiên bản unix, unix-like. Bạn có thể dễ dàng tìm thấy phần khởi tạo cho shell này, mặc định thường là /bin/sh
- Korn Shell (ksh) : Korn shell được phát triển bởi David Korn ( cũng tại phòng thí nghiệm AT&T Bell) đầu những năm 80. Nó có khả năng tương thích ngược với Bourne shell và nó cũng kế thừa một số tính năng của C Shell, ví dụ như tính năng history - tính năng mà chúng ta vẫn quen biết khi sử dụng lệnh history. Phần khởi tạo mặc định cho các tiến trình shell này mặc định là /bin/ksh
- Bourne Again shell (bash): Bash nguyên bản vốn được viết bởi Brian Fox năm 1987 cho dự án GNU của hiệp hội phần mềm tự do ( Free software foundation – tổ chức khai sinh ra luật phần mềm nguồn mở GNU ). Bash là shell phổ biến nhất trên các dòng hệ điều hành linux hiện nay, ngoài ra còn có trên Mac OS X và Darwin. Chi tiết cụ thể về nó các bạn có thể tìm hiểu trên các địa chỉ khác. Phần khởi tạo mặc định /bin/bash
- C Shell (csh) : Csh nguyên thủy được phát triển bởi Bill Joy và được phát hành vào năm 1979 trên các hệ thống BSD Unix. Các phiên bản ban đầu của BSD sử dụng csh làm shell mặc định. C shell có cú pháp kịch bản khá tương đồng với ngôn ngữ C. Ngày nay C shell không còn được sử dụng nhiều trên các hệ thống unix nữa mà được thay thế bằng TC Shell.
- TENEX C Shell (tcsh): là phiên bản nâng cấp của C Shell, nó cũng tương thích ngược với csh.
Khái niệm cần lưu tâm thứ 2 : Login shell - đó là shell mà bạn sử dụng để đăng nhập vào hệ thống.
ReplyDeleteKhái niệm thứ 3 : chuyển hướng xuất nhập (input/output redirection) : có một tutorial rất hay và cặn kẽ của anh Nguyễn Việt Cường tại đây . Tôi xin đưa ra vài ví dụ về việc này:
output redirection: $cal 2009 > calendar.file lệnh này
lưu kết quả của lệnh cal 2009 vào file calendar.file.
input redirection: $mail root < calendar.file lệnh này sẽ thực hiện đọc nội dung file calendar.file làm input cho lệnh mail root, tức là sẽ gửi một mail cho root với nội dung như trong file calendar.file
combine input output redirection: $wc output.file lênh này sẽ đọc nội dung file input.file làm tham số cho lệnh wc, kết quả của lệnh wc sẽ được xuất ra file output.file
I was recommended this blog by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my difficulty. You're amazing! Thanks!
ReplyDelete