Bash shell :15 个好用的 Bash Shell 内置命令
【摘要】 Bash 有几个shell 附带的命令(即内置在bash shell 中)。
当您执行内置命令时,bash shell 会立即执行它,而不调用任何其他程序。
Bash shell 内置命令比外部命令更快,因为外部命令通常派生出一个进程来执行它。
Bash 有几个shell 附带的命令(即内置在bash shell 中)。
当您执行内置命令时,bash shell 会立即执行它,而不调用任何其他程序。
Bash shell 内置命令比外部命令更快,因为外部命令通常派生出一个进程来执行它。
在本文中,让我们通过示例回顾一些有用的 bash shell 内置函数。
1. Bash 导出命令示例
export 命令用于将变量或函数导出到当前 shell 中运行的所有子进程的环境中。
export varname=value
export -f functionname # exports a function in the current shell.
它导出带有值的变量或函数。“env”命令列出所有环境变量。在以下示例中,您可以看到 env 显示导出的变量。
$ export country=India
$ env
SESSIONNAME=Console
country=India
_=/usr/bin/env
“export -p” 命令还显示当前 shell 中所有导出的变量。
2. Bash eval 命令示例
eval 命令组合所有给定的参数并评估组合表达式并执行它,并返回已执行命令的退出状态。
$ 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
上面的代码片段接受一个参数,它是 grep 命令的模式。这按 cpu 使用顺序列出了进程,并为命令行中给出的特定模式列出了 greps。
注意:本文是我们正在进行的Bash 教程系列的一部分。
3. Bash hash 命令示例
hash 命令维护一个哈希表,其中包含使用的命令的路径名。当您执行命令时,它会在变量 $PATH 中搜索命令。
但是如果该命令在哈希表中可用,它会从那里获取并执行它。哈希表维护迄今为止在该 shell 中使用的每个命令遇到的命中数。
$ hash
hits command
1 /usr/bin/cat
2 /usr/bin/ps
4 /usr/bin/ls
您可以使用 -d 选项从哈希表中删除特定命令,并使用 -r 选项重置完整的哈希表。
$ hash -d cat
$ hash
hits command
2 /usr/bin/ps
4 /usr/bin/ls
4. Bash pwd 命令示例
pwd 是一个 shell 内置命令,用于打印当前工作目录。它基本上返回内置变量 ${PWD} 的值
$pwd
/home/sasikala/bash/exercises
$echo $PWD
/home/sasikala/bash/exercises
5. Bash readonly 命令示例
readonly 命令用于将变量或函数标记为只读,不能进一步更改。
$ 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. Bash shift 命令示例
shift 命令用于将位置参数向左移动 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. bash 测试命令示例
test 命令评估条件表达式并根据评估返回零或一。请参阅 bash 的手册页,了解更多测试运算符。
#! /bin/bash
if test -z $1
then
echo "The positional parameter \$1 is empty"
fi
8. Bash getopts 命令示例
getopts 命令用于解析给定的命令行参数。我们可以定义选项的规则,即哪个选项接受参数,哪个不接受。在 getopts 命令中,如果一个选项后跟一个冒号,那么它需要该选项的参数。
getopts 提供了两个变量 $OPTIND 和 $OPTARG 分别具有下一个参数和选项参数的索引。
$ 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.bash注销命令
内置注销用于退出当前 shell。
10. Bash umask 命令示例
umask 命令为当前进程设置文件模式创建掩码。当用户创建文件时,其默认权限基于 umask 中设置的值。文件的默认权限是 666,当用户创建文件时,它会被 umask 位屏蔽。
有关更多详细信息,请参阅我们的文章文件和目录权限。
当用户创建文件时,666 被 022 屏蔽,因此默认文件权限为 644。
$ umask
0022
$ > temporary
$ ls -l temporary
-rw-r--r-- 1 root root 4 Jul 26 07:48 temporary
11. Bash set 命令示例
set 是一个shell 内置命令,用于设置和修改shell 的内部变量。不带参数的 set 命令列出所有变量及其值。set 命令还用于设置位置参数的值。
$ 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 tiamo"
set -- $var
echo "\$1=" $1
echo "\$2=" $2
echo "\$3=" $3
$ ./set.sh
$1=Welcome
$2=to
$3=tiamo
12. Bash unset 命令示例
unset 内置用于将 shell 变量设置为 null。unset 还用于删除数组的元素并删除完整的数组。
有关 Bash 数组的更多详细信息,请参阅我们之前的文章15 Bash 数组操作
$ cat unset.sh
#!/bin/bash
#Assign values and print it
var="welcome to tiamo"
echo $var
#unset the variable
unset var
echo $var
$ ./unset.sh
welcome to tiamo
在上面的例子中,取消设置后,变量“var”将被赋值为空字符串。
13. Bash let 命令示例
let 命令用于对 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. Bash shopt 命令示例
shopt 内置命令用于设置和取消设置 shell 选项。使用此命令,您可以利用 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
在启用 xpg_echo 选项之前,echo 语句没有扩展转义序列。“我。” 别名为当前目录的 ls -l。在 shell 中禁用 expand_aliases 选项后,它没有扩展别名,您可能会注意到错误 l。找不到命令。
15. Bash printf 命令示例
与 C 语言中的 printf 类似,bash printf 内置用于格式化打印操作。
在示例 13 中,脚本对两个输入进行算术运算。在该脚本而不是 echo 语句中,您可以使用 printf 语句来打印格式化输出,如下所示。
在 arith.sh 中,用此 printf 语句替换 echo 语句。
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
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)