1、命令历史git
history 命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 。bash
命令历史保存的条数:ide
环境变量:HISTSIZEspa
用户退出时命令历史的持久保存位置:命令行
环境变量:HISTFILE,一般默认为用户家目录下的.bash_history3d
此文件中可保存的最大数目:指针
环境变量:HISTFILESIZEblog
HISTCONTROL: 控制命令历史中的输入内容索引
ignoredups: 忽略重复的命令(连续的相同命令才会被视为重复)(如果重复的 命令,命令历史中只记录一条命令)进程
ignorespace: 忽略以空白字符打头的命令
ignoreboth: 以上两者同行生效;
history命令用法:
history N: 显示最近的N条,包括当前命令自身;
history -c: 清空命令历史
history -d offset: 删除指定的偏移处的命令条目
history -a [/path/to/some_history_file]: 将当前会话中的命令历史写入指定文件(命令历史通常在用户退出时才会保存,也可用-a手动保存)
bash调用命令历史列表中的命令:
!#: 执行命令历史中的第#条命令(#表示数字)
!!: 执行上一条命令
!string: 执行命令历史中最近一次以string开头的命令;
!$: 调用上一条命令的最后一个参数
ESC, . :功能同上(按ESC键后按’.’键)(调用上一条命令的最后一个参数)
2、命令补全
根据内建命令或外部命令的查找方式查找以用户指定的字符串开头的命令
若是用户指定的开头字符串能唯一标识某命令,则按tab键可补全此命令
不然,则按两次tab键可显示全部以指定字串开头的命令
3、路径补全
以用户指定的起始路径进行文件名补全查找(敲tab键,用法同命令补全。)
每一个绝对路径均可以切割为两部分
基名
basename /path/to/somewhere
结果为somewhere
目录名
dirname /path/to/somewhere
结果为/path/to
4、命令行展开
~: 用户家目录
~USERNAME: 指定用户的家目录
{}: 花括号展开
例如:
/tmp/{x,y}
/tmp/x, /tmp/y
/tmp/{x,y}/z
/tmp/x/z, /tmp/y/z
练习1:建立/tmp/x/z, /tmp/y/z, /tmp/x/m, /tmp/y/m
/tmp/{x,y}/{z,m}
练习2:建立/tmp/ a_b, c_b, a_d, c_d
mkdir -pv /tmp/{a,c}_{b,d}
5、命令别名和命令引用
alias :查看和设置命令别名
alias : 查看全部的命令别名
alias ALIAS=COMMAND :设置命令别名
生效范围:命令行定义的别名,其生效范围为当前会话;(要命令别名长期有效,可在配置文件中设置。在当前回话中设置命令别名,起效快,但不能长期有效)
别名与命令同名时,要使用命令,有两种方法:
(1)使用命令的绝对路径
(2)\COMMAND
unalias [ALIAS] :撤销命令别名
-a: 撤消全部别名
bash支持的引用:
'' :单引号
"" :双引号(要引用变量时不能使用单引号,要使用双引号)
``:引用一个命令的执行结果
$() :引用一个命令的执行结果(推荐用这种方式)
6、文件名通配(globbing)
*: 任意长度的任意字符(任意长度:长度可为0)
p*d, pad, pbd, pd
*ab*c :以‘c’结尾,中间包含’ab’
?: 匹配任意单字符
[]: 匹配指定范围内的任意单字符
[abc] :字母集{a,b,c}
[a-z] :全部字母的集合(不区分大小写)
[0-9] :全部数字的集合(10个数字)
[0-9a-z] :全部数字和字母的集合
字符集合:
[:space:] : 全部空白字符
[:punct:] : 全部标点符号
[:lower:] :全部小写字母
[:upper:] :全部大写字母
[:digit:] :全部数字
[:alnum:] :全部字母和数字
[:alpha:] :全部字母
[^]:匹配指定范围之外的任意单字符
[^0-9a-z]
7、输入、输出重定向和管道
程序输入:标准输入
程序数据输出:标准输出 和 标准错误输出
因为计算机处理数字的速度远远大于处理字符的速度,因此经常使用一个数字来描述文件,这个数字被称为文件描述符。
FD(file descriptor):文件描述符在形式上是一个非负整数。实际上,它是一个索引值, 指向内核为每个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者建立一个新文件时,内核分配一个文件描述符并返回给用户程序,该文件描述符表项中的指针指向新打开的文件。
文件:文件系统(内核)
标准输入:FD为0 (计算机历来都是从0开始计数)
键盘(默认)
标准输出:FD为1
监视器(默认)
错误输出:FD为2
监视器(默认)
重定向意味着:改变其标准位置
输出重定向:
COMMAND > POSITION:覆盖输出
COMMAND >> POSITION: 追加输出
错误重定向:
COMMAND 2> POSITION:覆盖输出
COMMAND 2>> POSITION: 追加输出
合并重定向:
COMMAND &> POSITION :合并重定向(覆盖)
COMMAND &>> POSITION :合并重定向(追加)
COMMAND > POSITION 2>&1 :(覆盖)(&表示引用文件描述符)
分别重定向
COMMAND > POSTIION 2> POSTION2
输入重定向:
COMMAND < POSITION
<<:Here Document(此处文档)
(EOF做为输入结束符,也可使用END做为输入结束符,输入结束符是自定义的。)(cat命令特有的用法)
管道:|
管道是Linux中很重要的一种通讯方式,是把一个程序的输出直接链接到另外一个程序的输入
多道输出:
COMMAND | tee POSITION
(同时输出到显示器和a.txt文件中,多道输出)
8、快捷键的使用
Ctrl+a: 跳转至命令行首
Ctrl+e: 跳转至命令行尾
Ctrl+u: 删除命令行首至当前光标所在处以前的全部内容
Ctrl+k: 删除当前光标所在处至命令行尾的全部内容
Ctrl+l: 清屏
Ctrl+c: 停止或取消
Ctrl+z: 把当命令送至后台
bash还有不少特性,如今就不继续说下去,之后补充!