一、命令格式与目录处理命令ls
命令格式:命令 [-选项] [参数]
例如:ls -la /root
说明:1.个别命令可能不遵守上述格式
2.当有多个选项时,可以写在一起。
3.简化选项和完整选项等价,例如:-a 等价于 --all
二、目录处理命令
ls
命令名称:ls
命令英文原意:list
命令所在目录:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [文件或者目录]
常用参数:
-a | 显示所有文件, 包括隐藏文件 |
-l | 详细信息显示 |
-d | 查看目录属性 |
-h | 将文件大小的字段进行换算 |
mkdir
命令名称:mkdir
命令英文原意:make directories
命令所在目录:/bin/mkdir
执行权限:所有用户
功能描述:创建目录
语法:mkdir [-p] [目录名]
-p:递归创建
举例:
# 有一个“胖太乙” 文件夹
[root@TR ~]# ll
drwxr-xr-x 2 root root 4096 Jan 8 22:52 胖太乙
# 在“胖太乙”下创建一个“胖太乙1”, 在“胖太乙1”下创建一个“胖太乙2”(一次创建)
[root@TR ~]# mkdir /root/胖太乙/胖太乙1/胖太乙2
mkdir: cannot create directory ‘/root/胖太乙/胖太乙1/胖太乙2’: No such file or directory
[root@TR ~]#
可以看到, 如果 mkdir 不加任何参数, 上述的创建会有问题, 会提示没有这样的目录, 那是因为“胖太乙1”文件夹不存在, 所以这种情况下如果需要创建文件夹, 需要使用参数 “-p”。
[root@TR ~]# mkdir -p /root/胖太乙/胖太乙1/胖太乙2
[root@TR 胖太乙]# tree /root/胖太乙
/root/胖太乙
├── 胖太乙.txt
├── 胖太乙1
│ ├── 胖太乙2
└── 胖太乙3
cp
命令名称:cp
命令英文原意:copy
命令所在目录:/bin/cp
执行权限:所有用户
功能描述:复制文件或目录
语法:cp [-rp] [源文件或目录] [目标目录]
-r:复制目录
-p:保留文件属性
举例:
# 1.将“胖太乙.txt” 文件复制到 “胖太乙1”文件夹下
[root@TR 胖太乙]# ll
total 4
-rw-r--r-- 1 root root 0 Jan 8 23:09 胖太乙.txt
drwxr-xr-x 3 root root 4096 Jan 8 23:00 胖太乙1
[root@TR 胖太乙]# cp 胖太乙.txt 胖太乙1/
[root@TR 胖太乙]# mkdir 胖太乙3
[root@TR 胖太乙]# ll
total 8
-rw-r--r-- 1 root root 0 Jan 8 23:09 胖太乙.txt
drwxr-xr-x 3 root root 4096 Jan 8 23:10 胖太乙1
drwxr-xr-x 2 root root 4096 Jan 8 23:10 胖太乙3
[root@TR 胖太乙]# cp 胖太乙3 胖太乙1/
cp: -r not specified; omitting directory '胖太乙3'
[root@TR 胖太乙]# cp -r 胖太乙3 胖太乙1/
[root@TR 胖太乙]# tree /root/胖太乙
/root/胖太乙
├── 盘太乙.txt
├── 胖太乙1
│ ├── 盘太乙.txt
│ ├── 胖太乙2
│ └── 胖太乙3
└── 胖太乙3
如果仔细观察, 可以看到, 当一个文件被拷贝到其它位置的时候, 日期会有变化, 会变成当前“cp” 命令执行的时间,如果想拷贝文件的时候, 连同时间一起拷贝过来,就需要使用 “-p” 选项。这里就不在演示了。
mv
命令名称:mv
命令英文原意:move
命令所在目录:/bin/mv
执行权限:所有用户
功能描述:剪切文件、改名
语法:mv [源文件或目录] [目标目录]
rm
命令名称:rm
命令英文原意:remove
命令所在目录:/bin/rm
执行权限:所有用户
功能描述:删除文件
语法:rm [-rf] [文件或目录]
-r:删除目录
-f:强制执行
举例:
# 在用户家目录有一个 "demo1"文件夹, 该文件夹下还有一个文件
[root@TR ~]# ll
drwxr-xr-x 2 root root 4096 Jan 6 19:59 demo1
# 删除 “demo1”目录, 使用“-r” 会每删除一个就会提示一下。
[root@TR ~]# rm -r demo1
rm: descend into directory 'demo1'? y
rm: remove symbolic link 'demo1/链接文件'? y
rm: remove directory 'demo1'? y
如果上述命令加上“-f”选项,就无须确认, 直接强制删除。
注:在工作中千万不要使用 “rm -rf /*” 命令, 这个命令的含义是强制删除根目录下的所有文件。如果你真的这么干了, 那么一副银手镯送给你。
三、文件处理命令
touch
命令名称:touch
命令所在目录:/bin/touch
执行权限:所有用户
功能描述:创建空文件
语法:touch [文件名]
cat
命令名称:cat
命令所在目录:/bin/cat
执行权限:所有用户
功能描述:显示文件内容
语法:cat [-n] [文件名]
-n:显示行号
举例:
# 查看文件内容
[root@TR ~]# cat file1
姓名:胖太乙
年龄:1000
性别:男
# 查看文件内容,并且显示行号
[root@TR ~]# cat -n file1
1 姓名:胖太乙
2 年龄:1000
3 性别:男
4
[root@TR ~]#
tac
命令名称:tac
命令所在目录:/usr/bin/tac
执行权限:所有用户
功能描述:显示文件内容(反向显示)
语法:tac [文件名]
举例:
# 正序显示
[root@TR ~]# cat file1
姓名:胖太乙
年龄:1000
性别:男
# 倒序显示
[root@TR ~]# tac file1
性别:男
年龄:1000
姓名:胖太乙
more
命令名称:more
命令所在目录:/bin/more
执行权限:所有用户
功能描述:分页显示文件内容
语法:more [文件名]
(空格)或 f:翻页
(enter): 换行
q 或者Q :退出
less
命令名称:less
命令所在目录:/usr/bin/less
执行权限:所有用户
功能描述:分页显示文件内容(向上翻页)
语法:less [文件名]
ln
命令名称:ln
命令英文原意:link
命令所在目录:/bin/ln
执行权限:所有用户
功能描述:生成链接文件
语法:ln -s [源文件] [目标 文件]
-s:创建软链接(不加`-s`是创建硬链接)
举例:
[root@TR ln]# ll
total 8
-rw-r--r-- 1 root root 6358 Jan 9 12:29 ln.txt
# 1.创建软链接
[root@TR ln]# ln -s ln.txt ln.soft
# 2.创建硬链接
[root@TR ln]# ln ln.txt ln.hard
[root@TR ln]# ll
total 16
-rw-r--r-- 2 root root 6358 Jan 9 12:29 ln.hard
lrwxrwxrwx 1 root root 6 Jan 9 12:30 ln.soft -> ln.txt
-rw-r--r-- 2 root root 6358 Jan 9 12:29 ln.txt
[root@TR ln]#
可以看到,同一个文件,创建软链接和硬链接所展示出来的内容是不一样的。 两者有一下几点不同。
- 文件类型不同,我们在第一章讲到过(不清楚的小伙伴可以去看下一、Linux 文件以及目录的讲解),“-”代表的是普通文件, “l”代表的是链接。
- 文件权限不一样,软链接的权限是所有者, 所属组,其它人都是“rwx”,而硬链接则是和源文件的权限一直。(权限的章节后续会讲道,请关注收藏。)
- 软链接的文件链接数是1, 而硬链接文件链接数是2。
- 软链接的文件大小则要小于源文件的大小, 硬链接则是相同。
- 软链接的文件名“ln.soft -> ln.txt” 指向了源文件路径。而硬链接则没有
总结:其实我们可以将软链接理解成 windows中的快捷方式,软链接只是一个指向原路径的一个快捷方式。所以软链接的文件大小要远远小于源文件的大小。而硬链接则可以连接成“cp” 的复制命令。那么有些小伙伴就要问了, 既然有了“cp” 复制命令, 为什么还需要硬链接。那是因为硬链接和复制又有一些不同之处。 下面就让我们看下硬链接和复制有什么不同吧。
# 1. 我们先看下 “ln.txt” 文件的内容
[root@TR ln]# cat ln.txt
姓名:胖太乙
# 2. 往“ln.txt” 文件追加 “年龄:1000”内容
[root@TR ln]# echo "年龄:1000" >> ln.txt
[root@TR ln]# cat ln.txt
姓名:胖太乙
年龄:1000
# 3.看下硬链接的内容变化,可以看到硬链接的内容也跟着变了
[root@TR ln]# cat ln.hard
姓名:胖太乙
年龄:1000
# 问: 如果我们改变硬链接的内容, 源文件的内容会跟着变化吗?
# 那我们试一下吧!
# 1. 改变“ln.hard”的内容
[root@TR ln]# echo "性别:男" >> ln.hard
[root@TR ln]# cat ln.hard
姓名:胖太乙
年龄:1000
性别:男
# 2. 查看源文件的内容变化
[root@TR ln]# cat ln.txt
姓名:胖太乙
年龄:1000
性别:男
[root@TR ln]#
结论:
- 硬链接和“cp” 复制的相同之处是, 两者都是复制。
- 但是硬链接的模式是“cp -p + 同步更新” , 而复制则是“cp -p”。 不管是改变硬链接的原文件内容,亦或者是改变硬链接文件的内容, 硬链接和源文件的内容都会同步变化。而复制则不具备这种功能。
- 硬链接不能跨分区
- 硬链接不能针对目录使用。
扩展:tree
推荐安装 tree , 可以查看指定目录的树形结构, 比较好用。
# 1.命令
yum install tree -y
# 安装
[root@TR ~]# yum install tree -y
Last metadata expiration check: 1:51:42 ago on Sat 08 Jan 2022 09:32:40 PM CST.
Package tree-1.7.0-15.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@TR ~]#