常用的shell
2016-07-21 14:06
260 查看
语法
流控制
if
管理员操作
新增用户
adduser
切换用户
su
工具
文件目录操作
cp
参数处理
xargs
匹配问题
grep
数值计算
shell 加法
文件操作
tar打包
字符串操作
字符串拼接
将字符串连续输入一个文件
下面是
举例
通常用到逻辑判断
-r/x/w :检测读/写/执行权限
-f/d :检测是否为文件/目录,或文件/目录是否存在
-ne : not equal不相等为真
-lt: less than 小于
-le:less equal 小于等于
-gt: great than大于
-ge:great equal 大于等于
练习:如何利用shell遍历一个目录
的区别,前者会进入一个新的环境,而后者会使用现在的环境
例子:
应用:我们通常可以利用xargs来配合其他命令组成一个强有力的工具。在编写程序是我们通常为bin配备一个启动脚本,这个脚本提供start ,stop,restart命令,其中restart命令就是stop和start的组合。start命令很简单,我们可以利用xargs写stop命令。
这个命令也是相当简单:
2、使用
3、使用多个
参数:
表示打包还是解包
-c : 建立一个文件(一般会用到,在打包时建立一个新文件),compress
-x:解压缩,解打包
-t:查看tarfile文件
以上三个参数只能存在一个
表示文件操作和打包过程操作
-z : 表示具有gzip属性(利用gzip压缩和解压)一般添加后缀
-j : 表示具有bz2属性,后缀添加
-v : 在压缩和解压过程中显示其中文件
-f : 使用文档明,也就是说自己命名文档。注意:
-p : 使用文档原来的属性
-P : 按照绝对路径来压缩!
-N:比后面接的日期(yyyy/mm/dd)新的文档才会被压缩
–exclude file :不要将file压缩
一般比较常用的是:
压缩
会出现一个问题:每次输入都会覆盖上一次的文件,在简单的百度之后,我发现了其实很容易解决
流控制
if
管理员操作
新增用户
adduser
切换用户
su
工具
文件目录操作
cp
参数处理
xargs
匹配问题
grep
数值计算
shell 加法
文件操作
tar打包
字符串操作
字符串拼接
将字符串连续输入一个文件
语法
流控制
if
if是流控制重要的语法,通常用于对字符串判断,对文件和变量的一些判断等。常用”[]”表示。注意
shell的
if语法有一个”坑”那就是
if与
[]之间一定要有个空格。
下面是
if语法的一个基本结构
if [ condition ];then ... elif [ condition ];then ... else ... fi
举例
if经常使用的条件:
[ -f "somefile" ]: 判断是否是一个文件 [ -x "/bin/ls" ]: 判断/bin/ls是否存在,并且是否可执行 [ -n "$var" ]:判断$var是否设置 [ "$a" = "$b" ]:判断ab两个变量是否相等
通常用到逻辑判断
-r/x/w :检测读/写/执行权限
-f/d :检测是否为文件/目录,或文件/目录是否存在
-ne : not equal不相等为真
-lt: less than 小于
-le:less equal 小于等于
-gt: great than大于
-ge:great equal 大于等于
练习:如何利用shell遍历一个目录
for file in `ls .` do if [ -d $file ];then echo "fine dir $file" elif [ -f $file ];then echo "file file $file" fi done
管理员操作
新增用户
adduser
切换用户
su
su命令主要需要注意一点,即su - user、su user的区别,前者会进入一个新的环境,而后者会使用现在的环境
工具
文件目录操作
cp
cp -b //同名,备份 cp -f //强制复制文件 cp -r //递归方式复制文件
参数处理
通常我们会利用管道对参数进行传递,cmd | cmd的形式。However,我们很多时候需要对参数进行划分,比如第一个
cmd传入20个参数,但是第二个cmd每次需要2个参数。这就尴尬了。
xargs
从名字就可以看出xargs是对参数进行处理的工具。使用方法很简单。
cmd | args
例子:
cat example.txt 1 2 3 4 5 6 7 8 cat example.txt | xargs 1 2 3 4 5 6 7 8 cat example.txt | xargs -n 2 1 2 3 4 5 6 7 8
应用:我们通常可以利用xargs来配合其他命令组成一个强有力的工具。在编写程序是我们通常为bin配备一个启动脚本,这个脚本提供start ,stop,restart命令,其中restart命令就是stop和start的组合。start命令很简单,我们可以利用xargs写stop命令。
ps -fe | grep proc_name | awk '{print $2}' | xargs kill -9
匹配问题
grep
grep是shell中的重要工具,很多时候我们都会利用grep来进行查找,过滤等操作。在这个过程中我们往往还需要一些其他的操作来辅助。比如:利用grep查看答应匹配的后面几行或者前面几行这个命令也是相当简单:
grep -5 'pattern' inputfile#打印匹配的前后5行 grep -A 5 'pattern' inputfile#打印匹配的后5行(after) grep -B 5 'pattern' inputfile#打印匹配的前5行(before) grep -C 5 'pattern' inputfile#打印匹配的前后5行(context)
数值计算
shell 加法
1、使用let
a="1" let b=$a+1 e 4000 cho $b
2、使用
expr
a="1" b=`expr $a + 1` echo $b
3、使用多个
$
a="1" b=$(($a + 1)) echo $b
文件操作
tar打包
一般来说打包和压缩是一起使用的,打包指令:tar [-cstz|vfpPN] 文件与目录
参数:
表示打包还是解包
-c : 建立一个文件(一般会用到,在打包时建立一个新文件),compress
-x:解压缩,解打包
-t:查看tarfile文件
以上三个参数只能存在一个
表示文件操作和打包过程操作
-z : 表示具有gzip属性(利用gzip压缩和解压)一般添加后缀
.gz
-j : 表示具有bz2属性,后缀添加
.bz2
-v : 在压缩和解压过程中显示其中文件
-f : 使用文档明,也就是说自己命名文档。注意:
f后面直接跟文档名所以
f应该放在参数最后
-p : 使用文档原来的属性
-P : 按照绝对路径来压缩!
-N:比后面接的日期(yyyy/mm/dd)新的文档才会被压缩
–exclude file :不要将file压缩
一般比较常用的是:
压缩
tar -cvf file.tar file //打包 tar -zcvf file.tar.gz file //gzip压缩 tar -jcvf file.tar.bz2 file //bzip2压缩
字符串操作
字符串拼接
str1=abc str2=def str3=${str1}${str2} echo $str3
将字符串连续输入一个文件
今天遇到这样一个情况:需要将日志输出到文件,但是直接使用echo "log messages" > file
会出现一个问题:每次输入都会覆盖上一次的文件,在简单的百度之后,我发现了其实很容易解决
echo "log messages" >> file
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- shell字符串操作详解
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Linux Shell 数组建立及使用技巧
- Shell脚本实现复制文件到多台服务器的代码分享
- Shell脚本实现批量替换文件内容
- Shell脚本实现的一个简易Web服务器例子分享
- linux Shell学习笔记第五天