您的位置:首页 > 运维架构 > Shell

Linux学习笔记:bash的基础特性

2017-07-31 11:35 211 查看

bash的基础特性

历史命令

history

环境变量:

HISTSIZE:命令历史记录的条数

HISTFILE:~/.bash_history

ISTFILESIZE:命令历史文件里路的条数

history -d OFFSET:在指定位置删除历史命令

history -c:清空历史命令

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

history -a:手动追加当前绘画缓冲区的命令历史至历史文件中

调用历史中的命令

!#:重复执行第#条命令

!!:重复执行上一条命令

!string: 重复执行最近一次以string开头的历史命令

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

!$:表示上一次命令调用的参数

ESC,.:同上

Alt+.:同上

控制命令历史的记录方式

环境变量:HISTCONTROL

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

ignorespace:忽略所有以空白开头的文件

ignorebo:ignoredups,ignorespace

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

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

命令补全

内部命令:

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

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

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

路径补全

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

如果唯一,则直接补全

否则,再次Tab,给出列表

命令行展开

~:展开为用户的主目录

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

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

命令的执行结果状态

成功

失败

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

0:成功

1-255:失败

程序执行有两类结果

程序的返回值

程序的执行状态结果

命令别名

alias命令实现

alias

显示当前shell进程所有可用的命令别名

alias NAME=’VALUE’

定义别名NAME,其相当于执行命令VALUE

注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;

仅对当前用户有效:~/.bashrc

对所有用户有效:/etc/bashrc

重读配置文件:

source /path/to/config_file

. /path/to/config_file

Note:编辑配置文件给出的新配置不会立即生效

撤销别名:unalias

unalias [-a] name
4000
[name …]

Note:如果别名同原命令名称,则如果要执行原命令,可使用“/COMMAND”

glob(globbing)

bash用于实现文件名“通配”

通配符:*,?,[]

通配符*

任意长度的任意字符

a*b:aab,ab,a123b

通配符?

任意单个字符

a?b:

匹配:aab

不匹配:ab,a123b,abc

通配符[]

匹配指定范围内的任意单个字符

[0-9]

[a-z]:不区分字符大小写

[A-Z]:大写字母

通配符[^]

匹配指定范围内的任意单个字符

例如:[^0-9]

专用字符集合:

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母

[:upper:]:任意大写字母

[:alpha:]:任意大小写字母

[:alnum:]:任意数字和字母

[:space:]:所有空格

[:punct:] :所有标点符号

bash的快捷键

Ctrl + l:清屏操作

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

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

Ctrl + c:取消命令执行

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

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

bash的I/O重定向及管道

程序:指令+数据

读入数据:Input

输出数据:Output

打开的文件都有一个fd:file descriptor(文件描述符)

标准输入:keyboard,0

标准输出:monitor,1

标准错误输出:monitor,2

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

输出重定向:COMMAND > NEW_pos,COMMAND >> NEW_pso

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

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

# 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中进行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: