true命令使用详解

返回状态为成功。

概要

true

主要用途

  • 用于和其他命令进行逻辑运算。

返回值

返回状态总是成功;返回值为0。

例子

# 当你的脚本设置set -e时,任何返回值为失败的命令都会使得脚本退出。
set -e
# 如何临时跳过呢?下面的语句使用逻辑或操作符连接true,返回值一定为真。
some_command || true
# 当然,和python的pass一样,也可以用作条件语句临时占位。

unrar命令使用详解

Linux unrar命令用于解压rar文件命令,从rar档案中提取文件

语法

unrar [选项][switch 命令] [文件名...][路径]
unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...]

选项

-e    #将文件解压缩到当前目录。
-l #列出存档内容。
-p #将文件打印到标准输出。
-t #测试存档文件。
-v #详细列出存档。
-x #使用完整路径提取文件。

SWITCHES 开关设置

      注意:每个开关必须用空格分隔。你不能把它们放在一起。
-av- #禁用真实性验证检查。
-c- #禁用评论显示
-f #刷新文件
-kb #保留破碎的提取文件
-ierr #将所有消息发送给stderr。
-inul #禁用所有消息。
-o+ #覆盖现有文件。
-o- #不要覆盖现有文件
-p<password>
#设置密码。
-p- #不查询密码
-r #递归子目录。
-u #更新文件。
-v #列出所有卷。
-x<file>
#排除指定的文件。
[email protected]<list>
#排除指定列表文件中的文件。
[email protected] #读取要从stdin中排除的文件名。
-y #对所有查询都假设为是。

参数

目录:指定要显示列表的目录,也可以是具体的文件。

实例

将压缩文件text.rar在当前目录下解压缩,并解压完整路径。

unrar x test.rar

AUTHOR

This  manual  page  was  written by Petr Cech <[email protected]> according to "unrar -h"for the Debian
GNU/Linux system (but may be used by others).

break命令使用详解

break命令用于结束for,while或until循环。

概要

break [n]

主要用途

  • 结束for,while或until循环,可指定退出几层循环。

参数

n(可选):大于等于1的整数,用于指定退出几层循环。

返回值

返回成功除非n小于1。

例子

# break的可选参数n缺省值为1。
# 从外层for循环继续执行。
for((i=3;i>0;i--)); do
for((j=3;j>0;j--)); do
if((j==2)); then
# 换成break 1时结果一样
break
fi
printf "%s %s\n" ${i} ${j}
done
done
# 输出结果
3 3
2 3
1 3
# 当n为2时:
# 退出两层循环,结束。
for((i=3;i>0;i--)); do
for((j=3;j>0;j--)); do
if((j==2)); then
break 2
fi
printf "%s %s\n" ${i} ${j}
done
done
# 输出结果
3 3

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

bye命令使用详解

Ftp bye命令用于中断FTP连线并结束程序。

bye命令 在ftp模式下,输入bye即可中断目前的连线作业,并结束ftp的执行。

语法

bye

实例

bye

disown命令使用详解

Shell disown命令用于从当前的shell中移除作业。

概要

disown [-h] [-ar] [jobspec ... | pid ...]

主要用途

  • 从当前shell的作业列表中移除全部作业。

  • 从当前shell的作业列表中移除指定的一到多个作业。

  • 从当前shell的作业列表中移除正在运行的作业。

  • 标记作业,使得它们在当前shell退出后也不会结束。

选项

-h    标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号。
-a 移除所有的作业。
-r 移除运行的作业。

参数

  • jobspec(可选):要移除的作业标识符,可以是一到多个。

  • pid(可选):要移除的作业对应的进程ID,可以是一到多个。

返回值

返回成功除非未开启作业控制或执行出现错误。

例子

# 演示。
ssh 192.168.1.4
[email protected]'s password:
# 此时按下ctrl+z使得交互停止。
[1]+ Stopped ssh 192.168.1.4
ssh 192.168.1.7
[email protected]'s password:
# 此时按下ctrl+z使得交互停止。
[1]+ Stopped ssh 192.168.1.7
sleep 120 &
[3] 28986
# 列出作业及pid信息。
jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
[2]+ 28833 Stopped ssh 192.168.1.7
[3] 28986 Running sleep 120 &
# 删除运行状态的作业。
disown -r
jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
[2]+ 28833 Stopped ssh 192.168.1.7
# 注意disown只是移除作业,并没有停止。
pgrep -a -u user2 -f 'sleep 120'
28986 sleep 120
# 删除指定的作业。
disown %2
bash: warning: deleting stopped job 2 with process group 28833
jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
# 注意disown只是移除作业,并没有停止。
pgrep -a -u user2 -f 'ssh 192.168.1.7'
28833 ssh 192.168.1.7
# 删除全部作业。
disown -a
bash: warning: deleting stopped job 1 with process group 28756
jobs -l
# 注意disown只是移除作业,并没有停止。
pgrep -a -u user2 -f 'ssh 192.168.1.4'
28756 ssh 192.168.1.4
# 演示-h选项的作用。
sleep 90 &
[1] 109080
jobs -l
[1]+ 109080 Running sleep 90 &
disown -h %1
exit
# 此时前一个终端已经关闭,现在打开新终端查找该作业。
pgrep -a -u user2 -f 'sleep 90'
109080 sleep 90

注意

  1. bash的作业控制命令包括bg fg kill wait disown suspend
  2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
  3. 该命令是bash内建命令,相关的帮助信息请查看help命令。

false命令使用详解

返回状态为失败。

概要

false

主要用途

  • 用于和其他命令进行逻辑运算。

返回值

返回状态总是失败;返回值为1。

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

local命令使用详解

在函数内定义局部变量。

概要

local [-aAfFgilnrtux] [-p] [name[=value] ...]

主要用途

  • 在函数内定义局部变量
  • 显示局部变量
  • 在函数内定义全局变量

选项

local命令的选项与declare命令的相同,请参考declare命令的选项。

参数

  • name(可选):变量名或已定义函数名。
  • value(可选):变量的值。

返回值

local返回true除非你提供了非法选项、赋值错误或是在函数外使用local命令。

错误用法

  • 在函数外使用该命令。

mapfile命令使用详解

Shell mapfile命令用于从标准输入读取行并赋值到数组。

概要

mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]

主要用途

  • 从标准输入或文件描述符读取行并赋值到数组。

选项

-d delim       将delim设为行分隔符,代替默认的换行符。
-n count 从标准输入中获取最多count行,如果count为零那么获取全部。
-O origin 从数组下标为origin的位置开始赋值,默认的下标为0。
-s count 跳过对前count行的读取。
-t 读取时移除行分隔符delim(默认为换行符)。
-u fd 从文件描述符fd中读取。
-C callback 每当读取了quantum行时,调用callback语句。
-c quantum 设定读取的行数为quantum。

如果使用-C时没有同时使用-c指定quantum的值,那么quantum默认为5000。
当callback语句执行时,将数组下一个要赋值的下标以及读取的行作为额外的参数传递给callback语句。
如果使用-O时没有提供起始位置,那么mapfile会在实际赋值之前清空该数组。

参数

array(可选):用于输出的数组名称。如果没有指定数组名称,那么会默认写入到变量名为MAPFILE的数组中。

返回值

返回成功除非使用了非法选项、指定的数组是只读的、指定的数组不是下标数组。

例子

# 常见的读取形式。
mapfile < source_file target_array
cat source_file |mapfile target_array
mapfile -u fd target_array
# 只读取前5行。
mapfile < source_file -n 5 target_array
# 跳过前5行。
mapfile < source_file -s 5 target_array
# 在数组指定的下标开始赋值。
# 请注意:这样做不会清空该数组。
mapfile < source_file -O 2 target_array
# 读取时设定行分隔符为tab。
# 注意,第二行的tab在终端需要用ctrl+v tab输入;
mapfile < source_file -d $'\t' target_array
mapfile < source_file -d ' ' target_array
# 读取时移除行分隔符(tab)。
mapfile < source_file -d $'\t' -t target_array
# 读取时移除行分隔符(换行符)。
mapfile < source_file -t target_array
# 每读取2行,执行一次语句(在这里是echo)。
mapfile < source_file -C "echo CALLBACK:" -c 2 target_array
# 遍历下标,依次显示数组的元素。
for i in ${!target_array[@]}; do
printf "%s" ${target_array[i]}
done

return命令使用详解

Shell return命令用于从函数中退出并返回数值。

概要

return [n]

主要用途

  • 使得shell函数退出并返回数值,如果没有指定n的值,则默认为函数最后一条命令执行的返回状态。

参数

n(可选):整数。

返回值

返回值为你指定的参数n的值,如果你指定的参数大于255或小于0,那么会通过加或减256的方式使得返回值总是处于0到255之间。

在函数外执行return语句会返回失败。

例子

#!/usr/bin/env bash
# 定义一个返回值大于255的函数
example() {
return 259
}
# 执行函数
example
# 显示3
echo $?

shift命令使用详解

Shell shift命令用于移动位置参数。

概要

shift [n]

主要用途

  • 将位置参数$n, $n+1...重命名为$1, $2...

参数

n(可选):大于等于1且小于等于参数个数的整数,默认为1。

返回值

返回成功除非n大于参数个数或n小于1以及其他非法值。

例子

假设我们的脚本文件(test.sh)如下:

#!/usr/bin/env bash
# 显示前三个位置参数。
echo "$1 $2 $3"
# 移除前两个位置参数,并将$3重命名为$1,之后的以此类推。
shift 2
echo "$1 $2 $3"

在终端执行该脚本:

sh test.sh q w e r t

返回信息如下:

q w e
e r t