一文读懂shell 基本程序和命令

一文读懂shell 基本程序和命令基本命令 ls 列出文件的基本命令几个常用参数 l 以长列表列出文件 R 选项 递归选项 以目录树的形式列出所有文件 S 将会按照文件尺寸列出所有文件 t 将会按照修改时间来列出文件 i 选项会显示文件的 inodecat tac 把文件

大家好,欢迎来到IT知识分享网。

基本命令

  • 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 @ //将时间戳换算成日期

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 访问或调整硬件时钟

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/123571.html

(0)
上一篇 2024-11-20 07:15
下一篇 2024-11-20 07:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信