目录
一、查看、切换、显示、统计目录
1.1 pwd
pwd命令是“print working directory”中每个单词的首字母缩写,其功能正如所示单词一样,为打印工作目录,即显示当前工作目录的绝对路径。
语法格式: pwd [参数]
-P 参数 打印当前的物理路径,不带有任何的符号链接
示例:
[root@localhost data]# pwd #显示当前目录
/root/data
[root@localhost data]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]#
--------------------------------分割线---------------------------------------------
lrwxrwxrwx. 1 root root 8 2月 12 22:19 111 -> /opt/rh/ #111为/opt/rh/的软链接
[root@localhost data]# cd 111/
[root@localhost 111]# mkdir 123 在软链接下创建123文件
[root@localhost 111]# cd 123/
[root@localhost 123]# pwd #此时查看到的是软链接的目录
/data/111/123
[root@localhost 123]# pwd -P #此时查看到的是不带有软链接的目录
/opt/rh/123
[root@localhost 123]#
1.2 cd
cd命令是”change directory”中单词的首字母缩写,其英文释义是改变目录,所以该命令的功能是从当前目录切换到指定目录。
默认是回到家目录
语法格式:cd [参数] [目录名]
示例:
[root@localhost ~]# cd data/ #切换到data目录下
[root@localhost data]# pwd #查看当前目录
/root/data
[root@localhost data]# cd ../ #切换到上一级目录
[root@localhost ~]# cd - #切换到上一次目录
/root/data
1.3 ls
ls 显示指定工作目录下的内容及属性信息
语法格式:
ls [选项] [文件或目录]
常用参数:
a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
-l | 使用长格式列出文件及目录信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录) |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
示例:
[root@localhost data]# ls
2022-01-21 [a-z].txt fe.txt.gz fj.txt.gz fo.txt.gz ft.txt.gz fy.txt.gz
--------------------------------分割线---------------------------------------------
[root@localhost data]# ls -l #列出详细信息
总用量 104
drwxr-xr-x. 2 root root 6 1月 21 12:07 2022-01-21
-rw-r--r--. 1 root root 0 1月 21 21:52 2.txt
-rw-r--r--. 1 root root 0 1月 21 21:52 714
-rw-r--r--. 1 root root 0 1月 21 21:50 744
-rw-r--r--. 1 root root 0 1月 21 21:52 764
-rw-r--r--. 1 root root 0 1月 22 08:33 [a-z].txt
--------------------------------分割线---------------------------------------------
[root@localhost data]# ls -a
. 744 fb.txt.gz fg.txt.gz fl.txt.gz fq.txt.gz fv.txt.gz
.. 764 fc.txt.gz fh.txt.gz fm.txt.gz fr.txt.gz fw.txt.gz
2022-01-21 .a.txt fd.txt.gz fi.txt.gz fn.txt.gz fs.txt.gz fx.txt.gz
# .a.txt是隐藏文件 “.”代表本文件夹 “..”代表上一级文件夹
--------------------------------分割线---------------------------------------------
[root@localhost data]# ls -R #递归显示所有
.:
2.txt 714 744 764 aaa [a-z].txt
./aaa:
abc #abc是aaa文件夹中的文件
文件详细信息各个含义:
第一个字母的含义:
d | 代表目录/文件夹 directory |
- | 代表普通文件 |
l | 代表链接文件link |
b | 代表块设备 block |
c | 代表字符设备character,一个字符一个字符读取 |
p | 代表管道文件pipe |
s | 代表套接字文件(IP地址 端口)可以双向的 |
关于颜色:
黑色:普通文件
绿色:可执行文件
红色:压缩包文件
蓝色:文件夹
天蓝色:链接文件
还可以结合通配符
- “?” 匹配文件名中的一个未知字符
- “*” 匹配文件名中的任意多个字符
注意:ls在工作中不能随便敲,服务器中文件太多敲了ls会导致死机
1.4 通配符
符号 | 效果 |
---|---|
? | 匹配一个字符 |
* | 匹配所以非隐藏的字符 |
{1..10} | 1到10 |
{a-z} | a b c ... z |
{A..Z} | A B C ...Z |
[123] | 只要有就显示 |
[0-9] | 匹配数字的范围 |
\ | 转义符,表示原来的意思 |
[^lhq] | 匹配除了lhq以外的字符,也就是取反 |
示例:
1.*将aaa文件夹中的文件也显示出来了
2.创建了file1.txt到file10.txt所有的文件
3.使用两次[0-9]可以找到file两位数.txt的文件
1.5 alias
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。需要用单引号 ‘ ‘ 将原来的命令引起来
语法格式:alias [参数]
示例:
将vim /etc/sysconfig/network-scripts/ifcfg-ens33这条命令使用net别名即可达到相同的效果,不再需要记忆这么一长串,但是重启后会失效,想要永久有效,需要修改配置文件
敲alias可以查看系统中已经定义好的别名
1.6 du
du命令的英文全称是“Disk Usage”,即用于查看磁盘占用空间的意思。但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看,而不是某个分区。
语法格式:du [参数] [文件]
常用参数:
-a | 显示目录中所有文件大小 |
-k | 以KB为单位显示文件大小 |
-m | 以MB为单位显示文件大小 |
-g | 以GB为单位显示文件大小 |
-h | 以易读方式显示文件大小 |
-s | 仅显示总计 |
示例:
[root@localhost data]# ls
aaa file11.txt file1.txt file3.txt file5.txt file7.txt file9.txt
file10.txt file12.txt file2.txt file4.txt file6.txt file8.txt
[root@localhost data]# du #单纯的du只查看当前目录下的文件夹以及大小
0 ./aaa
0 .
[root@localhost data]# du -a #查看当前目录下的所有文件和文件夹
0 ./.a.txt
0 ./file1.txt
0 ./file2.txt
0 ./file3.txt
0 ./file4.txt
0 ./file5.txt
0 ./file6.txt
0 ./file7.txt
0 ./file8.txt
0 ./file9.txt
0 ./file10.txt
0 ./file11.txt
0 ./file12.txt
0 ./aaa
0 .
--------------------------------分割线---------------------------------------------
[root@localhost data]# du -s #只查看大小
0 .
--------------------------------分割线---------------------------------------------
[root@localhost data]# du -as #这两个参数不能同时使用
du: 不能既显示总用量,同时又显示每个项目
Try 'du --help' for more information.
二、创建
2.1 mkdir
mkdir命令是“make directories”的缩写,用来创建目录,也就是文件夹。
注意:默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。 所以在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 mkdir命令还可以同时创建多个目录。
语法格式 : mkdir [参数] [目录]
常用参数:
-p | 递归创建多级目录 |
-m | 建立目录的同时设置目录的权限 |
-z | 设置安全上下文 |
-v | 显示目录的创建过程 |
示例:
1.在当前目录下创建public_html目录,这里省略了代表当前目录的“./”
2.在当前目录下创建aa目录,再创建子目录bb,在bb下创建子目录cc,使用tree命令查看树形结构
小知识点:
1.新建的文件名最长255个字节
2.可以使用特殊字符 ,除了/和空字符
2.2 touch
touch命令有两个功能:
一是创建新的空文件
二是刷新文件的时间
语法格式:touch [参数] [文件]
常用参数:
-a | 改变档案的读取时间记录 |
-m | 改变档案的修改时间记录 |
-r | 使用参考档的时间记录,与 --file 的效果一样 |
-c | 不创建新文件 |
-d | 设定时间与日期,可以使用各种不同的格式 |
-t | 设定档案的时间记录,格式与 date 命令相同 |
--no-create | 不创建新文件 |
--help | 显示帮助信息 |
--version | 列出版本讯息 |
示例:
[root@localhost data]# touch 1.txt #创建1.txt的空文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 2月 12 17:16 1.txt
[root@localhost data]#
--------------------------------分割线---------------------------------------------
[root@localhost data]# stat aa #显示aa的状态信息
文件:"aa"
大小:16 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:2433623 硬链接:3
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-02-11 23:46:54.903163577 +0800
最近更改:2022-02-11 23:46:48.082137372 +0800
最近改动:2022-02-11 23:46:48.082137372 +0800
创建时间:-
[root@localhost data]# touch aa #刷新时间
[root@localhost data]# stat aa #再次查看,可以看到时间都已经变掉了
文件:"aa"
大小:16 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:2433623 硬链接:3
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2022-02-12 00:43:18.188211188 +0800
最近更改:2022-02-12 00:43:18.188211188 +0800
最近改动:2022-02-12 00:43:18.188211188 +0800
创建时间:-
[root@localhost data]#
2.3 vim
vim 是一个很强大的文本编辑器,这里不展开介绍,只说明创建文件的功能
示例:
敲完这条命令会打开下图所示的编辑页面,按i进入编辑,按:再按wq保存退出
此时可以看到已经生成了1.txt这个文件
2.3 echo
echo命令用于在终端设备上输出字符串或变量提取后的值
也可用于创建新文件
示例:
这样就创建了一个空的2.txt文件
2.4 硬链接与软连接
- 为文件或目录建立链接文件,类似于windows的快捷方式
链接文件类型:
- 软链接(或符号链接)
- 硬链接
语法格式:
ln -s 源文件或目录 链接文件或目录位置 软链接
ln 源文件或目录 链接文件或目录位置 硬链接
对比项 | 硬连接 | 软连接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除新建不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同 | 源文件的路径的长度 |
硬链接指针指向inode号
软链接指针指向文件地址
示例:
1.创建软连接,这里要写绝对路径,以防其他目录下有相同的文件名
2.若将软链接的源文件删除,则软链接会提示报错,所以软链接仅仅是个快捷方式
3.创建硬链接
4.删除源文件,链接文件不会失效,此时链接数-1,相当于备份了一份,并且保留了所有属性
实际生产中,开发了一个服务,放在1文件夹中,要升级成2文件夹,1文件夹就无法使用,但是不可能让客户改变使用习惯,此时就可以将1文件夹做成链接文件,把2文件夹指向它
2.4 复制 改名cp
cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录。
cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。
语法格式:cp [参数] [文件]
常用参数:
-f | 若目标文件已存在,则会直接覆盖原文件 |
-i | 若目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-r | 递归复制文件和目录,复制目录是必须使用 |
-a | 与p类似,但更强大,能保留软链接属性 |
系统中默认设置了别名,cp就是cp -i,默认会询问
示例:
1.将data目录下的1.txt复制到opt目录下,并改名为fuzhi.txt
2.复制目录时必须使用-r,递归复制所有
3.还有个小注意点,第一次cp -r /opt/rh/ /data/111是复制到data下,并改名,第二次cp -r /opt/rh/ /data/111,则是复制到已经改好名字的111目录下,可以通过ll查看验证
注意,复制多个文件,后面只能跟文件夹,而且文件夹要存在
2.5 移动 改名 mv
mv命令是“move”单词的缩写,可以移动文件或对其改名,但是无法批量改名
语法格式:mv [参数] [参数]
常用参数:
-i | 若存在同名文件,则向用户询问是否覆盖 |
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
示例:
移动opt下的fuzhi.txt到data目录下,并改名为yidong.txt
2.6 改名 rename
rename命令用字符串替换的方式批量改变文件名。
语法格式:
rename [参数] 表达式 替换文件
参数:
-v | 解释正在进行的操作 |
-s | 在符号链接上执行 |
-h | 显示此帮助并退出 |
-v | 输出版本信息并退出 |
示例:
将所有的txt文件改为txt.bak文件
2.7 删除 rm
rm的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。
语法格式:rm [参数] [文件]
常用参数:
-f | 忽略不存在的文件,不会出现警告信息 |
-i | 删除前会询问用户是否操作 |
-r/R | 递归删除 |
-v | 显示指令的详细执行过程 |
这条命令也是系统默认设置了别名,删除前会询问用户是否操作,防止意外删除重要文件
示例:
1.这里就会提示是否删除
2.文件名中有特殊字符,会影响删除,所以取文件名的时候不要用特殊字符
三、查找
查找命令参考我专门写的查找命令详解查找命令
四、总结
查询文件/目录:ls、pwd、cd、alias、du ls通常用通配符
创建文件/目录:mkdir(目录)、touch(文件)、vim、echo
改名:cp、mv、rename(批量)