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:]]任意字母
  • *:匹配所有非隐藏的字符无论多长多短,但不匹配 “.” 开头的文件,即隐藏文件

image-20231220182558802

  • [0-9] 匹配数字范围(0123456789)

image-20231220183345956

2、alias:设置别名

  • 显示所有的别名
  • alias:自定义的命令=‘原始命令’
  • 使用命令alias建立的别名是临时性的,重启之后就没有了,需要写到编辑器

设置myis为ls -alh的别名:alias myis=‘ls -alh’

image-20231220185348823

  • 命令执行的顺序:(优先级)

绝对路径>别名>内部>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 选项不能同时使用

image-20231220190355244

ll: 看到的是文件的真实大小

du:  看到的是文件占了磁盘多少块(一块=4k,1块=8个扇区)一个文件不足4k,按4k算

[root@localhost etc]#du -d1: 只显示etc目录下的第一层

[root@localhost opt]#du --exclude=*.log: 排除已log结尾的

image-20231220192631187

image-20231220192259080

二、创建文件夹

1、mkdir:建立文件夹

mkdir: [选项] 目录位置及名称

mkdir a b c:创建多个文件夹a b c 

mkdir -p:递归建立文件夹

mkdir -p aa/bb/cc: 递归创建文件夹
  • mkdir a b c:创建文件夹a b c

image-20231220193715062

  • mkdir -p aa/bb/cc:创建目录/aa,再/aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc

image-20231220193332137

2、touch:建立空文件

  • 新建空文件:touch后面跟的文件名不存在

  • 刷新文件时间:touch后面跟的文件已存在

stat /etc/passwd: 查看三种时间

touch /etc/passwd: 刷新三种时间


每个文件有三个时间戳:

  1. access time 访问时间,atime,读取文件内容
  2. modify time 修改时间,mtime,改变文件内容(数据)
  3. change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )

image-20231220194908814

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。