1. 帮助命令
1.1 help
- 查看内部命令的帮助
格式:
help + 内部命令
- 查看外部命令的帮助
格式:
外部命令 + --help
1.2 man
- man分九个章节默认打开第一章节(menu菜单 manual手册)
2. 查看切换显示目录
2.1 pwd(print work directory)
[root@localhost ~]#pwd ##查询目录路径
/root
2.2 cd (change directory)
| 选项 | 说明 |
|---|---|
| cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
| cd - | 到前一次目录 |
| cd . | 表示以当前的工作目录作为起点 |
| cd .. | 表示以当前目录的上一级目录(父目录)作为起点 |
| cd ~ | 表示以指定用户的宿主目录(家目录)作为起点 |
相对路径:以当前的工作目录作为起点
绝对路径:以根目录为起点
3. ls
3.1 ls的选项
格式:
ls [选项] [文件或目录… ]
| 选项 | 说明 |
|---|---|
| -l | 以长式显示文件和目录列表 ll=ls -l |
| -a | 显示全部包括隐藏文件 |
| -A | 显示全部文件或隐藏文件,但不包括 . 和.. |
| -d | 仅列出目录本身,而不是列出目录内的文件数据 |
| -h | 友好显示文件大小(human,人性化) |
| -R | 递归显示该目录及该目录的子目录下的所有内容 |
| --color | 显示颜色 |
| -S | 以文件容量大小排序 |
3.2 ll
[root@localhost mnt]# ll
总用量 0
drwxr-xr-x 2 root root 6 7月 21 15:13 aa
// 第一个字段 d 代表文件类型比如 d是目录 - 是普 通文件
//第2-9(rwxr-xr-x)字母表示该文件的权限
//root 文件所有者
// root 文件所属组
//6 文件大小
//21 15:13 文件的最近使用时间
//aa 文件或目录名称
文件类型
- 普通文件
d 目录文件directory
l 符号链接文件link
b 块设备block 比如直接读1块 /dev 4k (512*8(扇区)=4096字节=4k)
c 字符设备character 一个字符一个字符读取/dev/zero (/dev/null)
p 管道文件pipe 两个软件联系 A-管道文件-B A写 B 读 单向的
s 套接字文件socket 可以双向的
-
ls一般不单独使用
- 功能有限 要加上选项
- ls单独使用 显示当前文件夹下的所有文件
-
ls会配合通配符去过滤需要的文件
3.2.1 通配符
| 符号 | 效果 |
|---|---|
| ? | 匹配一个字符 f?.txt |
| * | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
| {1..10} | 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 |
| [^can] | 匹配列表中的所有字符以外的字符 |
| [[:digit:]] | 任意数字,相当于0-9 |
简要举例: ?、*、{1..10}
[root@localhost ~]#touch fff.txt ##创建fff.txt
[root@localhost ~]#ls f?.txt ##查询f后一个字符匹配的文件
ls: 无法访问f?.txt: 没有那个文件或目录
[root@localhost ~]#ls ##查看当前目录的文件
aa anaconda-ks.cfg a.txt fff.txt
[root@localhost ~]#ls f??.txt ##查询f后两个字符匹配的文件
fff.txt
[root@localhost ~]#ls *.txt
a.txt fff.txt
[root@localhost ~]#touch {1..10}.txt ##创建名字1-10的txt文件
[root@localhost ~]#ls {1..10}.txt ##查询名字1-10的txt文件
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
4. alias(临时修改)
4.1 alias
alias 命令别名 = ‘命令’
[root@localhost ~]#alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33' ##创建别名
[root@localhost ~]#myvim ##使用别名
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=efd7568d-1edb-4fa5-a50e-14f71303df83
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.100
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=8.8.8.8
DNS2=114.114.114.114
4.2 unalias
unalias 别名命令 删除别名
[root@localhost ~]#unalias myvim ##删除别名
[root@localhost ~]#myvim
-bash: myvim: 未找到命令
4.3 命令优先级别
别名>内部>hash>外部
5. du
du(disk use) 查看文件或目录 占用磁盘的空间大小
| 选项 | 说明 |
|---|---|
| -a | 分开显示每个文件的大小 |
| -s | 显示当前文件夹的 总大小 |
| -h | 人性化显示 |
5.1 du和ls的区别
- du 只是统计文件所占磁盘的大小
- ls 显示文件实际大小
5.2 a和s不能同时使用
[root@localhost ~]#du -as
du: 不能既显示总用量,同时又显示每个项目
Try 'du --help' for more information.
5.3 /etc 目录 下 第一层文件夹占用多少磁盘空间?
du -d 1 /etc
-d 代表目录层数
1 代表目录层数的第一层
答案
[root@localhost ~]#du -d 1 /etc/
948 /etc/pki
12 /etc/rpm
40 /etc/yum.repos.d
24 /etc/yum
136 /etc/lvm
0 /etc/pkcs11
0 /etc/cron.monthly
4 /etc/rwtab.d
12 /etc/cron.daily
4 /etc/sasl2
8 /etc/groff
36 /etc/iproute2
72 /etc/grub.d
28 /etc/logrotate.d
68 /etc/openldap
0 /etc/gnupg
8 /etc/dhcp
604 /etc/ssh
4 /etc/depmod.d
4 /etc/my.cnf.d
96 /etc/dbus-1
0 /etc/dracut.conf.d
12 /etc/modprobe.d
0 /etc/binfmt.d
64 /etc/profile.d
0 /etc/modules-load.d
32 /etc/systemd
0 /etc/sysctl.d
4 /etc/rsyslog.d
4 /etc/X11
4 /etc/bash_completion.d
0 /etc/opt
0 /etc/pm
12 /etc/skel
340 /etc/sysconfig
0 /etc/xdg
6. mkdir
mkdir (创建空文件夹)
命令格式:mkdir [选项] 需要创建的文件夹
-p 递归创建文件夹
-v 显示详细过程
[root@localhost data]#mkdir a ##创建一个名叫a的文件夹
[root@localhost data]#ls ##查看当前目录的文件
a
[root@localhost data]#mkdir -p aa/bb/cc ##在当前目录下创建aa/bb/cc三层文件夹
[root@localhost data]#tree ##查看目录分层
.
├── a
└── aa
└── bb
└── cc
4 directories, 0 files
[root@localhost data]#mkdir -pv 11/22/33 ##创建分层目录并显示过程
mkdir: 已创建目录 "11"
mkdir: 已创建目录 "11/22"
mkdir: 已创建目录 "11/22/33"
7. touch
命令格式:touch 需要创建的文件
如果当前文件夹下没有同名的文件,touch 文件名 ##新建一个文件
[root@localhost opt]#touch 1.txt ##创建1.txt文件
[root@localhost opt]#ls ##查看当前目录下的文件
1.txt
如果当前文件夹下有同名的文件 ,刷新修改此文件的时间
8. 软连接和硬连接
软连接格式:ln -s 源文件(夹)路径 目标文件夹路径
源文件(夹)路径一定是绝对路径
| 对比项 | 硬链接 | 软链接 |
|---|---|---|
| 本质 | 本质是同一个文件 | 本质不是同一个文件 |
| inode | 相同 | 不同 |
| 连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
| 文件夹 | 不支持 | 支持 |
| 删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
| 文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
| 文件大小 | 和源文件相同 | 源文件的路径的长度 |
查看Inode号:ls -i
9. cp
命令格式:cp [选项] 需要复制的文件(夹) 复制到的目录
| -f | 有相同文件时强制覆盖不提醒 |
|---|---|
| -i | 有相同文件时覆盖提醒 |
| -p | 保留文件的源权限 |
| -r | 复制文件夹一定需要 |
| -a | 保留权限 更强大 包括连接文件的属性也可以保留建议使用-a |
10. mv
命令格式:mv [选项] 需要移动的文件(夹) 移动到的目录
功能:移动和改名
| 选项 | 说明 |
|---|---|
| -f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
| -i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项); |
| -n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
| -v | 显示文件或目录的移动过程; |
[root@localhost opt]#mv /data/ ./dat ##移动data到当前目录下并改名
[root@localhost opt]#ls ##查看当前目录下的文件
1.txt dat
11. rm
命令格式:rm [选项] 要删除的文件或目录
| 选项 | 说明 |
|---|---|
| -f | 强制 |
| -i | 交互 |
| -r | 递归(删除目录需要) |
[root@localhost opt]#ls /*查看当前目录*/
1.txt dat
[root@localhost opt]#rm -rf /opt/* ##强制删除opt目录下的所有文件
[root@localhost opt]#ls ##查看当前目录
[root@localhost opt]#
12. 查询命令
12.1 which
命令格式:which 需要找的东西
只能找命令的位置:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
12.2 locate
工作特点
1.模糊查询
2.不是实时查询
| 选项 | 说明 |
|---|---|
| -i | 不区分大小写的搜索 |
| -n# | 只列举前#个匹配项目 |
| -r | 支持正则 |
linux系统中有一个文件数据库,是去找这个数据库,找那些一直不改变的文件
应用范围比较窄
优点:巨快
updatedb 刷新数据库
12.3 find
优点:
-
默认递归查询
-
它是真的去硬盘上一个一个文件给你找(实时)
-
查找条件巨多
-
精确查找
基本格式: find [查找范围] [查找条件表达式] [查找范围]: 如果 不写 范围 代表 默认当前目录
按查找文件名字查找 -name
[root@localhost data]#find /boot/ -name 'vm* ##查找名字是以vm开头的文件'
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/vmlinuz-0-rescue-869dbd607e5e4f758fa152ef2229f2b6
按文件大小查找文件 -size
[root@localhost data]#find /boot/ -size +1024k #查找boot目录下 大于1024k 的文件
[root@localhost data]#find /boot/ -size -1M #查找boot目录下 小于1M的文件
注意点:文件大小不加加减号是一定的范围,单位越精确越好
[root@localhost data]#find /boot/ -size 1024k
[root@localhost data]#find /boot/ -size 1M
范围公式:
1024k 1023k 到 1024k
1M 1字节 到 1M
按文件属主查找 -user
属主:文件的拥有者
[root@localhost data]#find /home/ -user can #找到home 目录下 属于can用户的文件
按文件类型查找 -type
| 选项 | 说明 |
|---|---|
| f | 普通文件 |
| d | 目录 |
| c | 字符文件 |
| b | 块设备 |
[root@localhost data]#find /dev/ -type b #找到/dev下的块设备文件
按照 indoe号查找 -inum
[root@localhost mnt]#ls -i ##查看inode号
100724114 1.txt 416842 aa 33596393 hgfs
[root@localhost mnt]#find -inum 100724114 ##按照inode号查询
./1.txt
按照目录层级查找文件 -maxdepth level -mindepth level
[root@localhost ~]#find /boot/ -maxdepth 1 -mindepth 1 ##只看boot目录下的第1层
/boot/efi
/boot/grub2
/boot/grub
/boot/.vmlinuz-3.10.0-693.el7.x86_64.hmac
/boot/System.map-3.10.0-693.el7.x86_64
/boot/config-3.10.0-693.el7.x86_64
/boot/symvers-3.10.0-693.el7.x86_64.gz
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/initrd-plymouth.img
/boot/initramfs-0-rescue-8f6e7ca6206141ecb291f991a1e04432.img
/boot/vmlinuz-0-rescue-8f6e7ca6206141ecb291f991a1e04432
/boot/.vmlinuz-3.10.0-1160.71.1.el7.x86_64.hmac
/boot/System.map-3.10.0-1160.71.1.el7.x86_64
/boot/config-3.10.0-1160.71.1.el7.x86_64
/boot/symvers-3.10.0-1160.71.1.el7.x86_64.gz
/boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
/boot/initramfs-3.10.0-693.el7.x86_64kdump.img
/boot/initramfs-3.10.0-1160.71.1.el7.x86_64.img
/boot/initramfs-3.10.0-693.el7.x86_64.img
天数查找文件 -mtime
root@localhost ~]#find /boot/ -mtime +7 -type f -size +1M ##找到 7天以上且文件类型为普通文件且大于1M的文件
/boot/grub2/fonts/unicode.pf2
/boot/System.map-3.10.0-693.el7.x86_64
/boot/vmlinuz-3.10.0-693.el7.x86_64
/boot/initramfs-0-rescue-8f6e7ca6206141ecb291f991a1e04432.img
/boot/vmlinuz-0-rescue-8f6e7ca6206141ecb291f991a1e04432
/boot/System.map-3.10.0-1160.71.1.el7.x86_64
/boot/vmlinuz-3.10.0-1160.71.1.el7.x86_64
处理动作
| 处理动作 | 说明 |
|---|---|
| 输出屏幕让你看一下 | |
| ls | 显示详细信息 |
| delete | 直接删除 |
| ok | 连接符会询问 |
| exec | 连接符不会询问 |
find -name "*.txt" -ok mv {} /mnt \; ## 找到名字以txt结尾的文件并移动到mnt目录下
-ok 处理动作连接前面后面的命令会询问你要不要这样处理
mv {} 代指前面 find找到的文件
/mnt 移动到的目录
\;固定格式
find -name '*.txt' -ok mv {} /mnt \; ## 会询问
find -name '*.txt' -exec mv {} /mnt \; ##不会询问