共计 3309 个字符,预计需要花费 9 分钟才能阅读完成。
1、判断文件夹是否存在
if [! -d backup];then
// 不存在 创建多级目录
mkdir -p backup/demo
fi
注意:if 条件判断结束一定要加”;“方括号 [] 两边一定要有空格
参数说明:
- -e filename 如果 filename 存在,则为 true
- -d filename 如果 filename 为目录,则为 true
- -f filename 如果 filename 为常规文件,则为真
- -L filename 如果 filename 为符号链接,则为真
- -r filename 如果 filename 可读,则为真
- -w filename 如果 filename 可写,则为真
- -x filename 如果 filename 可执行,则为真
- -s filename 如果文件长度不为 0,则为真
- -h filename 如果文件是软链接,则为真
2、创建文件夹、文件
2.1、创建文件夹
mkdir 文件夹
mkdir file 创建 file 空目录
mkdir -m 设定权限
mkdir -m 777 file 创建可读可写可执行权限的 file 文件夹
mkdir -p 递归创建多级目录
mkdir -p file1/file2/file3
mkdir -v 每次创建新目录都显示信息
mkdir -v file
显示信息:mkdir: created directory ‘file’
mkdir -pv scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}
mkdir: 已创建目录“scf”mkdir: 已创建目录“scf/lib”mkdir: 已创建目录“scf/bin”mkdir: 已创建目录“scf/doc”mkdir: 已创建目录“scf/doc/info”mkdir: 已创建目录“scf/doc/product”mkdir: 已创建目录“scf/logs”mkdir: 已创建目录“scf/logs/info”mkdir: 已创建目录“scf/logs/product”mkdir: 已创建目录“scf/service”mkdir: 已创建目录“scf/service/deploy”mkdir: 已创建目录“scf/service/deploy/info”mkdir: 已创建目录“scf/service/deploy/product”
2.2、创建文件
touch 用来创建文件或者修改文件的时间戳
-a:或 --time=atime 或 --time=access 或 --time=use 只更改存取时间;-c:或 --no-create 不建立任何文件;-d:< 时间日期 > 使用指定的日期时间,而非现在的时间;-f:此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题;-m:或 --time=mtime 或 --time=modify 只更该变动时间;-r:< 参考文件或目录 > 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;-t:< 日期时间 > 使用指定的日期时间,而非现在的时间;
创建不存在文件
touch file.txt
一次创建多个文件
touch file1.txt file2.txt file3.txt
在文件夹里面添加
touch test/file.txt
3、文件对比命令
diff [选项] from-file to-file
from-file: 对比源文件
to-file: 对比目标文件
选项:
- -< 行数 >:指定要显示多少行的文本。此参数必须与 - c 或 - u 参数一并使用
- - a 或 –text:diff 预设只会逐行比较文本文件
- - b 或 –ignore-space-change:不检查空格字符的不同
- - B 或 –ignore-blank-lines:不检查空白行
- -c 显示全部内文,并标出不同之处。
- -C< 行数 > 或 –context< 行数 > 与执行 ”-c-< 行数 >” 指令相同。
- - d 或 –minimal 使用不同的演算法,以较小的单位来做比较。
- -D< 巨集名称 > 或 ifdef< 巨集名称 > 此参数的输出格式可用于前置处理器巨集。
- - e 或 –ed 此参数的输出格式可用于 ed 的 script 文件。
- - f 或 -forward-ed 输出的格式类似 ed 的 script 文件,但按照原来文件的顺序来显示不同处。
- - H 或 –speed-large-files 比较大文件时,可加快速度。
- -l< 字符或字符串 > 或 –ignore-matching-lines< 字符或字符串 > 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
- - i 或 –ignore-case 不检查大小写的不同。
- - l 或 –paginate 将结果交由 pr 程序来分页。
- - n 或 –rcs 将比较结果以 RCS 的格式来显示。
- - N 或 –new-file 在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:
- Only in 目录:文件 A 若使用 - N 参数,则 diff 会将文件 A 与一个空白的文件比较。
- -p 若比较的文件为 C 语言的程序码文件时,显示差异所在的函数名称。
- - P 或 –unidirectional-new-file 与 - N 类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
- - q 或 –brief 仅显示有无差异,不显示详细的信息。
- - r 或 –recursive 比较子目录中的文件。
- - s 或 –report-identical-files 若没有发现任何差异,仍然显示信息。
- -S< 文件 > 或 –starting-file< 文件 > 在比较目录时,从指定的文件开始比较。
- - t 或 –expand-tabs 在输出时,将 tab 字符展开。
- - T 或 –initial-tab 在每行前面加上 tab 字符以便对齐。
- -u,-U< 列数 > 或 –unified=< 列数 > 以合并的方式来显示文件内容的不同。
- - v 或 –version 显示版本信息。
- - w 或 –ignore-all-space 忽略全部的空格字符。
- -W< 宽度 > 或 –width< 宽度 > 在使用 - y 参数时,指定栏宽。
- -x< 文件名或目录 > 或 –exclude< 文件名或目录 > 不比较选项中所指定的文件或目录。
- -X< 文件 > 或 –exclude-from< 文件 > 您可以将文件或目录类型存成文本文件,然后在 =< 文件 > 中指定此文本文件。
- - y 或 –side-by-side 以并列的方式显示文件的异同之处。
- –help 显示帮助。
- –left-column 在使用 - y 参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
- –suppress-common-lines 在使用 - y 参数时,仅显示不同之处
diff test.sh test1.sh
输出:
1,4d0
< if ["`diff -w package.json ./rntest/cstTask/package.json`"];then
< echo `diff -w package.json ./rntest/cstTask/package.json`
< mkdir tests
< fi
4、拷贝命令
4.1、文件复制命令
cp [选项] 源文件(source)目标文件或者目录(destination)
- -a: 是指 archive 的意思,也说是指复制所有的目录
- -d: 若源文件为连接文件(link file),则复制连接文件属性而非文件本身
- -f: 强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
- -i: 若目标文件 (destination) 已存在,在覆盖时会先询问是否真的操作
- -l: 建立硬连接 (hard link) 的连接文件,而非复制文件本身
- -p: 与文件的属性一起复制,而非使用默认属性
- -r: 递归复制,用于目录的复制操作
- -s: 复制成符号连接文件(symbolic link),即“快捷方式”文件
- -u: 若目标文件比源文件旧,更新目标文件
cp -f package.json ./backup
4.2、文件移动
mv [选项] source destination
- -f: force,强制直接移动而不询问
- -i: 若目标文件 (destination) 已经存在,就会询问是否覆盖
- -u: 若目标文件已经存在,且源文件比较新,才会更新
正文完
发表至: linux
2019-08-09