目录
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 \; ##不会询问
复制代码