Shell và bash là gì?
Shell là một chương trình ứng dụng. Nếu bạn nhập các lệnh văn bản vào chương trình này, hệ thống sẽ thực hiện các thao tác tương ứng. "Chương trình shell" này là giao diện mà qua đó chúng ta sử dụng các chức năng khác nhau của hệ thống. Học shell có nghĩa là học cách vận hành hệ thống Linux. Tìm kiếm /etc/shells để xem hệ thống hiện tại có những shell nào. Bash (Bourne Again SHell) là chương trình shell mặc định cho hầu hết Linux và cũng là shell được sử dụng rộng rãi nhất.
Sự khác biệt giữa shell, terminal, console, tty
Trong bối cảnh máy tính hiện đại, terminal, console và tty có nghĩa giống nhau, đó là "terminal". Thiết bị đầu cuối là giao diện để tương tác với người dùng, được kết nối với shell. Nó rất dễ hiểu khi sử dụng tên phần mềm Windows. Sh trong Bash là viết tắt của shell, và powershell cũng là shell. Chúng chấp nhận đầu vào và thực hiện các thao tác; và terminal của windows là một terminal. Nó chứa tiến trình shell, chấp nhận đầu vào từ bàn phím và chuyển nó đến shell, đưa ra kết quả hoạt động. và quản lý đầu vào và đầu ra, kiểu phông chữ, kích thước và màu sắc.
hàm biến bash
Câu lệnh Bash có thể sử dụng và lưu trữ các biến. Với tính năng này, bash không chỉ là một công cụ tương tác mà còn có chức năng lập trình.
Đọc và ghi biến
Echo có thể kiểm tra một biến. Để đọc biến đó, bạn cần thêm $. Nếu nó không tồn tại, nó sẽ đọc giá trị null thay vì báo lỗi.
echo $var echo ${var} # Cả hai đều ổn
Không cần ký hiệu khi viết các biến. Các giá trị được gán trực tiếp bằng dấu bằng. Các giá trị hiện có được gán các giá trị mới và các giá trị hiện có được tạo. Chuỗi có thể sử dụng lại các biến hiện có.
myvar1=hello # Tạo một biến, xin lưu ý rằng dấu bằng không được có dấu cách, điều này khác với hầu hết các ngôn ngữmyvar2="world" # Bạn cũng có thể sử dụng dấu ngoặc đơn và dấu ngoặc kép myvar2="${myvar1} world " # Dấu ngoặc kép sẽ định dạng chuỗi , kết quả là hello world, ngay cả khi không có dấu ngoặc kép myvar2='${myvar1} world' # Dấu ngoặc đơn sẽ không định dạng chuỗi, kết quả là ${myvar1} world myvar2=hello\ world # Dấu gạch chéo ngược có thể được thoát để thể hiện dấu cách, dấu gạch chéo ngược và dấu ngoặc đơn và dấu ngoặc kép unset myvar1 # Xóa biến
Cách sử dụng đặc biệt, bạn có thể gói lệnh và sử dụng đầu ra lệnh làm giá trị.
a=$(uname -a) #Execute uname -a, nhập và gán giá trị cho aa=`uname -a` #Backticks cũng có thể được sử dụng
Biến tùy chỉnh và biến môi trường
Biến môi trường là các biến được tải khi mở shell. Chúng lưu cấu hình cá nhân của bash và rất quan trọng. Nhập env để truy vấn các biến môi trường.
Shell hiện tại, tên máy chủ, thư mục hiện tại, PATH, cài đặt ngôn ngữ, v.v. đều là những biến quan trọng cần thiết để viết chương trình.
Các biến môi trường có thể được chuyển đến các chương trình con được bắt đầu bằng bash, nhưng các biến tùy chỉnh thì không. Nếu bạn muốn chuyển đổi biến tùy chỉnh thành biến môi trường, hãy sử dụng lệnh xuất.
xuất myvar1
khai báo Đặt biến chi tiết
khai báo có thể thiết lập các thuộc tính biến một cách chi tiết.
khai báo -air myvar -i: Đặt kiểu số. Phép gán sử dụng dấu bằng chắc chắn sẽ dẫn đến một biến chuỗi. Ví dụ: `a=3` sẽ dẫn đến chuỗi `3` và các phép toán không thể thực hiện được. khai báo có thể tạo biến kiểu số -r: đặt làm biến chỉ đọc -a: đặt làm kiểu mảng. Kiểu mảng bash không có nhiều chức năng và chủ yếu được sử dụng để truyền tải vòng lặp.
Các thao tác nâng cao trong bash
bí danh bí danh
Bí danh có thể đưa ra một lệnh dài bằng một tên ngắn, rất tiện lợi và thiết thực. Ví dụ: bí danh ls=ls --color=auto thực sự có thể thực thi ls --color=auto khi ls được thực thi. bí danh có mức độ ưu tiên cao nên ls sẽ thay thế ls ban đầu không có tham số. Các bản phân phối khác nhau có tích hợp sẵn một số bí danh thường được sử dụng.
bí danh la=ls -a bí danh ll=ls -al bí danh vi=vim bí danh rm=rm -i ...
mệnh lệnh lịch sử
Nhấn mũi tên lên để gọi lại dữ liệu đầu vào lịch sử. Bạn cũng có thể sử dụng lịch sử để xem lệnh trực tiếp.
history 3 # Hiển thị 3 lịch sử mới nhất history -c # Clear history history -w # Ghi ngay lịch sử của shell này vào .bash_history Theo mặc định, nó sẽ được ghi khi shell thoát.
Dấu chấm than cũng có thể được sử dụng trực tiếp để gọi lịch sử.
!92 # Thực thi lệnh lịch sử số 92 !gcc # Thực thi lệnh mới nhất bắt đầu bằng gcc, điều này rất thuận tiện
Vì .bash_history thường được cập nhật khi shell thoát, nên nếu nhiều shell được mở, .bash_history sẽ chỉ ghi lại shell thoát cuối cùng.
Luồng dữ liệu và chuyển hướng
Nhập một lệnh và xuất ra một loạt dữ liệu. Theo mặc định, một số lệnh vẫn cần được nhập, đầu ra được in trên màn hình và đầu vào được gõ trên bàn phím. Nếu tôi muốn nhập từ một tệp và xuất từ một tệp, tôi cần sửa đổi cài đặt đầu vào và đầu ra; mặt khác, có một số đầu ra là thông tin chúng ta muốn xem, được gọi là luồng đầu ra tiêu chuẩn, và ở đó là một loại đầu ra khác là thông tin lỗi, gọi là lỗi chuẩn, chúng có thể được phân biệt.
Sử dụng > và >> để chuyển hướng luồng đầu ra, 2> và 2>> để chuyển hướng luồng lỗi và tương tự đối với luồng đầu vào, < cho biết rằng đầu vào được cung cấp bởi một tệp.
ls >lsinfo # Không có đầu ra trên màn hình và nó được lưu trong lsinfo. Nếu nó không tồn tại, nó sẽ được tạo và nếu nó tồn tại, nó sẽ bị ghi đè. ls >>lsinfo # Không có kết quả nào trên màn hình và nó được lưu trong lsinfo. Nếu nó không tồn tại, nó sẽ được tạo và nếu nó tồn tại, nó sẽ được thêm vào. ls /dir 2>lsinfo # Nếu bạn kiểm tra một thư mục không tồn tại, sẽ có lỗi xuất hiện trên màn hình. 2> Sẽ không nhận được thông tin nào ls /dir 2>/dev/null >lsinfo # Xuất ra lsinfo , nếu có thông báo lỗi thì xuất ra /dev/null ./a.out
/dev/null được gọi là thiết bị lỗ đen và có thể loại bỏ trực tiếp mọi thông tin đến.
Nếu tôi cần chuyển hướng luồng đầu ra và luồng lỗi đến cùng một vị trí như mặc định, tôi không thể sử dụng biểu mẫu tệp >file 2>, điều này sẽ khiến hai chương trình ghi vào cùng một tệp. Bạn có thể sử dụng &>tệp hoặc 1>tệp 2>&1.
Một số tính năng của bash
Thứ tự tìm kiếm lệnh
Khi chúng ta nhập lệnh, anh ta sẽ tìm lệnh đó ở đâu? Đầu tiên, nếu đường dẫn được chỉ định thì nó phải được thực thi theo đường dẫn. Nếu không có đường dẫn thì đó là tệp bí danh > dựng sẵn > PATH. Trước tiên hãy tìm bí danh, sau đó là các phần dựng sẵn của shell và cuối cùng tìm kiếm từ trước ra sau trong PATH.
nhắc nhở
Sử dụng echo $PS1 để xem giá trị của nó, đó là "ký tự nhắc lệnh", là ký tự nhắc trước mỗi lần nhập lệnh.
tiếng vang $PS1 \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
Nội dung của PS1 là ngôn ngữ vi mô. Sau khi thay thế, nội dung bên trong sẽ trở thành dấu nhắc lệnh trước mỗi lần nhấn enter. Ví dụ: \u đại diện cho tên người dùng, \h đại diện cho tên máy chủ, \t đại diện cho thời gian, v.v. , \e[] Bạn có thể đặt độ dày, màu sắc, v.v. của ký tự. Nếu muốn tùy chỉnh lời nhắc đẹp mắt, bạn có thể tìm kiếm cú pháp PS1.
Thông tin màn hình mở
Tôi có thể sửa đổi thông tin hiển thị mỗi lần mở terminal ở đâu? Tệp này không có trong biến mà ở trong /etc/issue.
mèo /etc/issue
Những biểu tượng này có thể được tùy chỉnh và sửa đổi giống như PS1. Có thể in ngày, giờ, thông tin hệ thống, v.v.
Tệp tải cấu hình
Trước hết, chúng ta cần hiểu rằng shell được chia thành shell đăng nhập và shell không đăng nhập. Shell đăng nhập là shell mà mỗi người dùng có được sau khi đăng nhập thành công bằng cách nhập tài khoản và mật khẩu của họ vào hệ thống, trong khi shell không đăng nhập là shell khác được mở sau khi đăng nhập. Về giao diện đồ họa, GUI cũng có thể hiểu là shell Bạn đã nhập tài khoản và mật khẩu khi khởi động nên shell mở ra là shell không đăng nhập.
Tệp cấu hình đầu tiên được shell đăng nhập đọc là /etc/profile. Đây là cài đặt cơ bản được chia sẻ bởi tất cả người dùng. PATH, umask, hoàn thành tham số lệnh cấu hình, v.v. sẽ không được cấu hình theo người dùng. Sau đó, cấu hình cá nhân sẽ được đọc, đầu tiên hãy đọc ~/.bash_profile, nếu không, sau đó chọn ~/.bash_login, nếu không, hãy đọc ~/.profile. Theo mức độ ưu tiên, chỉ một trong số chúng sẽ được đọc. Shell không đăng nhập chỉ đọc một tệp khác ~/.bashrc và sẽ không đọc tệp cấu hình trước đó.
ký tự đại diện
bash hỗ trợ khớp các ký tự đặc biệt khi chỉ định tên thư mục và tệp:
Ký tự đại diện và các ký tự đặc biệt khác có thể được chuyển đổi thành ký tự bình thường bằng dấu gạch chéo ngược.
Cuối cùng, bài viết này về những điều cơ bản về Linux (6) và cách hiểu đơn giản về bash kết thúc ở đây. Nếu bạn muốn biết thêm về những điều cơ bản về Linux (6) và cách hiểu đơn giản về bash, vui lòng tìm kiếm các bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. Tôi hy vọng tất cả các bạn ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!