shell基本语法讲解(基本程序和命令)
几个常用参数 -l 以长列表列出文件,我来为大家科普一下关于shell基本语法讲解?下面希望有你要的答案,我们一起来看看吧!
shell基本语法讲解
基本命令- ls 列出文件的基本命令
几个常用参数
-l 以长列表列出文件
-R选项, 递归选项,以目录树的形式列出所有文件
-S, 将会按照文件尺寸列出所有文件
-t, 将会按照修改时间来列出文件
-i选项会显示文件的inode
- cat, tac 把文件的内容输出到stdout
参数 -n 所有行前边插入行号
-b 用来加行号的, 不对空行进行编号
-v 用^标记法出不可打印字符
-T 显示TAB ^I
-E 显示行尾
-A -vET
-s 把多个空行压缩成一个空行
tac 和cat 相反,从行尾打印
- rev 反转每一行内容
- cp 拷贝文件
参数 -a 拷贝完整目录树, -u是更新选项, -r和-R选项是递归标志
- mv 文件移动命令 等价于cp和rm命令的组合
- rm 删除一个或多个文件
参数 -f 强制删除文件, 即使文件是只读的
-r删除整个目录树
- rmdir 删除目录 只有目录中没有文件才生效
- mkdir 创建空目录
-p 创建递归目录
- chmod修改文件属性
- ln 创建文件链接
参数 -s 创建符号链接, 或"软"链接
- man, info 帮助手册
- find 查找文件
find [路径] [选项] [操作]
参数 -name 按文件名查找文件,例如:find /etc -name '*.conf'
-iname 按文件名查找文件,不区分大小写
-user 查找文件所属用户的所有文件
-group 查找文件所属组的所有文件
-type 按文件类型查找 f文件/d目录/c字符设备文件/b块设备文件/l链接文件p 管道文件
-size 根据文件大小查询 -n小于大小为 n 的文件 n 大于大小为 n 的文件
-mtime -n n天以内修改的文件 n n天以外修改的文件 n 正好n天修改的文件
-mmin -n n分钟以内修改过的文件 n n分钟之前修改过的文件
-mindepth n 从第 n 级目录开始搜索
-maxdepth n 表示至多搜索到第 n-1 级子目录
-newer file1 查找当前目录下比file1文件要新的文件
- xargs 给命令传递参数的一个过滤器, 也是组合多个命令的一个工具
参数 -p 当每次执行一个分隔符的时候询问一次用户。
-n num num为个数,表示命令在执行的时候一行用的分隔符的个数,默认是用所有的。
-t 表示先打印,然后再执行。
-i 一行一行赋值给 {},默认是单行。
-r 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim delim分隔符,这里修改的是xargs的分隔符。
当你尝试用rm 删除太多的文件,你可能得到一个错误信息,用xargs 去避免这个问题
find ~ -name ‘*.log' -print0 | xargs -0 rm -f
xargs将find 命令的输出传递给ls -l
find /etc -name "*.conf" | xargs ls –l
使用xargs 下载所有链接
cat url-list.txt | xargs wget –c
查找所有的jpg 文件,并且压缩它
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
拷贝所有的图片文件到一个外部的硬盘驱动
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
- expr 通用求值表达式
通过给定的操作连接参数, 并对参数求值. 可以使算术操作, 比较操作, 字符串操作或者是逻辑操作
expr 3 5 #返回8
expr 5 % 3 #返回2
expr 1 / 0 #返回错误消息, expr: division by zero 不允许非法的算术操作.
expr 5 \* 3 #返回15 在算术表达式expr中使用乘法操作时, 乘法符号必须被转义.
y=`expr $y 1` # 增加变量的值, 与let y=y 1和y=$(($y 1))的效果相同. 这是使用算术表达式的一个例子.
z=`expr substr $string $position $length` #在位置$position上提取$length长度的子串.
b=`expr match "$a" '[0-9]*'` # 统计数字的个数.
b=`expr match "$a" '\([0-9]*\)'` # 注意, 括号需要转义括号,b是匹配a的子串
:操作可以替换match命令. 比如, b=`expr $a : [0-9]*`与 b=`expr match $a [0-9]*`完全等价
时间/日期 命令- date
date %Y //year,输出4位数年
date %y //输出2位数的年
date %m //m表示month,输出的结果是月份
date %d //d表示day,日
date %D //D表示特殊格式的日期表示方法 如当前日期为2018年3月21日 显示21/03/18
date %Y%m%d //输出年月日
date %F //输出的年月日会用连字符隔开
date %H //H表示hour小时
date %M //M表示minute分钟
date %S //S表示second秒
date %s //输出结果是一个时间戳,表示距离1970年1月1日0时0分过去多少秒
date %T //以下面格式输出时分秒
date %H:%M:%S //效果跟上条命令一样
date %w //输出结果为星期几,比如下图表示当前系统时间是星期三
date %W //表示当前为今年的第几周,比如我这里为今年的第12周
date %s //获取时间戳
date -d @1521563928 //将时间戳换算成日期
date %s -d "2017-03-21 00:38:48" //将日期换算成时间戳
从当前时间往前或往后推算
date -d "-1day" //当前系统时间为3月21日,输出结果为3月20日
date -d "-1 month" %F //上个月
date -d "-1 year" %F //表示去年
- zdump
时区dump: 查看特定时区的当前时间
- time
输出统计出来的命令执行的时间.
time ls -l /
- touch 更新文件被访问或修改的时间或创建新文件
- at 作业控制命令, 用来在指定时间点上执行指定的命令集合
at 2:30 am Friday < at-jobs.list
- batch 与at令的行为类似 在系统平均负载量降到.8以下时执行一次性的任务
- cal 输出日历
- sleep 暂停执行,单位秒
- usleep 同sleep 单位微秒
- hwclock, clock 访问或调整硬件时钟
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com