17

Linux shell 一些命令

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzUxMTk4MzY3MA%3D%3D&%3Bmid=2247484534&%3Bidx=1&%3Bsn=e06f9959823334189c07e83cd6abd593
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~

程序环境: ubuntu16.04  x64 虚拟机

以一个实际的需求为例进行说明: 获取固定网卡的ip地址

一、 例子拆解

1.  ifconfig效果

ifconfig ens33

EBjmQnE.png!web

2.  使用awk格式化字符

ifconfig ens33 | awk '/inet/ {print $2}'

7z6NjaA.png!web

|

管道命令操作符 | 可以用来连接进程,管道符左边命令可以作为管道符右边命令的输入。

② 介绍下 awk 指令:

awk是一个强大的文本分析工具,相对于 grep 的查找, sed 的编辑, awk 在其对数据分析并生成报告时,显得尤为强大。简单来说 awk 就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

一种使用方法:

awk '{pattern + action}' {filenames}

pattern 表示 AWK 在数据中查找的内容

action 是在找到匹配内容时所执行的一系列命令

pattern就是要表示的正则表达式,用斜杠括起来

awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息, awk 抽取信息后,才能进行其他文本操作。完整的 awk 脚本通常用来格式化文本文件中的信息

说回例子中参数的意义,

/inet/ 正则表达式

{print $2} 对第二列结果进行输出;以上面 ifconfig ens33 输出为例,按照空格来划分域,找到 inet 所在行并输出第二个域

3 使用cut获取最终需要信息

ifconfig ens33 | awk '/inet/ {print $2}'| cut -f2 -d ":"

v636Rrz.png!web

cut

正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。

-f 与 -d 一起使用,指定显示哪个区域

二、 其他怪怪的关键字

整数比较:

-eq(equal) 相等

-ne(inequality) 不相等

-gt(greater than) 大于

-lt(less than) 小于

-ge(greater equal) 大于或等于

-le(less equal) 小于或等于

三、  脚本程序的参数传递

将上面的命令写入脚本文件中,并传入参数:

#! /bin/bash 嵌入式则指定sh解释器


Src_Ip=$(/sbin/ifconfig ens33 | awk '/inet/ {print $2}' | cut -f2 -d ":")

Str=$1


echo $Src_Ip

echo $Str


if [ "$1" = "hello" ]; then

echo '~~~~~~~~~'

fi

转行嵌入式的基本素养:

每日鸡汤: 是梦想支撑了生活

MZzeIjR.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK