Bash基础

(1) 命令历史

history

环境变量:

HISTSIZE:命令历史记录的条数;

HISTFILE:~/.bash_history;

HISTFILESIZE:命令历史文件记录历史的条数;

history -d OFFSET

-c

history #: 显示历史中最近的#条命令;

-a: 手动追加当前会话缓冲区的命令历史至历史文件中;

调用历史中的命令:

!#: 重复执行第#条指令;

!!:

!string

调用上一条命令的最后一个参数:

!$:

ESC, .

Alt+.

控制命令历史的记录方式:

环境变量:HISTCONTROL

ignoredups:忽略重复的命令;连续且相同方为“重复”;

ignorespace:忽略所有以空白开头的命令;

ignoreboth:ignoredups, ignorespace;

修改环境变量值的方式:export 变量名=”值”

变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;

(2) 命令补全

bash执行命令:

内部命令:

外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令;

直接补全:Tab,用户给定的字符串只有一条惟一对应的命令;

以用户给定的字符串为开头对应的命令不惟一,则再次Tab会给出列表;

(3) 路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名;

如果惟一:则直接补全;

否则:再次Tab,给出列表;

(4) 命令行展开

~: 展开为用户的主目录

~USERNAME:展开为指定用户的主目录

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

/tmp/{a,b} = /tmp/a, /tmp/b

/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi

(5) 命令的执行结果状态

成功

失败

bash使用特殊变量$?保存最近一条命令的执行状态结果:

0:成功

1-255:失败

程序执行有两类结果:

程序的返回值;

程序的执行状态结果;

bash的快捷键

Ctrl+l: 清屏,相当于clear命令;

Ctrl+a:跳转至命令开始处;

Ctrl+e:跳转至命令结尾处;

Ctrl+c:取消命令的执行;

Ctrl+u: 删除命令行首至光村所在处的所有内容;

Ctrl+k: 删除光标所在处至命令行尾部的所有内容;

I/O重定向:改变标准位置

输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS

>:覆盖重定向,目标文件中的原有内容会被清除;

>>: 追加重定向,新内容会追加至目标文件尾部;

set -C: 禁止将内容覆盖输出至已有文件中;

强制覆盖:>

set +C:

2>: 覆盖重定向错误输出数据流;

2>>: 追加重定向错误输出数据流;

标准输出和错误输出各自定向至不同位置:

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向:

&>:覆盖重定向

&>>:追加重定向

COMMAND > /path/to/file.out 2> &1

COMMAND >> /path/to/file.out 2>> &1

输入重定向:<

tr命令:转换或删除字符

tr [OPTION]… SET1 [SET2]

HERE Documentation:<<

# cat << EOF

# cat > /path/to/somefile << EOF

管道:

COMMAND1 COMMAND2 COMMAND3 …

Note:最后一个命令会在当前shell进程的子shell进程中执行;

tee命令:

tee [OPTION]… [FILE]…


Bash基础
http://www.jcwit.com/article/89/
作者
Carlos
发布于
2018年6月17日
许可协议