Thứ Bảy, 6 tháng 10, 2012

Custormizing your promt

Ngồi nghịch mấy cái bash shell Linux thấy thích thích, chia sẻ cho anh em một xíu, ví dụ đơn giản nhất: Thay đổi promt của chúng ta:
Promt của mình [root@toet ~]#
Mình dùng
 [root@toet~]#export PS1='[\d@\h\w]$'
kết quả thu được
[Fri Sep 28@toet~]#
Trong ví dụ trên mình đã đổi  '[\u@\h\w]#' thành '[\d@\h\w]#' nghĩa là user trong promt đổi thành thông số ngày tháng.
Minh xin phân tích một chút. Về Promt(dấu nhắc) nó nhắc nhở bạn rằng shell đã sẵn sàng nhận input từ bạn. Giá trị mặc định của nó phụ thuộc vào hệ thống bạn dùng. Mình dùng CentOS, bash của mình là  [user@host~]# ([\u@\h\w]). Trong đó
  • user: có thể là root hoặc một người dùng bình thường
  • host: là tên máy của mình.
  • ~: là thư mục nhà của user đối với user root nhà của nó nằm ở /root, user bình thường sẽ nằm ở /home/user. ví dụ mình có user lytoet thì nó có nhà ở /home/lytoet.
  • #: nó thể hiện mình đang có quyền root, nếu là user bình thường thì là dấu $
  • PS1(Promt String 1): nó thực chất là một biến shell (shell variable). Lại liên quan đến một khái niệm biến Shell. Vậy nó là gì?
  1. Biến Shell là gì?
  • Trong suốt quá trình thực thì bash duy trì một tập hợp các biến shell chứa các thông tin quan trọng trong việc thực thi của shell. Hầu hết các biến này được set khi khi bash khởi động, nhưng bất cứ lúc nào chúng ta cũng có thể set lại giá trị cho chúng.
  • Quay trở lại với PS1 đó là một biến đặc biệt giữ nội dung của command promt, nó được thấy khi bash sắn sàng chấp nhận commands. Ta có thể sử dụngecho command để hiện nội dụng của PS1 mình ví dụ: 
[Fri Sep 28@toet~]$echo $PS1
Kết quả
[\d@\h\w]$
  •  Các tùy chọn có thể kể đến như \d (date), \h(host), \w(là nơi đang thao tác), /u(username).\n xuống dòng, các bạn tự thử (google).
  • Lệnh echo ở trên chỉ cho ta xem được nội dụng chứ hoàn toàn không tác động đến promt ta sử dụng export . các bạn man export để biết thêm.
  • Các bạn sử dụng cách trên để "nghịch " thêm
  1. Hiện giờ phút giây
  2. Hiện bash version
  • In ra tổng số tiến trình(jobs) mà shell đang quản lí.(việc này hữu dụng khi bạn chạy nhiều background jobs mà không nhớ được chúng).

Không có nhận xét nào:

Đăng nhận xét