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}'
转载于:https://www.cnblogs.com/verrion/p/linux-special_characters.html
Linux特殊符号浅谈相关推荐
- Linux内核之浅谈内存寻址
Linux内核之浅谈内存寻址 前言 最近在看内存寻址的内容,略有所得,发此文与大家一起交流.我们知道计算机是由硬件和软件组成,硬件主要包括运算器.控制器.存储器.输入设备和输出设备,软件主要是操作系统 ...
- Linux先发送条件变量,linux 条件变量 浅谈Linux条件变量的使用
想了解浅谈Linux条件变量的使用的相关内容吗,在本文为您仔细讲解linux 条件变量的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:linux,条件变量,下面大家一起来学习吧. Linu ...
- [Linux学习笔记] 浅谈信号(文章含不少学习资源)
百金买骏马,千金买美人,万金买爵禄,何处买青春? 目录 信号的概念 信号的种类: kill -l 命令可以查看信号列表 man 7 signal 查看信号详细内容 信号的产生 补充知识 Core Du ...
- 红帽linux挑战赛题目,浅谈红帽linux挑战赛(三)
前言 当你不够强大的时候,你想要一个小小的机会,都没有:当你足够优秀的时候,你想要的一切都会主动来找你. 继上文 浅谈红帽linux挑战赛 浅谈红帽linux挑战赛(二) 继续介绍一下红帽挑战赛吧 红 ...
- linux安全加固浅谈
难易程度:★★★ 阅读点:linux;python;web安全; 文章作者:xiaoye 文章来源:i春秋 关键字:网络渗透技术 前言 linux被越来越多的企业使用,因此掌握一些基本的linux安全 ...
- linux代码签名,浅谈Linux容器和镜像签名(示例代码)
导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大 ...
- Linux学习路线浅谈
很多同学接触Linux不多,对Linux平台的开发更是一无所知.而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段.下来我将会结合 ...
- linux 线程_浅谈Linux线程模型
Thread Basic 基础概念 线程是操作系统能够调度和执行的基本单位,在Linux中也被称之为轻量级进程.从定义中可以看出,线程它是操作系统的概念,在不同的操作系统中的实现是不同的,不过今天分享 ...
- linux网卡IO,浅谈Linux 网络 I/O 模型简介(图文)
1.介绍 Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个sock ...
- linux ofstream open,浅谈linux性能调优之十一:内存分配管理
linux下内存分配的管理主要通过内核参数来控制: 1.与容量相关的内存可调参数 以下参数位于 proc 文件系统的 /proc/sys/vm/ 目录中. overcommit_memory :规定决 ...
最新文章
- 鼠标控制视角wasd移动_无线款,轻量级,稳控制:雷蛇(Razer) 毒蝰终极版鼠标的快速体验...
- Native Application 开发详解
- java 读取 文本块_Java文本块
- boost锁机制中Semaphores的介绍
- oracle怎么查询和插入表,Oracle查询一个表的数据插入到另一个表
- TechDay实录|摘取皇冠上的明珠,中文NLP的不二选择——PaddlePaddle
- Android View体系(五)从源码解析View的事件分发机制
- 大屏拍照游戏神器来袭,OPPO R11 Plus今日首销
- 小米pro安装win10系统
- visio技巧(曲线、连接点、自制模具)
- ansible shell 之运行后台程序
- uniapp map上添加浮层无法显示问题?
- FC6000蒸汽气体热水液体智能流量积算仪特点
- 疫情让“灵活用工”浮出水面,作为Android开发的你“灵活用工”了吗?
- android n 状态栏分析,Android N状态栏图标白底问题
- 废纸箱机器人图纸_手工制作大全:手绘纸箱机器人
- JDK1.8+Spring5+SpringMVC5+Mybatis3.4项目(SMM框架)搭建
- Gtk Label设置字体颜色
- 【先睹为快】李德毅 马楠:人工智能看教育
- CPU知识:了解CPU 18条
热门文章
- net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第二章 入门篇-快速入门ASP.NET Core看这篇就够了...
- Spring Boot整合 Thymeleaf 模板引擎
- 权限系统(第一次测试)
- 小结Python的中文处理(转)
- 小米有品员工签军令状,自动放弃年终奖!
- SQL Server 2012入门T-SQL基础篇:(7)Where子句与Having子句的区别
- 动态添加GRIDVIEW内容 和数据绑定
- 深入分析.NET应用程序SQL注入【危害】
- 【Gas Station】cpp
- Java Maven简明