Linux特殊符号浅谈
Linux特殊字符浅谈
我们经常跟键盘上面那些特殊符号比如(?、!、~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号、通配符、正则表达式。
Linux特殊符号又可以分以下几类
1、管道符号
|
字符 |
名称 |
功能描述 |
|
| |
管道 |
传递的普通的字符串,来自于前一个命令 |
|
|xargs |
管道流转换 |
与xargs 传递的是把字符串变成了文件名 |
2、目录结构
|
字符 |
名称 |
功能描述 |
|
. |
当前目录 |
|
|
.. |
当前目录上一级目录 |
3、重定向符号
|
字符 |
名称 |
功能描述 |
|
> |
输出重定向 |
会清空原文以及内容 然后在向文件里面追加内容 |
|
>> |
追加输出重定向 |
追加到文件最后一行 |
|
< |
输入重定向 |
文本内容输入 tr xargs |
|
<< |
追加输入重定向 |
用于给文件追加多行文本 cat |
4、其他特殊符号
|
字符 |
名称 |
功能描述 |
|
# |
注释 |
Linux注释,另#root 超级用户提示符 |
|
$ |
变量符号 |
shell、$变量取值、AWK取列等 |
|
&& |
表示并且 |
前面部分执行成功才执行后面的部分 |
|
|| |
表示或者 |
前面部分执行失败才执行后面的部分 |
|
`` |
Shell执行命令 |
引用命令的结果 |
|
; |
命令分割 |
一行分割多个命令,没有逻辑联系 |
|
‘’ |
设置字符串变量 |
不具有变量置换功能,输出时所见即所得 |
|
“” |
设置字符串变量 |
具有变量置换功能,解析变量输出 |
|
{} |
表示序列 |
以逗号分割,且不能为空,如{a,b,c}表示单独 {0..9}表示范围,同功能的有seq,但seq只产生数字序列 |
|
- |
cd - su - root |
|
|
~ |
当前目录的家目录 |
|
|
/ |
根或者路径分割 |
|
|
! |
vi/vim强制退出 逻辑运算非, !+字母 调出最近一次以字母开头的命令 !!使用 最近一次操作的命令 !+数字 调出历史的第几条命令 |
通配符:通常匹配文件名
|
字符 |
名称 |
功能描述 |
|
? |
匹配任一个字符(不在括号内的时候) |
|
|
* |
匹配任何字符(0或多个) |
|
|
[] |
匹配符号内任一字符 如[abcd] [0-9] |
|
|
[!]非 |
表示不匹配[]里面任一字符 |
正则表达式:处理大量的字符串,通常以行为单位(简单高效)
基础正则BRE
|
字符 |
名称 |
功能描述 |
|
^ |
以某某开头的 |
|
|
$ |
以某某结尾的 |
|
|
^$ |
空行,不是空格 |
|
|
. |
表示任意一个字符 |
|
|
\ |
元字符转义普通字符 |
\. 普通字符小数点 \n 换行符 \b 单词边界 \r 回车 \t 横向制表符 |
|
* |
重复之前的字符0个或者多个 |
|
|
.* |
匹配所有字符 |
|
|
^.* |
以任意多个字符开头 |
|
|
.*$ |
以任意多个字符结尾 |
|
|
[] |
匹配字符串内的任意一个字符,如[abc]匹配a或b或c,[a-z]匹配所有小写字母 |
|
|
[^] |
匹配不包含字符串内的任意字符,取反 |
扩展正则ERE(使用egrep或者sed -r)
|
字符 |
名称 |
功能描述 |
|
+ |
重复前一个字符一次或一次以上,如[0-9]+ |
|
|
? |
重复前一个字符0次或者一次 |
|
|
| |
元字符左边字符或者右边字符 |
|
|
() |
分组过滤,如()内的内容为一个整体;反向引用:如\1表示引用第一个()里面的内容 |
|
|
a{n,m} |
重复前面a字符n到m次,egrep或者sed -r直接使用,如grep,sed使用该功能需要转义a\{n,m\} |
|
|
a{n,} |
重复前面a字符至少n次 |
|
|
a{n} |
重复前面a字符n次 |
|
|
a{,m} |
重复前面a字符最多m次 |
学习正则表达,我们可以使用Linux运维三剑客:awk、sed、grep;除了前三者,正则表达式还支持各种编程或者脚本语言
为了更好的学习和工作,我们一般自动添加颜色来区分匹配关键字
cat >> /etc/bashrc << EOF
alias egrep='egrep --color=auto'
alias grep='grep --color=auto'
EOF
source /etc/bashrc
学习步骤:
1:grep /RE/ filename
2:grep -o /RE/ filename 看它如何匹配
区分正则表达式和通配符
表达式是文件或者目录名 -->通配符
表达式是文件内容(字符串) -->正则表达式
学习正则方法:awk、sed -r、grep/egrep -o:该都是匹配正则,其他都是通配符
帮助文档:通配符man 7 glob
正则表达式:man grep、info grep等等
举例:
1、/etc/hosts 取该文件权限对应的数字内容 如:-rw-r--r--对应的为644
思路方法:sed 正则、awk 分割符、grep、cut、ls 替换、stat、head
stat /etc/hosts | sed -n '4p' | sed 's#^.*(0##g' | sed 's#/.*$##g'
stat /etc/hosts | sed -rn '4s#^.*\(0(.*)/-.*$#\1#gp'
stat /etc/hosts | awk 'NR==4' | awk -F "0" '{print $2}' | cut -c 1-3
stat /etc/hosts | awk 'NR==4' | awk -F "0" '{print $2}' | awk -F "/" '{print $1}'
stat /etc/hosts | awk 'NR==4' | awk -F "[0/]" '{print $2}'
stat /etc/hosts | awk 'NR==4' | awk -F "0|/" '{print $2}'
stat /etc/hosts | awk -F "[0/]" 'NR==4{print $2}'
ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'
ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" '{for(i=1;i<=NF;i++){if(i<4){user[a]+=$i}else if(i>3&&i<7){group[b]+=$i}else{other[c]+=$i}};print user[a]group[b]other[c]}'
ls -l /etc/hosts | awk -F "" '{gsub("r","4")};{gsub("w","2")};{gsub("x","1")};{gsub("-","0");print $2+$3+$4 $5+$6+$7 $8+$9+$10}'
2、取IP地址
ifconfig eth0 | awk -F "[ :]+" 'NR==2{print $4}'
ifconfig eth0 | awk -F "addr:| Bcast:" 'NR==2{print $2}'
Linux特殊符号浅谈的更多相关文章
- linux安全加固浅谈
难易程度:★★★阅读点:linux;python;web安全;文章作者:xiaoye文章来源:i春秋关键字:网络渗透技术 前言linux被越来越多的企业使用,因此掌握一些基本的linux安全加固是有必 ...
- Linux文件目录权限浅谈
1.基本权限三种(1)r (read) 读 针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能.针对文件,有读(r)权限就代表能对此文件有阅读功能,可 ...
- linux服务器开发浅谈
[开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正 ...
- Linux说明书 - man浅谈
原文链接: http://www.cnblogs.com/xuxn/archive/2011/08/26/linux-manual-man-command.html 所有学过Linux的同学都应该知道 ...
- Linux网络编程——浅谈 TCP 三次握手和四次挥手
一.tcp协议格式 二.三次握手 在 TCP/IP 协议中.TCP 协议提供可靠的连接服务,採用三次握手建立一个连接. 第一次握手:建立连接时,client发送 syn 包(tcp协议中syn位置1. ...
- Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk 老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...
- 浅谈Linux中的信号处理机制(二)
首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...
- 浅谈 Linux 内核无线子系统
浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...
随机推荐
- HTML文档声明
前面的话 HTML文档通常以类型声明开始,该声明将帮助浏览器确定其尝试解析和显示的HTML文档类型.本文将详细介绍文档声明DOCTYPE 特点 文档声明必须是HTML文档的第一行.且顶格显示, ...
- 前端学HTTP之Web主机托管
前面的话 对内容资源的存储.协调以及管理的职责统称为Web主机托管.主机托管是Web服务器的主要功能之一.保存并提供内容,记录对内容的访问以及管理内容都离不开服务器.如果不想自行管理服务器所需的软硬件 ...
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- iOS逆向工程之KeyChain与Snoop-it
今天博客的主题是Keychain, 在本篇博客中会通过一个登陆的Demo将用户名密码存入到KeyChain中,并且查看一下KeyChain中存的是什么东西,把这些内容给导出来.当然本篇博客的重点不是如 ...
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第十二节)
好的,那么在上一节中呢,评论功能的后台已经写好了,这一节,先把这部分后台代码和前台对接一下. 1.评论功能实现 我们修改一下保存评论按钮的点击事件,用jQuery的方式获取文本框中的值,然后通过aja ...
- Node.js入门
开始之前,安利一本正在看的书<站在两个世界的边缘>,作者程浩,上帝丢给他太多理想,却忘了给他完成理想的时间.OK,有兴趣的可以看一看. node.js如标题一样,我也是刚开始接触,大家一起 ...
- Oracle使用触发器和mysql中使用触发器的比较——学习笔记
一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...
- MySQL+Amoeba实现数据库主从复制和读写分离
MySQL读写分离是在主从复制的基础上进一步通过在master上执行写操作,在slave上执行读操作来实现的.通过主从复制,master上的数据改动能够同步到slave上,从而保持了数据的一致性.实现 ...
- Handler
1.1 继承AbstractController优点:能定制请求方式 package cn.happyl.controller; import javax.servlet.http.HttpServl ...