知识梳理
本文旨在复习知识点,做知识梳理,对基本概念、基本用法等作记录
1. Linux文件系统、文件类型
2. Bash基本特性
3. 文件管理命令: cp, mv, rm
4. 目录管理命令:mkdir, rmdir, tree, dirname, basename
5. 文本命令:包含基本的文本查看[cat, tac, more, less, tail, head]、文本编辑[nano]、文本处理[wc, cut, sort, uniq]
6. 时间戳基本概念和命令touch
Linux文件系统、文件类型
每一款OS都有自己的文件系统,通过文件系统才能够更好地管理、组织、调度、编辑磁盘上的数据文件。
Linux的根文件系统是:RootFS
Linux是开源的,以内核为基础+封装各种软件包=形成了各种Linux发行版本。那么会不会各有各的文件系统层次而造成管理的不方便呢?
不会! LSB [Linux规范标准]中的 FHS [文件系统层级标准] 规定了文件系统的通用层次、通用命名!
FHS基本标准:
/boot: 引导文件存放目录,例如kernel(vmlinuz)、bootloader(grub, grub2);
/bin: binary,供用户使用的基本的命令;OS启动即会用到程序;
/sbin:管理类的基本命令;
/lib: 基本共享库;内核模块;
/lib64:x86_64系统的共享库;
/etc:配置文件目录;
/home/USERNAME: 普通用主目录的默认位置;
/root: 管理员的主目录;
/media:便携式移动设备;
/mnt:临时文件系统挂载点;
/opt: 可选目录,第三方应用程序的默认安装位置;
/dev:设备文件 b是块设备,c是字符设备
/proc:伪文件系统;用于输出内核与进程的相关信息;
/sys: 伪文件系统;
/srv: 系统上运行服务用到中间数据;
/tmp:临时文件目录;
/usr:Universal Shared, Read-only data;通常用作用户安装程序目录
/var:variable data files通常用作应用程序临时文件目录,如缓存
/selinux:系统权限安全验证
Linux文件类型:
白色:普通文件
蓝色:目录
绿色:可执行文件
红色:压缩文件
浅蓝色:链接文件 使用ls -al 能够看到这个链接文件究竟指向谁
红色闪烁:链接的文件有问题
***:设备文件
灰色:其他文件
Bash基本特性
命令历史
执行过的命令会放在缓存中,当用户正常退出时候写入到.bash_history文件中
和2个变量有关系HISTSIZE缓冲区大小、HISTFILE缓存写入文件
查看历史命令history、常用选项-c清空、
!#调用历史中第#条命令
命令补全
内建命令
外部命令:去指定的环境变量PATH路径中依次寻找该命令
路径补全
把用户给出的路径字符串当前路径起始,并在其指定的上级目录下搜索以指定的字符串开头的文件名;
命令行展开
~展开为当前用的主目录,本质是/home/$user
{}可承载一个以逗号分隔的列表,并其展开为多个路径;
命令执行结果
由bash追踪 和保存
成功:0
失败:1-255
命令别名
Alias/unlias,将多参数直接附加到命令本身上,省事
命令的另一个引用符号,由bash程序维护
如果想使用原命令,\Command
Glob通配符
[:lower:]单个小写字母
[:upper:]单个大写字母
[:digit:]单个数字
[:space:]空白符
[:punct:] 其他标点符
[:alnum:]大小字母及数字
*:匹配任意长度的任意字符;
?:匹配任意单个字符;
[]: 匹配指定范围内的任意单个字符; 如[a,b,c]匹配当中任意单个字符即可
[^]:匹配范围外的任意单个字符;如[^a,b,c]除abc以外任意单个字符
字符集合:
组合键
Ctrl+l:清屏 clear也可以
Ctrl+a: 切换至命令行首
Ctrl+e:切换至命令行尾
Ctrl+c:取消命令执行
Ctrl+u:删除光标所在处至行首的内容;
Ctrl+k: 删除光标所在处至行尾的内容;
IO重定向
> 覆盖输出
>> 追加输出
<
<< cat >> /path/to/somefile << EOF
标准输入:keyboard, 0, /dev/stdin
标准输出:monitor, 1, /dev/stdout
标准错误输出:monitor, 2, /dev/stderr
输入重定向
输出重定向
管道
将上一个命令的结果 作为下一个命令的参数继续使用
COMMAND1 | COMMAND2 | ...
文件管理命令
cp,复制命令[文件、目录都可以复制]
cp SRC DEST
SRC是文件:
<1>如果DEST不存在:新建目标文件,并将SRC复制到目标文件;
<2>如果DEST存在:
如果DEST是文件:用SRC的内容覆盖至DEST文件中;
如果DEST是目录:在DEST目录中新一个与原文件同名的文件,将将SRC内容复制到新建的同名的目标文件中;
常用选项:
-r, -R: 递归复制;
-d: 不跟踪符号链接;
-i: interactive 当出现覆盖时候会显示提示,默认root用户定义alias 'cp=cp -i'
-f: force 强制覆盖
-v: 显示过程
mv,移动文件
mv [OPTION]... [-T] SOURCE DEST
本质操作:先创建目标文件----将原文件读取形成数据流写入到目标文件-----删除源文文件
注意事项:源和目标在同一个目录,mv实现的是重命名的功能
常用选项:
-i:交互式,会出现提示
-f:强制执行
rm,删除文件,默认情况下只能删除单个文件
rm [OPTION]... FILE...
默认情况只能删除文件;如果想删除目录请参照-r选项
常用选项:
-r:递归删除,这样就可以删除目录了
-i:交互式的,会出现提示
-f:强制执行
目录管理命令
dirname指的是一个绝对路径除最后文件名意外的其他部分,我称之“引导名”
basename指的是一个绝对路径最后的文件名部分,我称之为“基名”
举个例子:
# dirname /etc/init/rc.conf
--->/etc/init //输出引导名,前面的部分
# basename /etc/init/rc.conf
--->rc.conf //输出基名,最后的部分
mkdir,创建目录举个例子:
mkdir [OPTION] /PATH/TO/SOMEWHERE
常用选项:
-p:创建父目录,比如创建/a/b/c,但是目录a、目录b都不存在,就会依次创建下去
-v:显示创建过程,是小写,比如追踪上面的例子
rmdir,删除空目录,请注意是空目录举个例子:
rmdir /PATH/TO/SOMEWHERE
注意事项:
1.请保证目录是空目录,否则会报错;
2.rm也可以删除目录,但是需要添加-r参数,这是因为非空目录不能直接删除,-r能递归删除,目录本身也是文件不是吗?
tree,默认没有安装的命令,树状显示目录结构举个例子:
tree [OPTION]... [DIR]
非常直观显示层次结构,比ls一行一行显示更能反映层次关系
注意事项:默认没有安装,yum -y install tree
常用选项:
-L 2:追踪2个层级显示,就是显示1级目录、2级目录
-d:只显示目录类型的文件
文本命令
文本查看[cat, tac, more, less, tail, head]
cat和tac
Cat [OPTION]... [FILE]...
Tac cat [OPTION]... [FILE]...
1.都是打印输出整个文件内容到屏幕上,执行完毕退出命令;
2.不可以回滚、翻页,因为你执行完就退出了;
3.cat是自上而下输出内容,tac和他相反,这2个单词本来就相反!!
more和less
More [OPtion]... File
Less [Option]... File
1.都支持翻屏查,space往下一屏,b往上一屏;
2.都支持逐行查看,Enter键
3.都支持文本过滤,其实也支持正则
/keyword 从首部向尾部翻动
?keyword 相反
n:与命令方向相同的下一个
N:与命令方向相反的前一个
4.more看到尾部会退出命令回到bash,而less不会退出命令,还可上滚;
Head和tail
Head [OPtion]... File
Tail [Option]... File
1.只检索某些内容,不需要全部打开文件,抽取一个文本流中的多少行数据,或者一个block
2.如果不指定行数,默认是前10行或者末10行
-n#
3.tail -f可以跟踪文件的更改
文本处理[wc, cut, sort, uniq] --->只是显示结果增强,文件自身内容不变!
Wc [option]... File...
统计之用,默认显示:行 单词 字符 文件名
-l:显示行数
-w:显示单词数
cut [OPTION]... [FILE]...
切割工具,按照分隔符来切割、字段来切割、指定提取,很好的文本过滤器
常用选项:
-d: 指明分割符号-d’’ -d:
-d: 指明要显示的字段
1: 只显示第1列
1-3: 显示1,2,3列
1,3,4:显示1,3,4列
sort [OPTION]... [FILE]...
排序工具,原理:逐行比较第一个字符,第一个相同比较第二个.....[比较的是ASCII大小]
常用选项
-r 逆序显示
-f 忽略字符大小写,Linux默认严格区分大小写
-u 排序后去重, 连续且相同,如果开启了-u只显示一次,请注意文件内容不变!!
-t char指定分割符
-k #:以哪个字段为准 进行排序
-n:以数值大小来排序
简单文本编辑[nano]-
nano 最简单的文本编辑工具,vi、vim功能更为强大、更为灵活
时间戳命令和touch
每个文件都有三个时间戳[传统linux上,Centos7可能更多和文件系统有关]
Atime:文件最佳一次被访问的时间:比如more、less、cat这种访问行为;
Mtime:文件最近一次被“修改”的时间;
Ctime:文件最近一次被“改变”的时间;
注意 :atime、mtime时间是独立的,可以单独修改atime[mtime不变],同理修改mtime[atime不变]
不管是atime还是mtime修改,只要有变动,ctime永远跟随最后系统时钟
touch 本来是修改时间戳的,但是可以用来创建新文件
touch [OPTION]... FILE...
以特定的时间 来 修改特定的时间戳
touch -t STAMP [[CC]YY]MMDDhhmm[.ss]
特殊用法:当指定的文件不存在的时候,会创建一个文件,但是这个文件是empty的