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

文件管理命令剩余部分及bash特性

2016-09-02 09:33 302 查看
文件管理命令剩余部分及bash特性详解·文本排序命令

->sort命令

sort命令不会修改原文件

sort命令文本排序原理:

字符排序->根据字符在ASCII表中的排序从左至右进行升序排序




-n选项表示数值升序排序




-r选项表示降序排序

数值和字母均满足







-k选项表示以文本行中的某个字段为标准进行排序

格式:sort -t(指定字段分隔符) -k#(指定字段) -n ...




-u(unique)选项表示排序后的行重复的行只显示一次




-f选项表示排序时忽略字符的大小写




->uniq命令

uniq命令的功能是重复的行只显示一次,但是对uniq命令来说只有相邻的相同的行才被视为重复的行




uniq命令不排序

-d选项表示哪一行重复了就显示哪一行的内容




-D选项表示将重复的几行内容完整的显示出来




-c选项表示显示文件中内容的重复次数




·文本统计命令
->wc(word count)命令

不加任何选项表示依次显示文件的行数,单词数,字节数




-l选项表示只显示文件的行数




-w选项表示只显示文件的单词数




-c选项表示只显示文件的字节数




-m选项表示只显示字符数




-L选项表示显示出文件中最长的一行包含多少个字符




·字处理命令
tr命令的功能是转换或删除字符

tr命令可以进行字母的大小写转换,这种转换机制是一一对应的转换




<表示输入重定向

-d选项表示删除指定的字符





bash及其特性详解
·shell(外壳)

GUI形式的shell分为:

->Gnome

->KDE

->Xface

CLI形式的shell分为:

->sh

->bash(Bourne-Again Shell)

->csh

->ksh

->tcsh

->zsh

·bash
bash是一个程序,我们所说的进程是程序的副本,是程序执行的实例,在每个进程看来当前主机只存在内核、当前进程以及当前用户的工作环境,pstree命令可以查看当前进程:




在shell中开启的shell叫做父子shell

bash特性:

->支持命令历史、命令补全以及路径补全功能

->支持管道以及重定向功能

->支持命令行编辑功能

->支持命令行展开功能

->支持文件名通配功能

->支持使用变量

->支持文本编辑功能(shell脚本)

·命令行编辑
->光标跳转

Ctrl+a表示跳到命令行行首
Ctrl+e表示跳到命令行行尾
Ctrl+d表示删除光标后的字符

Ctrl+u表示删除光标至命令行首的内容

Ctrl+k表示删除光标至命令行尾的内容

Ctrl+方向键表示依次跳转一个单词

·history命令
查看命令历史的命令




-c选项,表示清空命令历史




-d选项,表示删除指定位置处的命令历史

使用格式:history -d OFFSET

->history -d #表示删除指定命令历史编号为#的命令




-w选项,表示保存命令历史到命令历史文件(家目录下的隐藏文件.bash_history)中




history命令使用技巧

->!#,表示执行命令历史中的第#条命令




->!-#,表示执行命令历史中的倒数第#条命令




->!!表示执行上一条命令




->!string,表示执行命令历史中最近的一个以指定字符串开头的命令




->!$,表示引用上一个命令的最后一个参数




也可以使用Esc.或者Alt.来实现

·环境变量
->PATH

命令搜索路径




->HISTSIZE

命令历史缓冲区大小(即为history命令可以最多输出至标准输出的命令数量),默认为1000条命令

我们的命令补全机制,是在环境变量PATH中查找我们需要补全的命令,路径补全机制则是在我们需要补全的路径的开头路径中寻找我们需要补全的路径

如果我们在进行命令补全的时候出现了下图中所出现的提示的话,说明可补全的命令太多,系统询问我们是否要将所有命令全部输出至标准输出:




·命令别名
alias(别名)

使用格式:alias 命令别名='COMMAND [options] [arguments]'->等号右边存在空格的话,等号右边的内容得用引号引起来




在shell中使用alias命令定义的命令别名只在当前shell进程的生命周期中有效,同一个用户也是如此,别名的有效范围仅是当前shell进程,执行alias命令可以显示当前系统中的所有命令别名:




使用alias COMMAND可以查看命令的命令别名




\COMMAND表示使用命令本身的功能,而不是用命令别名




·命令替换
所谓命令替换,就是将命令替换为命令的执行结果

替换格式:

->$(COMMAND)




->`COMMAND`




·bash中支持的引号
->``:反引号表示命令替换

->"":双引号表示弱引用可以实现变量替换

->'':单引号表示强引用不能实现变量替换

·文件名通配(globbing)
->*:用来实现匹配任意长度的任意字符




->?:用来实现匹配单个字符




->[]:用来实现匹配指定范围内的任意单个字符

[abc]表示匹配abc中的任意一个字母




[a-m]表示匹配a-m中的任意一个字母




[a-z]表示匹配任意一个小写字母




[A-Z]表示匹配任意一个大写字母





[0-9]表示匹配任意数字




[a-zA-Z]表示匹配字母




[0-9a-zA-Z]表示匹配字母或数字




匹配一个以字母开头,以数字结尾的文件名




[:space:]表示匹配空白字符

[:punct:]表示匹配标点符号




[:lower:]表示匹配小写字母




[:upper:]表示匹配大写字母




[:digit:]表示匹配数字




[:alpha:]表示匹配字母




[:alnum:]表示匹配数字和字母




man 7 glob可以查看文件名通配符的使用手册:




[^.....]表示用来匹配范围之外的任意单个字符




上图表示匹配以非数字开头的文件

匹配以字母开头中间是空白字符以字母结尾的文件名:

[[:alpha:]]*[[:space:]]*[[:alpha:]]

[^[:alpha:]]表示匹配的是非字母:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux