2019独角兽企业重金招聘Python工程师标准>>>

ls -lat 列出当前目录所有东东的东东
ls -lath 人看的大小
ls -F | grep "/$"只搞目录
ls -lR 包括子目录…
ls --ignore filename -lt 忽略某个

which,在PATH变量指定的路径中,搜索看某个命令是否存在,以及执行的到底是哪一个位置的命令。
whereis, 搜索程序名,而且只搜索二进制文件、man说明文件和源代码文件。如果省略参数,则返回所有信息。
locate,在系统特定的数据库中指定文件名查找,譬如CentOS它只在每天某个时间把新增的文件更新到/var/lib/mlocate/mlocate.db这个数据库,定时见/etc/cron.daily/mlocate.cron,strings可以看到部分内容
还有一些好用的工具如tree,file,type等

-mtime 修改时间
-type 文件类型
-mmin 修改分钟
-perm 权限
-user 用户
-group 组
-maxdepth 搜索目录的层级

更多的东西请找你男人,man

find . -maxdepth 1 -type f  ! -name "*.txt"
在层级为1的目录(当前目录)查找不是.txt的普通文件
find . -maxdepth 1 -type f  \( -name "*.txt" ! -name "haha.txt" \)
查找.txt但不包括类似.haha.txt这样的文件
find . -maxdepth 1 -type f  \( -name "*.php" -o -name "*.txt" \)
查找.php或者.txt的文件

-exec会将find匹配到的所有文件一次性接收过来操作,不幸的是,有些系统对能够传递给 exec的命令长度有限制,会出现溢出错误,譬如提示"Argument list too long"
getconf ARG_MAX 看看参数的字节限制
那怎么办?

xargs xargs命令每次只获取一部分文件而不是全部,不像 -exec选项那样。这样它可以先处理 最先获取的一部分文件,然后是下一批,并如此继续下去。
find . -name "*.txt" | xargs -n 200 ls -lat
find . -name "*.txt" | xargs -I file -n 1 mv file file.log  更好理解的表达

find查找避开某个目录
find . -path "./subdir*" -prune -o  -type f -name "*.txt" -print
查找/update/目录下但不包括子目录./subdir下面的东西
上面是啥意思? 个人理解:
别被-path迷惑,其实-path就是-wholename,在这里用-wholename  "./subdir*" 一样的。
-depth与-prune冲突,有-depth的话-prune失效
可以用伪代码表示:
find ... 得到好长好长一串。。。
在这好长一串里
if (-path "./subdir*")
then
          -prune #切切切
else (找-type f -name "*.txt")
          -print
避开多个目录
find . -path './subdir' -prune -o -path './subdir1' -prune -o -path './subdir2' -prune -o -path './subdir3' -prune -o -name "*.txt" -print
简写成下面的:
find .  \( -path './subdir' -o -path './subdir1'  -o -path './subdir2'  -o -path './subdir3'  \) -prune -o -name "*.txt" -print

grep -n a *.txt
显示匹配行及行号
 grep -c a *.txt
只输出匹配行的计数
 grep -v a *.txt
不包含匹配
 grep '\<abcd\>' *.txt 
精确匹配a
grep '[A-Z][a-z][0-9]' *.txt
打印类似"Ab1"的内容,支持posix正则
 grep '[a-z]\{4,\}log' *.txt
打印小写字母重复四次以上的行,如aaaa,aabbc等
 grep -v '^$|^#' *.txt
过滤空行与#开头的行(通常是注释)
grep –A5 –B5 'haha' *.txt
打印匹配到'haha'的行以及上5行、下5行
grep '192.168.100.34:3306|pfantasy' –R /usr/local/wwwroot/ 
也可以写成egrep -e '192.168.100.34:3306' -e 'pfantasy' -R /usr/local/wwwroot/
 grep '192.168.100.34:3306.*pfantasy' -R /usr/local/wwwroot/

awk语句都由模式和动作组成
模式部分决定找对象的时机,一般由条件语句或者正则组成,包括两个特殊字段:BEGIN{}和END{}
动作就是在某些情况下该干些啥。。。
BEGIN{} 在任何文本浏览动作之前,一般用作制表,END{} 用来在完成文本浏览后,通常用作统计
因此一般的结构是:awk 'BEGIN{预定义点啥}{正式干点啥}{又干点啥}...END{干完了总结汇报点啥}'

$1 $2 $3 ... 
$0代表全部,动作缺省情况下打印全部
通常域的分隔符是空格或者\t
awk 'BEGIN{print "Hello---------\n"}{print $1,$2}END{print "ByeBye----------\n"}' a.txt

动作部分可能要点条件或者循环啥的
awk '{if (xx) print $0}'a.txt
awk '{for (oo) print $0}'a.txt
关于匹配
先来一发 ~
awk '{if ($2 ~ /D/ && $3 ~ /[Hh]aoren/) print $0}' a.txt
再来一发 ==
awk '{if ($2 ~ /D/ && $3 == "Haoren") print $0}' a.txt
其实以上两个可以写成,因为动作是默认print的
awk '$2 ~ /D/ && $3 ~ /[Hh]aoren/' a.txt
awk '$2 ~ /D/ && $3 == "Haoren"' a.txt
awk 'BEGIN{IGNORECASE = 1;}{if ($2 ~ /D/ && $3 ~ /[Hh]aoren/) print $0}' a.txt 忽略大小写

sed跟awk一样,也是流编辑器
sed有两个空间
pattern space 模式空间,sed在没有-n(suppress automatic printing of pattern space)参数时都默认打印模式空间。一般每一行记录都只路过模式空间一次。
hold space  暂存空间,中转地方,譬如把模式空间的东东往暂存空间存一下,然后模式空间注入新的东西,一会再去暂存空间取出来。

sed常用的内部操作
n   读取下一行替换当前模式空间的行。
N  读入下一行,追加到模式空间行后面,此时模式空间有两行但只是一坨东西。    
h  把模式空间里的行拷贝到暂存空间。    
H  把模式空间里的行追加到暂存空间。    
g  用暂存空间的内容替换模式空间的行。
G  把暂存空间的内容追加到模式空间的行后。    
X  将暂存空间的内容与模式空间里的内容互换。    
 !  对所选行以外的所有行应用命令。
p  打印当前模式空间的内容。
d   删除模式空间,开始下一个从头开始的操作。
D   删除第一个在模式空间里的换行符前段内容,开始下一个从头开始的操作。
$  匹配最后一行

一些练习
每一行后加一个空行
用一个保持为NULL(里面包括了\n)的东东来追加到模式空间后面
sed 'G' a.txt
在匹配行前加入一个空行
由于在行前加,实际上是先打印NULL再打印行内容,因此需要x交换一个NULL过来。匹配行之后,把模式空间的东西扔到暂存空间(x),于是模式空间当前为NULL,把它打印,然后换回来,模式空间为之前的内容,自动打印模式空间。
sed '/aaa b/{x;p;x;}' a.txt
打印奇数行
有跳行的操作,要跟n/N有关了,不打印就是删除就d吧
sed '{n;d}' d.txt
sed -n '{p;n}' d.txt
sed '0~2d' d.txt
打印偶数行
sed -n '{n;p}' d.txt
sed '1~2d' d.txt
偶数行后加一个空行
sed '{n;G}' d.txt
偶数行置空
sed '{n;g}' d.txt

nohup command &
screen
crontab
expect

转载于:https://my.oschina.net/justphp/blog/411731

关于Shell的一些常用命令相关推荐

  1. Shell脚本语言常用命令总结~

    写目录 一.Shell概述 二.Shell脚本 三.Shell中的变量 3.1 系统变量 3.2 自定义变量 3.3 特殊变量:$n 3.4 特殊变量:$# 3.5 特殊变量:$* . $@ 3.6 ...

  2. shell脚本和常用命令

    什么是脚本? 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看.编辑). 常见的脚本: JavaScript(JS,前端),VBScript, AS ...

  3. Linux平台下UNIX SHELL运行任务常用命令

    Linux平台运行常用命令 1. 平台账户操作命令 修改用户密码 语法:passwd Old password: <输入旧密码> .... 联机帮助 语法:man 远程登录 语法:rlog ...

  4. shell学习之常用命令总结

    1.find命令 主要用途:主要用来做文件查找. 使用方法:查找文件的方式可以基于:文件名,文件时间属性,文件的所有者和组,文件权限属性,文件类型属性,文件大小,另外可以指定 查找目录的深度,排除指定 ...

  5. 微信跳一跳高分系列二:adb shell 中的常用命令

    input 命令 > adb [-s device] shell input [<source>] <command> [<arg>...]The sourc ...

  6. shell 25个常用命令

    1.列出所有目录使用量,并按大小排序.   ls|xargs du -h|sort -rn  #不递归下级目录使用du -sh 2.查看文件排除以#开关和空白行,适合查看配置文件.   egrep - ...

  7. shell 学习笔记 常用命令 tar cpio gzip zip

    摘自 Linux Shell 脚本攻略 第七章 B计划 使用 tar 归档 tar命令可以归档文件.它最初是设计用来将数据存储在磁带上,因此其名字也来源于Tape ARchive.tar可以将多个文件 ...

  8. [批处理教程之Shell]002.Linux 常用命令大全

    这一次收集的是比较基础的 Linux 命令,其实 Linux 命令未必每个都要记住,只要在用到时能查阅到需要的命令的用法. 系统信息 *.显示机器的处理器架构(1) arch *.显示机器的处理器架构 ...

  9. curl shell 失败_Shell常用命令之curl

    curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. ...

最新文章

  1. Djkastra堆(手写堆)优化版
  2. 爬取百度百科上中国所有城市的信息
  3. 算法----------找到 K 个最接近的元素
  4. 写文件 —— 将内容按照指定格式写入配置文件(fwrite()函数-》》向指定的文件中写入若干数据块)
  5. MyBatis快速入门及深入
  6. 复制出来的文本都是大写_好用又冷门的Word快捷键,据说80%的人都不知道!
  7. java 反射实现 工厂模式_java – 用反射实现工厂模式
  8. 用java写一个if语句
  9. Android Wear 发布 4 年终改名,继续艰难存活
  10. servlet的doPost 和doGet和web文件结构
  11. 初笔,JAVA.HelloWorld代码详解
  12. 李开复:垂直搜索违背了搜索引擎的发展初衷
  13. Unity - Windows获取屏幕分辨率、可用区域
  14. 教你免费轻松下载百度文库的文件
  15. 计算机常用代码大全,常用电脑命令大全【图文】
  16. Delphi10.2下载和安装详解教程(很全的教程)
  17. Activiti6.0 用户任务分配方式总结(单人任务、多人任务)
  18. 150. Evaluate Reverse Polish Notation逆波兰表达式
  19. HTML网页入门练习——导航栏布局设计
  20. 蛙蛙推荐:蛙蛙浏览器

热门文章

  1. 可观测性PHP秩判据,线性系统的可控性与可观测性
  2. MySQL中序列的作用_MySql中序列的应用和总结
  3. django mysql 游标,MySQL Cursor 存储过程之游标与相关循环
  4. linux 7 定时任务设置,centos7 配置crontab定时任务
  5. real time linux pdf,【整理】ubuntu real time Linux
  6. java 审批流_一文读懂工作流
  7. php 分割二维数组,拆分二维数组 php
  8. 科普 | 单精度、双精度、多精度和混合精度计算的区别是什么?
  9. python 到 poc
  10. html计算x的y,HTML5画布:旋转时计算x,y点