Bash的基础特性:
1、 命令历史
History
环境变量
HISTSIZE:命令历史记录的条数
HISTFILE:~/.bash_history:
HISFILESIZE:命令历史文件记录历史的条数
History –d
-c clear,清除
数字 :显示最近的n条命令
-a 手动追加当前会话缓冲区的命令历史至历史文件中
!n调用历史中第n条指令
!!上一条命令
!string 最近以什么为开头的命令
!$上一条命令的最后一个参数
Exc+. 分开按出现上次最后一个参数
控制命令历史的记录方式
环境变量:HISTCONTROL
Ignoredups:忽略重复命令,连续且相同方为重复
Ignorespace:执行的命令前有空格,会忽略记录
Ignoreboth:上面两者都生效
改变变量方法:expor HISTOCONTROL=”ignorespace”
格式:export 变量名=“值” 把赋值符号后面的数据存储于变量名指向内存空间
只对当前生效
2、 命令补全
Bash命令:
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右载每个路径搜寻以给定命令命名的文件,第一次找到即为要执行的命令
Tab键:直接补全,当用户给的字符串不唯一,两次TAB
3、 路径补全,通过TAB键补全命令
4、 命令行展开
{} 可承载一个以逗号分隔的列表,将其展开为多个路径
/tmp/{a,b}=/tmp/a,/tmp/b
5、 命令的执行结果状态
成功、失败两种状态
Bash使用特殊变量$?保存最近一条命令的执行状态结果(echo $?)
0成功,1-255失败
程序的执行有两类结果
程序的返回值
程序的执行状态结果
6、
目录管理命令:cd,pwd,ls
Mkdir,rmdir
Mkdir :创建目录,且目录名和文件名不能相同
-p 存在时不报错,如果父目录不存在,会同时创建父目录
-v显示详细信息
-m可以直接指定权限
不使用-p会报错
Rmdir:删除目录 +目录,只能删除空目录
-p 递归删,前提上一级目录山过后是空的才删除,非空不会删
删除刚才创建的123目录
Tree 列出层级目录
(默认是没有安装的,需要安装,可以通过yum或者rpm安装)
-d只显示目录
-L n :显示到第n层级子目录
-p 只显示到由指定的pattern匹配到的路径
文本文件查看类命令:(二进制程序不用查看命令)
cat:查看文本内容
tac:cat顺序的反向
more -d 空格继续D键退出
less:
tail –c * 后n字节
–n * 后n行
head –n * 前n行
-c * 前n字节
-f 追踪显示文件新追加的内容
文件的时间戳管理工具
touch:文件创建
文件由metadata和data组成
查看文件状态:stat
三个时间戳:access time 访问时间,读取文件内容
Modify time 修改时间,修改文件内容
Change time 改变时间,元数据发生改变
touch -* 文件
-a only atime
-m only mtime
-t 指定时间戳 YYYYMMDDHHMM.SS
-c 当文件不存在则不会创建
文件管理:cp,mv,rm
复制命令:cp
cp /*/源文件 /*/目的文件 (可以复制目录)
如果目标不存在,新建DEST,并将SRC中的内容填充至DEST中
如果目标存在:
DEST是文件:将src中的内容覆盖至DEST中
建议使用-i选项
DEST是目录:保留原来的名字,将src的内容填充至DEST内
cp SRC… DEST
SRC…为多个文件,要求DEST必须存在且为目录,其他情形都出错
cp SRC DEST
Src是个目录,会直接跳过去,不支持复制,需要加选项-r
当DEST不存在,会创建目标目录,
如果DEST是文件,会报错
如果是目录,会复制其内
-i:交互式,
-r:递归复制 和-R意思相同
-a 归档复制,不改变所有属性
--no-dereference 复制后是链接文件
--preserve=* 保持文件的某些属性
-f强制
mv:move 源文件 目标地址
如果源文件是单个文件,移动后可以改名,移动后源文件删除
当目标文件存在,会覆盖
当是目标是目录,会复制在目录下
如果源文件是多个,目标目录必须存在
父目录不存在会创建父目录
-i:交互式
-f强制
rm:remove 删除
-i交互式
-f强制
-r递归删除
rm功能危险,使用一定小心
nano全屏幕的文本编辑器:
nano 文件
Ctrl+O保存
Ctrl+R 读取其他文件的内容,复制到当前文本
Ctrl+W是搜索
Ctrl+X退出
Bash的基础特性:
1、 命令别名(alias):
alias
不带选项参数,将显示所有别名
使用:alias 别名=’命令值’
设置只对当前shell有效
永久生效写入配置文件内:(当前用户配置文件~/.bashrc和对所有用户有效的文件/etc/bashrc)编辑后不会立即生效
Bash的重新读取配置文件
source /path/to/config_file
. /path/to/config_file
unalias 撤销别名
-a撤销所有
+别名 撤销该别名
如果别名同原命令,想要执行可以使用\+命令 (反斜杠)
2、 Glob(globbing)通配符使用 ?任意单个字符
*任意多个字符
[]匹配指定任意范围内的单个字符
[^]匹配指定范围外的任意字符
\转义符
可在bash中用于实现文件名通配
[:digit:]任意数字
[:lower:]任意小写字母
[:upper:]任意大写字母
[:alpha:]任意大小写字母
[:alnum:]任意数字或字母
[:space:]空格字符
[:punct:]所有标点符号
3、 bash的快捷键
ctrl+l清屏
Ctrl+a跳转至命令首部
Ctrl+e跳转命令尾部
Ctrl+c取消命令执行
Ctrl+u删除命令行首至光标所在位置
Ctrl+k删除光标所在处至名两行尾部的所有内容
4、 bash的I/O重定向及管道|
程序:指令+数据
读入数据:input
输出数据:output
每一个打开的文件都有一个文件描述符FD:file descriptor(文件描述符)
标准输入:keyborad键盘,0
标准输出:monitor监视器,1
标准错误输出:monitor,2
I/O重定向:改变标准位置
输出重定向:COMMAND > NEW_POS, COMMAND>NEW_POS
>:覆盖重定向,
>>:追加重定向,
Set –C:禁止将内容覆盖输出至已有文件中,可以追加
(#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 XXX XXX 将后字符与将前字符替换
-d 删除指定字符
<< HERE document 创建文档
例子: cat >> /tmp/test.out << EOF
5、管道符:COMMAND1 | COMMAND2 |COMMAND3……前一个命令的输出作为下一个命令的输入
Note:最后一个命令会在当前shell进程的子shell中执行
Tee 选项 文件
一般做在管道符后用,一份保存在文档,一份屏幕输出显示
5、 文件处理工具
wc命令:单词统计,统计单词的行、字节、个数
-l 行数
-w单词数
-c字节数
cut:切文件,
-d’ ’ –f 1 /* 以空白为分割字符,只显示第一列
-f 1,7 第一行和第七行,第几列字段
-d 指明分隔符
Sort 排序
sort [OPTION]... [FILE].
默认是开头的第一字母,升序
-r逆序
-f 忽律大小写
-t 字段分隔符
-k # 以指定字段为标准排序
-n以数值大小排序
-u uniq 唯一的,排序后去重
uniq命令
uniq [OPTION]... [FILE].
Note:连续且完全相同方为重复
-c 显示每行重复出现的次数
-d:仅显示重复过得
-u仅显示不重复的