最近项目中有用到Shell脚本,难免会与一些以前没用到甚至没见过的Linux命令打交道,借此番机会也算是学习一哈,记录在此,以供日后参考。后续若再接触新的命令也会更新到此。
tee
要点 | 说明 |
---|---|
用途 | 重定向输出到多个文件或进程 |
简介 | 该命令读取标准输入,并将内容同时输出到标准输出(屏幕)和多个文件中。 |
应用场景 | 当我们重定向输出到文件中时,使用常规的“>”符号无法直接从屏幕上看到原输出,使用tee就可在重定向文件的同时将内容输出到标准输出(屏幕) |
用法 | tee [OPTION]… [FILE]… -a, 追加到给定的文件,没有此选项时默认是覆盖 -i, 忽略中断信号 |
示例 | ls | tee | out.txt cat 1.txt | tee -a out.txt |
注意 | 在使用管道线时,前一个命令的标准错误输出不会被tee读取。 |
date
要点 | 说明 |
---|---|
简介 | 根据给定格式显示日期时间或设置系统日期时间 |
用法 | date [OPTION]… [+FORMAT] date [-u|–utc|–universal][ MMDDhhmm[[CC]YY][.ss] ] OPTION: -d -f -r -R -rfc-2822 -s -u –help FORMAT: %% %a %A %b %B %c %C %d %D… |
示例 | date -d now +%Y%m%d 用指定格式显示当前时间 date -r text.log 显示文件最后修改时间 date -s “2013-09-06 00:00:00” 设置系统时间 |
getopts/getopt
要点 | 说明 |
---|---|
简介 | 获取并处理命令行参数 |
用法 | getopts option_string variable 第一个参数option_string是字符串,包括字符和”:”,每个字符都是一个有效的选项,若字符后带有”:”,表示这个字符有自己的参数。 getopts命令会读取命令行参数,当遇到连字符”-“,会判断”-“后的字符是否出现在option_string定义的选项中,若有匹配,则将其赋给第二个参数variable;否则将variable设为”?”。若选项有自己的参数,getopts会从命令行该选项后读取参数值:若该值存在,则将被赋给一个特殊变量OPTARG中;否则将在OPTARG中存放一个”?”,并在标准错误上显示一条消息。 |
注意项 | 1.getopts是shell内置命令,不能处理长选项(如:–prefix=../),而getopt是C的库函数,可处理长选项。 2.当option_string以”:”开头时,表示区分invalid option错误和miss option argument,对于前者,variable会被设置为”?”,对于后者,variable会被设置为”:”(见示例);当option_string不以”:”开头时,对于上述两种错误,variable都被设为”?”。 |
示例如下: |
1 | while getopts ':hf:g:s:t:' OPTION |
wc
要点 | 说明 |
---|---|
简介 | word count,统计给定文件(可指定多个)或标准输入(没给定文件时)中字节数、字符数、词数(以空白符分割的词数)以及行数。 |
用法 | wc [option]… [file]… option有如下选项: -c, –bytes 打印字节数 -m, –chars 打印字符数 -l, –lines 打印行数 -L, –max-line-length 打印最长行的长度 -w, –words 打印词数,一个词被定义为以空白符分割的字符串 –help 展示帮助信息 |
注意 | 输出:wc会为每个文件打印一行计数,如果文件是作为参数,则会为每个文件打印两列:统计数 文件名,并在最后追加一行打印总两列:计数 total。 wc通常与管道线结合使用,直接打印计数 |
示例如下: |
1 | wc -l readme.txt version.txt #统计指定的两个文件的行数,输出如下 |
cp
要点 | 说明 |
---|---|
简介 | Copy files and directories,复制一个或多个文件或目录到指定的文件或目录 |
用法 | cp [option]… source… dest option有如下选项: -f,–force 强行复制文件或目录,不论目标文件或目录是否已存在 -i,–interactive 覆盖既有文件之前先询问用户 -r/R,–recursive 递归地复制目录,该选项只适用于目录,不能用于复制文件或符号链接 -b,–backup[=method] 为即将删除或覆盖的目标文件进行备份 -s,–symbolic-link 对源文件建立符号连接,而非复制文件 -S,–suffix=suffix 备份文件时,用指定后缀”suffix“代替文件的默认后缀 -v,–verbose 复制每个文件前,打印文件名 source(源文件):指定源文件列表。默认情况下,cp不能复制目录,若要复制目录,必须使用-r选项 dest(目标文件或目录):当source为多个文件时,dest必须是目录 |
示例如下:
1 | cp file1 file2 #将file1复制一份,并命名为file2 |