shell技巧分享(六)

这是一个系列文章,主要分享shell(部分功能仅适用于bash)的使用建议和技巧,每次分享3点,希望你能有所收获。

1 从文件中查询特定字符串

  • 查询目录下所有文件
$ grep -R -n "facebook" demo/
demo/python-tips-3.py:24:#     'facebook': 'https://www.facebook.com/',
demo/python-tips-3.py:27:# print url_dict.get('facebook', 'https://www.google.com/')
demo/python-tips-3.py:32:# https://www.facebook.com/
demo/python-tips-3.py:37:# print url_dict['facebook']
demo/python-tips-3.py:43:# https://www.facebook.com/

示例中查询demo目录下所有包含字符串facebook的文件,-n选项是为了打印匹配行的行号,-R选项是为了递归查询目录下所有文件。

  • 查询指定文件
$ grep -n "Failed" boot.log
203:[FAILED] Failed to start Ipmievd Daemon.
222:[FAILED] Failed to start LSB: Bring up/down networking.
252:[FAILED] Failed to start Crash recovery kernel arming.

示例中查询boot.log文件是否包含字符串Failed,-n选项是为了打印匹配行的行号。

2 查询目录或文件

  • 查询目录
$ find ./python_practice/ -type d -name "*demo*"
./python_practice/demo
./python_practice/fluent_python_demo

示例中查询python_practice目录下,名字包含字符串demo的所有目录。-type d指定查询类型是目录,-name指定名称包含字符串demo,星号(*)是通配符,表示任意字符。

  • 查询文件
$ find ./python_practice/ -type f -name "*tips*"
./python_practice/demo/python-tips-1.py
./python_practice/demo/python-tips-10.py
./python_practice/demo/python-tips-2.py
./python_practice/demo/python-tips-3.py
./python_practice/demo/python-tips-4.py
./python_practice/demo/python-tips-6.py
./python_practice/demo/python-tips-7.py
./python_practice/demo/python-tips-9.py

示例中查询python_practice目录下,名字包含字符串demo的所有文件。-type f指定查询类型是文件,-name指定名称包含字符串tips,星号(*)是通配符,表示任意字符。

3 查看机器ip

$ alias ip='ifconfig | grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" | grep -v -E 255\|127'
$ ip
172.17.0.1
192.168.14.10
192.168.122.1

linux一般通过ifconfig命令查看机器ip,但是如果机器有多块网卡,从ifconfig的输出信息中不容易找到所有ip。借助alias命令,定义一个新命令ip,可以快速查看机器的ip。示例中,-o选项是为了只打印匹配的字符串,-v选项反向匹配,即不匹配指定的字符串,去除包含数字255和127的ip,-E选项是为了使用扩展的正则表达式。由示例中可以看到,通过新命令ip查询机器ip时,输出信息更易读。或者直接执行hostname -i命令,也可以查看当前机器使用的ip,如下:

$ hostname -i
192.168.14.10

LEo at 00:05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

day58_BOS项目_10

之前的请假流程,是没有实际意义的,我们要使得我们流程变得有意义(有实际意义),需要在流程向下推进的过程中带着数据推进才有意义。如下图所示:

744
来自专栏Android 研究

Retrofit解析2之使用简介

前面介绍完RESTful之后,我们先来初步认识下Retrofit的使用"姿势"。本文的主要内容如下:

1383
来自专栏JAVA技术zhai

JVM虚拟机详解

  JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿...

1062
来自专栏一名合格java开发的自我修养

由提交storm项目jar包引发对jar的原理的探索

序:在开发storm项目时,提交项目jar包当把依赖的第三方jar包都打进去提交storm集群启动时报了发现多个同名的文件错误由此开始了一段对jar包的深刻理解...

661
来自专栏一枝花算不算浪漫

页面静态化技术Freemarker技术的介绍及使用实例.

3116
来自专栏zingpLiu

浅析Python多线程

学习Python多线程的资料很多,吐槽Python多线程的博客也不少。本文主要介绍Python多线程实际应用,且假设读者已经了解多线程的基本概念。如果读者对进程...

1027
来自专栏逆向技术

16汇编第十讲完结Call变为函数以及指令的最后讲解

16汇编完结Call变为函数以及指令的最后讲解 学了10天的16位汇编,这一讲就结束了,这里总结一下昨天的LOOP指令的缺陷,因为lOOP指令的缺陷,所以我们都...

16810
来自专栏JackieZheng

Spring实战——缓存

缓存 提到缓存,你能想到什么?一级缓存,二级缓存,web缓存,redis…… 你所能想到的各种包罗万象存在的打着缓存旗号存在的各种技术或者实现,无非都是宣扬缓...

17310
来自专栏蓝天

从程序员角度看ELF

原文:http://xcd.blog.techweb.com.cn/archives/222.html

834
来自专栏测试开发架构之路

【总结】梳理下接口功能测试

953

扫码关注云+社区