Linux基本指令

article/2025/6/19 2:34:18

文章目录

  • 1.ls指令
    • 1.1 ls -l指令
    • 1.2 ls-a指令
      • 1.2.1文件的类型
      • 1.2.2隐藏文件
      • 1.2.3[.]\[..]的含义
    • 1.3 ls -d指令
    • 1.4 ls-F指令
    • 1.5ls指令子功能大全
  • 2.pwd指令
    • 2.1路径分割符
    • 2.2/根目录
  • 3.mkdir指令
    • 3.1 mkdir-p
    • 3.2mkdir常用功能
  • 4.cd指令
    • 4.1多叉树概念
    • 4.2绝对/相对路径
      • 4.2.1绝对路径
      • 4.2.2相对路径
      • 4.2.3使用场景
    • 4.3cd指令常见操作
  • 5.touch命令
    • touch命令的常见操作
  • 6.whoami指令
  • 7.tree指令
  • 8.rm指令
    • 8.1 rm-r/-f指令
    • 8.2 *通配符
    • 8.3rm常见操作
  • 9.man指令
    • man手册
  • 10.echo指令
    • 10.1输出重定向
    • 10.2追加重定向
  • 11.cat指令
    • 11.1输入重定向
    • 11.2常见cat选项
    • 11.3cat的缺点
  • 12.cp指令
    • cp指令速查表
  • 13.mv指令
    • 13.1重命名
    • 13.2剪切
    • 13.3剪切并重命名
    • 13.4mv目录
  • 14.which指令
  • 15.alias指令
  • 16.more指令
  • 17.less指令
  • 18.head指令
  • 19.tail指令
    • 管道操作
    • wc -l
  • 20.date指令
    • 20.1时间戳
    • 20.2date 命令核心功能速查表
  • 21.cal指令
  • 22.find指令
    • find命令速览表
  • 23.whereis指令
  • 24.grep指令
    • 24.1grep-v 指令
    • 24.2grep-n指令
    • 24.3grep -i指令
  • 25.zip/unzip指令
    • unzip-d解压到指定的目录下
  • 26.tar指令
    • 26.1 tar指令功能速查表##
    • 26.2tar指令的解包和打包
  • 27.bc指令
  • 28.uname-r指令
  • 29.history指令
  • 30.关机

前提说明:指令本质就是–可执行文件
指令一定是在系统的某一个位置存在的
在执行指令之前,我们会现在系统中查找对应的指令
指令就是安装到了系统的某种路径下

1.ls指令

语法:ls[选项][目录或文件]
功能:对于目录,该命令列出该目录下所有的子目录与文件,对于文件,将列出文件名以及其他信息

[root@hcss-ecs-000a ~]# ls
code.c

ls是用来显示当前目录下的文件的,那么当前目录是哪个目录呢,所以就用到了pwd指令
至于上面那个语法的选项是什么意思呢,就是你ls(查看)指令还可以携带更多的子功能,比如查看文件属性,查看隐藏文件等等
由于有很多的子功能在这里我演示几个

1.1 ls -l指令

[root@hcss-ecs-000a lesson1]# ls -l
total 0-rw-r--r-- 1 root root 0 May 25 09:54 test.txt

这个就是查看文件的属性,我们可以看见有文件创建的时间,大小,剩下的在后续的学习中会学到
每次这么写又挺麻烦的,所以又简化出了ll命令就是上面那个指令的缩写

[root@hcss-ecs-000a lesson1]# ll
total 0-rw-r--r-- 1 root root 0 May 25 09:54 test.txt

1.2 ls-a指令

这个指令就是查看隐藏的文件

[root@hcss-ecs-000a lesson1]# ls -a
.  ..  test.txt

这个我们相较于原始版来看多了. …这两个东西,那么这两个东西是什么呢
我们先说指令,ls 后面不止能跟一个选项,还可以跟多个,比如ll是查看文件属性ls -a -l就是查看隐藏文件的属性

[root@hcss-ecs-000a lesson1]# ls -al
total 8
drwxr-xr-x  2 root root 4096 May 25 09:54 .
dr-xr-x---. 6 root root 4096 May 25 09:43 ..-rw-r--r--  1 root root0 May 25 09:54 test.txt

1.2.1文件的类型

第一行那个有d有-是文件的类型
d:表明是一个目录
-:文件是一个普通文件

1.2.2隐藏文件

在Linux中,以.开头的文件,我们称之为隐藏文件,就是比如说你有些文件不想被别人看到,我们就可以创建隐藏文件

[root@hcss-ecs-000a lesson1]# mkdir .ignore
[root@hcss-ecs-000a lesson1]# ls
test.txt
[root@hcss-ecs-000a lesson1]# ls -a
.  ..  .ignore  test.txt

我们看这个隐藏文件就不能被别人看到了

1.2.3[.][…]的含义

linux下任何一个目录下面都有两个隐藏文件./…
[…]:表示当前路径的上级路径

[root@hcss-ecs-000a lesson1]# cd ..
[root@hcss-ecs-000a ~]# pwd
/root

就是回退到上级路径
[.]:表示当前路径

[root@hcss-ecs-000a lesson1]# cd .
[root@hcss-ecs-000a lesson1]# pwd
/root/lesson1

那么上面那个…还有一点作用那这个.有什么作用呢,我来给大家演示一下

[root@hcss-ecs-000a lesson1]# ls -al
total 28
drwxr-xr-x  3 root root 4096 May 25 10:40 .
dr-xr-x---. 6 root root 4096 May 25 09:43 ..-rwxr-xr-x  1 root root 8968 May 25 10:40 a.out
drwxr-xr-x  2 root root 4096 May 25 10:24 .ignore-rw-r--r--  1 root root   93 May 25 10:37 test.cc-rw-r--r--  1 root root0 May 25 09:54 test.txt

我这里给大家形成了一份可执行程序a.out,那我们想要执行这个可执行程序就必须指明在当前路径下运行

[root@hcss-ecs-000a lesson1]# ./a.out
hello world

它要运行得先找到这个a.out在哪个路径下
[.]存在的意义:帮我用户定位当前目录下的一个文件
那就会有人有疑问,它不是已经在当前目录下了吗
**1.容易混淆 **你单纯只有一个a.out谁知道你单纯的只想输入这个名字还是运行它
**2.优先选择 **当你在当前文件夹输入一个命令的时候,系统不会立即去当前这个文件夹里面去找,系统有自己的一套地图,也就是环境变量,它会先去自己的地图找a.out这个文件,找不到的话它就告诉你找不到,所以./告诉系统优先去这个路径下查找

1.3 ls -d指令

上面显示的都是一个目录下文件的信息,那我们就想查看这个文件的信息
所以就有了ls-d指定目录 将目录像文件一样显示,而不是显示其下的文件

[root@hcss-ecs-000a ~]# ls -dl lesson1
drwxr-xr-x 3 root root 4096 May 25 10:40 lesson1

1.4 ls-F指令

在每个文件名后附上一个字符以说明该文件的类型,"*"表示可执行的普通文件;
"/“表示目录;”@“表示符号链接;”|“表示FIFOs;”="表示套接字

[root@hcss-ecs-000a lesson1]# ls -alF
total 28
drwxr-xr-x  3 root root 4096 May 25 10:40 ./
dr-xr-x---. 6 root root 4096 May 25 09:43 ../
-rwxr-xr-x  1 root root 8968 May 25 10:40 a.out*
drwxr-xr-x  2 root root 4096 May 25 10:24 .ignore/
-rw-r--r--  1 root root   93 May 25 10:37 test.cc
-rw-r--r--  1 root root0 May 25 09:54 test.txt

1.5ls指令子功能大全

ls -l:以长格式显示文件和目录的详细信息,涵盖文件类型、权限、所有者、大小、修改日期等,执行后能让你清晰看到每个文件和目录的诸多属性。
ls -lh:同样以长格式显示详细信息,但文件大小会以人类可读的方式呈现,如 1K、10M 等,方便直观了解文件大小规模。
ls -a:显示所有文件和目录,包含以 . 开头的隐藏文件和目录,在一些系统配置文件等隐藏文件所在目录使用,可将它们都显示出来。
ls -A:列出除了 . 和 .. 以外的所有文件和目录,即显示隐藏文件但排除代表当前目录和上级目录的特殊符号。
ls -t:按修改时间排序,最近修改的文件或目录会显示在前面,有助于快速找到最新改动的内容。
ls -S:按文件大小排序,文件大小从大到小排列,能让你快速知晓哪些文件占用空间较大。
ls -r:逆序显示文件和目录,与正常排序顺序相反。
ls -d:只显示目录本身,不显示目录下的文件,例如只想查看某个目录的基本信息而不关心其内部文件时可使用。
ls -i:显示文件和目录的 inode 号,inode 号是文件系统中标识文件和目录的唯一编号。
ls -R:递归显示当前目录及其子目录中的文件和子目录列表,可深入查看整个目录树的内容。
ls --color:以彩色显示当前目录下的文件和子目录列表,不同类型的文件会用不同颜色区分,更易于识别。
ls -F:在每一个文件的末尾加上一个字符说明该文件的类型,如用 @ 表示符号链接、| 表示 FIFOS、/ 表示目录、= 表示套接字。
ls -s:在每个文件的后面打印出文件的大小,直观展示文件占用空间情况。
ls -L:列出文件的链接名,可查看文件的链接指向信息。

2.pwd指令

语法:pwd
功能:显示用户当前所在的目录

[root@hcss-ecs-000a lesson1]# pwd
/root/lesson1

在这里插入图片描述
相当于我在windows中点击某个文件查看到的路径
那我们如何创建一个目录呢,所以就用到了mkdir指令,相当于make dir,创建目录

2.1路径分割符

当我们查看路径的时候发现会有很多的/,在Linux中这些**/相当于是路径分割符**
在windows下\是路径分割符
分割符中间的就是目录,最后一个有可能是目录也有可能是其他

2.2/根目录

[root@hcss-ecs-000a /]# pwd
/

当我们一直回退回退发现到这里的时候回退不下去了
这个[/]:代表的就是Linux的根目录
那我们怎么证明这是一个目录呢

[root@hcss-ecs-000a /]# ls -dl
dr-xr-xr-x. 19 root root 4096 Mar 17 20:54 .

我们在上面说过第一个字符是d的代表这就是一个目录
一个目录

3.mkdir指令

语法:mkdir[选项]dirname
功能:在当前目录下创建一个名为"dirname"的目录

[root@hcss-ecs-000a ~]# mkdir lesson1
[root@hcss-ecs-000a ~]# ls
code.c  lesson1

那我们创建一个目录也就是文件夹我们该如何进入这个目录然后才可以完成后续的一系列操作呢,所以就有了cd指令
那我们创建目录的时候难道要一个一个创建吗

3.1 mkdir-p

**可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
**

[root@hcss-ecs-000a lesson1]# mkdir d3/d4/d5
mkdir: cannot create directory ‘d3/d4/d5’: No such file or directory
[root@hcss-ecs-000a lesson1]# mkdir -p d3/d4/d5
[root@hcss-ecs-000a lesson1]# tree /root/lesson1
/root/lesson1
├── a.out
├── d1
│   └── d2
├── d3
│   └── d4
│   └── d5
├── test.cc
└── test.txt

3.2mkdir常用功能

mkdir -p path/to/dir:递归创建目录,若路径中部分目录不存在也能按层级依次创建,好比要进入最里面的房间,沿途房间若没有就自动建好。如 mkdir -p project/src/main 可在当前路径下按层级创建完整的目录结构。
mkdir -m 755 dir:创建目录并指定权限,类似给房间设置特定的访问规则。例如 mkdir -m 755

4.cd指令

[root@hcss-ecs-000a ~]# cd lesson1/
[root@hcss-ecs-000a lesson1]# pwd
/root/lesson1

那么进入到这个目录里面我们要进行相关的操作,现在就比如说我要创建一个文本文件,就用到了touch指令

4.1多叉树概念

既然一个目录里面可以再创建一个新的目录和普通文件,那么注定了Linux的目录结果整体是一个多叉树,它的叶子节点,一定是空目录或者非目录文件,路上节点一定是一个非空目录
在这里插入图片描述
cd…就是相当于不断在这颗多叉树进行回退
所以我们所有的文件或目录的增删查改,本质就是对这颗多叉树的增删查改
所以我们定位一个文件,通常用路径来进行定位(路径定位具有唯一性)

4.2绝对/相对路径

为什么路径定位具有唯一性呢
一个节点可能有很多的子节点,但是这个节点的父节点只有一个,所以我们能通过父节点不断的查找查找到你这个子节点,就好比你爷爷有很多儿子,但是你的爸爸只有一个,通过你的爸爸就能找到你

4.2.1绝对路径

我们把从/开始定位到指定位置,具有唯一性的路径,叫作绝对路径

[root@hcss-ecs-000a /]# cd /root/lesson1/
[root@hcss-ecs-000a lesson1]# pwd
/root/lesson1

所以我们就能指定路径来找到相应的文件

4.2.2相对路径

你的爷爷有很多的儿子,你找错了找到了你的叔叔,那你就可以回退到你的爷爷在问你的爸爸在哪里
我们以自己当前所处的路径为起始参照位置,来进行特定文件的定位,这个就叫做相对路径
但是你所处的路径发生变化,你过继到别人家了,那么可能相对路径就失效了

4.2.3使用场景

1.绝对路径往往比较长但是不变,一般在一些固定场景,配置文件中使用
2.一般命令行输入,比较常用相对路径

4.3cd指令常见操作

cd .. :返回上级目录
cd /home/lesson1 :绝对路径
cd ../lesson1 :相对路径
cd ~ :进入用户家目录
cd - :返回最近访问目录

/

[root@hcss-ecs-000a ~]# cd /home/wyx
[root@hcss-ecs-000a wyx]# cd ~
[root@hcss-ecs-000a ~]# pwd
/root
[root@hcss-ecs-000a ~]# cd -
/home/wyx

5.touch命令

语法:touch[选项]…文件…
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
不能创建目录只能创建普通文件

[root@hcss-ecs-000a lesson1]# touch test.txt
[root@hcss-ecs-000a lesson1]# ls
test.txt

这样我们就创建了一个普通文件

touch命令的常见操作

touch -a 文件名:仅更新文件的访问时间为系统当前时间,其他时间不受影响。
touch -m 文件名:只更新文件的修改时间为系统当前时间,不改变访问时间等。
touch -d "特定时间" 文件名:把文件的时间戳设置为指定的特定时间,比如 “2025-01-01 12:00:00” 。
touch -r 参考文件名 目标文件名:将目标文件的时间戳设置成参考文件的时间戳。

6.whoami指令

查看当前用户
在Linux中用户分为两类
1.超级用户root

[root@hcss-ecs-000a ~]# pwd
/root
[root@hcss-ecs-000a ~]# whoami
root

2.其他(普通用户)

[wyx@hcss-ecs-000a ~]$ pwd
/home/wyx
[wyx@hcss-ecs-000a ~]$ whoami
wyx

pwd显示的就是用户的家目录
centos系统中,所有的普通用户,用户账号都会统一放在/home

[root@hcss-ecs-000a ~]# ls /home
wyx  wzh

7.tree指令

yum install -y tree

这个是安装这个命令,安装的时候需要root账号

[root@hcss-ecs-000a ~]# tree /root/lesson1
/root/lesson1
├── a.out
├── d1
│   └── d2
├── test.cc
└── test.txt

这样就可以以树状形式来给我们展开这个目录了

8.rm指令

rm是命令可以同时删除文件或目录
语法:rm [-f-i-r-v][dirname/dir]
**适用对象:**所有使用者
**功能:**删除文件或目录

[root@hcss-ecs-000a lesson1]# rm test.cc test.txt
rm: remove regular file ‘test.cc’? y
rm: remove regular empty file ‘test.txt’? y
[root@hcss-ecs-000a lesson1]# tree /root/lesson1
/root/lesson1
├── a.out
├── d1
│   └── d2
└── d3
└── d4
└── d55 directories, 1 file

当超级用户在删除的时候它会询问你真的要删除这个文件吗
这是我们在删除普通文件的场景下

[root@hcss-ecs-000a lesson1]# rm d1
rm: cannot remove ‘d1’: Is a directory

8.1 rm-r/-f指令

当我们删除目录的时候,你可以认为目录是一颗子树,由许多的子目录和普通文件构成,所以你在删除的时候就不单单是删除,你要递归式的删除-r,但是老是像上面一样询问又太麻烦所以可以带上-f表示不再询问式的删除

[root@hcss-ecs-000a lesson1]# rm -r -f d3
[root@hcss-ecs-000a lesson1]# tree /root/lesson1
/root/lesson1
└── a.out
0 directories, 1 file

8.2 *通配符

[root@hcss-ecs-000a lesson1]# ls *
a.out  test1.c  test2.c  test3.c  test.txt
[root@hcss-ecs-000a lesson1]# ls *.c
test1.c  test2.c  test3.c
[root@hcss-ecs-000a lesson1]# ls test.*
test.txt

它可以帮你找到匹配的前缀和后缀的文件

[root@hcss-ecs-000a lesson1]# rm * -rf
[root@hcss-ecs-000a lesson1]# tree /root/lesson1
/root/lesson10 directories, 0 files

所以我们想要删除该目录下的相应文件可以采用加入*通配符

8.3rm常见操作

rm -r dir:递归删除指定目录及其所有子目录和文件,就像连根拔起一棵大树及其所有枝叶。
rm -f file:强制删除文件,不进行提示确认,类似不问后果地快速扔掉东西。
rm -rf dir:强制递归删除目录,能迅速清除整个目录结构,使用时需谨慎,宛如强力清扫,可能造成难以挽回的损失。
rm -i file:删除文件前进行交互式确认,会询问是否删除,如同在扔掉东西前先问一下自己是否确定。

9.man指令

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令式man
语法: man [选项] 命令
这个很重要因为我们很难记住所以的指令

[root@hcss-ecs-000a lesson1]# man ls

在这里插入图片描述
我们连man这个指令都不会用
就可以

[root@hcss-ecs-000a lesson1]# man man

man手册

1 - 用户命令:涵盖普通用户日常在 shell 中可执行的各种命令,像 ls 用于查看目录内容、cp 进行文件复制等操作都在此列。
2 - 系统调用:主要涉及内核提供给程序使用的系统调用接口,程序通过这些接口请求内核服务,例如 open 用于打开文件、read 读取文件内容。
3 - 库调用:包含各种标准 C 库函数,这些函数为程序开发提供了丰富的功能,比如 printf 用于格式化输出、strcpy 进行字符串复制。
4 - 特殊文件:介绍系统中的特殊文件和设备文件,像 /dev 目录下的设备文件,它们代表了系统的硬件设备,如磁盘、终端等。
5 - 文件格式和约定:说明系统中各类配置文件、数据文件的格式和使用约定,例如 /etc/passwd 文件存储用户账户信息,这里规定了其记录的格式。
6 - 游戏:包含一些简单的游戏程序相关信息,不过这部分内容较少,例如 tetris 等小游戏。
7 - 杂项:涉及各种杂项信息,如宏包、约定、字符集、编码等内容,像 ASCII 字符集的介绍就在此分类。
8 - 系统管理命令:是系统管理员专用的命令集合,用于系统的维护和管理,例如 fdisk 对磁盘进行分区、mount 挂载文件系统。
9 - 内核例程:主要是关于内核内部函数和驱动程序的相关文档,一般供内核开发者参考,比如内核模块的编写规范。

10.echo指令

echo指令可以把后面跟的字符串原封不动的给你打印到显示器文件上

[root@hcss-ecs-000a lesson1]# echo "hello world"
hello world

10.1输出重定向

后面跟>可以把字符串打到文件里面

[root@hcss-ecs-000a lesson1]# echo "hello world" > test.txt
[root@hcss-ecs-000a lesson1]# cat test.txt
hello world

1.没有在显示器显示
2.而是这个数据被写入到了文件中
这种我们叫作输出重定向,本来应该显示到显示器的内容写入到了文件中

[root@hcss-ecs-000a lesson1]# echo hello world >text.txt
[root@hcss-ecs-000a lesson1]# cat text.txt
hello world
[root@hcss-ecs-000a lesson1]# echo today  >text.txt
[root@hcss-ecs-000a lesson1]# cat text.txt
today

我们可以发现每次打印的内容都不一样
所以>向目标文件写入的时候,是以覆盖写的形式进行写入的
特点
1.清空文件
2.写入内容

根据上面的特点我们就可以得出了

[root@hcss-ecs-000a lesson1]# >text.txt
[root@hcss-ecs-000a lesson1]# cat text.txt

这样既可以达到清空文件的目的

10.2追加重定向

那我就想不断往这个文件里面写入呢
采用>>进行追加重定向,cat指令是内置换行的

[root@hcss-ecs-000a lesson1]# echo good >> text.txt
[root@hcss-ecs-000a lesson1]# echo good >> text.txt
[root@hcss-ecs-000a lesson1]# echo good >> text.txt
[root@hcss-ecs-000a lesson1]# echo good >> text.txt
[root@hcss-ecs-000a lesson1]# echo good >> text.txt
[root@hcss-ecs-000a lesson1]# cat text.txt
good
good
good
good
good

无论是输出重定向还是追加重定向你在向目标文件中打的时候,如果目标文件不存在它会帮你创建好该文件

[root@hcss-ecs-000a lesson1]# echo huhi >>test.txt
[root@hcss-ecs-000a lesson1]# cat test.txt
huhi
[root@hcss-ecs-000a lesson1]# ls
test.txt  text.txt

11.cat指令

语法:cat[选项][文件]
功能:查看目标文件的内容
打印文件内容

[root@hcss-ecs-000a lesson1]# cat test.txt
hello world

在cat后面什么都不跟,它默认从键盘读入数据

[root@hcss-ecs-000a lesson1]# cat
1
1
2
2
3
3

11.1输入重定向

本来应该从键盘文件中读取数据,现在不用从键盘读取,从指定的文件读取数据
采用<

[root@hcss-ecs-000a lesson1]# cat <text.txt
good
good
good
good
good

11.2常见cat选项

cat -n file:显示行号(给每行文字加序号,调试代码或日志时快速定位)
cat -b file:智能行号(仅给非空行编号,过滤空白行的计数干扰)
cat -s file:压缩空行(将连续多个空行合并为单个,清理冗余空白)

///

[root@hcss-ecs-000a lesson1]# cat text.txt
good
good
good
good
goodgood
good
[root@hcss-ecs-000a lesson1]# cat -n -b text.txt1	good2	good3	good4	good5	good6	good7	good
[root@hcss-ecs-000a lesson1]# cat -s text.txt
good
good
good
good
goodgood
good

11.3cat的缺点

如果文件很大的话有一万行,我要看1000行cat就没什么用了
cat只适合看小文本

12.cp指令

语法:cp[选项]源文件或目录 目标文件或目录
功能:复制文件或目录
**说明:**cp指令用于复制文件或目录,如同时两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
拷贝指令顾名思义有拷贝文件的作用

[root@hcss-ecs-000a lesson1]# cp test.txt myt.txt
[root@hcss-ecs-000a lesson1]# ll
total 8-rw-r--r-- 1 root root 12 May 25 14:57 myt.txt-rw-r--r-- 1 root root 12 May 25 14:52 test.txt

我们也不止可以拷贝到当前路径,还可以拷贝到上级路径

[root@hcss-ecs-000a lesson1]# cp test.txt ../mytest.txt
[root@hcss-ecs-000a lesson1]# ls ../
code.c  lesson1  mytest.txt

常识告诉我们同一个目录下不能存在同名的文件,因为如果有同名文件就失去了唯一性,就比如说生了一个双胞胎还给它们取同一个名字
那我们拷贝目录呢

[root@hcss-ecs-000a ~]# cp -r lesson1 lesson2
[root@hcss-ecs-000a ~]# ls
code.c  lesson1  lesson2  mytest.txt

因为我们目录不止单个文件所以我们要递归式的拷贝目录

cp指令速查表

cp -i file1 file2:在覆盖已有文件 file2 前进行交互式确认,避免误覆盖重要文件。
cp -r dir1 dir2:递归复制目录 dir1 及其所有子目录和文件到 dir2,适合迁移整个目录结构。
cp -p file1 file2:保留文件的权限、所有者、时间戳等属性进行复制,确保文件原始特性不变。
cp -l file1 file2:创建硬链接而不是复制文件内容,多个文件名指向同一物理数据块,节省存储空间。
cp -s file1 file2:创建符号链接,类似于快捷方式,file2 指向 file1 的路径。
cp --preserve=all file1 file2:全面保留文件的所有属性(权限、时间戳、扩展属性等)进行复制。
cp -u file1 file2:仅当源文件 file1 比目标文件 file2 新,或者目标文件不存在时才进行复制。
cp --verbose file1 file2:在复制过程中显示详细信息,让你清楚知晓复制进度和状态。
cp -t dir file1 file2:将多个文件(如 file1 和 file2)复制到指定目录 dir,方便批量操作。

13.mv指令

在mv指令下目录和普通文件的操作是相同的

13.1重命名

那我们这个文件的名字打错了或者是不是我们想要的我们就可以用mv指令

[root@hcss-ecs-000a lesson1]# ls
myt.txt  test.txt
[root@hcss-ecs-000a lesson1]# mv myt.txt day25.txt
[root@hcss-ecs-000a lesson1]# ls
day25.txt  test.txt

13.2剪切

mv指令还有剪切的作用

[root@hcss-ecs-000a lesson1]# mv day25.txt ../
[root@hcss-ecs-000a lesson1]# ls ../
code.c  day25.txt  lesson1  mytest.txt

13.3剪切并重命名

mv还可以剪切并重命名

[root@hcss-ecs-000a lesson1]#  mv test.txt ../mytest.txt
[root@hcss-ecs-000a lesson1]# ls ../
code.c  lesson1  mytest.txt

其实功能上都叫剪切并重命名

13.4mv目录

[root@hcss-ecs-000a lesson1]# mkdir lesson2
[root@hcss-ecs-000a lesson1]# mv lesson2 ../
[root@hcss-ecs-000a lesson1]# ls ../
code.c  lesson1  lesson2  mytest.txt
[root@hcss-ecs-000a lesson1]# mkdir lesson3
[root@hcss-ecs-000a lesson1]# mv lesson3 ../lesson2
[root@hcss-ecs-000a lesson1]# tree ../lesson2
../lesson2
└── lesson31 directory, 0 files

对于不存在的目录我们就可以把它剪切到上级目录,对于存在的我们会把它放到存在的目录里面

14.which指令

可以在指令路径下,搜索指令文件

[root@hcss-ecs-000a lesson1]# which ls
alias ls='ls --color=auto'/usr/bin/ls
[root@hcss-ecs-000a lesson1]# which ll
alias ll='ls -l --color=auto'/usr/bin/ls
[root@hcss-ecs-000a lesson1]# 

这个显示的就是ll是ls -l的别名

15.alias指令

给指令取别名

[root@hcss-ecs-000a lesson1]# alias hao='ls -l -i -a -n'
[root@hcss-ecs-000a lesson1]# which hao
alias hao='ls -l -i -a -n'/usr/bin/ls
[root@hcss-ecs-000a lesson1]# hao
total 12
656099 drwxr-xr-x  3 0 0 4096 May 25 15:28 .
393218 dr-xr-x---. 7 0 0 4096 May 25 15:27 ..
656102 drwxr-xr-x  2 0 0 4096 May 25 10:24 .ignore

那我们想要删除这个别名怎么办

[root@hcss-ecs-000a lesson1]# alias hao=''
[root@hcss-ecs-000a lesson1]# which hao
alias hao=''

这个重命名是临时的,你把你的xshell重新启动就没了

16.more指令

more是一个查看大文本的命令,但是我们在查看的时候它只能支持向下翻不支持向上翻

more file:分页查看文件内容,按空格翻页,适合看大文件。
more +n file:从第 n 行开始显示,能快速定位。
/keyword:搜索文件里的指定关键词,便于找关键信息。
n:在搜索后跳转到下一个匹配项。
q:直接退出 more 查看。

17.less指令

所以我们更常用的是less指令
语法:less[参数]文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件

cnt=1;while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done >text.txt

这里是一个shell脚本我们创建了一万行的数字
在这里插入图片描述
像我们这样输入就可以快速的定位到你想找到的内容

基本浏览:less file打开文件,可上下滚动浏览,如看配置文件。
翻页操作:按PageUp、PageDown键分别实现向上、向下翻页,浏览大文档时很方便。
搜索功能:输入/关键词正向搜索,?关键词反向搜索,按n查找下一个,N查找上一个,查日志时定位信息超实用。
跳转到指定行:输入行号G(如100G)可跳转到第100行,快速定位内容。
退出查看:按q键可退出less查看模式,结束操作。

18.head指令

那我们就不想看10000行就想看这个文本的前n行就可以用到head命令

[root@hcss-ecs-000a lesson1]# head -15 text.txt
hello Linux 1
hello Linux 2
hello Linux 3
hello Linux 4
hello Linux 5
hello Linux 6
hello Linux 7
hello Linux 8
hello Linux 9
hello Linux 10
hello Linux 11
hello Linux 12
hello Linux 13
hello Linux 14
hello Linux 15

19.tail指令

那我们想看最后n行就可以使用tail指令

[root@hcss-ecs-000a lesson1]# tail -5 text.txt
hello Linux 9996
hello Linux 9997
hello Linux 9998
hello Linux 9999
hello Linux 10000

那我们想要提取到1000-1020行的内容怎么做到呢

[root@hcss-ecs-000a lesson1]# head -20 text.txt>temp.txt
[root@hcss-ecs-000a lesson1]# head -1020 text.txt>temp.txt
[root@hcss-ecs-000a lesson1]# tail -20 temp.txt
hello Linux 1001
hello Linux 1002
hello Linux 1003
hello Linux 1004
hello Linux 1005
hello Linux 1006
hello Linux 1007
hello Linux 1008
hello Linux 1009
hello Linux 1010
hello Linux 1011
hello Linux 1012
hello Linux 1013
hello Linux 1014
hello Linux 1015
hello Linux 1016
hello Linux 1017
hello Linux 1018
hello Linux 1019
hello Linux 1020

但是这种方法要创建临时文件,那有没有办法不用呢

管道操作

[root@hcss-ecs-000a lesson1]# head -1020 text.txt|tail -21
hello Linux 1000
hello Linux 1001
hello Linux 1002
hello Linux 1003
hello Linux 1004
hello Linux 1005
hello Linux 1006
hello Linux 1007
hello Linux 1008
hello Linux 1009
hello Linux 1010
hello Linux 1011
hello Linux 1012
hello Linux 1013
hello Linux 1014
hello Linux 1015
hello Linux 1016
hello Linux 1017
hello Linux 1018
hello Linux 1019
hello Linux 1020

这种|就叫做管道,这是一种符号,因为linux当中一切皆文件,后面会被系统解释成为管道文件(内存级)
它的作用是将|左侧程序的输出交给管道文件,然后再让右侧的程序再从管道中把数据读入到程序中

wc -l

统计文本行的个数

[root@hcss-ecs-000a lesson1]# cat text.txt | head -50 |tail -20 |wc -l
20

20.date指令

这就是查看时间的指令

[wyx@hcss-ecs-000a ~]$ date
Sun May 25 18:27:39 CST 2025

但是这样的格式不是很好看

[wyx@hcss-ecs-000a ~]$ date +%Y-%m-%d_%H:%M:%S
2025-05-25_18:29:15

20.1时间戳

[wyx@hcss-ecs-000a ~]$ date +%s
1748169274

时间->时间戳:date+%s
时间戳->时间:date-d@时间戳
unix时间戳是从1970年1月1日开始所经过的秒数,不考虑闰秒

[wyx@hcss-ecs-000a ~]$ date -d@1748169448
Sun May 25 18:37:28 CST 2025
[wyx@hcss-ecs-000a ~]$ date +%Y-%m-%d_%H:%M:%S -d@0
1970-01-01_08:00:00
[wyx@hcss-ecs-000a ~]$ date +%Y-%m-%d_%H:%M:%S -d@1
1970-01-01_08:00:01

那为什么是从八点开始的呢,原因就是我们和欧洲那边有8个小时的时差

20.2date 命令核心功能速查表

date +%s → 显示Unix时间戳(如 1719394200,用于计算时间间隔)
date "+%Y-%m-%d" → 输出 2024-06-26(标准日期格式)
date "+%H:%M:%S" → 输出 15:30:00(24小时制精确到秒)
date "+%A %B %d" → 输出 Wednesday June 26(星期+月份+日)
date -d "tomorrow" → 显示明天此时的时间
date -d "3 days ago" → 显示3天前的时间
date -d "2023-01-01 +10 days" → 计算2023年元旦后10天的日期
-d "时间描述":按指定描述显示时间,如-d "yesterday"显示昨天时间;
-s "时间字符串":设置系统时间,像-s "2024-01-01 12:00:00"更改系统时间;
+格式:按指定格式输出,例如+%Y-%m-%d输出年 - 月 - 日格式;
-u:显示协调世界时(UTC)时间。

21.cal指令

这个命令就是查看日历
命令格式:cal[参数][月份][年份]
功能:用于查看日历等时间信息,如只有一个参数,则表示年份,如有两个参数,则表示月份和年份

[wyx@hcss-ecs-000a ~]$ cal 2025

在这里插入图片描述

22.find指令

语法:find pathname -options
功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
常用选项:-name 按照文件名查找文件

[wyx@hcss-ecs-000a lesson1]$ find ~ -name text.txt
/home/wyx/lesson1/text.txt
[wyx@hcss-ecs-000a lesson1]$ find ~ -name *.txt
/home/wyx/lesson1/text.txt
[wyx@hcss-ecs-000a lesson1]$ find /usr/bin -name ls
/usr/bin/ls

find 可以在指定的路径下进行文件的搜索(真的在磁盘文件中查找)

find命令速览表

-name:按文件名查找,如find /home -name "*.txt"可在/home目录下查找所有扩展名为`.txt`的文件。
-type:按文件类型查找,f代表普通文件,d代表目录,例如find /var -type d会找出/var`目录下的所有子目录。
-size:按文件大小查找,+表示大于,-表示小于,如find /tmp -size +10M可查找/tmp目录下大于10MB的文件。-mtime:按文件修改时间查找,+表示超过指定天数,-表示不足指定天数,像find /data -mtime -7会查找/data目录下7天内修改过的文件。-exec:对查找到的文件执行指定命令,格式为find ... -exec 命令 {} \;,比如find /root -name "*.sh" -exec chmod +x {} \;会给/root目录下所有.sh文件添加可执行权限。
-delete:直接删除查找到的文件,如find /temp -name "log*" -delete会删除/temp目录下所有以log开头的文件。

23.whereis指令

在系统特定的路径下查找,既可以找到可执行程序,又可以找到手册,安装包,压缩包等之类
它会去查找只要涵盖这名字的局部的文件

[wyx@hcss-ecs-000a ~]$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

24.grep指令

grep是一个行文本过滤工具
就相当于过滤出你大文件里面你所需要关键字所涵盖的文件

[wyx@hcss-ecs-000a pipe]$ grep '999' test.txt
Hello Linux 999
Hello Linux 1999
Hello Linux 2999
Hello Linux 3999
Hello Linux 4999
Hello Linux 5999
Hello Linux 6999
Hello Linux 7999
Hello Linux 8999
Hello Linux 9990
Hello Linux 9991
Hello Linux 9992
Hello Linux 9993
Hello Linux 9994
Hello Linux 9995
Hello Linux 9996
Hello Linux 9997
Hello Linux 9998
Hello Linux 9999

24.1grep-v 指令

把不包含这个过滤字的行给打印出来

[wyx@hcss-ecs-000a pipe]$ grep 'world' test.txt
hello world
hello world
[wyx@hcss-ecs-000a pipe]$ grep -v 'world' test.txt
1234
5678
78910

24.2grep-n指令

给过滤字的行加上行号
空就是代表所有都匹配的上的意思

[wyx@hcss-ecs-000a pipe]$ grep -n '' test.txt
1:hello world
2:1234
3:5678
4:hello world
5:78910
[wyx@hcss-ecs-000a pipe]$ grep -nv 'world' test.txt
2:1234
3:5678
5:78910

24.3grep -i指令

这个指令是忽略大小写

25.zip/unzip指令

语法:zip压缩文件.zip目录或文件
功能:将目录或文件压缩成zip格式
常用选项
-r 递归处理,将指定目录下的所有文件和子目录一并处理
如果你没有zip这个指令的话,切换回root账号执行这一操作

[root@hcss-ecs-000a ~]# yum install -y zip unzip

unzip-d解压到指定的目录下

[wyx@hcss-ecs-000a lesson2]$ zip -r d1.zip d1adding: d1/ (stored 0%)adding: d1/test1.txt (stored 0%)adding: d1/d2/ (stored 0%)adding: d1/d2/d3/ (stored 0%)adding: d1/d2/test.txt (stored 0%)
[wyx@hcss-ecs-000a lesson2]$ ls
d1  d1.zip  pipe
wyx@hcss-ecs-000a lesson2]$ unzip d1.zip -d test
Archive:  d1.zipcreating: test/d1/extracting: test/d1/test1.txt   creating: test/d1/d2/creating: test/d1/d2/d3/extracting: test/d1/d2/test.txt 
[wyx@hcss-ecs-000a lesson2]$ tree test
test
└── d1
├── d2
│   ├── d3
│   └── test.txt
└── test1.txt3 directories, 2 files

26.tar指令

这个指令是打包/解包,不打开它直接看内容
tar[-cxtzjvf]文件与目录…参数

26.1 tar指令功能速查表##

-c:创建新的压缩文件
-x:解压压缩文件
-t:查看压缩文件内容
-z:通过gzip算法进行压缩或解压
-j:通过bzip2算法进行压缩或解压
-v:显示压缩或解压的详细过程
-f:指定压缩文件的文件名
-C:指定解压的目标目录

26.2tar指令的解包和打包

tar czf xxx —打包压缩
tar tzf xxx.tgz—预览
tar xzf xxx.tgz—解压缩包
tar->打包后缀
.gz->压缩后缀
xxx.tar.gz->xxx.tgz

[wyx@hcss-ecs-000a lesson2]$ tar -czf code.tgz d1 pipe
[wyx@hcss-ecs-000a lesson2]$ ls
code.tgz  d1  pipe
[wyx@hcss-ecs-000a lesson2]$ rm -rf d1 pipe
[wyx@hcss-ecs-000a lesson2]$ ls
code.tgz
[wyx@hcss-ecs-000a lesson2]$ tar -xzf code.tgz 
[wyx@hcss-ecs-000a lesson2]$ ls
code.tgz  d1  pipe

27.bc指令

bc命令可以很方便的进行浮点运算

[wyx@hcss-ecs-000a lesson2]$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
3.14*2.56
8.03
quit

28.uname-r指令

语法:uname[选项]
功能:uname用来获取电脑和操作系统的相关信息
**补充说明:uname可显示linux主机所用的操作系统的版本,硬件的名称等基本信息
常用选项:
-a或-all详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

[wyx@hcss-ecs-000a lesson2]$ uname 
Linux
[wyx@hcss-ecs-000a lesson2]$ uname -a
Linux hcss-ecs-000a 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
[wyx@hcss-ecs-000a lesson2]$ uname -r
3.10.0-1160.119.1.el7.x86_64

29.history指令

history会记录下来历史命令,linux会默认记录最新的1000条,可以修改

30.关机

语法:shutdown[选项]常见选项

-h(halt):关闭系统并停止硬件运行。使用该参数后,系统会正常地完成各项关闭前的操作,然后停止硬件运转,就像让一台机器彻底“沉睡”。
-r(reboot):关闭系统后重新启动。当系统需要更新某些配置或者修复一些问题后,使用此参数能让系统在关闭后迅速重启,类似于给系统“刷新”一下。
-c(cancel):取消已经安排好的关机计划。如果之前已经设置了关机时间,在关机时间到达之前可以使用该参数来取消关机操作,避免误操作导致系统关机。
-t sec(time):指定关机前的延迟时间,单位为秒。可以精确控制关机的时间,例如“shutdown -h -t 60”表示在60秒后关闭系统,这就如同给系统设置了一个精确的“倒计时”。
now:立即执行关机操作。当遇到紧急情况需要马上关闭系统时,使用“shutdown -h now”可以让系统立刻停止运行,就像按下了系统的“急停按钮”。

http://www.hkcw.cn/article/LtOHMJCMTQ.shtml

相关文章

桥 接 模 式

在玩游戏的时候我们常常会遇到这样的机制&#xff1a;我们可以随意选择不同的角色&#xff0c;搭配不同的武器。这时只有一个抽象上下文的策略模式就不那么适用了&#xff0c;因为一旦我们使用继承的方式&#xff0c;武器和角色总有一方会变得难以扩展。这时&#xff0c;我们就…

leetcode3128. 直角三角形-medium

1 题目&#xff1a;直角三角形 官方标定难度&#xff1a;中 给你一个二维 boolean 矩阵 grid 。 如果 grid 的 3 个元素的集合中&#xff0c;一个元素与另一个元素在 同一行&#xff0c;并且与第三个元素在 同一列&#xff0c;则该集合是一个 直角三角形。3 个元素 不必 彼此…

数据资产入表的数据质量评估

在数据资产入表过程中&#xff0c;对数据质量进行全面、系统的评估至关重要。下面将从数据完整性评估、数据准确性校验、数据一致性检查、数据时效性分析、数据可信度评价、数据规范性审核、数据安全性检测和数据可用性考察等方面&#xff0c;对数据资产入表的数据质量进行详细…

精简多功能办公软件

今天向大家推荐一款功能强大的实用软件。 软件介绍 这款名为"一个MH"的软件界面简洁明了&#xff0c;虽然体积小巧&#xff0c;却集成了多种实用功能&#xff0c;相当于整合了多个软件的功能于一身。软件将各类工具进行了系统分类&#xff0c;并配备了便捷的搜索功…

windows+APP PDFgear 免费工具

在处理PDF文件中&#xff0c;我们会遇到合并&#xff0c;编辑旋转、添加水印、转换格式等&#xff0c;这些在wps上是需要会员才能享受的功能&#xff0c;今天他来了--PDFgear&#xff0c;免费、离线、无任何附加条件的 PDF 编辑器。 文件大小&#xff1a;100M左右。 页面展示…

【深度学习】15. Segment Anything Model (SAM) :基于提示的分割新时代

Segment Anything Model (SAM) &#xff1a;基于提示的分割新时代 基本介绍 The first foundation model for promptable segmentation. Segment Anything Model&#xff08;简称 SAM&#xff09;是 Meta AI 于 2023 年提出的一种通用型图像分割基础模型。与以往分割模型不同&…

Rk3568驱动开发_GPIO点亮LED_12

需求&#xff1a; 用配置寄存器方式控制点灯非常原始&#xff0c;现在采用更方便的Linux提供的pctrl和gpio子系统编写字符驱动 1.设备树配置&#xff1a; 现将开发板中呼吸灯关闭掉防止占用到我需要使用的引脚 /* Narnat 2025-5-29 RK3568 GPIO 无需设置pinctrl*/gpioled{co…

Compose原理 - 整体架构与主流程

一、整体架构 在官方文档中&#xff08;Jetpack Compose 架构层 | Android Developers&#xff09;&#xff0c;对Compose的分层有所阐述&#xff1a; 其中 Runtime&#xff1a;提供Compose的基础运行能力&#xff0c;包括State、Side-effects、CompositionLocal、Compositio…

LeetCode 高频 SQL 50 题(基础版)之 【聚合函数】部分

题目&#xff1a;620. 有趣的电影 题解&#xff1a; select * from cinema where description !boring and id%21 order by rating desc题目&#xff1a;1251. 平均售价 题解&#xff1a; select p.product_id product_id,round(ifnull(sum(p.price*u.units)/sum(u.units),0)…

雪花算法的实际应用

什么场景下用雪花算法&#xff1f; 软件项目开发中&#xff0c;主键自动生成是基本需求。而各个数据库对于该需求也提供了相应的支持&#xff0c;比如&#xff1a;数据库自增(MySql,oracle)。但是在分布式环境中&#xff0c;分库分表之后&#xff0c;不同表生成全局唯一的ID是非…

Thinkphp6实现websocket

项目需要连接一台自动售货机&#xff0c;售货机要求两边用websocket连接,监听9997端口。本文实现了一个基于PHP的WebSocket服务器&#xff0c;用于连接自动售货机&#xff0c;支持start/stop/restart命令操作 1.新建文件 新建文件 /command/socket.php <?php namespace a…

痉挛性斜颈带来的困扰

当颈部不受控制地扭转歪斜&#xff0c;生活便被打乱了节奏。颈部肌肉异常收缩&#xff0c;导致头部不自觉偏向一侧或后仰&#xff0c;不仅让外观明显异于常人&#xff0c;还会引发持续的酸痛与僵硬感。长时间保持扭曲姿势&#xff0c;肩颈肌肉过度紧绷&#xff0c;甚至会牵连背…

【中国・珠海】2025 物联网与边缘计算国际研讨会(IoTEC2025)盛大来袭!

2025 物联网与边缘计算国际研讨会&#xff08;IoTEC2025&#xff09;盛大来袭&#xff01; 科技浪潮奔涌向前&#xff0c;物联网与边缘计算已成为驱动各行业变革的核心力量。在此背景下&#xff0c;2025 物联网与边缘计算国际研讨会&#xff08;IoTEC2025&#xff09;即将震撼…

一周学会Pandas2之Python数据处理与分析-数据重塑与透视-pivot() - 透视 (长 -> 宽,有限制)

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili pivot() 是 pandas 中用于数据重塑的核心方法&#xff0c;它将长格式数据转换为宽格式数据&#xff0c;与 melt() 方…

WordPress通过简码插入bilibili视频

发布于&#xff1a;Eucalyptus-Blog 一、前言 B站是国内非常受欢迎的视频分享平台&#xff0c;上面不仅内容丰富&#xff0c;而且很多视频制作精良、趣味十足。很多人&#xff0c;比如我&#xff0c;就喜欢将B站的视频通过 iframe 嵌入到自己的网页中&#xff0c;但这段代码又…

【Unity博客节选】Timeline 的 Traversal mode参数

注&#xff1a;软件版本Unity 6.0 Timeline 1.8.7 作者&#xff1a;CSDN RingleaderWang 原文&#xff1a;《Unity第25期——Timeline结构及其源码浅析》 文章首发Github&#x1f44d;&#xff1a;《Timeline结构及其源码浅析》 Bilibili 视频版&#x1f44d;&#x1f44d;&a…

Constraints and Triggers

目录 Kinds of Constraints Single-Attribute Keys Multiattribute Key Foreign Keys Expressing Foreign Keys Enforcing Foreign-Key Constraints Actions Taken Attribute-Based Checks Timing of Checks Tuple-Based Checks Assertions Timing of Assertion Ch…

免费且好用的PDF水印添加工具

软件介绍 今天要给大家推荐一款超实用的PDF添加水印工具&#xff0c;它能够满足用户给PDF文件添加水印的需求&#xff0c;而且完全免费。 这款PDF添加水印的软件有着简洁的界面&#xff0c;操作简便&#xff0c;无需安装&#xff0c;解压后即可使用。 在使用前&#xff0c;先…

设计模式——面向对象设计六大原则

摘要 本文详细介绍了设计模式中的六大基本原则&#xff0c;包括单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则和合成复用原则。每个原则都通过定义、理解、示例三个部分进行阐述&#xff0c;旨在帮助开发者提高代码的可维护性和灵活性。通过具体代码…

DO指数GPU版本

大指数下DO指数模型计算优化 DO指数模型概述 DO指数&#xff08;Duranton-Overman Index&#xff09;是由Duranton和Overman于2005年提出的产业空间集聚测度方法&#xff0c;它通过分析企业间的精确地理距离分布来识别产业集聚模式。与传统集聚指标相比&#xff0c;DO指数具有…