1. mkdir命令
mkdir -m 777 lv 设置权限
mkdir -p lvsicheng/test/abc/java 递归创建多个目录
mkdir -v lvsicheng/test/abc/java 每次创建新目录都显示信息
思考题
mkdir -vp shiyanlou/{lib/,bin/,doc/{info,product}}
tree shiyanlou/
在当前shell下执行,递归地创建多个目录,然后通过tree命令显示
2. rm命令
rm -r lv/ –recursive 递归地删除
rm -f a.txt 强势删除
rm -vrf lv/ 详细显示进行的步骤
myrm() {
D=/tmp/$(date +%Y%m%d%H%M%S);
mkdir -p $D;
mv "$@" $D && echo "moved to $D ok";
}
在/tmp目录下创建一个由时间命名的目录,然后将当前目录下的一个文件或目录mv过去,实现自定义的myrm函数
3. mv命令
mv [选项] 源文件或目录 目标文件或目录
- 当第二个参数类型是文件时,mv完成文件重命名
- 当第二个参数类型是目录时,mv将各参数指定的源文件均移至目标目录中
常用参数
-b –back 若需覆盖文件,则覆盖前先行备份
-i –interactive 交互式
-u –update 若目标文件已经存在,且源文件比较新,才会更新
4. cp命令
cp [选项] 源文件或目录 目标文件或目录
-a: --archive 等同于-dpR
-d: 复制符号链接时,把目标文件或目录也建立为符号链接
-p: 复制源文件或目录内容的同时也复制文件属性
-R: -r --recursive 递归复制目录
-n: --no-clobber 不要覆盖已存在的文件
-s: --symbolic-link 对源文件建立符号链接,而非复制文件
-u: --update 只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件
将 test1 目录下的所有文件和子目录复制到 test2 目录下,覆盖前询问
cp -iR test1/* test2
5. cat命令(concatenate)
cat 命令的功能是将文件或标准输入组合输出到标准输出。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
-A –show-all 等价于 -vET
-v –show-nonprinting
-E –show-ends 在每行结束处显示 $
-T –show-tabs 将跳格字符显示为 ^I
-b –number-nonblank 对非空输出行编号
-n –number 对输出的所有行编号,由 1 开始对所有输出的行数编号
-s –squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
思考题
cat -A << EOF
> `ls -l`
> EOF
执行该命令会输出什么?
想知道这题答案,必须要先了解什么是heredoc
heredoc = here document
Here Document 是在Linux Shell中的一种特殊的重定向方式,它的基本形式如下:
cmd << delimiter(这里一定是"<<")
Here Document Content
delimiter
它的作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数。
6. nl命令
nl = numbers of lines
nl 命令在 linux 系统中用来计算文件中行号。
nl 可以将输出的文件内容自动的加上行号。
其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,
包括位数与是否自动补齐 0 等等的功能
eg:
nl -n ln a.txt
nl -n rn a.txt
nl -n rz a.txt
nl -n rz -w 3 a.txt