shell基本语法讲解(基本程序和命令)

几个常用参数 -l 以长列表列出文件,我来为大家科普一下关于shell基本语法讲解?下面希望有你要的答案,我们一起来看看吧!

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

    分享
    投诉
    首页