查看切换显示目录
1. pwd(print work directory)
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /bin
[root@localhost bin]# ll /bin
lrwxrwxrwx. 1 root root 7 8月 31 19:00 /bin -> usr/bin
[root@localhost bin]# pwd -P
/usr/bin
#-P 显示真实路径 快捷方式 不是文件真正的路径
[root@localhost opt]# ln -s /opt/wq23/ /mnt/w23
#设置软连接
[root@localhost opt]# cd /mnt/wq23/
#切换到软连接
[root@localhost w23]# ls
#
[root@localhost w23]# pwd
#显示的是当前路径
/mnt/w23
[root@localhost k18]# pwd -P
#文件的真实路径
/opt/w23
2. cd
cd 目标位置 change directory
文件夹 位置 决定了你能访问的文件
| 命令 | 效果 |
|---|---|
| cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
| cd - | 到前一次目录 |
| 一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
| 两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
| “~用户名”形式开头” | 表示以指定用户的宿主目录(家目录)作为起点 |
| "."开头文件 | 表示隐藏文件 |
| ~wq23 (有个用户叫wq23 家目录为起点) | 表示以指定用户的宿主目录作为起点 |
相对路径表现
[root@localhost opt]# cat passwd
#此处省略了路径
[root@localhost opt]# cat ./passwd
#查看当前路径下的passwd文件
[root@localhost opt]# cd ./qw23/
#切换到当前目录下的 qw23 文件夹
[root@localhost qw23]#
[root@localhost qw23]# cd ../../
#切换到上两层的目录
[root@localhost /]#
3. ls(list)
ls [选项][文件或目录… ]
| 命令 | 效果 |
|---|---|
| -l | 长格式显示文件和目录列表 |
| -a | 显示全部包括文件 |
| -A | 显示全部文件或隐藏文件但不包括.和.. |
| -d | 只显示当前目录 |
| -h | 显示文件大小(人性化) |
| -R | 递归显示 |
| --color | 显示颜色 |
| -S | 文件大小排序 |
| -i | indoe号 |
[root@localhost ~]# ls -a
#显示所有 包括隐藏文件
. .bash_profile .dbus .tcshrc 图片 桌面
.. .bashrc .esd_auth .Xauthority 文档
anaconda-ks.cfg .cache .ICEauthority 公共 下载
.bash_history .config initial-setup-ks.cfg 模板 新建文本文档_(2).txt
.bash_logout .cshrc .local 视频 音乐
[root@localhost ~]# ls -A
#显示所有 不包括. ..的隐藏文件
anaconda-ks.cfg .bashrc .dbus .local 模板 下载
.bash_history .cache .esd_auth .tcshrc 视频 新建文本文档_(2).txt
.bash_logout .config .ICEauthority .Xauthority 图片 音乐
.bash_profile .cshrc initial-setup-ks.cfg 公共 文档 桌面
[root@localhost ~]# ls -d
#只显示本目录
.
[root@localhost ~]# ls -d /etc
/etc
[root@localhost ~]# ls -lh //加单位k友好显示
总用量 12K
-rw-------. 1 root root 2.0K 8月 31 19:05 anaconda-ks.cfg
-rw-r--r--. 1 root root 2.1K 8月 31 19:08 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 8月 31 19:09 公共
drwxr-xr-x. 2 root root 6 8月 31 19:09 模板
drwxr-xr-x. 2 root root 6 8月 31 19:09 视频
drwxr-xr-x. 2 root root 6 8月 31 19:09 图片
drwxr-xr-x. 2 root root 6 8月 31 19:09 文档
drwxr-xr-x. 2 root root 6 8月 31 19:09 下载
-rw-r--r--. 1 root root 781 9月 5 08:27 新建文本文档_(2).txt
drwxr-xr-x. 2 root root 6 8月 31 19:09 音乐
drwxr-xr-x. 2 root root 22 9月 15 17:57 桌面
[root@localhost ~]# ls -R //递归显示
.:
anaconda-ks.cfg 公共 视频 文档 新建文本文档_(2).txt 桌面
initial-setup-ks.cfg 模板 图片 下载 音乐
./公共:
./模板:
./视频:
./图片:
./文档:
./下载:
./音乐:
./桌面:
ens33.sh
颜色表示的文件类型:
- 黑色数据文件 普通文件
- 绿色 可执行文件
- 黄色 块设备文件硬件设备(硬盘)
- 红色 压缩包
- 蓝色 文件夹
- 天蓝色 链接文件(快捷方式)
[root@localhost ~]# vim /etc/DIR_COLORS
7大文件类型
| 第一个字符 | 文件类型 |
|---|---|
| - | 普通文件 |
| d | 文件夹 |
| b | 块(硬盘) |
| c | 字符 |
| s | 套接字 |
| p | 管道 |
| l | 连接 |
file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓
4. 通配符
| 符号 | 效果 |
|---|---|
| ? | 匹配一个字符 f?.txt |
| * | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
| {1..10} {0..9} | 1到10 |
| {a..z} | a b c ...z |
| {A..Z} | A B C .....Z |
| [123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
| [a-z]单个小写字母 | 范围需要注意 |
| [0-9]单个数字 | 匹配数字范围(0123456789) |
| \ | 转义符,表示原来的意思 |
| [[:lower:]] | 小写字母表示 a-z |
| [[:upper:]] | 大写字母表示 A-Z |
| [^qwe] | 匹配列表中的所有字符以外的字符 |
| [[:digit:]] | 任意数字,相当于0-9 |
[root@localhost kt]# touch {a..z}
[root@localhost kt]# touch {A..Z}
[root@localhost kt]# ls
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@localhost kt]# ls [a-z]
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y
[root@localhost kt]# ls [a-Z]
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@localhost kt]# ls [A-Z]
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
b c d e f g h i j k l m n o p q r s t u v w x y z
[root@localhost kt]# touch {0..9}
[root@localhost kt]# ls [0-9]
0 1 2 3 4 5 6 7 8 9
[root@localhost data]# ls /etc/.*
#显示隐藏文件也包括.. 的上层目录
#如果不想看上层目录 就要加-d 只显示当前目录
[root@localhost data]# ls /etc/.* -d
#只显示当前目录
/etc/. /etc/.. /etc/.java /etc/.pwd.lock /etc/.updated
5. alias
临时修改
- alias 命令别名 = ’命令‘
- unalias 别名命令 删除别名
- \加别名命令 (显示原始命令)
[root@localhost ~]# mkdir dev
[root@localhost ~]# cd dev
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
#如果不加引号无法识别
[root@localhost dev]# alias myls=ls -alh
-bash: alias: -alh: 未找到
#使用原来的命令
[root@localhost dev]# ls
[root@localhost dev]# \ls
#删除别名
[root@localhost dev]# unalias myvim
[root@localhost dev]# myvim
bash: myvim: 未找到命令...
永久修改
- 在/etc/.bashrc 会影响全部
- /root/.bashrc只影响当前用户( 当前用户的家目录 )root
绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)
命令执行的顺序
1 绝对路径下的执行程序
2 先看别名,如果有别名 直接执行
3 再区别是 内部 还是外部, 内部直接执行
4 外部 首先看hash表,表中直接执行,表中有但是找不到直接报错
5 没有hash 回去$PATH 路径下的文件夹去找,找到执行,找不到直接报错 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
6. du(disk usage)
查看当前所在文件夹的总磁盘占用量
du [选项] [文件或目录… ]
| 选项 | 说明 |
|---|---|
| -a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
| -h | 人性化显示 |
| -s(--summarize) | 只统计所占用空间总的大小 |
| --max-depth=n (-d 1) | 最大显示到第n层 |
文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth(-d) 选项来进行控制。
注意: -a -s无法同时使用
创建
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
- 除了斜杠和NULL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用。
1. mkdir(创建空文件夹)
[root@localhost data]# mkdir a b c d
#创建多个文件夹
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/ccc
# 递归创建文件夹
[root@localhost data]# ls
a aaa b c d
[root@localhost data]# tree
.
├── a
├── aaa
│ └── bbb
│ └── ccc
├── b
├── c
└── d
7 directories, 0 files
2. touch
- touch 新文件…(可为空)
- touch 不会破坏已有文件 刷新时间
每个文件有三个时间戳:
- access time 访问时间,atime,读取文件内容
- modify time 修改时间,mtime,改变文件内容(数据)
- change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
[root@localhost data]# touch 1 2 3
[root@localhost data]# ls
1 2 3 a aaa b c d
[root@localhost data]# echo "" > 4
[root@localhost data]# ls
1 2 3 4 a aaa b c d
[root@localhost bin]# stat /etc/passwd
##############查看三种时间
文件:"/etc/passwd"
大小:2107 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33941093 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2022-09-20 16:21:07.466009404 +0800
最近更改:2022-08-31 19:04:41.712057230 +0800
最近改动:2022-08-31 19:04:41.712057230 +0800
创建时间:-
[root@localhost bin]# touch /etc/passwd
#################刷新三种时间
[root@localhost bin]# stat /etc/passwd
文件:"/etc/passwd"
大小:2107 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33941093 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2022-09-20 17:27:56.171802862 +0800
最近更改:2022-09-20 17:27:56.171802862 +0800
最近改动:2022-09-20 17:27:56.171802862 +0800
创建时间:-
access time atime 最近打开文件的时间如果你不打开文件是不会刷新的
change time ctime 属性权限改变
modify time mtime 内容改变属性(大小)
3.硬连接与软连接
硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。
软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件ln(link)
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 本质是同一个文件 | 本质不是同一个文件 |
| inode(身份证号) | 相同 | 不同 |
| 连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
| 文件夹 | 不支持 | 支持 |
| 删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
| 文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
| 文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
软连接 (一定要使用绝对路径)
[root@localhost data]# ln -s ./passwd /opt/soft
[root@localhost data]# cd /opt/
[root@localhost opt]# ls
rh soft
[root@localhost opt]# cat soft
cat: soft: 没有那个文件或目录
[root@localhost opt]# ls
rh soft
硬链接(不支持文件夹)
[root@localhost opt]# ln /mnt/ /opt/hard1
ln: "/mnt/": 不允许将硬链接指向目录
4.cp(copy)
- cp [选项]… 源文件 目标 相当改名复制
- cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
| 选项 | 说明 |
|---|---|
| -f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
| -i | 覆盖目标同名文件或目录时提醒用户确认 |
| -p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
| -r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
| -a | 完整保留所有的信息包括连接文件 |
| -v | 可视化 |
| -u | 相当于增备,差异备份 |
| -b | 先备份(只保留最近) |
如果已有文件夹会生成子目录
[mk@localhost ~]$ ll
#mk用户新建文件
总用量 0
-rw-rw-r--. 1 mk mk 0 8月 29 11:17 mk
[root@localhost mk]# cp -a mk /data/
#保留所有权限 包括软连接文件
[root@localhost data]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月 29 11:06 1
-rw-rw-r--. 1 mk mk 0 8月 29 11:17 mk
[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖
[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f11.txt
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f11.txt" 不是目录
5.rm(删除)
rm [选项] 要删除的文件或目录
- -f、强制
- -i、交互
- -r 递归(删除目录需要)
[root@localhost ~]# rm -rf / #不让执行
[root@localhost ~]# echo * #删根后查看
[root@localhost ~]# rm -rf /data/*
[root@localhost ~]# rm -rf /data /* ##之间的区别误操作,等于删根
删除特殊的文件
[root@localhost ~]# touch ./-f
# -开头的文件
[root@localhost ~]# ls
[root@localhost ~]# rm -f -f
#删除不掉
[root@localhost ~]# rm -f ./-f
#需要加路径
[root@localhost ~]# touch ./-f
[root@localhost ~]# rm -- -f
rm:是否删除普通空文件 "-f"?y
文件删除后空间不释放:
1.有其他用户正在使用
2.echo “ 1” > 大文件
6. 移动 改名
mv [选项] … 源文件或目录… 目标文件或目录 单个文件
移动 或者改名
批量
rename log log.bak* //所有 log文件改成 log.bak
rename 旧字符 新字符 目标文件
[root@localhost opt]# ls
0 1 2 3 4 5 6 7 8 9
[root@localhost opt]# touch {a..z}.txt
[root@localhost opt]# ls
0 3 6 9 c.txt f.txt i.txt l.txt o.txt r.txt u.txt x.txt
1 4 7 a.txt d.txt g.txt j.txt m.txt p.txt s.txt v.txt y.txt
2 5 8 b.txt e.txt h.txt k.txt n.txt q.txt t.txt w.txt z.txt
[root@localhost opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@localhost opt]# ls
0 4 8 c.txt.bak g.txt.bak k.txt.bak o.txt.bak s.txt.bak w.txt.bak
1 5 9 d.txt.bak h.txt.bak l.txt.bak p.txt.bak t.txt.bak x.txt.bak
2 6 a.txt.bak e.txt.bak i.txt.bak m.txt.bak q.txt.bak u.txt.bak y.txt.bak
3 7 b.txt.bak f.txt.bak j.txt.bak n.txt.bak r.txt.bak v.txt.bak z.txt.bak
查找文件
1. find
1.特点:
- 精确查找
- 实时查找 遍历(慢)
- 支持查找条件较多
重启预定维护
2.格式:
find [OPTION]... [查找路径] [查找条件] [处理动作]
3.查找路径:指定具体目标路径;默认为当前目录
查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
3.常用可选项
| 查找类型 | 关键字 | 说明 |
|---|---|---|
| 按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
| 按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
| 按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
| 按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
| 按inode号 | -inum | 根据文件inode号查找 |
| 按权限查找 | -perm | 按文件权限查找 |
| 最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
| 最小搜索目录深度 | -mindepth level | 将你的文件已分级的形式查找 |
按名称查找 -name
[root@localhost ~]# find /etc/ -name passwd //查找文件名为passwd的文件
/etc/pam.d/passwd
/etc/passwd
[root@localhost ~]# find /etc/ -name '*.conf' //查找以.conf结尾的文件
/etc/resolv.conf
/etc/fonts/conf.d/57-dejavu-serif.conf
/etc/fonts/conf.d/65-1-vlgothic-gothic.conf
/etc/fonts/conf.d/31-cantarell.conf
[root@localhost ~]# find /etc/ -name 'vm*' //查找以vm开头的文件
/etc/abrt/plugins/vmcore.conf
/etc/pam.d/vmtoolsd
/etc/xdg/autostart/vmware-user.desktop
/etc/libreport/events.d/vmcore_event.conf
按文件大小查找 -size
[root@localhost ~]# find -size 2M
./.cache/tracker/meta.db
./.cache/tracker/meta.db-wal
按文件属主查找 -user
[root@localhost ~]# find /mnt -user root
/mnt
按文件类型查找 -type
[root@localhost ~]# find /boot -type d
/boot
/boot/efi
/boot/efi/EFI
/boot/efi/EFI/centos
/boot/grub2
/boot/grub2/i386-pc
/boot/grub2/locale
/boot/grub2/fonts
/boot/grub
-
find -size 1G:查找的是从0G到1G,不包括0G,即(0,1]。
-
find -size 1024M:查找的是从1023M到1024M,不包括1023M,即(1023,1024]。
总结: 在输入命令前一定要先做好快照保存配置,输命令时要先确认格式知否正确,尤其是删除指令,一不小心会把根目录删除。