Shell Notes
查找:
- find:
- 实时查找,精确,速度慢,支持正则
- find 查找路径 查找标准 查到后处理动作
- 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕
- 匹配标准:
- -name 'filename' :精确匹配:通配:* ? []
- -iname 不区分大小写
- -regex pattern :使用正则表达式
- -user username:根据用户名查找
- -group
- -uid
- -gid
- -nouser
- -nogroup
- -type:
- f普通文件 : -type f
- d目录文件
- l链接文件
- c字符设备
- b块
- p管道
- s套接字
- -size:默认字节
- 【+|-】 # 【K|M|G】
- +10k 大于10k
- -10k小于10k
- 10k代表9k-10k之间的都显示
- 【+|-】 # 【K|M|G】
- 查看某段时间内改动创建的文件[+|-]# :+#至少#天;-#:#天内 ;#:#天
- -mtime内容改变
- -ctime权限属性改变
- -atime最后一次访问时间
- find ./ -mtime -5 -name 'c'
- 权限匹配:
- find ./ -perm mode精确: find ./ -perm 664
- find ./ -perm -mode只要有一项匹配即可
- find ./ -perm /mode mode以上才能匹配:755可以匹配644,750不可.
正则表达式:
- . 表示任意单个字符
- * 表示匹配前行字符任意次。
- \? 表示匹配前行字符0/1次:注意\ 是转义符。这个时候要和双引号一起使用。
- 位置锚定
- ^锚定行首: '^abc'
- $锚定行尾: 'abc$'
- ^$ 空白行
- \< 锚定单词的词头, 等价于\b: grep \<root\>
- \> 锚定单词的词尾,等价于\b
- 分组:为了实现后向引用。
- cat a|grep "\(l..e\b\).*\1r":把文件a里面的内容中love lover/like liker之类的行挑选出来。
- [] 匹配指定范围任意单个字符
- [^]取反
- [a-zA-Z0-9]
- 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
- 扩展正则表达式中增加的功能:
- 次数:+:前行单字符出现至少一次。{m,n}前行单字符出现m到n次,含m,n。
- |:选择 grep -E "(C|c)at" :选出大小写的猫。
- grep的几个参数:
- -i 忽略大小写
- --color 加颜色
- -v 反向查找
- -o 只显示字符串
如何生成列表:
- {1..100}:自动展开成列表
- seq 5 10 序列:seq [起步 [步长]] [结束数]
- `ls /etc`
字符编辑:
- |:管道,前一个命令的输出作为后一个命令的输入
- 输入输出:
- 0 标准输入
- 1 标准输出
- 2 错误输出
- > >> 覆盖输出和追加输出
- < << 覆盖输入和追加输入
- set -C 如果某个文件存在禁用>
- >| 强制覆盖(当set -C时是不允许覆盖的)
- set +C取消禁用
- &> => + 2> 常用&>/dev/null
- cmd [] []<< EOF 脚本中使用,用来解决脚本中运行交互式程序的问题。
- EOF
- cat
- -n显示行号, -E显示行结束符$
- tac将cat的内容反写
- Less:翻页设置见Man。弱化的功能为more
- tail/head -n20 文件名
- cut -d: -f1 /etc/pasword 默认是空格
- tr 'ab' 'AB' < 文件名:针对单个字符操作。
- tr -d 'ab' 碰到a和b就删除。
- 'a-z' 'A-Z'转换大小写,'ab' 'cd' a换c,b换d
- sort 默认按ASCII码升序
- sort -t: -k3 -n -r /etc/passwd|cut -d: -f3
- -f 忽略大小写
- -u 相同的只显示一行
- Uniq:行必须相邻
- -d 只会显示重复的行一次 /其它行不会显示
- -D 重复的行全部显示/其它不重复行不显示
- -c 在行首显示重复的次数/不可以和D共用
- wc :结果返回:行 字母数 字节数
- -l行数 -w单词数 -c字节数 -m字符数 -L最长行的字符数
通用命令行命令:
- $# 传给脚本的参数数量
$0 脚本本身的名字
$1 传递给该shell脚本的第1个参数
$2 传递给该shell脚本的第2个参数
$@ 传给脚本的所有参数的列表
$* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 脚本运行的当前进程ID号
$? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功:exit n. - 查看cmd本身信息:命令 cmd
- whatis:显示命令在Man的哪一个章节
- type:是否shell内置命令,如果不是,会显示cmd is 目录
- which:获取命令的目录。
- 系统环境设置:
- date; date +%s;
- clock
- hwclock -s; hwclock -w
- ls -i 文件 显示inode号
- ctl z送入后台并停止作业
- cmd [option] arg1 arg2 ...&:命令后台运行。
- bg:让后台停止的作业继续运行。
- jobs:查看后台所有的作业
- fg jobid:调回前台
- 命令和字符的转换
- ~: cd ~oracle
- -: cd -
- {}: touch {a, b, c, d}{m,n}会创建8个文件。
- ··:反引号,可以展开命令结果。
- ${}:括号内的命令执行结构也会被展开。也可以放入变量。不发生歧义情况下,可以省略{}.
- “”:双引号,在双引号中变量会展开为变量值
- ‘’:单引号,变量不会展开,只能作为字符。
- \:转义,会使特殊字符变成普通字符。
- 命令行编辑
- ctl a/e:光标快速到行首或行尾。
- ctl k/u:从光标处删除到行首/尾。
- ctl -> <-:跳跃单词
- ctl L:清屏
- !执行历史命令,!n执行第n行,!!执行上一条,!字符,给定字符最近一次。
- 命令别名:alias cmd='cmd [option1] [option2]'
- 文件名通配:
- *:任意长度任意字符
- ?:任意单字符
- []:制定范围内的任意单字符
- [a-zA-Z0-9]
- 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
- 特殊字符集合中的任意一个需要加双中括号:[[:alnum:]]
- 超级常用命令:
- cp 源1 源2... 目的:不管源多少目的只有一个。
- -p:保留属性(o和g不变,正常拷贝,og会变成使用拷贝的用户的)
- -P:保持连接。拷贝链接本身,不过引用的路径只能是相对路径,如果链接自身位置变化,则链接会失效。
- -R/r递归复制。
- -f强制覆盖
- -L对软链接拷贝时,拷贝的实际上是背后的文件。
- -f强制覆盖
- mv 源1 源2 ...目的
- mv -t target scorce
- install source ... target
- install -d /dir :创建目录
- install -t target source...
- install 的文件自动有执行权限
- cp 源1 源2... 目的:不管源多少目的只有一个。
Man
- 8个章节
- 所有用户使用的命令
- 表示系统调用
- 库调用
- 特殊文件
- 文件格式
- 游戏
- 杂项
- 管理命令
- 格式说明
- []可省略
- |多选一
- <>必须给出
- ...可以多次出现
- Name:命令名称及功能的简要说明
- Synopsis:用法说明,包括可用选项
- Desc:详细说明
- Options:每个选项的意义
- Files:相关配置文件
- Bugs:
- Examples:使用示例
- Man的页面操作:
- 翻页:space下一页,b上一页
- 翻行:回车下一行,k上一行
- 查找:/keyword 前--->后
- ?keyword 向前找
- n向后找下一个
- N向前找下一个
- 退出:Q/q
条件判断
- 整数测试:
- [ $A -eq $B ] :$A $B 的前后都有空格。等值为真
- [ $A -ne $B ] :$A $B 的前后都有空格。不等值为真
- [ $A -gt $B ] : >
- [ $A -lt $B ] : <
- [ $A -ge $B ] : >=
- [ $A -le $B ] : <=
- 文件测试:
- [ -e file ]:测试文件是否存在
- [ -f file ]:是否普通文件
- [ -d file ]:是否设备文件
- [ -r file ]:是否对当前用户可读
- [ -w file ]:可写
- [ -x file ]:可执行
- 字符串测试:
- [ $A == $B ]:
- [ $A != $B ]:
- 命令间的逻辑关系:有命令A 与B ,当命令顺利执行;返回值为真,否则反之.
- 当 A 为真时 && 执行B
- 当A为假,命令终止。
- 当 A 为假时 || 执行B
- 当A为真是,命令终止。
- A && B || C : 如果A顺利执行,那么接下来执行B,否则执行C。
- 如果A顺利执行,那么执行B,如果B顺利执行则命令终止。
- 如果A顺利执行,那么执行B,如果B执行报错则执行C。
- 如果A执行报错,跳过B,执行C。
- 当 A 为真时 && 执行B
- Shell中进行算术运算:注意$a+$b=a+b 是字符。
- let c=$a +$b
- c=$[$a+$b]
- c=$(($a+$b))
- c=`expr $a + $b`
- 选择结构
- 条件选择结构
- case SWITCH in
- value 1)
- statement...
- ;;
- value 2)
- statement...
- ;;
- *)
- statement ...
- ;;
- esac
- 例子:
- case $1 in
- [0-9])
- echo "A digit";;
- [a-z])
- echo "lower";;
- [A-Z])
- echo "upper";;
- *)
- echo "special";;
- esac
- 条件判断控制结构
- if condition1; then
- statement ...
- elseif conditon2; then
- statement ...
- elseif ...
- else
- statement ...
- fi
- 例:特点:可以跟多参数,无文件创建文件,有则统计程序运行该文件次数。
#! /bin/bash
#
declare -i line=0
while [ "$1" != "" ]; do
if [ -e $1 ]; then
echo "I m $1,and I am alive"
line=`wc -l $1| cut -d" " -f1`
let line=$[ $line + 1 ]
echo "$line">>$1
echo "I am $1,and I am visited $line times"
else
touch $1
echo "fiel $1 created"
fi
shift
done
exit 0
- 条件选择结构
- 循环:
- for 循环
- for 变量 in 循环;do
- 循环体
- done
- while循环
- while 条件;do
- 循环体
- done
- for 循环
Shell Notes的更多相关文章
- Shell Script Notes
shell Script学习笔记 <鸟哥的Linux私房菜 3rd Edition>: @1:若变量内容中包含空格字符,则可使用双引号"或单引号'将变量内容结合起来,但不同的是: ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- python与shell的3种交互方式介绍
[目录] 1.os.system(cmd) 2.os.popen(cmd) 3.利用subprocess模块 4.subprocessor模块进阶 [概述] 考虑这样一个问题,有hello.py脚本, ...
- Git for Windows v2.11.0 Release Notes
homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...
- Vim ide for shell development
Source : This article is part of the ongoing Vi / Vim Tips and Tricks Series. As a Linux sysadmin or ...
- 【原创】Android开发之ADB及ADB SHELl命令的应用
adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.adb的工作方式比 ...
- 检查ftp备份数据完整性及短信告警的shell脚本
发布:thebaby 来源:net [大 中 小] 检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下. 该脚本实现如下的功能: 对远程备份到ftp服务器的数据完整性及 ...
- Registering Shell Extension Handlers
最近在做Windows shell extension 的开发工作,对shell extension handler的注册机制有点疑问,以下摘自MSDN:http://msdn.microsoft.c ...
- bash shell学习-实践 (自己实现一些小工具)
The poor starve while the rich feast. "穷人饥肠辘辘,富人大吃大喝" 参考资料:鸟哥的Linux私房菜 基础学习篇(第三版) Linux S ...
随机推荐
- C#连接Oracle数据库的方法(System.Data.OracleClient、Oracle.DataAccess.Client也叫ODP.net、Oracle.ManagedDataAccess.dll)
官方下载地址(ODP.net)(中文):http://www.oracle.com/technetwork/cn/topics/dotnet/downloads/index.html 官方下载地址(O ...
- android studio: 为现有项目添加C++支持
刚开始创建项目的时候并没有勾选“include C++ support” 选项: 后期增加步骤: 1.拷贝已有支持C++项目的CMakeLists.txt文件到现有项目的app目录下: 2.在app/ ...
- BZOJ [POI2004]PRZ 状压DP_二进制_骚操作
二进制就是比谁更sao... Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in"," ...
- spring boot jpa 无法使用findOne
(findOne(id))说我无法转换成相应的类型,换一种即可,如下: user = userRepository.findOne(id);//spring 2.x用不了 @GetMapping(&q ...
- HDU 4405 Aeroplane chess(概率dp,数学期望)
题目 http://kicd.blog.163.com/blog/static/126961911200910168335852/ 根据里面的例子,就可以很简单的写出来了,虽然我现在还是不是很理解为什 ...
- 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)
整个封装过程及阅读JQuery源码的过程基本上持续了一个月吧,最终实现了一个大概30%的JQuery功能的框架版本,但是里面涉及的知识点也是非常多的,总共的代码加上相关的注释大概在3000行左右吧,但 ...
- 爬虫数据使用MongDB保存时自动过滤重复数据
本文转载自以下网站: 爬虫断了?一招搞定 MongoDB 重复数据 https://www.makcyun.top/web_scraping_withpython13.html 需要学习的地方: Mo ...
- installed jre指向jdk而非jre位置&
1.eclipse菜单 - Window - Preferences- Java - Installed JREs 将配置的JRE定位到JDK,例如JRE home:D:\Program Files ...
- Ruby 写文件
Ruby 写文件 outFile = File.new("fileName.txt","w") outFile.puts "a" outFi ...
- 谈论java中怎样处理高并发的问题
1 从最基础的地方做起,优化我们写的代码,降低必要的资源浪费. a.避免频繁的使用new对象.对于整个应用仅仅须要存在一个实例的类.我们能够使用单例模式. 对于String连接操作,使 ...