shell学习笔记
2016-07-03 22:30
423 查看
du -sh | sort -nr
在文件中搜索文字 grep string file.txt
grep -v string file反向搜索
grep -n string file输出行号
grep -c string file输出多少行含有匹配模式
grep -e string1 -e string2 file输出同时含有string1和string2的行。
压缩文件管理
压缩文件:
tar cvfj file.tar.bz file用tar打包文件并用bzip2创建压缩文件
tar cvfz file.tar.gz file用tar打包文件并用gzip创建压缩文件
zip -r file.zip file用zip打包并压缩文件
压缩大型文件建议用bzip2,效果更好,三种方式都能兼容windows。
解压文件:
tar xvf file解压tar、tar.gz、tar.bz文件
unzip file解压zip文件
unrar e file解压rar文件
我写了个脚本,可以解压,tar.gz, tar.bz, tar.xz, tar, zip, rar文件,可以根据需要扩展支持别的压缩文件。
#!/bin/sh ftype=`file "$1"` case "$ftype" in "$1: Zip archive"*) dir=${1%.zip} mkdir $dir unzip $1 -d $dir ;; "$1: gzip compressed"*) dir=${1%.tar.gz} mkdir $dir tar xvf "$1" -C $dir # gunzip "$1" ;; "$1: bzip2 compressed"*) dir=${1%.tar.bz} mkdir $dir tar xvf "$1" -C $dir # bunzip2 "$1" ;; "$1: XZ compressed"*) dir=${1%.tar.xz} mkdir $dir tar xvf "$1" -C $dir ;; "$1: RAR archive data"*) dir=${1%.rar} mkdir $dir unrar x "$1" ;; *) echo "sorry! smartzip fail to support support decompression to file $1" ;; esac
设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行。
设置组ID(SGID):对文件来说,程序会以文件属主的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认组。
给个详细说明的链接
dpkg -L samba列出samba安装包的各个文件所在目录。
dpkg --search /etc/mysql/my.cnf列出my.conf属于哪个安装包
aptitude show grub2-theme-mint显示软件详情
aptitude install wine安装软件
aptitude safe-upgrade升级软件,检查依赖
aptitude remove wine卸载软件,保留配置文件
aptitude purge wine卸载软件,删除配置文件
shell 中的数学表达式
用于数学表达是的双圆括号是bash shell对数学表达式新的扩展:
#!/bin/bash val1=10 if (( $val1 ** 2 > 90 )) then ((val2=$val1 ** 2)) echo "The square of $val1 is $val2" fi
#!/bin/sh #简单的加减乘除 var3=$[20 / 10] var1=1 var2=2 result=$[$var1 + $[$var2 * $var3]] #设置结果保留4位小数,浮点书借用系统自带的bc,没有bc的同学不建议先安装一份 result=`echo "scale = 4; $var1 / $var2" | bc` echo The result is $result #比较长的数学表达式可以这样做 var1=10.46 var2=43.67 var3=33.2 var4=71 var5=`bc << EOF scale=4 a1 = ( $var1 * $var2) b1 = ($var3 * $var4) a1 + b1 EOF ` echo The result is $var5 exit 0
if命令只能判断有退出状态吗的条件,比如执行某个系统命令,例:
#!/bin/bash user=edfa if grep $user /etc/passwd then ls -l /home/$USER/*.b* else echo The user $user does not exists on the system! fi
如果要进行数值比较、字符串比较、文件比较,应该借助于test命令。
test命令的数值比较功能如下:
n1 -eq n2 检查n1是否等于n2
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2
只能比较整形
给个demo:
#!/bin/bash #注意中括号旁边的空格 if [ 10 -lt 11 ] then echo 10 lest than 11 fi
test命令的字符串比较功能如下:
str1 = str2 检查str1是否等于str2
str1 != str2 检查str1是否不等于str2
str1 < str2 str1是否小于str2
str1 > str2 str1是否大于str2
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0
#!/bin/bash str1=a str2=b if [ $str1 = $str2 ] then $str1 equals $str2 elif [ $str1 != $str2 ] then echo $str1 not equals $str2 fi ~
13.文件比较
-d file 检查文件是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-s file 检查file是否存在并非空
-r file 检查file是否存在并可读
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属于当前用户所有
-G file 检查file是否存在并所属组为当前用户组
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
14.switch case 的使用
#!/bin/bash val=1 case $val in 1 | 2) echo "match 1 or 2";; 3) echo "match 3";; 4) echo "match 4";; *) echo "mathc $val";; esac
相关文章推荐
- 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学习笔记第五天