pwd:打印当前所在的路径
pwd是"print working directory"的缩写,功能是打印当前工作目录的绝对路径。通常情况下,使用pwd命令不需要带任何参数。
参数选项 | 功能描述 |
---|---|
-L | logical的缩写,表示显示逻辑路径(忽略链接文件),取PWD系统环境变量的值,不常用 |
-P | physical的缩写,表示显示物理路径时如果当前目录路径是软链接文件,则会显示软链接文件对应的源文件,不常用 |
tree:以树形结构显示目录下的内容
功能是以树形结构列出指定目录下的所有内容,包括所有文件、子目录及子目录里的目录和文件。
语法格式:tree [选项] [目录]
参数选项和说明:
参数选项 | 功能描述 |
---|---|
-a | 显示所有文件,包括隐藏文件(以.开头的文件) |
-d | 只显示目录 |
-f | 显示每个文件的全路径 |
-i | 不显示树枝,经常与-f参数配合使用 |
-L | 遍历目录的最大层数 |
-F | 对于不同类型的文件,在结尾加上不同的标识,类似ls的-F选项 |
mkdir:创建目录
语法格式:mkdir [选项] [目录]
参数选项和说明:
参数选项 | 功能描述 |
---|---|
-p | 递归创建目录 |
-m | 设置新创建目录的默认目录对应的权限 |
-v | 显示创建目录的过程 |
[root@liujianfan 19:07:31 /test]# mkdir -m 333 /test/hhzz[root@liujianfan 19:07:59 /test]# ls -ld /test/hhzzd-wx-wx-wx. 2 root root 4096 Nov 10 19:07 /test/hhzz[root@liujianfan 19:08:09 /test]#
创建多级目录的技巧:
在/hai目录下创建两个目录:dir1和dir2,并且dir1、dir2目录下都有dir11、dir22:
[root@liujianfan 19:11:44 ~]# mkdir -p /hai/{dir1,dir2}/{dir11,dir22}[root@liujianfan 19:20:35 ~]# tree /hai/hai├── dir1│ ├── dir11│ └── dir22└── dir2 ├── dir11 └── dir226 directories, 0 files[root@liujianfan 19:20:39 ~]#
在/hello目录下创建dir1old~dir6old,比起它们的目录下都有目录a~i:
[root@liujianfan 19:20:39 ~]# mkdir -p /hello/dir{1..6}old/{a..i}[root@liujianfan 19:22:59 ~]# tree /hello/hello├── dir1old│ ├── a│ ├── b│ ├── c│ ├── d│ ├── e│ ├── f│ ├── g│ ├── h│ └── i├── dir2old│ ├── a│ ├── b│ ├── c│ ├── d│ ├── e│ ├── f│ ├── g│ ├── h│ └── i├── dir3old│ ├── a│ ├── b│ ├── c│ ├── d│ ├── e│ ├── f│ ├── g│ ├── h│ └── i├── dir4old│ ├── a│ ├── b│ ├── c│ ├── d│ ├── e│ ├── f│ ├── g│ ├── h│ └── i├── dir5old│ ├── a│ ├── b│ ├── c│ ├── d│ ├── e│ ├── f│ ├── g│ ├── h│ └── i└── dir6old ├── a ├── b ├── c ├── d ├── e ├── f ├── g ├── h └── i60 directories, 0 files[root@liujianfan 19:23:07 ~]#
touch:创建空文件和改变文件和目录的时间戳
语法格式:touch [选项] [文件]
参数选项 | 功能描述 |
---|---|
-a | 只更改指定文件的最后访问时间 |
-d STRING | 使用字符串STRING代表的时间作为模板设置指定文件的时间属性 |
-m | 只更改指定文件的最后修改时间 |
-r file | 将指定文件的时间属性设置为与模板文件file的时间属性相同 |
-t STAMP | 使用[[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒 |
*使用stat命令可以查看文件的时间戳属性
[root@liujianfan 01:34:00 ~]# touch new[root@liujianfan 01:34:41 ~]# stat new File: ‘new’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fd00h/64768d Inode: 77463376 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-03-03 01:34:41.667556384 +0800Modify: 2019-03-03 01:34:41.667556384 +0800Change: 2019-03-03 01:34:41.667556384 +0800 Birth: -[root@liujianfan 01:34:48 ~]#
文件的时间戳属性分为访问时间、修改时间、状态改变时间。
修改最后访问时间:
[root@liujianfan 01:34:48 ~]# touch -a new[root@liujianfan 01:35:29 ~]# stat new File: ‘new’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fd00h/64768d Inode: 77463376 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-03-03 01:35:29.616560085 +0800Modify: 2019-03-03 01:34:41.667556384 +0800Change: 2019-03-03 01:35:29.616560085 +0800 Birth: -[root@liujianfan 01:35:32 ~]#
修改最后修改的时间:
[root@liujianfan 01:35:32 ~]# touch -m new[root@liujianfan 01:36:06 ~]# stat new File: ‘new’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fd00h/64768d Inode: 77463376 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2019-03-03 01:35:29.616560085 +0800Modify: 2019-03-03 01:36:06.113562902 +0800Change: 2019-03-03 01:36:06.113562902 +0800 Birth: -[root@liujianfan 01:36:08 ~]#
指定时间属性修改/创建文件:
[root@liujianfan 01:36:08 ~]# touch -d 20201111 new2[root@liujianfan 01:37:37 ~]# ls -l new2-rw-r--r-- 1 root root 0 Nov 11 2020 new2
ls:显示目录下的内容及其相关属性信息
语法格式:ls [选项] [文件或目录]
参数选项 | 功能描述 |
---|---|
-l | 使用长格式列出文件及目录信息 |
-a | 显示目录下的所有文件 |
-t | 根据最后修改时间(mtime)排序,默认是以文件名排序 |
-r | 依相反次序排序 |
-F | 在条目后面加上文件类型的指示符号 |
-p | 只在目录后面加上"/" |
-i | 显示inode节点信息 |
-d | 当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接 |
-h | 以符合人类可读的形式显示文件或者目录的大小,如1KB、22MB等 |
-A | 列出所有文件,但是不包括"."和".."这两个目录 |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
-x | 逐行列出项目而不是逐栏列出 |
-X | 根据扩展名排序 |
-c | 根据状态改变时间排序 |
-u | 根据最后访问时间排序 |
--color={never,always,auto} | 不同的文件类型显示不同的参数颜色,never表示不显示,always表示总是显示,auto表示自动显示 |
--full-time | 以完整的时间格式输出 |
--time-style={full-iso,long-iso,iso,locate} | 以不同的时间格式输出,long-iso效果最好 |
--time={atime,ctime} | 按不同的时间属性输出,不加此参数默认以最后修改时间输出 |
显示完整的时间属性:
[root@liujianfan 02:21:57 ~]# ls -al --time-style=long-isototal 736696dr-xr-x---. 9 root root 4096 2019-03-03 01:46 .dr-xr-xr-x. 26 root root 4096 2019-01-16 19:49 ..-rw-r--r--. 1 root root 0 2018-10-23 04:38 04:38:10.tex-rw-r--r--. 1 root root 0 2018-10-24 08:41 1drwxr-xr-x. 3 root root 16 2018-10-24 08:38 122drwxr-xr-x. 5 root root 32 2018-10-24 08:39 156
ls -F命令的输出:
1.目录的结尾会加上"/"
2.普通文件结尾会加上"*"
3.套接字文件结尾会加上"="
4.FIFOs文件会加上"|"
5.符号链接文件会加上"@"
cp:复制文件或目录
语法格式:cp [选项] [源文件] [目标文件]
参数说明:
参数选项 | 功能描述 |
---|---|
-p | 复制文件时保持源文件的所有者、权限信息及时间属性 |
-d | 如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标文件或目录 |
-r | 递归复制目录 |
-a | 等同于上面的p、d、r这三个选项功能的总和 |
-i | 覆盖已有文件前提示用户确认 |
-t | 默认情况下命令格式是"cp 源文件 目标文件",使用该参数可以颠倒源目文件的顺序:cp 目标文件 源文件 |
mv:移动或重命名文件
语法格式:mv [选项] [目标文件]
参数选项说明:
参数选项 | 功能描述 |
---|---|
-f | 若目标文件已经存在,则不会询问而是直接覆盖 |
-i | 若目标文件已经存在,则会询问是否覆盖 |
-n | 不覆盖已存在的文件 |
-t | 指定mv的目标目录,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。 |
-u | 在源文件比目标文件新,或目标文件不存在时才进行移动 |
rm:删除文件或目录
语法格式:rm [选项] [文件或目录]
参数选项 | 功能描述 |
---|---|
-f | 强制删除。忽略不存在的文件,不提示确认 |
-i | 在删除前需要确认 |
-I | 在删除超过三个文件或者递归删除前需要确认 |
-r | 递归删除目录 |
ln:硬链接与软链接
语法格式:ln [选项] [源文件或目录] [目标文件或目录]
参数选项 | 功能描述 |
---|---|
无参数 | 创建硬链接 |
-s | 创建软链接(符号链接) |
硬链接和软链接:
硬链接:硬链接生成的是普通文件(-字符),相当于文件的另外一个入口。具有相同的inode节点号的多个文件互为硬链接文件。删除硬链接文件或者源文件的任何一个,文件实体没有被真正删除。
软链接:目标文件不能事先存在,软链接生成的是符号链接文件(l类型),类似于windows的快捷方式,里面存放的是源文件的路径,指向源文件实体。即使删除了源文件,软链接文件依然存在,但是无法访问源文件。软链接和源文件是不同类型的文件,inode号也不同。
注意:对于目录,不可以创建硬链接,但是可以创建软链接。需要注意的是,目录是可以跨文件系统的。
find:查找目录下的文件
语法格式:find [选项] [路径] [操作语句]
find命令的详细语法:
find [选项] [路径] [expression]
[expression包含options、tests、actions三个模块 ]
Options参数说明:
参数选项 | 功能描述 |
---|---|
-depth | 从指定目录下最深层的子目录开始查找 |
-maxdepth levels | 查找的最大目录级数,levels为自然数 |
-regextype type | 改变正则表达式的模式,默认为emacs |
Tests模块参数说明:
参数选项 | 功能描述 |
---|---|
-mtime [-n,n,+n] | 按照文件的修改时间来查找文件,-n表示文件修改时间距离现在n天之内,+n表示距离现在n天以前 |
-atime | 按照文件的访问时间来查找文件 |
-ctime | 按照文件的改变时间来查找文件 |
-amin | 按照文件的访问时间来查找文件,单位为分钟 |
-cmin | 按照文件的改变时间来查找文件,单位为分钟 |
-mmin | 按照文件的修改时间来查找文件,单位为分钟 |
-group | 按照文件所属的组来查找文件 |
-name | 按照文件名称来查找文件,只支持*、?、[]等等通配符 |
-newer | 查找更改时间比指定文件新的文件 |
-nogroup | 查找没有有效用户组的文件,该文件所属的组在/etc/groups中不存在 |
-nouser | 查找没有有效属主的文件,该文件的属主在/etc/passwd中不存在 |
-path | 指定路径样式,配合-prune参数排除指定目录 |
-perm | 按照文件权限来查找文件 |
-regex | 接正则表达式 |
-iregex | 接正则表达式,不区分大小写 |
-size n[cwbkMG] | 查找文件长度为n块的文件,带有cwbkMG时表示文件长度以字节计 |
-user | 按照文件属主来查找文件 |
-type | 查找某一类型的文件:b、c、d、p(管道文件)、l、f、s、D |
Actions模块参数说明:
参数选项 | 功能描述 |
---|---|
-delete | 将查找出的文件删除 |
-exec | 对匹配的文件执行该参数所给出的shell命令 |
-ok | 和-exec作用相同,但是会让用户先确定是否执行 |
-prune | 使用这一选项可以使find命令不在当前指定的命令中查找 |
将匹配到的文件输出到标准输出 | |
OPERATORS | find支持逻辑运算符 |
! | 取反 |
-a | 取交集,全拼为and |
-o | 取并集,全拼为or |
例子:
1.查找当前目录下,两天内受到访问的文件:
[root@liujianfan 20:15:26 ~]# find . -atime -2
2.查找/var/log/下6天以前以".log"结尾的被修改的文件:
[root@liujianfan 20:23:07 ~]# find /var/log/ -mtime +6 -name "*.log"
3.查找当前目录下的所有目录:
[root@liujianfan 20:23:26 ~]# find . -type d
4.查找当前目录下不是目录的文件:
[root@liujianfan 21:33:23 ~]# find . ! -type d
5.按照目录或者文件的权限来查找文件:
[root@liujianfan 21:34:29 ~]# find . -perm 666
6.查找当前目录下大小是100字节的文件文件:
[root@liujianfan 21:35:27 ~]# find . -size 100c
7.在当前目录下查找更改时间比文件file.txt新的文件:
[root@liujianfan 21:37:50 ~]# find . -newer file.txt
8.查找当前目录下更改时间在14天以前的文件,并且在-exec选项中使用rm命令删除:
[root@liujianfan 21:43:20 ~]# find . -type f -mtime +14 -exec rm {} \;
9.使用-exec选项的安全模式-ok:
[root@liujianfan 21:43:20 ~]# find . -type f -mtime +14 -ok rm {} \;
xargs:将标准输入转换为命令行参数
语法格式:xargs [选项]
参数说明:
参数选项 | 功能描述 |
---|---|
-n | 指定每行的最大参数量n,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔 |
-d | 自定义分隔符 |
-i | 以{}替代前面的结果 |
-I | 指定一个符号替代前面的结果,而不用-i参数默认的{} |
-p | 提示让用户确认是否执行后面的命令 |
-0 | 用null代替空格作为分隔符 |
多行文本输入变单行:
[root@liujianfan 22:01:58 /text]# cat tt.txt 1 2 3 4 5 67 8 9 10 11[root@liujianfan 22:02:49 /text]# xargs
通过-n参数指定每行的输出个数:
[root@liujianfan 22:04:14 /text]# xargs -n 3 < tt.txt 1 2 34 5 67 8 910 11
使用-d选项自定义分隔符:
[root@liujianfan 06:20:54 /]# echo hzdXhzdXhzdXhzdX | xargs -d X -n 2hzd hzdhzd hzd
rename:重命名文件
语法格式:rename from to file
from:代表需要替代或者需要处理的字符(一般是文件名的一部分)
to:把前面的from代表的内容替换为to代表的内容
file:需要处理的文件。
[root@liujianfan 06:24:47 /test]# lsaccess_www_2018-10-01.log access_www_2018-10-08.log access_www_2018-10-15.log access_www_2018-10-22.logaccess_www_2018-10-02.log access_www_2018-10-09.log access_www_2018-10-16.log access_www_2018-10-23.logaccess_www_2018-10-03.log access_www_2018-10-10.log access_www_2018-10-17.log access_www_2018-10-24.logaccess_www_2018-10-04.log access_www_2018-10-11.log access_www_2018-10-18.log access_www_2018-10-25.logaccess_www_2018-10-05.log access_www_2018-10-12.log access_www_2018-10-19.logaccess_www_2018-10-06.log access_www_2018-10-13.log access_www_2018-10-20.logaccess_www_2018-10-07.log access_www_2018-10-14.log access_www_2018-10-21.log[root@liujianfan 06:24:48 /test]# rename .log .jpg *[root@liujianfan 06:25:14 /test]# lsaccess_www_2018-10-01.jpg access_www_2018-10-08.jpg access_www_2018-10-15.jpg access_www_2018-10-22.jpgaccess_www_2018-10-02.jpg access_www_2018-10-09.jpg access_www_2018-10-16.jpg access_www_2018-10-23.jpgaccess_www_2018-10-03.jpg access_www_2018-10-10.jpg access_www_2018-10-17.jpg access_www_2018-10-24.jpgaccess_www_2018-10-04.jpg access_www_2018-10-11.jpg access_www_2018-10-18.jpg access_www_2018-10-25.jpgaccess_www_2018-10-05.jpg access_www_2018-10-12.jpg access_www_2018-10-19.jpgaccess_www_2018-10-06.jpg access_www_2018-10-13.jpg access_www_2018-10-20.jpgaccess_www_2018-10-07.jpg access_www_2018-10-14.jpg access_www_2018-10-21.jpg
chattr:改变文件的扩展属性
语法格式:chattr [选项] [模式] [文件或者目录]
选项参数说明:
参数选项 | 功能描述 |
---|---|
-R | 递归更改目录属性 |
-V | 显示命令执行过程 |
模式参数说明:
参数选项 | 功能描述 |
---|---|
+ | 增加参数 |
- | 移除参数 |
= | 更新为指定的参数 |
A | 告诉系统不要修改这个文件的最后访问时间 |
a | 只能向文件中添加数据,而不能删除,多用于服务器日志文件 |
i | 设定文件不能删除、改名、写入或者增加内容 |
设置只能往文件里面追加内容,但是不能删除文件:
[root@liujianfan 07:13:09 ~/test2]# chattr +a chattr.txt [root@liujianfan 07:13:24 ~/test2]# lsattr chattr.txt -----a---------- chattr.txt[root@liujianfan 07:13:28 ~/test2]#
root用户也无法删除,只能追加内容:
[root@liujianfan 07:13:28 ~/test2]# rm -f chattr.txt rm: cannot remove ‘chattr.txt’: Operation not permitted[root@liujianfan 07:14:28 ~/test2]# echo hello >> chattr.txt [root@liujianfan 07:14:49 ~/test2]# cat chattr.txt hello[root@liujianfan 07:14:53 ~/test2]#
给文件加锁,设置为只读:
[root@liujianfan 07:16:34 ~/test2]# touch chattr2.txt[root@liujianfan 07:17:00 ~/test2]# chattr +i chattr2.txt [root@liujianfan 07:17:09 ~/test2]# rm -f chattr2.txt rm: cannot remove ‘chattr2.txt’: Operation not permitted[root@liujianfan 07:17:23 ~/test2]# echo hi >> chattr2.txt -bash: chattr2.txt: Permission denied[root@liujianfan 07:17:34 ~/test2]#