Bash基础特性1
来源:互联网 发布:淘宝搞笑收件人名字 编辑:程序博客网 时间:2024/05/17 05:58
一、globbing
globbing:文件名通配,即用系统定义好的规则代替某一类字符或字符的集合,用来表示文件名。
1.*:匹配任意长度(包括0)的任意字符
例如:列出/etc目录下所有以m开头的文件或目录:
ls -d /etc/m*
2.? :匹配任意单个字符
例如:列出当前目录下所有以pa开头,第三个字符为任意字符的文件或目录:
ls -d pa?
3.[] :匹配指定集合内的任意单个字符
用法:
[0-9] 任意数字
[a-z] 任意小写字母
[A-Z] 任意大写字母
[0-9a-zA-Z] 任意数字及字母
例如:列出/etc目录下所有以数字开头,小写字母结尾的文件或目录:
ls -d /etc/[0-9]*[a-z]
4.^ :匹配指定集合外的任意单个字符,用于集合[]中,可理解为取反:
例如:列出/etc目录下所有不以字母开头,但以字母结尾的文件或目录:
ls -d /etc/[^a-zA-Z]*[a-zA-Z]
5.字符集合:
[:space:] 代表所有的空白字符
[:punct:] 代表所有的标点符号
[:lower:] 代表所有的小写字母
[:upper:] 代表所有的大写字母
[:digit:] 代表所有数字
[:alpha:] 代表所有字母
[:alnum:] 代表所有字母和数字
注:上面所描述的字符集合仅表示集合中代表的字符或字母,在实际使用时,应在外再加一个[],表示集合,如[[:alnum:]] 。
练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位数字的文件或目录。
ls -d /var/l*[[:digit:]]*[[:lower:]]
中间的[[:digit:]]也可以用[0-9]来专门表示一个字母。
练习2:显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录。
ls -d /etc/[[:digit:]]*[^[:digit:]]
练习3:显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录。
ls -d /etc/[^[:alpha:]][[:alpha:]]*
ls /etc/[^a-zA-Z][a-zA-Z]*
练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/m_dir目录中。
先查看目录是否存在,如果不存在的话先创建目录,再执行命令:
cp -r /etc/m*[^0-9] /tmp/m_dir
二、命令行中的常用快捷键
列举几个在命令行编辑时常用的快捷键,不是特别全。
ctrl + a :光标跳转至命令行首部
执行前:
执行后:
ctrl + e :光标跳转至命令行尾部(命令操作相对比较简单,下面就不截图了)
ctrl + l :清屏,作用相当于命令clear
ctrl + c :终止或取消(用ping命令实验)
ctrl + u :删除光标所在位置到命令行首部的所有字符
ctrl + k :删除光标所在位置到命令行尾部的所有字符
三、IO重定向及管道符的使用
我们平时使用的程序都是有输入和输出功能的,通过使用程序的输入功能,得到程序输出的结果。
之前的一些命令基本上都是通过输入目标命令,在屏幕中得到相应的输出结果。
如通过在键盘上输入命令 cat /etc/fstab,得到etc目录下fstab文件中的输出内容:
即使不小心打错一个命令,也会有错误提示的输出:
如果我们不直接将输出的结果显示到屏幕上,而是保存在指定的文件中,这样的功能就叫做重定向。
按照输入和输出的方式,可以分为输出重定向和输入重定向。
1.输出重定向
输出重定向符号:
> :符号后跟文件路径及名称,将输出结果保存在指定文件中,如果指定文件已存在,会覆盖文件的原有内容。
两个文件的原有内容:
下面将test1文件中的内容覆盖到test2文件中:
cat test1 > test2
>> :符号后跟文件路径及名称,将输出结果保存在指定文件中,不会覆盖文件的原有内容,而是追加到最后。
将上例中的test2文件内容再追加到test1文件中:
cat test2 >> test1
由于通过覆盖的方式进行输出重定向操作具有一定的风险,可以使用命令 set -C 禁止使用:
注意此时是在当前的session中控制的,不对其他的session起作用,如果需要的话,需要添加到家目录下的.bash_profile配置文件中。
>| :在禁止的情况下做强制覆盖:
可以通过命令set +C取消对覆盖重定向的限制。
2> :对错误内容输出重定向,覆盖原有文件内容:
2>> :对错误内容输出重定向,追加至文件尾部:
&> :合并正常的标准输出和错误输出至同一个文件,覆盖原有文件内容:
&>> :合并正常的标准输出和错误输出至同一个文件,,追加至文件尾部:
还可以关闭对错误信息的显示或输出(当前目录下无test4文件或目录):
ls test1 test4 2>&-
ls test1 test4 2>/dev/null
其中/dev/null可以理解为Linux系统中的黑洞设备,任何信息输入到该设备中均会消失。
2.输入重定向
输入重定向的符号就是把输出重定向的符号反过来,即<、<< 。
通过与EOF命令配合使用,将输入内容显示在屏幕上:
或者将输入的内容重定向到指定文件中:
3.管道符的使用
作用:连接命令,将前一个命令的输出结果作为后一个命令的输入。
语法:COMMAND1 | COMMAND2 | ...
例如:将/etc/passwd文件的前十行内容转换为大写输出:
step1:先将文件的前十行内容显示出来
cat /etc/passwd | head -10
step2:使用tr转换命令
注:tr命令的用法:
作用:字符转换及删除
语法:1.tr '[set1]' '[set2]' 将set1集合里的字符转换为set2里的字符,字符可以是任意的,但是两个集合中的字符个数一定要匹配;
2.tr -d '[set]' 删除set集合中的字符。
例如将小写字母转换为大写字母:
或者将指定字母转换为数字:
删除指定字母:
四、文本查看及处理工具
1.wc命令
作用:显示文件或输入内容的行数、单词数及字节数。
语法:wc [option] FILE ...
常用选项:
-l :行数
-w :单词数
-c :字节数
如果不输入选项 默认以 -l -w -c 的顺序显示:
2.cut命令
作用:对输出结果按一定的规则进行剪切。
语法:cut [option] FILE ...
常用选项:
-d :指定字段分隔符
-f :指定要显示的字段
例如:显示/etc/passwd文件中的所有用户名。
先查看passwd文件内容,发现文件中每行的信息都是以:间隔的,可以划分为7列:
所以指定分隔符为:,只显示第一个字段即可:
cut -d : -f 1 /etc/passwd
3.sort命令
作用:对输入内容进行排序操作。
语法:
sort [option] FILE...
常用选项:
-n :按数值大小进行排序
-r :逆序
-f :忽略字符大小写
-t :指定字段分隔符
-k :指定用于排序的字段
-u :重复的行只保留一次
例如:将/etc/passwd 中的内容按照UID从大到小的顺序进行排列:
按照':'分隔,UID位于第三列:
sort -t : -k 3 -n -r /etc/passwd
4.uniq命令
作用:统计重复行的信息。
语法:uniq [option] FILE...
常用选项:
-c :显示每行出现的次数;
-d :仅显示重复的行;
-u :仅显示不曾重复的行;
创建测试文件repeat,内容如下:
测试各参数的效果:
练习:取出ifconfig命令中eth0的ip地址。
step 1:先取出eth0的IP地址所在的行:
ifconfig | head -2 | tail -1
step 2:按照':' 进行分割,取第二列:
ifconfig | head -2 | tail -1|cut -d : -f 2
step 3:再以空格分割,空格需要用双引号标明:
ifconfig | head -2 | tail -1|cut -d : -f 2|cut -d " " -f 1
- Bash基础特性1
- bash特性之基础
- bash的基础特性
- linux基础之bash特性
- bash基础特性及常用命令
- Bash Shell脚本编程-基础特性知识
- Linux学习笔记:bash的基础特性
- linux文件系统及bash基础特性
- bash特性
- bash学习笔记1-bash基础
- bash基础特性之cut tr 详解与使用
- Linux学习笔记:bash的基础特性之变量
- bash 基础
- Bash 基础
- Bash基础
- Bash基础
- bash基础
- bash 基础
- JAVA基础教程之入门学习方法
- jsp创建cookie
- C++运算符重载详解
- How To Install Speedtest-cli On a CentOS / RHEL / Scientific / Fedora Linux To Check Internet Speed
- swift 语法-012-可空、可非
- Bash基础特性1
- Java中的大数字操作
- matlab程序 使用mex和omp加速程序
- jsp 获取cookie 的值的方法
- Oracle Study之--AIX 6.1安装Oracle 10gR2
- 使用UIAlterView时设置window问题
- iOS陆先森开发笔记(一)retain、strong、weak、assign区别
- ajax提交数据后Action中的程序未执行完毕,页面却已经显示响应结果error
- YII 数据库缓存