当前位置: 首页 > news >正文

Linux中的文件的常用命令

Linux中的常见命令

一、关于shell

​ 在 Linux 中,Shell 是用户与操作系统内核之间的接口程序,它接收用户输入的命令并将其翻译成操作系统可以理解的指令,然后将结果返回给用户。

1.shell版本

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

2.shell命令提示符:

  • 例:[root@localhost 桌面]#
  • root:当前用户身份
  • localhost:当前主机短名称
  • 桌面:当前所在系统的目录名称
  • 身份提示符:# 当前用户是管理员 $ 当前用户是普通用户

3.shell命令

3.1 命令格式

命令 参数 对象

例:rm -r dir

  • 命令必须要在行提示符之后输入;
  • 命令和参数和对象之间必须用空格隔开,多条命令用分号(;)隔开;

3.2 参数

​ 参数就是一个程序的=特殊功能的调用标识。

  • 短选项:例:-l -d 如果同一命令同时使用多个短选项,多数可合并( -a -b -c = -abc ),有些命令没有-。
  • 长选项:例:–help

4.查看系统信息相关命令

  • 查看当前系统类型
[root@localhost 桌面]# uname
Linux
  • 查看当前Linux发行版本
[root@localhost 桌面]# cat /etc/redhat-release 
Red Hat Enterprise Linux release 9.4 (Plow)
  • 查看内核版本
[root@localhost 桌面]# uname -r
5.14.0-427.13.1.el9_4.x86_64
  • 查询系统所有信息
[root@localhost 桌面]# uname -a
Linux localhost.localdomain 5.14.0-427.13.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 10 10:29:16 EDT 2024 x86_64 x86_64 x86_64 GNU/Linux

解读:

  1. “Linux localhost:表示操作系统是 Linux,主机名为 “localhost.localdomain”。
  2. “5.14.0-427.13.1.el9_4.x86_64”:这是内核版本号,其中 “el9_4” 可能表示是某个特定的发行版版本号分支,“x86_64” 表示系统是 64 位架构。
  3. #1 SMP PREEMPT_DYNAMIC Wed Apr 10 10:29:16 EDT 2024”:表明这是一个对称多处理(SMP)系统,采用抢占式动态内核,构建时间为 2024 年 4 月 10 日。
  4. “x86_64 x86_64 x86_64 GNU/Linux”:再次强调系统是 64 位架构,以及操作系统是基于 GNU 的 Linux 系统。
  • 查看shell
#查看shell版本
[root@localhost 桌面]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash#查看当前使用shell版本
[root@localhost 桌面]# echo $SHELL
/bin/bash

二、Linux中的文件相关的常见命令

1.文件的命名规则:

  • 不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的
  • 文件名不能超过255个字符
  • 区分大小写file File FILE fIle root Root ROOT rOOt ROOT
  • 目录也是文件,在同一路径下,两个不同类型文件不能同名

2.新建文件

2.1新建普通文件—touch

touch的用法

1.如果文件不存在,则新建文件

  • 格式:
touch 文件名1 文件名2 文件名3touch {文件名1,文件名2,文件名3}
  • 例:
[root@localhost Desktop]# touch a,b,c
[root@localhost Desktop]# touch {a,b,c}
[root@localhost Desktop]# touch {a,b,c}.txt
[root@localhost Desktop]# touch {a,b}{c,d}
[root@localhost Desktop]# touch abc{1..100}

2.如果文件存在,则修改时间戳

[root@localhost Desktop]# stat ./hhjFile: ./hhjSize: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 804h/2052d	Inode: 2280787     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-10-22 19:42:55.551148439 +0800
Modify: 2024-10-22 19:42:55.551148439 +0800
Change: 2024-10-22 19:42:55.551148439 +0800Birth: 2024-10-22 19:42:55.551148439 +0800# 分析
# Access,即access time,访问文件的时间,查看了一下文件内容(cat),文件的atime时间会更新
# Modify,即modify time,修改内容的时间,文件内容被改变了,ctime会更新
# Change,即change time,修改文件元数据的时间
2.2 创建链接文件

1.硬盘数据分类

  • 用户数据(user data):即文件的数据块(data block),存储数据真实空间
  • 元数据(metadata):存储文件附加属性,如:文件的大小、创建的时间、所有者等信息

2.硬链接

  • 定义和原理

    • 硬链接是多个文件名指向同一个 inode(索引节点)。可以理解为同一个文件有多个不同的文件名,它们都直接指向文件的存储位置。

    • 当创建硬链接时,实际上是为文件增加了一个新的文件名,而不是创建一个新的文件副本。

    • 例如,文件 /home/user/original.txt 有一个硬链接 /home/user/link1.txt,这两个文件名指向同一个存储位置和 inode。

  • 特点

    • inode 相同:硬链接与原文件具有相同的 inode 编号,这表明它们在文件系统中是同一个文件的不同名称。
    • 文件大小一致:硬链接的文件大小与原文件相同,因为它们指向同一个存储位置。
    • 相对独立:即使原文件名被删除,只要还有一个硬链接存在,文件的数据仍然可以访问。
  • 创建方式:使用 ln 命令创建,语法为 ln 源文件 硬链接文件。例如:ln /home/user/original.txt /home/user/link1.txt

  • 限制

    • 不能跨文件系统创建硬链接。因为不同的文件系统有不同的 inode 编号分配方式,无法在不同文件系统中为同一个文件创建多个名称。
    • 不能对目录创建硬链接。这是为了防止文件系统的结构变得复杂和难以管理。

3.软链接

  • 定义和原理
    • 软链接是一个独立的文件,它包含了指向另一个文件或目录的路径。可以看作是 Windows 中的快捷方式。
    • 当访问软链接时,系统会自动重定向到它所指向的目标文件或目录进行操作。
    • 例如,创建一个软链接 /home/user/soft_link.txt 指向 /home/user/original.txt,访问软链接时实际上是在访问目标文件。
  • 特点
    • inode 不同:软链接有自己独立的 inode 编号,与目标文件不同。
    • 文件大小较小:软链接的文件大小通常较小,它只包含指向目标文件的路径信息。
    • 依赖目标文件:如果目标文件被删除或移动,软链接将变为无效。
  • 创建方式:使用 ln -s 命令创建,语法为 ln -s 源文件 软链接文件。例如:ln -s /home/user/original.txt /home/user/soft_link.txt
  • 优势
    • 可以跨文件系统创建软链接,因为软链接只是包含了一个指向目标文件的路径,与文件系统的 inode 结构无关。
    • 可以对目录创建软链接,这在某些情况下非常方便,例如需要快速访问一个深层目录时,可以在容易访问的位置创建一个软链接指向该目录。

4.Linux系统中软链接与硬链接的区别

1.定义与原理

  • 硬链接
    • 硬链接是多个文件名指向同一个 inode(索引节点)。可以理解为同一个文件有多个不同的文件名,它们都直接指向文件的存储位置。
    • 当创建硬链接时,实际上是为文件增加了一个新的文件名,而不是创建一个新的文件副本。
    • 例如,文件 /home/user/original.txt 有一个硬链接 /home/user/link1.txt,这两个文件名指向同一个存储位置和 inode。
  • 软链接(符号链接)
    • 软链接是一个独立的文件,它包含了指向另一个文件或目录的路径。可以看作是 Windows 中的快捷方式。
    • 当访问软链接时,系统会自动重定向到它所指向的目标文件或目录进行操作。
    • 例如,创建一个软链接 /home/user/soft_link.txt 指向 /home/user/original.txt,访问软链接时实际上是在访问目标文件。

2.文件属性

  • inode 编号

    • 硬链接与原文件具有相同的 inode 编号,这表明它们在文件系统中是同一个文件的不同名称。
    • 软链接有自己独立的 inode 编号,与目标文件不同。
  • 文件大小

    • 硬链接的文件大小与原文件相同,因为它们指向同一个存储位置。
    • 软链接的文件大小通常较小,它只包含指向目标文件的路径信息。

3.创建方式

  • 硬链接:使用 ln 命令创建,语法为 ln 源文件 硬链接文件。例如:ln /home/user/original.txt /home/user/link1.txt
  • 软链接:使用 ln -s 命令创建,语法为 ln -s 源文件 软链接文件。例如:ln -s /home/user/original.txt /home/user/soft_link.txt

4.对源文件的依赖

  • 硬链接
    • 相对独立于源文件。即使源文件名被删除,只要还有一个硬链接存在,文件的数据仍然可以访问。
    • 例如,删除 /home/user/original.txt,但 /home/user/link1.txt 仍然可以访问文件内容。
  • 软链接
    • 依赖于目标文件。如果目标文件被删除或移动,软链接将变为无效。
    • 例如,如果删除 /home/user/original.txt/home/user/soft_link.txt 将无法访问到文件内容,会出现错误提示。

5.跨文件系统

  • 硬链接:不能跨文件系统创建硬链接。因为不同的文件系统有不同的 inode 编号分配方式,无法在不同文件系统中为同一个文件创建多个名称。
  • 软链接:可以跨文件系统创建软链接,因为软链接只是包含了一个指向目标文件的路径,与文件系统的 inode 结构无关。
2.3 创建大容量文件
  • 作用:制作指定个数及容量的空文件

  • 格式

dd if=来源 of=新文件名 count=数据块个数 bs=块容量
  • 分析

    • if(input file):指定输入文件或设备。

    • of(output file):指定输出文件或设备。

    • bs(block size):指定数据块的大小。例如,bs=4k表示数据块大小为 4KB。

    • count:指定要复制的数据块数量。

  • 例:

    #创建指定容量大小的空文件[root@localhost Desktop]# dd if=/dev/zero of=/root/Desktop/b bs=1M count=20
    20+0 records in
    20+0 records out
    20971520 bytes (21 MB, 20 MiB) copied, 0.0635275 s, 330 MB/s
    [root@localhost Desktop]# du -sh b
    20M	b
    [root@localhost Desktop]# 
    

3.建立目录–mkdir

  • 格式:
mkdir  目录名  #目录是存放文件的容器,也是一个文件,不能和文件重名
  • 例:
[root@localhost Desktop]# mkdir AAA[root@localhost Desktop]# mkdir A B C[root@localhost Desktop]# mkdir A/B/#	-p	当父级目录不存在时,自动创建
[root@localhost Desktop]# mkdir -p A/B/C/D/E

3.删除文件和目录–rm

  • 格式
删除文件:rm  文件名
删除目录:rm  -r  目录
强制删除不确认: rm  -f  文件名
  • 例:
[root@localhost Desktop]# rm hhj
rm: remove regular empty file 'hhj'? y[root@localhost Desktop]# rm -r ./A/
rm: descend into directory './A/'? y
rm: descend into directory './A/B'? y
rm: descend into directory './A/B/C'? y
rm: descend into directory './A/B/C/D'? y
rm: remove directory './A/B/C/D/E'? y
rm: remove directory './A/B/C/D'? y
rm: remove directory './A/B/C'? y
rm: remove directory './A/B'? y
rm: remove directory './A/'? y
  • 注意:

    • 删除前必须确认路径及名称

    • 删除文件时必须将文件名及扩展名写全

4.文件编辑–vim

  • vim编辑器的三种模式

在这里插入图片描述

命令模式:也成为了阅读模式,可以控制光标移动,对文本进行查看、删除、复制粘贴等操作(默认)

编辑模式:也称为插入模式,可以对文本进行编辑

末行模式:保存、退出、设置编辑环境

  • 末行模式下的常见命令
: set nu	#显示行号
: wq		#保存退出
: q!	#强制不保存退出
: q		#tuic
  • 当vim编辑器异常退出时的解决方法

    原因:在编辑过程中,某些原因倒置vim中断退出,下次打开时,同名的交换文件(.swp)与源文件内容

    不一致,需要进行后续设

    • 正常打开

    • 点击R键,后回车

    • 正常编辑,保存退出

    • 删除隐藏的交换文件

# 使用 ctrl+z 模拟异常退出,再次进入该文件的编辑器时 Found a swap file by the name ".hhj.swp"owned by: root   dated: Wed Oct 23 15:25:11 2024file name: ~root/Desktop/hhjmodified: YESuser name: root   host name: localhost.localdomainprocess ID: 3408 (STILL RUNNING)
While opening file "hhj"dated: Wed Oct 23 15:13:08 2024(1) Another program may be editing the same file.  If this is the case,be careful not to end up with two different instances of the samefile when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.If this is the case, use ":recover" or "vim -r hhj"to recover the changes (see ":help recovery").If you did this already, delete the swap file ".hhj.swp"to avoid this message.Swap file ".hhj.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort: # o 只读 
# e 直接编辑
# r 恢复
# q 退出
# a 中止

5.文件内容查看

  • cat命令–查看文件内容,适合数据较少时使用

    • 格式:cat -参数 文件名
    • 例:
    [root@localhost Desktop]# cat -n a1	a2	b3	c4	d5	e6	f7	g8	
    [root@localhost Desktop]#
    
参数作用
-n显示所有行号,包括空行
-b显示文件中所有非空行的行号
  • tac命令–倒叙访问文件中的内容

    • 格式:tac -参数 文件名

    • 例:

      [root@localhost Desktop]# tac ag
      f
      e
      d
      c
      b
      a
      [root@localhost Desktop]# 
      
  • less命令–分页浏览文件内容,适合文件内容较多时查看

    • 格式:less 文件名

    • 技巧: / 关键字 进行查询匹配,n向下匹配,N向上匹配; v 进入vim编辑器

    • 注意:可以使用上下键进行浏览,点击q退出浏览

  • more命令–翻页查看文件内容,适合内容较多的文件查看

    • 格式:more 文件名

    • 注意:使用回车则一行一行查看,使用空格则整页查看,点击q键退出查看

  • less和more的区别

    • more:使用空格键翻页,回车键逐行滚动,按b键回退一页,按q键退出查看。

    • less:使用空格键、PageDown 键、回车键等进行翻页和滚动,上下箭头键逐行移动。可以使用/进行搜索,按n键查找下一个匹配项,N键查找上一个匹配项。按q键退出查看。

    • less功能更强大,支持向前和向后滚动浏览文件,可以在文件中进行搜索并轻松跳转到搜索结果,还可以在查看文件时对文本进行标记等操作。而more主要是简单的逐页查看,只能向前滚动,不支持向后滚动查看已经浏览过的内容。

    • less通常比more占用更多内存,因为它将文件加载到内存中以便进行更灵活的操作。但对于大多数现代系统,这种差异通常并不明显。

    • 两者都可以使用q键退出查看,但在一些特殊情况下,如终端出现问题时,less可能更容易退出而不会导致终端挂起。

  • head–查看文件前n行内容

    • 格式:head -数字 文件

    • 例:

      [root@localhost Desktop]# head a		#默认查看文件前10行内容
      [root@localhost Desktop]# head -20 a		#查看文件指定前n行内容
      
  • tail–查看文档后n行内容

    • 格式:tail -参数 文件名

    • 参数:

      参数作用
      -数字查看倒数n行
      -f动态刷新, 实时显示日志文件并且能动态更新
    • 例:

      [root@localhost Desktop]# tail a		#默认查看倒数10行内容
      [root@localhost Desktop]# tail -20 a		#查看倒数n行内容
      

6.文件信息查询

  • file 命令

    • 作用:查看文件类型

    • 格式:file -参数 文件名

    • 文件类型:

      • ASCII file :ASCII文本字符文件

      • empty:空文件

      • block special :块设备文件

      • character special :字符设备文件

      • diretory:目录

  • stat 命令

    • 作用:显示文件属性信息

    • 格式:stat 文件名

    • 注意:一般通过该命令查看大小、Inode、硬链接、软连接

  • 例:

    [root@localhost Desktop]# stat aFile: aSize: 12150     	Blocks: 24         IO Block: 4096   regular file
    Device: 804h/2052d	Inode: 2280819     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2024-10-23 16:22:20.978206529 +0800
    Modify: 2024-10-23 16:22:18.785206337 +0800
    Change: 2024-10-23 16:22:18.785206337 +0800Birth: 2024-10-23 16:04:45.710114268 +0800
    [root@localhost Desktop]# file a
    a: UTF-8 Unicode text
    

7.文件复制及剪切

  • cp—文件复制

    • 格式:cp -参数 源文件 目标文件

    • 参数

    参数作用
    -a通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录
    -d拷贝时保留链接
    -f在覆盖已经存在的目标文件时不提示
    -i在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝
    -p除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中
    -r若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须是一个目录。
    • 例:

      [root@localhost Desktop]# cp a ./b
      cp: overwrite './b'?		#文件b已存在,是否覆盖[root@localhost Desktop]# mkdir A
      [root@localhost Desktop]# mkdir B
      [root@localhost Desktop]# cp a ./A
      [root@localhost Desktop]# cp A ./B/		#将目录A复制到目录B中,会报错,提示目录需要加 -r
      cp: -r not specified; omitting directory 'A'
      [root@localhost Desktop]# cp -r A ./B/[root@localhost Desktop]# cp a b A/		#将多个文件复制进一个目录中
      cp: overwrite 'A/a'? n
  • mv–文件剪切或重命名

    • 格式: mv [-参数] 源文件 目标文件

    • 注意:

      • 剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。

      • 如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操

      作。

    • 例:

      [root@localhost Desktop]# mv a A/		#将文件a移动到目录A中,若A中存在文件a,y则覆盖,n则放弃移动
      mv: overwrite 'A/a'? y
      [root@localhost Desktop]# [root@localhost Desktop]# mv B C		#目录C不存在,相当于对目录B进行重命名操作
    • 注意:

    #复制有新文件产生,相同磁盘下剪切没有新文件产生,不同磁盘下,剪切相当于先复制,在删除源文件# 通过查看复制和剪切的文件的Inode号可以证明
    [root@localhost Desktop]# touch a
    [root@localhost Desktop]# cp a A
    [root@localhost Desktop]# ls -i a
    2280777 a
    [root@localhost Desktop]# ls -i A/a
    70414147 A/a[root@localhost Desktop]# touch b
    [root@localhost Desktop]# ls -i b
    2280778 b
    [root@localhost Desktop]# mv b A/
    [root@localhost Desktop]# ls -i A/b
    2280778 A/b
    

8.shell中历史命令的调用

  • 命令:

    • history 查看历史命令
    • echo $HISTSIZE 查看记录命令的最大条数1000
    • history -c 清空当前进程的历史命令
    • ! 历史id 调用当前id的历史命令
    • ctrl + r 关键字 调用包含关键字的最近一次命令,按左右键进行修改,回车进行调用
  • 例:

    [root@localhost Desktop]# history1  touch hhj2  stat hhj3  touch hhj4  stat hhj5  mkdir HHJ6  mkdir HHJ1 HHJ2 HHJ37  touch hhj
    .............
    [root@localhost Desktop]# echo $HISTSIZE
    1000[root@localhost Desktop]# !231
    echo $HISTSIZE
    1000#CTRL+r  HIS
    (reverse-i-search)`HIS': echo $HISTSIZE
    

9.系统时间管理

  • date–用于显示或设置系统的时间与日期

    • 格式:date -参数 **+**显示日期时间格式参数

    • 格式参数:

      格式参数解释
      %Y完整年份
      %m月份(1~12)
      %d本月中的第几天
      %H小时(00~23)
      %M分钟(00~59)
      %j今年中的第几天
      %X相当于%H:%M:%S
      %Z显示时区
      %A星期几 (Sunday-Saturday)
      %p显示本地AM或PM
    • 例:

      [root@localhost Desktop]# date
      Thu Oct 24 05:44:37 PM CST 2024# Thu:星期四,代表一周中的第几天。
      # Oct:十月,代表月份。
      # 24:日期是 24 号。
      # 05:44:37 PM:下午 5 点 44 分 37 秒。
      # CST:Central Standard Time,中部标准时间。
      # 2024:当前年份是 2024 年。[root@localhost Desktop]# date -d 80day		80天后的时间
      Sun Jan 12 06:02:17 PM CST 2025
      [root@localhost Desktop]# date -d -80hour	80小时前的时间
      Mon Oct 21 10:04:39 AM CST 2024
      [root@localhost Desktop]# date –s 20170303 修改为2017-03-03
      [root@localhost Desktop]# date -s 15:03 修改时间为15:03
      [root@localhost Desktop]# date -s “20180707 10:12” 合并修改# 记得要有加号(+),当参数格式中有空格时,需要用引号;分隔符想用什么用什么
      [root@localhost Desktop]# date +%Y-%m-%d
      2024-10-24
      [root@localhost Desktop]# date +"%Y-%m-%d %H:%M:%S"
      2024-10-24 18:09:34
      
  • timedatectl–用于设置系统的时间

    • 参数

      参数解释
      status显示状态信息
      list-timezones列出已知时区
      set-timezone设置生效时区
      set-time设置系统时间
      set-local-rtc BOOL如果接 1,表示将硬件时钟设置为本地时间;如果接 0,表示将硬件时钟设置为协调世界时间UTC
    • 例:

      [root@localhost Desktop]# timedatectlLocal time: Thu 2024-10-24 18:29:49 CSTUniversal time: Thu 2024-10-24 10:29:49 UTCRTC time: Thu 2024-10-24 10:18:35Time zone: Asia/Shanghai (CST, +0800)
      System clock synchronized: noNTP service: inactiveRTC in local TZ: no#Local time:本地时间为 2024 年 10 月 24 日 18:29:49,中国标准时间(CST)。
      #Universal time:世界协调时间(UTC)为 2024 年 10 月 24 日 10:29:49。
      #RTC time:实时时钟(RTC)时间为 2024 年 10 月 24 日 10:18:35
      #Time zone:系统时区设置为亚洲 / 上海(Asia/Shanghai),时区偏移为 +0800,表示比 UTC 时间早 8 个小时。
      #System clock synchronized:系统时钟未与外部时间源同步,显示为 “no”。
      #NTP service:网络时间协议(NTP)服务未激活,显示为 “inactive”。RTC in local TZ:RTC 未设置为本地时区,显示为 “no”。
  • cal–查看日历

    • 格式:cal -参数

    • 参数

      参数解释
      -1显示当前月份日历
      -3显示当前月份及前后各一个月的日历
      -n number显示当前月份及前后各number/2月份
      -j显示今天是一年中的第几天
      -y展示完整日历
      -w显示当前是一年中的第几周

10.查看目录下的文件

  • 格式:ls -参数 操作对象(路径)

  • 参数:

    参数解释
    -l以长格形式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。
    -d显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。
    -c按文件的修改时间排序后,予以显示。
    -h以更人性化的方式显示出目录或文件的大小,默认的大小单位为字节,使用-h选项后将显示为K、M等单位。此选项需要和-l选项结合使用才能体现出结果。
    -R以递归的方式显示指定目录及其子目录中的所有内容。
    -a显示所有子目录和文件的信息,包括名称以“.”开头的隐藏目录和隐藏文件。
    -A与-a选项的作用类似,但不显示表示当前目录的“.”和表示父目录的“…”。
    -i显示文件索引节点号(inode)。一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode
    -s按照文件大小排序
  • 例:

    [root@localhost Desktop]# ls
    a  A  hhj
    [root@localhost Desktop]# ls -a
    .  ..  a  A  hhj
    [root@localhost Desktop]# ls -l
    total 4
    -rw-r--r--. 1 root root  0 Oct 23 20:33 a
    drwxr-xr-x. 2 root root 24 Oct 23 20:39 A
    -rw-r--r--. 1 root root  7 Oct 23 15:30 hhj
    [root@localhost Desktop]# ls -l -d A
    drwxr-xr-x. 2 root root 24 Oct 23 20:39 A
    [root@localhost Desktop]# ls -c
    A  a  hhj
    [root@localhost Desktop]# ls -hl
    total 4.0K
    -rw-r--r--. 1 root root  0 Oct 23 20:33 a
    drwxr-xr-x. 2 root root 24 Oct 23 20:39 A
    -rw-r--r--. 1 root root  7 Oct 23 15:30 hhj
    [root@localhost Desktop]# ls -R
    .:
    a  A  hhj./A:
    a  b
    [root@localhost Desktop]# ls -i a
    2280777 a
    [root@localhost Desktop]# ls -s
    total 4
    0 a  0 A  4 hhj
    

11.统计目录/文件大小—du

  • 作用:统计目录及文件的空间占用情况,查看某个目录中的各级子目录所占用的磁盘空间数。

  • 命令格式:

    du   [参数]    [目录名]
    
  • 参数:

参数解释
-a统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。
-S只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小。
-h以K,M,G为单位显示磁盘使用情况,以提高信息的可读性。
  • 例:

    [root@localhost Desktop]# du -a ./
    4	./hhj
    0	./A/a
    0	./A/b
    0	./A
    0	./a
    20480	./b
    20484	./[root@localhost Desktop]# du -sh 
    21M	.
    

12.树型显示目录结构—tree

  • 作用:显示目录下文件的树形拓扑图及摘要

  • 格式:

    tree -参数 路径
    
  • 参数

    参数解释
    -a所有文件包含显示隐藏文件
    -f列出文件的完整路径内容
    -d只显示目录
    -L置显示最大深度,如:tree -f -L 2
  • 例:

    [root@localhost Desktop]# mkdir -p A AA BB CC
    [root@localhost Desktop]# touch a b c 
    [root@localhost Desktop]# mv AA A
    [root@localhost Desktop]# mv BB CC A/AA
    [root@localhost Desktop]# mv a b c A/AA/BB
    [root@localhost Desktop]# tree A
    A
    └── AA├── BB│   ├── a│   ├── b│   └── c└── CC3 directories, 3 files
    [root@localhost Desktop]# tree -f A
    A
    └── A/AA├── A/AA/BB│   ├── A/AA/BB/a│   ├── A/AA/BB/b│   └── A/AA/BB/c└── A/AA/CC3 directories, 3 files
    [root@localhost Desktop]# tree -d A
    A
    └── AA├── BB└── CC3 directories
    [root@localhost Desktop]# tree -L 3
    .
    └── A└── AA├── BB└── CC4 directories, 0 files
    [root@localhost Desktop]# tree -L 2
    .
    └── A└── AA2 directories, 0 files
    [root@localhost Desktop]# 

13.管道符— |

  • 作用:管道符号,是unix一个很强大的功能,符号为一条竖线:“|”,用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入(管道符不支持将前一条命令的错误输出作为后一条命令的输入)。

  • 格式:

    命令A | 命令2 | 命令3 ……
    
  • 例:

    • 统计 /bin/ 目录下有多少行内容
    # 将命令ls的输出结果作为命令wc的输入
    [root@localhost Desktop]# ls /bin | wc -l
    1500
    [root@localhost Desktop]# 
    
    • 错误信息不能通过管道符

      [root@localhost Desktop]# su hhj
      [hhj@localhost Desktop]$ find /etc/ name passwd >/dev/null | wc -l
      0
      find: ‘/etc/audit’: Permission denied
      find: ‘/etc/ssh/sshd_config.d’: Permission denied
      find: ‘/etc/sssd’: Permission denied
      find: ‘/etc/pki/rsyslog’: Permission denied
      find: ‘/etc/cups/ssl’: Permission denied
      find: ‘/etc/sos/cleaner’: Permission denied
      find: ‘/etc/nftables’: Permission denied
      find: ‘/etc/lvm/archive’: Permission denied
      find: ‘/etc/lvm/backup’: Permission denied
      find: ‘/etc/lvm/cache’: Permission denied
      find: ‘/etc/lvm/devices’: Permission denied
      find: ‘/etc/polkit-1/rules.d’: Permission denied
      find: ‘/etc/polkit-1/localauthority’: Permission denied
      find: ‘/etc/grub.d’: Permission denied
      find: ‘/etc/sudoers.d’: Permission denied
      find: ‘/etc/firewalld’: Permission denied
      find: ‘name’: No such file or directory
      find: ‘passwd’: No such file or directory
      # 可以发现,统计行数结果为0,错误输出依然输出在shell中,所以错误信息不能通过管道符作为下一条命令的输入
      
    • 将错误信息通过管道符

      [hhj@localhost Desktop]$ find /etc/ name passwd 2>&1 | wc -l
      1773
      
      • find /etc/ -name passwd:在 /etc/ 目录下查找名称为 “passwd” 的文件或目录。
      • 2>&1:将标准错误输出(stderr)重定向到标准输出(stdout),这样即使在查找过程中有错误信息,也会和正常的查找结果一起理。
      • | wc -l:将前面命令的输出通过管道传递给 wc -l,wc -l 用于统计输入的行数,在这里就是统计找到的文件或目录的数量。

14.tee读取数据输出到文件

  • 作用:

    • 读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容)
    • tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件。
  • 格式:

    tee		参数		文件名
    
  • 参数:

    参数解释
    -a/–append附加到现有文件的后面,而非覆盖它
    -i/–ignore-interrupts忽略中断信号
    –help在线帮助
  • 例:

    [root@localhost Desktop]# cat b.txt
    hello
    hello
    hello
    hello
    hello
    [root@localhost Desktop]# tee b.txt
    a
    a
    b
    b
    c
    c			#ctrl+d结束输入
    [root@localhost Desktop]# cat b.txt
    a
    b
    c
    [root@localhost Desktop]# tee -a b.txt
    d
    d
    e
    e
    f
    f
    g
    g
    [root@localhost Desktop]# cat b.txt
    a
    b
    c
    d
    e
    f
    g
    [root@localhost Desktop]#[root@localhost Desktop]# cat a
    cat: a: No such file or directory
    [root@localhost Desktop]# cat a.txt[root@localhost Desktop]# date > a.txt
    [root@localhost Desktop]# cat a.txt
    Fri Oct 25 12:38:02 PM CST 2024
    [root@localhost Desktop]# cat a.txt | tee c.txt | wc -l
    1
    [root@localhost Desktop]# cat c.txt
    Fri Oct 25 12:38:02 PM CST 2024
    

15.文件内容过滤显示—grep

  • 作用:在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用

  • 格式:

    grep -参数 查找条件 文件名
    
  • 参数:

    参数解释
    -c仅显示找到的行数
    -i忽略大小写
    -n显示行号
    -v反向选择——仅列出没有“关键词”的行
    -A-A 2 搜索时显示匹配到的那一行以及下2行
    -B-B 2 搜索时显示匹配到的那一行以及上2行
    -C-C 2 搜索时显示匹配到的那一行以及上下2行
  • 匹配模式:

    匹配模式解释
    grep h 文件名查找文件里有字符h的行
    grep 1 文件名匹配以q开始的行
    grep 2 文件名匹配以q或者f开头的行
    grep 3 文件名不匹配以q或者f开头的行
    grep 4 文件名匹配以数字开头的行
    grep q$ 文件名匹配以q结束的行
    grep ^$过滤空白行
    grep -r h ./*如果要明确搜索当前目录中的子目录有h的行
    grep -d s kip h ./*忽略当前目录下的子目录下的普通文件
  • 例:

    • 简单匹配

      # 在passwd中检索包含root的行信息
      [root@server ~]# grep -n “root” /etc/passwd
      # 在passwd检索不能登录的信息
      [root@server ~]# grep -n "/sbin/nologin" /etc/passwd
      # 在passwd中检索可以登录的账户信息
      [root@server ~]# grep -nv "/sbin/nologin" /etc/passwd (反向)
      # 检索包含“halt”的行及下3行信息
      [root@server ~]# grep -nA3 "halt" /etc/passwd
      # 检索包含“sshd”的行及上5行信息
      [root@server ~]# grep -nB5 “sshd” /etc/passwd
      # 检索包含“ftp”的行及上下2行
      [root@server ~]# grep -nC2 “ftp” /etc/passwd
      # 检索不能登录的账户个数
      [root@server ~]# grep -c “/sbin/nologin” /etc/passwd
      # 相当于 grep -n “/sbin/nologin” /etc/passwd | wc -l
      # 检索包含大小写字母d的行信息
      [root@server ~]# grep -ni "d" /etc/passwd
      
    • 使用特殊符号匹配

      [root@server ~]# grep ^a /etc/passwd
      [root@server ~]# grep -n “^root” /etc/passwd
      [root@server ~]# grep -n "^#" /etc/sos/sos.conf
      [root@server ~]# grep -n [0-9]$ /etc/sos/sos.conf
      [root@server ~]# grep -n ^$ /etc/sos/sos.conf
      

16.按列切割显示—cut

  • 作用:cut命令用于按列提取文本内容

  • 格式:

    cut -d "分隔符" -f列数字 文件名
    
  • 例:

    • /etc/passwd文件在保存用户数据信息时,每一项值之间是采用冒号来间隔的,如:

      root:x:0:0:root:/root:/bin/bash
      bin:x:1:1:bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      
    • 基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可,但如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。

      [root@localhost Desktop]# cut -d : -f1 /etc/passwd
      root
      bin
      daemon
      
    • /etc/passwd文件的第3行第5列

      [root@localhost Desktop]# head -n 3 /etc/passwd | tail -n 1 |cut -d : -f5
      daemon
    • /etc/passwd文件的第3行的3,5,7列

      [root@localhost Desktop]# head -n 3 /etc/passwd | tail -n 1 |cut -d : -f3,5,7
      2:daemon:/sbin/nologin
    • /etc/passwd文件的第3行的1到5个字符

      [root@localhost Desktop]# head -n 3 /etc/passwd | tail -n 1 |cut -c 1-5
      daemo
      

17.排序显示—sort

  • 作用:sort命令用于对文本内容进行排序显示

  • 格式:

    sort -参数 文件名
    
  • 参数:

    参数解释
    -f忽略大小写
    -b忽略缩进与空格
    -n以数值型排序
    -r反向排序
    -u去除重复行
    -t指定间隔符
    -k设置字段范围

18.去重显示—uniq

  • 作用:uniq命令用于去除文本中连续的重复行,一般结合sort一起使用

  • 格式:

    uniq -参数 文件名
    
  • 参数:

    参数解释
    -u去重显示
    -c统计每行出现的个数
    -d显示重复的行
    -i忽略大小写

19.文件中字符替换显示—tr

  • 作于:tr 指令从标准输入读取数据,经过替换或者删除后,将结果输出到标准输出

  • 格式:

    tr -参数 替换内容 新内容
    
  • 参数:

    参数解释
    -c反选设定字符,符合 “替换内容” 的部份不做处理,不符合的剩余部份才进行转换
    -d删除指令字符
    -s缩减连续重复的字符成指定的单个字符
  • 例:

    # 替换文件中某个单个字符
    [root@localhost Desktop]# cat b.txt
    aaa
    bbb
    ccc
    ddd[root@localhost Desktop]# tr 'c' '#' < b.txt
    aaa
    bbb
    ###
    ddd# 反选设定字符
    [root@localhost Desktop]# tr -c 'a' '#' < b.txt  
    aaa############## 删除指定字符
    [root@localhost Desktop]# tr -d 'a' < b.txtbbb
    ccc
    ddd#缩减连续重复的字符成指定的单个字符
    [root@localhost Desktop]# tr -s 'a' '#' < b.txt
    #
    bbb
    ccc
    ddd
    

  1. q ↩︎

  2. qf ↩︎

  3. ^qf ↩︎

  4. 0-9 ↩︎


http://www.mrgr.cn/news/58313.html

相关文章:

  • paddleocr使用FastDeploy 部署工具部署 rknn 模型
  • 六,Linux基础环境搭建(CentOS7)- 安装HBase
  • RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测
  • 制作sdk
  • 1.5 ROS架构
  • Skype如何进行双向翻译?你了解多少?
  • 运维工程师的职业发展路径:从零基础到精通,收藏这篇就够了
  • 【机器学习】多项式回归
  • GC.2022.六年级.05.数三角形
  • odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • apache poi导出excel
  • 单片机入门教程
  • 15分钟学 Go 第 20 天:Go的错误处理
  • 【数据结构和算法】二、python中的常用数据结构
  • AI大模型应用(3)开源框架Vanna: 利用RAG方法做Text2SQL任务
  • 写出Windows操作系统内核的程序员,70多岁,还去办公室敲代码
  • openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • Chromium127调试指南 Windows篇 - 安装VS Code扩展(四)
  • 数据结构:堆的应用
  • Javascript数据结构——哈希表
  • 揭秘:登录注册表单背后的动画奥秘
  • 一个vue3的待办列表组件
  • Windows AD 域的深度解析 第一篇:AD 域原理与多系统联动
  • GPU 服务器厂家:谁将引领科技未来的强大动力?
  • LLM - CV 图像实例分割开源算法 SAM2(Segment Anything 2) 配置与推理 教程 (1)