Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

15 Lệnh tích hợp sẵn Bash Shell hữu ích (Có ví dụ)

15 Lệnh tích hợp sẵn Bash Shell hữu ích (Có ví dụ) Bash có một số lệnh đi kèm với shell (tức là được xây dựng bên trong bash shell).

Khi bạn thực thi một lệnh tích hợp sẵn, bash shell sẽ thực thi nó ngay lập tức mà không cần gọi bất kỳ chương trình nào khác.

Các lệnh tích hợp trong Bash shell nhanh hơn các lệnh bên ngoài, vì các lệnh bên ngoài thường phân nhánh một quá trình để thực thi nó.

Trong bài viết này, hãy cùng chúng tôi xem xét một số nội trang bash shell hữu ích với các ví dụ.

1. Ví dụ về lệnh xuất Bash

lệnh export được sử dụng để xuất một biến hoặc hàm sang môi trường của tất cả các tiến trình con đang chạy trong shell hiện tại.

export varname=value
export -f functionname # exports a function in the current shell.

Nó xuất một biến hoặc hàm với một giá trị. Lệnh "env" liệt kê tất cả các biến môi trường. Trong ví dụ sau, bạn có thể thấy env hiển thị biến đã xuất.

$ export country=India

$ env
SESSIONNAME=Console
country=India
_=/usr/bin/env

Lệnh "export -p" cũng hiển thị tất cả các biến đã xuất trong trình bao hiện tại.

2. Ví dụ về lệnh Bash eval

Lệnh eval kết hợp tất cả các đối số đã cho và đánh giá biểu thức được kết hợp và thực thi nó, đồng thời trả về trạng thái thoát của lệnh đã thực thi.

$ cat evalex.sh
if [ ! -z $1 ]
then
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | grep $1"
else
proccomm="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu"
fi
eval $proccomm

Đoạn mã trên chấp nhận một đối số, là mẫu cho lệnh grep. Điều này liệt kê các quy trình theo thứ tự sử dụng cpu và greps cho một mẫu cụ thể được đưa ra trong dòng lệnh.

Lưu ý: Bài viết này là một phần của Chuỗi Hướng dẫn Bash đang thực hiện của chúng tôi.

3. Ví dụ về lệnh băm Bash

lệnh băm duy trì một bảng băm có tên đường dẫn của lệnh đã sử dụng. Khi bạn thực thi một lệnh, nó sẽ tìm kiếm một lệnh trong biến $ PATH.
Nhưng nếu lệnh có sẵn trong bảng băm, nó sẽ chọn từ đó và thực thi nó. Bảng băm duy trì số lần truy cập gặp phải cho mỗi lệnh được sử dụng cho đến nay trong trình bao đó.

$ hash
hits command
 1 /usr/bin/cat
 2 /usr/bin/ps
 4 /usr/bin/ls

Bạn có thể xóa một lệnh cụ thể khỏi bảng băm bằng tùy chọn -d và tùy chọn -r để đặt lại bảng băm hoàn chỉnh.

$ hash -d cat
$ hash
hits command
 2 /usr/bin/ps
 4 /usr/bin/ls

4. Ví dụ về lệnh bash pwd

pwd là một lệnh tích hợp trong shell để in thư mục làm việc hiện tại. Về cơ bản, nó trả về giá trị của biến được xây dựng trong $ {PWD}

$pwd
/home/sasikala/bash/exercises

$echo $PWD
/home/sasikala/bash/exercises

5. Ví dụ về lệnh chỉ đọc Bash

lệnh readonly được sử dụng để đánh dấu một biến hoặc hàm là chỉ đọc, không thể thay đổi thêm.

$ cat readonly_ex.sh
#!/bin/bash
# Restricting an array as a readonly
readonly -a shells=("ksh" "bash" "sh" "csh" );
echo ${#shells[@]}

# Trying to modify an array, it throws an error
shells[0]="gnu-bash"

echo ${shells[@]}

$ ./readonly_ex.sh
4
readonly_ex.sh: line 9: shells: readonly variable

6. Ví dụ về lệnh Bash shift

lệnh shift được sử dụng để dịch chuyển các tham số vị trí sang trái N số lần và đổi tên biến tương ứng sau khi dịch chuyển.

$ cat shift.sh
#! /bin/bash

while [ $# -gt 0 ]
do
 case "$1" in

 -l) echo "List command"
 ls
 shift
 ;;
 -p) echo "Process command"
 ps -a
 shift
 ;;
 -t) echo "Hash Table command"
 hash
 shift
 ;;
 -h) echo "Help command"
 help
 shift
 ;;
 esac
done

$./shift.sh -l -t
List command analysis break testing t1.sh temp Hash Table command
hits command
 1 /usr/bin/ls

7. Ví dụ về lệnh kiểm tra bash

lệnh kiểm tra đánh giá biểu thức điều kiện và trả về 0 hoặc một dựa trên đánh giá. Tham khảo trang hướng dẫn sử dụng bash để biết thêm các toán tử kiểm tra.

#! /bin/bash

if test -z $1
then
 echo "The positional parameter \$1 is empty"
fi

8. Ví dụ về lệnh Bash getopts

Lệnh getopts được sử dụng để phân tích cú pháp các đối số dòng lệnh đã cho. Chúng ta có thể xác định các quy tắc cho các tùy chọn, tức là tùy chọn nào chấp nhận đối số và tùy chọn nào không. Trong lệnh getopts, nếu một tùy chọn được theo sau bởi dấu hai chấm, thì nó sẽ yêu cầu một đối số cho tùy chọn đó.

getopts cung cấp hai biến $ OPTIND và $ OPTARG có chỉ mục của tham số tiếp theo và đối số tùy chọn tương ứng.

$ cat options.sh
#! /bin/bash

while getopts :h:r:l: OPTION
do
 case $OPTION in
 h) echo "help of $OPTARG"
 help "$OPTARG"
 ;;
 r) echo "Going to remove a file $OPTARG"
 rm -f "$OPTARG"
 ;;
 esac
done

$ ./options.sh -h jobs
help of jobs
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 Lists the active jobs. The -l option lists process id's in addition
 to the normal information; the -p option lists process id's only.

9. Lệnh đăng xuất Bash

Đăng xuất được tích hợp sẵn được sử dụng để thoát khỏi trình bao hiện tại.

10. Ví dụ về lệnh Bash umask

lệnh umask đặt mặt nạ tạo chế độ tệp cho quá trình hiện tại. Khi người dùng tạo một tệp, quyền mặc định của nó dựa trên giá trị được đặt trong umask. Quyền mặc định cho tệp là 666 và nó sẽ bị che bằng các bit umask khi người dùng tạo tệp.

Để biết thêm chi tiết, vui lòng tham khảo bài viết Quyền đối với tệp và thư mục của chúng tôi.

Khi người dùng tạo tệp 666 được che bằng 022, do đó, quyền tệp mặc định sẽ là 644.

$ umask
0022

$ > temporary

$ ls -l temporary
-rw-r--r-- 1 root root 4 Jul 26 07:48 temporary

11. Ví dụ về tập lệnh Bash

set là một lệnh tích hợp trong shell, được sử dụng để thiết lập và sửa đổi các biến bên trong của shell. lệnh set không có đối số liệt kê tất cả các biến và giá trị của nó. lệnh set cũng được sử dụng để đặt giá trị cho các tham số vị trí.

$ set +o history # To disable the history storing.
+o disables the given options.

$ set -o history
-o enables the history

$ cat set.sh
var="Welcome to thegeekstuff"
set -- $var
echo "\$1=" $1
echo "\$2=" $2
echo "\$3=" $3

$ ./set.sh
$1=Welcome
$2=to
$3=thegeekstuff

12. Bash bỏ đặt ví dụ lệnh

unet built-in được sử dụng để đặt biến shell thành null. unset cũng được sử dụng để xóa một phần tử của một mảng và
để xóa toàn bộ mảng.

Để biết thêm chi tiết về mảng Bash, hãy tham khảo bài viết trước của chúng tôi 15 Thao tác với mảng Bash

$ cat unset.sh
#!/bin/bash
#Assign values and print it
var="welcome to thegeekstuff"
echo $var

#unset the variable
unset var
echo $var

$ ./unset.sh
welcome to thegeekstuff

Trong ví dụ trên, sau khi bỏ đặt, biến “var” sẽ được gán với chuỗi null.

13. Ví dụ về lệnh Bash let

lệnh let được sử dụng để thực hiện các phép toán số học trên các biến shell.

$ cat arith.sh
#! /bin/bash

let arg1=12
let arg2=11

let add=$arg1+$arg2
let sub=$arg1-$arg2
let mul=$arg1*$arg2
let div=$arg1/$arg2
echo $add $sub $mul $div

$ ./arith.sh
23 1 132 1

14. Ví dụ về lệnh Bash shopt

Lệnh shopt tích hợp sẵn được sử dụng để thiết lập và hủy đặt một tùy chọn shell. Sử dụng lệnh này, bạn có thể sử dụng thông minh của shell.

$cat shopt.sh
#! /bin/bash

## Before enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"
shopt -s xpg_echo
## After enabling xpg_echo
echo "WELCOME\n"
echo "GEEKSTUF\n"

# Before disabling aliases
alias l.='ls -l .'
l.

# After disabling aliases
shopt -u expand_aliases
l.

$ ./shopt.sh
WELCOME\n
GEEKSTUF\n
WELCOME

GEEKSTUF

total 3300
-rw------- 1 root root 1112 Jan 23 2009 anaconda-ks.cfg
-r-xr-xr-x 1 root root 3252304 Jul 1 08:25 backup
drwxr-xr-x 2 root root 4096 Jan 26 2009 Desktop
shopt.sh: line 17: l.: command not found

Trước khi bật tùy chọn xpg_echo, câu lệnh echo không mở rộng chuỗi thoát. "L." được đặt bí danh là ls -l của thư mục hiện tại. Sau khi tắt tùy chọn expand_aliases trong shell, nó không mở rộng bí danh, bạn có thể nhận thấy lỗi l. không tìm thấy lệnh.

15. Ví dụ về lệnh Bash printf

Tương tự như printf trong ngôn ngữ C, bash printf tích hợp được sử dụng để định dạng các hoạt động in.

Trong ví dụ 13, tập lệnh thực hiện phép toán số học trên hai đầu vào. Trong tập lệnh đó thay vì câu lệnh echo, bạn có thể sử dụng câu lệnh printf để in đầu ra có định dạng như hình dưới đây.

Trong arith.sh, thay thế câu lệnh echo bằng câu lệnh printf này.

printf "Addition=%d\nSubtraction=%d\nMultiplication=%d\nDivision=%f\n" $add $sub $mul $div

$ ./arith.sh
Addition=23
Subtraction=1
Multiplication=132
Division=1.000000