Linux命令详解(2)
2023-12-21 06:41:01
Linux命令详解(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 |
[^zhou] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[[:alpha:]] | 任意字母 |
- *:匹配所有非隐藏的字符无论多长多短,但不匹配 “.” 开头的文件,即隐藏文件
- [0-9] 匹配数字范围(0123456789)
2、alias:设置别名
- 显示所有的别名
- alias:自定义的命令=‘原始命令’
- 使用命令alias建立的别名是临时性的,重启之后就没有了,需要写到编辑器
设置myis为ls -alh的别名:alias myis=‘ls -alh’
- 命令执行的顺序:(优先级)
绝对路径>别名>内部>hash>外部命令(先查找绝对路径,再查找别名,然后查找内部命令,缓存,最后外部)
3、du(disk usage: 查看磁盘使用量)
查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。
du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录(每个文件的大小) |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果(显示格式) |
-s(–summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小(总大小) |
–max-depth=n (-d 1) | 最大显示到第n层 |
–exclude | 不计入统计 |
- 注意:a 和 s 选项不能同时使用
ll: 看到的是文件的真实大小
du: 看到的是文件占了磁盘多少块(一块=4k,1块=8个扇区)一个文件不足4k,按4k算
[root@localhost etc]#du -d1: 只显示etc目录下的第一层
[root@localhost opt]#du --exclude=*.log: 排除已log结尾的
二、创建文件夹
1、mkdir:建立文件夹
mkdir: [选项] 目录位置及名称
mkdir a b c:创建多个文件夹a b c
mkdir -p:递归建立文件夹
mkdir -p aa/bb/cc: 递归创建文件夹
- mkdir a b c:创建文件夹a b c
- mkdir -p aa/bb/cc:创建目录/aa,再/aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc
2、touch:建立空文件
-
新建空文件:touch后面跟的文件名不存在
-
刷新文件时间:touch后面跟的文件已存在
stat /etc/passwd: 查看三种时间
touch /etc/passwd: 刷新三种时间
每个文件有三个时间戳:
- access time 访问时间,atime,读取文件内容
- modify time 修改时间,mtime,改变文件内容(数据)
- change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
3、硬连接与软连接文件
- 源文件用绝对路径
3.1 硬连接
- 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问
- 多了一种找到(inode号)文件的方法或者路径
ln 源文件 目的位置
建立硬连接:
[root@localhost opt]#mkdir /date
[root@localhost opt]#cd /date
[root@localhost date]#cp /etc/passwd /date/f1.txt
[root@localhost date]#ls
f1.txt
[root@localhost date]# ln /date/f1.txt ./hard
[root@localhost date]#ls
f1.txt hard
[root@localhost date]#ll
总用量 8
-rw-r--r--. 2 root root 2119 12月 20 21:36 f1.txt
-rw-r--r--. 2 root root 2119 12月 20 21:36 hard
[root@localhost date]#ll -i
总用量 8
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 f1.txt
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 hard
不能跨分区建立连接 无法对文件夹创建 :
[root@localhost date]#ln /date/f1.txt /data/f11.txt
ln: 无法创建硬链接"/data/f11.txt" => "/date/f1.txt": 没有那个文件或目录
[root@localhost date]#ln /data/f1.txt /data/f11.txt
ln: failed to access "/data/f1.txt": 没有那个文件或目录
3.2 软连接
- 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件
ln -s 源文件 目的位置
软连接:
[root@localhost date]#ll -i
总用量 8
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 f1.txt
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 hard
[root@localhost date]#ln -s /etc/ ./etcbak
[root@localhost date]#ll -i
总用量 8
34218356 lrwxrwxrwx. 1 root root 5 12月 20 21:59 etcbak -> /etc/
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 f1.txt
34218355 -rw-r--r--. 2 root root 2119 12月 20 21:36 hard
- 注意点:删除软连接文件夹的时候一定不能加 /
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
4、复制文件或目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
- cp 源文件 目标位置
常用选项
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,备份每天增加的量,差异备份(只对文件夹起作用) |
cp /etc/passwd /opt/123: 复制并改名
cp -r /etc/ /opt/etc/: 复制文件夹并改名(要复制文件夹一定要加 -r)
[root@localhost date]#cp /etc/passwd /opt/123
[root@localhost date]#cp -r /etc/ /opt/
[root@localhost date]#cp -r /etc/ /opt/etc.bak
[root@localhost date]#cp -r /etc/ /opt/etc.bak
[root@localhost date]#cp -r /etc/ /opt/etc.bak
cp:是否覆盖"/opt/etc.bak/etc/fstab"?
cp是别名 加\cp 直接覆盖
[root@localhost date]#\cp -r /etc/ /opt/etc.bak
[root@localhost date]#
5、mv移动或改名
- 改名:源文件和目标文件路径位置一样是改名
- 移动:源文件和目标文件路径位置不一样是移动,也可以是移动并改名
只能一个一个移动或改名
- -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
- -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
- -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
- -v:显示文件或目录的移动过程;
[root@localhost opt]#ls
0.log [1].txt 4.log 7.log a c f111.txt [passwd]. test
123 2.log 5.log 8.log aa etc f11.txt rh
1.log 3.log 6.log 9.log b etc.bak passwd shadow
[root@localhost opt]#mv /opt/test /opt/nihao
#将/opt中的/test改名为/nihao
[root@localhost opt]#ls
0.log [1].txt 4.log 7.log aa etc f11.txt [passwd].
123 2.log 5.log 8.log b etc.bak nihao rh
1.log 3.log 6.log 9.log c f111.txt passwd shadow
[root@localhost opt]#mv /opt/nihao /mnt/
#将/opt中的nihao移动到/mnt中
[root@localhost opt]#ls /mnt/
nihao
[root@localhost opt]#mv /opt/nihao /mnt/tese
mv: 无法获取"/opt/nihao" 的文件状态(stat): 没有那个文件或目录
[root@localhost opt]#
[root@localhost opt]#mv /opt/etc /mnt/test
#将/opt中的etc移动到/mnt中并改名为/test
[root@localhost opt]#ls /mnt/
nihao test
三、删除文件
rm [选项] 要删除的文件或目录
- -f、强制
- -i、交互
- -r 递归(删除目录需要)
命令:rm-rf
四、查找文件
which
which 命令|程序名 或 which -a 命令|程序名
如:which ls 查找ls命令的具体位置
1、locate
-
优点:快;
-
缺点:找的系统的数据库文件,不具备实时性
? 模糊查找,不够精确
2、find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精确查找
-
缺点:慢,在磁盘上一块一块的查找
-
优先:精确查找;选项多,查找的功能多
命令使用格式(通式):
find 范围 查找条件 处理动作
常用查找条件类型
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname “文件名称” 不区分大小写 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 find /etc -maxdepth 2 -mindepth 2 |
2.1 按层次查找
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
例:
find /etc/ -maxdepth 2
find /etc/ -mindepth 2
find /etc -maxdepth 2 -mindepth 2
2.2 对每个目录先处理目录内的文件,再处理目录本身
了解
-depth
-d #warning: the -d option is deprecated; please use -depth instead, because the latter is a POSIX-compliant feature
2.3 根据文件名和inode查找
-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-inum n #按inode号查找
了解
-iname "文件名称" #不区分字母大小写
-samefile name #相同inode号的文件
-links n #链接数为n的文件
2.4 根据属主、属组查找
-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件 无主
-nogroup #查找没有属组的文件
2.5 根据文件类型
-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
2.6 空文件或目录
-empty
indoe号
2.7 组合条件
与:-a ,默认多个条件是与关系 -a 可以省略
或:-o
非:-not !
2.8 根据文件大小来查找
-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感
#UNIT: #表示(#-1, #],如:6k 表示(5k,6k]
-#UNIT #表示[0,#-1],如:-6k 表示[0,5k]
+#UNIT #表示(#,∞),如:+6k 表示(6k,∞)
2.9 根据时间戳
#以“天”为单位
-atime [+|-]#
# #表示[#,#+1) 如#是3 3 到 4天
+# #表示[#+1,∞] 如#是3 代表 4天以上
-# #表示[0,#) 如#是3 3天以内
-mtime
-ctime
-atime
#以“分钟”为单位
-amin
-mmin
-cmin
找到30天以上,以log结尾的普通文件,移动到opt目录
find / -name "*log" -type f -mtime +30
2.10 排除目录
了解
#查找/etc/下,除/etc/security目录的其它所有.conf后缀的文件
find /etc -path '/etc/security' -a -prune -o -name "*.conf"
#查找/etc/下,除/etc/security和/etc/systemd,/etc/dbus-1三个目录的所有.conf后缀的文件
find /etc \( -path "/etc/security" -o -path "/etc/systemd" -o -path "/etc/dbus-1" \) -a -prune -o -name "*.conf"
#排除/proc和/sys目录
find / \( -path "/sys" -o -path "/proc" \) -a -prune -o -type f -a -mmin -1
find /etc \( -path "/etc/sane.d" -o -path "/etc/speech-dispatcher" \) -prune -o -name "*.conf"
2.11 处理动作
-print:默认的处理动作,显示至屏幕
-ls:显示详细信息
-delete:删除查找到的文件
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}:代表find找到的内容
\: 固定格式,代表结束
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
注意点:-ok:会有提示信息,-exec不提示
-exec:连接符,连接find和cp命令
-prune -o -type f -a -mmin -1
find /etc \( -path "/etc/sane.d" -o -path "/etc/speech-dispatcher" \) -prune -o -name "*.conf"
文章来源:https://blog.csdn.net/2301_81272194/article/details/135120313
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!