路径
绝对路径:一定从/(根目录)写起。
相对路径:不从/(根目录)写起,由相对当前目录写起。
目录
常见目录:
- . 代表此层目录
- .. 代表上层目录
- – 代表前一个工作目录
- ~ 代表当前用户家目录
- ~account 代表account这个用户的家目录
变换目录
cd 【相对路径或绝对路径】
显示当前目录
pwd
建立一个新目录
mkdir 【-mp】 目录名称
-m:建立时配置目录权限,不受umask限制。
-p:可递归建立目录
例:
建立权限为 rwx–x–x的目录
mkdir -m 711 mulu1
同时建立多个嵌套目录
mkdir -p /tmp/test1/test2/test3
删除一个空目录
rmdir
显示指定目录下的内容
常用命令:
ls
- -a 全部的文件,包括隐藏文件(以.开头的文件)。
- -d 仅列出目录本身,不显示目录内文件数据。
- -l 显示文件属性与权限等信息。
复制
常用命令:
cp 【选项】 源文件 目标文件
cp 【选项】 源文件1 源文件2 源文件3 … 目标目录
- -a 将文件所有属性复制到新文件。
- -d 若源文件为链接文件,则复制链接文件属性而非文件本身。
- -f 强制,若目标文件已存在且无法开启,则移除后再尝试一次。
- -i 若目标文件已存在,在覆盖时会询问动作的进行。
- -p 连同文件的属性(权限、用户、时间)一起复制,而非使用默认属性(备份常用)
- -r 递归 持续复制,用于目录的复制。
链接
硬链接:ln 源文件 链接文件
软链接:ln -s 源文件 链接文件
建立链接使用绝对路径。
[wenzi@wenzi ~]$ll
total 4
drwxrwxr-x 2 wenzi wenzi 28 Apr 13 09:35 aaa
-rw-rw-r-- 1 wenzi wenzi 4 Apr 13 09:27 cs绝对路径写法
[wenzi@wenzi ~]$ln -s /home/wenzi/cs /home/wenzi/aaa/ddd
[wenzi@wenzi ~]$ln -s `pwd`/cs /home/wenzi/aaa/ddd
若使用相对路径,错误示范
删除
常用命令:
rm 【选项】 文件或目录
- -f 强制执行,忽略不存在的文件,不会出现告警信息。
- -i 互动模式,删除前会询问使用者是否动作。
- -r 递归删除,最常用在目录的删除。
移动
常用命令:
mv 【选项】 源文件 目标文件
mv 【选项】 源文件1 源文件2 … 目标目录
- -f 强制执行,如果目标文件已存在,不会询问直接覆盖。
- -i 若目标文件已存在,会询问是否覆盖。
- -u 若目标文件已存在,且源文件较新,才会更新。
查看文件内容
cat 从第一行开始显示文件内容
tac 从最后一行开始显示文件内容
nl 显示的时候标明行号
more 一页一页显示文件内容
less 以较少内容显示文件内容
head 只查看前n行文件内容。head -n 行数 文件
tail 只看末n行文件内容。tail -n 行数 文件
od 以二进制形式查看文件内容
修改文件时间或建立新文件
- mtime 当文件的内容数据变化时,就会更新此时间。通过 ll 命令查看
- ctime 当文件的属性权限变化时,就会更新此时间。通过 ll --time=ctime 命令查看;复制文件时ctime没有办法复制。
- atime 当文件的内容被读取时,就会更新此时间。通过 ll --time=atime 命令查看
常用命令:
touch 【选项】 文件
- -a 仅修改atime。
- -c 仅修改文件的时间为当前时间,若该文件不存在则不建立新文件。
- -m 仅修改mtime。
- -d 修改为目的日期,格式 -d 日期或时间
- -t 修改为目的日期,格式【YYMMDDhhmm】
实例:
通过touch命令新建文件test,并查看mtime。
[root@VM-16-5-centos ~]# touch test
[root@VM-16-5-centos ~]# ll
total 0
-rw-r--r-- 1 root root 0 Jan 1 01:18 test
查看ctime。
[root@VM-16-5-centos ~]# chown wzy test
[root@VM-16-5-centos ~]# ll --time=ctime
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:21 test
查看atime。
[root@VM-16-5-centos ~]# cat test
[root@VM-16-5-centos ~]# ll --time=atime
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:22 test
将test文件修改为2天前。
[root@VM-16-5-centos ~]# touch -d "2 days ago" test
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan 1 01:35:12 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Dec 30 01:34 test
total 0
-rw-r--r-- 1 wzy root 0 Dec 30 01:34 test
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:34 test
将test文件修改为2022年7月29日07时29分
[root@VM-16-5-centos ~]# touch -t 202207290729 test
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan 1 01:37:33 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Jul 29 2022 test
total 0
-rw-r--r-- 1 wzy root 0 Jul 29 2022 test
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:37 test
将文件时间修改为当前时间
[root@VM-16-5-centos ~]# touch -c test
[root@VM-16-5-centos ~]# date;ll;ll --time=atime;ll --time=ctime
Sat Jan 1 01:39:07 CST 2022
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:39 test
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:39 test
total 0
-rw-r--r-- 1 wzy root 0 Jan 1 01:39 test
在以上测试中,ctime的时间记录的总是刷新为当前时间。
查找指令
which 【选项】命令
- -a 将所有path包含的目录中可以找到的指令均列出,不止第一个被找到的指令名称。
which 是根据 PATH 这个环境变量包含的路径去寻找对应的完整文件名称。
例:查找ls命令的完整文件名。
命令:which ls 结果:/usr/bin/ls
查找文件
whereis 【选项】文件名
- -l 列出whereis查找时涉及的目录。
locate【选项】关键字
- -i 忽略大小写差异。
- -c 不显示文件或目录名称,仅计算找到的文件数量。
- -l 显示几行。
- -S 显示locate所使用的数据库文件的相关信息,包括该数据库记录的文件或目录数量。
locate寻找到数据是由已建立的数据库 /var/lib/mlocate/ 里面查找的。数据库默认每天更新一次,因此当你新建一个文件时,会提示找不到,可通过 updatedb 更新数据库即可。
find【路径】【选项】【动作】
与时间相关选项,-atime、-ctime、-mtime,此处以-mtime为例
- -mtime n:n为数字,意义为在n天之前的【一天之内】被更改过内容的文件。即(n+1)当天
- -mtime +n:列出在n天之前【不含n天本身】被更改过内容的文件。即>=(n+1)天
- -mtime -n:列出在n天之内【含n天本身】被更改过内容的文件。即<=n天
- -newer file:file为一个已存在文件,列出比file新的文件。
例:
列出系统24小时内更改过内容的文件。
find -mtime 0
列出系统三天前的24小时内更改过内容的文件。
find -mtime 3
列出 /etc 目录下文件日期比 /etc/passwd 新的文件。
find /etc -newer /etc/passwd
与使用者或组相关选项
- -uid n:n为数字,这个数字是用户的账号ID,即UID。/etc/passwd 文件中与账号名称对应的数字。
- -gid n:n为数字,这个数字是组名的账号ID,即GID。/etc/group 文件中与组名对应的数字。
- -user name:name是用户名。
- -group name:name是组名。
- -nouser:寻找文件拥有者不在 /etc/passwd 的用户。
- -nogroup:寻找文件用户组不在 /etc/group 的用户组。
例:
查询系统中属于root的文件
find / -user root
查询系统中不属于任何人的文件
find / -nouser
- -name filename:查询文件名为filename的文件。
- -size +/-SIZE:查找比SIZE大+或比SIZE小-的文件。c代表byte,k代表1024bytes.
- -type TYPE:查询文件类型为TYPE的文件。一般正规文件f、目录d、装置文件b、c、链接文件l、套接字文件s、
- -perm mode:查询文件权限等于mode的文件。mode为数字表示的权限。
- -perm -mode:查询文件权限包括mode的文件。
- -perm /mode:查询文件权限包含任一mode的文件。
- -exec command:-exec后面可以接额外的命令来处理搜寻后的结果。
例:
查询系统中文件名为 passwd 的文件
find / -name passwd
查询系统中文件名包含 passwd 的文件
find / -name “*passwd*”
查询系统中文件大小小于20byte的文件
find / -size -20c
查询 /etc 目录下文件大小介于50K到60K之间的文件;-a即 and并且 的意思
find /etc -size +50k -a -size -60k
查询系统中文件类型为b(块设备)的文件
find / -type b
查询系统中权限包含SUID或SGID或SBIT
find / -perm /7000
查询系统中文件名为passwd的文件并通过ls -l 命令显示
find / -name passwd -exec ls -l {} \;
其中 -exec、{}、\、;是关键词,{}内为find / -name passwd 的结果;-exec和\;为动作的开始和动作的结束。