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 ...
随机推荐
- Linux下文件查找命令find笔记
在Linux命令下如果需要快速自己系统所需要处理的文件,可以通过find命令快速进行检索. 如果想在某个路径下查找相应的文件可以执行如下命令: find path -name filename # p ...
- 【剑指Offer】32、把数组排成最小的数
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. ...
- marquee图片无缝拼接滚动
marquee图片无缝滚动 先了解一下对象的几个的属性: innerHTML: 设置或获取位于对象起始和结束标签内的 HTML scrollHeight: 获取对象的滚动高度. scrollL ...
- 【codeforces 483B】Friends and Presents
[链接] 我是链接,点我呀:) [题意] [题解] 我们可以二分n的值,设为mid 那么对于n=mid 我们可以算出来以下3个东西 temp1 = n/x; temp2 = n/y; temp3 = ...
- 基于I/O的Server/Client实现
在前面的文章中讲了基于NIO实现的Server/Client.本文就讲讲基于同步堵塞式I/O实现的Server/Client好与前面的NIO中的Server/Client进行对照. 网络编程中须要解决 ...
- Hardware/Firmware/Software的区别
Hardware: 硬件Firmware: 固化到硬件中的程序Software: 一般指驱动和应用软件,不用固化到硬件中的 ************************************** ...
- BAT常问问题总结以及回答(数据库篇)
数据库 事务四大特性(ACID)原子性.一致性.隔离性.持久性 事务:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.begin transaction 原 ...
- Bootstrap的js插件之警告框(alert.js)
data-dismiss="alert"--为关闭button加入该属性能够使其自己主动为警告框赋予关闭功能. .fade .in--为警告框在关闭时加入动画效果. 很多其它细节參 ...
- 具体解释linux文件处理的的经常使用命令
原创Blog.转载请注明出处 附上之前訪问量比較高的几篇linux博客 本人使用shell的8个小技巧 grep的九个经典使用场景 sed命令具体解释 awk命令具体解释 linux中全部的东西都是文 ...
- C++派生类中如何初始化基类对象(五段代码)
今天收到盛大的面试,问我一个问题,关于派生类中如何初始化基类对象,我在想派生类对于构造函数不都是先构造基类对象,然后在构造子类对象,但是如果我们在成员初始化列表先初始化派生类的私有成员,在函数内去调用 ...