• Linux友人帐之命令


    一、开机关机命令

    1.1关机

    关机指令为shutdown(root用户使用)

    sync # 将数据由内存同步到硬盘中。
    shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

    • shutdown -h 10 # 这个命令告诉大家,计算机将在10分钟后关机
    • shutdown -h now # 立马关机 
    • shutdown -h  20:25 # 系统会在今天 20:25 关机
    • shutdown -h +10  # 十分钟后关机
    • shutdown -r now # 系统立马重启
    • shutdown -r +10 # 系统十分钟后重启
    • reboot # 就是重启,等同于 shutdown -r now
    • halt # 关闭系统,等同于shutdown -h now 和 poweroff

    不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。

    在 shutdown 命令中,一般来说,-r 是重启(reboot)的缩写,而 -h 是关机(halt)的缩写。

    shutdown -h 10 和 shutdown -h +10 的异同是这样的:

    • shutdown -h 10 是指在绝对时间为10点的时候关机,也就是说,如果现在是9点59分,那么这个命令会在一分钟后关机;如果现在是10点01分,那么这个命令会在第二天的10点关机。
    • shutdown -h +10 是指在相对时间为10分钟后关机,也就是说,无论现在是几点几分,这个命令都会在执行后的10分钟内关机。

     1.2系统目录结构

    登录系统后,在当前命令窗口下输入命令:

    • /bin
      bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。

    • /boot:
      这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。(不能动)

    • /dev :
      dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

    • /etc:
      etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。

    • /home
      用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

    • /lib
      lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。(不能动)

    • /lost+found
      这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

    • /media
      linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

    • /mnt
      系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。

    • /opt
      opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的

    • /proc
      proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
      这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器

    • /root
      该目录为系统管理员,也称作超级权限者的用户主目录。

    • /sbin
      s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

    • /srv
       该目录存放一些服务启动之后需要提取的数据。

    • /sys

      这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

      sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

      该文件系统是内核设备树的一个直观反映。

      当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

    • /tmp
      tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

    • /usr
       usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

    • /usr/bin:
      系统用户使用的应用程序。

    • /usr/sbin:
      超级用户使用的比较高级的管理程序和系统守护程序。

    • /usr/src:
      内核源代码默认的放置目录。

    • /var
      var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

    • /run
      是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

    • 以下为不同文件的不同后缀
      压缩包:.gz .bz2 .tar.bz2 .tgz
      二进制软件包:.rpm
      网页文件:.html .php
      脚本文件:.sh
      配置文件:.conf
    • 注意: Linux不靠扩展名区分文;件信息,而且所有存储设备必须挂载后方可使用(硬盘,U盘,光盘)

    1.3常用快捷键

     ctrl+c强制停止

     ctrl+d退出或登出

    历史命令搜索

    光标移动快捷键

    清屏

    二、常用基础命令 

    2.1路径

    绝对路径:

    路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。

    相对路径:

    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd ../man 这就是相对路径的写法啦!

     2.2处理目录的常用命令

    接下来我们就来看几个常见的处理目录的命令吧:

    • ls: 列出目录

    • cd:切换目录

    • pwd:显示目前的目录

    • mkdir:创建一个新的目录

    • rmdir:删除一个空的目录

    • cp: 复制文件或目录

    • rm: 移除文件或目录

    • mv: 移动文件与目录,或修改文件与目录的名称

     Linux ls(列出目录)

    语法:
    [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
    • -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
    • -l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
    • -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
    • -r 倒序显示文件和目录
    • -t 将按照修改时间排序,最新的文件在最前面
    • -R 递归显示目录中的所有文件和子目录。

     Linux cd (切换目录) 

    语法:

    cd [相对路径或绝对路径]
    • 切换到上级目录:使用 .. 表示上级目录,可以通过连续多次使用 .. 来切换到更高级的目录。        cd ..
    • 切换到用户主目录(home):使用 ~ 表示当前用户的主目录,可以使用 cd 命令直接切换到主目录        cd ~
    • 切换到上次访问的目录:使用 cd - 可以切换到上次访问的目录。 cd -
    • 回到根目录 cd /

     Linux pwd ( 显示目前所在的目录  )

    pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

    [root@kuangshen kuangstudy]#pwd [-P]

    选项与参数:-P :显示出确实的路径,而非使用连接(link) 路径

      Linux mkdir (创建新目录)

    如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

    mkdir [-mp] 目录名称

    选项与参数:

    • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~

    • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

    按键上下切换往期命令

    安住Tab自动补全

      Linux rmdir ( 删除空的目录 ) 

    语法:

    rmdir [-p] 目录名称
    • rmdir test # 在当前目录下删除一个名为test的空目录
    • rmdir -p test1/test2 # 在当前目录下递归删除test1和test1/test2两个空目录
    • rmdir -v test3 # 在当前目录下删除一个名为test3的空目录,并显示删除信息

    Linux cp ( 复制文件或目录 )

    • cp file1 file2 # 将文件file1复制为文件file2
    • cp -r dir1 dir2 #将目录dir1及其所有内容复制为目录dir2。递归持续复制,用於目录的复制行为;(常用)
    • cp -a file1 file2 # 将文件file1复制为文件file2,并保留其所有属性和链接
    • cp -s file1 file2 # 将文件file1复制为文件file2的软链接

    Linux  rm ( 移除文件或目录 ) 

    语法:

    rm [-fir] 文件或目录

    选项与参数:

    • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

    • -i :互动模式,在删除前会询问使用者是否动作

    • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

    Linux mv  ( 移动文件与目录,或修改名称 ) 

    • mv file1 file2 # 将文件file1改名为文件file2
    • mv file1 dir1 # 将文件file1移动到目录dir1中
    • mv dir1 dir2 # 将目录dir1改名为目录dir2,如果目录dir2不存在;或者将目录dir1移动到目录dir2中,如果目录dir2已经存在
    • mv -f file1 file2 # 强制将文件file1改名为文件file2,如果文件file2已经存在,不会提示确认
    • mv -i file1 file2 # 交互地将文件file1改名为文件file2,如果文件file2已经存在,会提示确认
    • mv -v file1 file2 # 显示将文件file1改名为文件file2的过程
    • mv -u file1 file2 # 只有当文件file1比文件file2新,或者文件file2不存在时,才将文件file1改名为文件file2

     Linux sort(文件内容排序)

    sort 命令是 Linux 系统中的一个常用命令,它的功能是对文本文件内容进行排序。sort 可以根据不同的选项和参数,按照字母、数字、月份等不同的方式对文本文件的内容进行排序,也可以指定按照某一列或者某一范围进行排序。sort 还可以对文件内容进行去重、合并、比较等操作。

    linux sort命令的语法格式如下:

    sort [选项]… [文件]…

    其中,常用的选项有:

    • -t 分隔符 :指定排序时使用的分隔符;
    • -k : 指定需要排序的列;
    • -n : 按照数值大小进行排序;
    • -r : 以相反的顺序来排序;
    • -b : 忽略排序字段或关键字中开头的空格;
    • -c : 检查待排序内容是否已排序,如果未排序,则输出最开始乱序的列,否则,没有输出;
    • -o FILE : 将排序结果输出到指定文件,而不是标准输出;

    以下是一些linux sort命令的用法和示例:

    • 对 test.txt 文件内容进行默认排序并输出排序结果:
    sort test.txt
    
    • 对相同的文件做反向排序:
    sort -r test.txt

    2.3文本内容处理常见命令

    uniq命令

    linux uniq命令是用于检查和删除文本文件中重复出现的行列的工具。它一般与sort命令结合使用,因为uniq命令只能检测相邻的重复行

    linux uniq命令的语法格式如下:

    uniq [-cdu] [-f<栏位>] [-s<字符位置>] [-w<字符位置>] [–help] [–version] [输入文件] [输出文件]
    • -c或–count 在每行前加上表示该行重复出现的次数的前缀编号。
    • -d或–repeated 仅显示重复出现的行列。
    • -f<栏位>或–skip-fields=<栏位> 忽略比较指定的栏位。
    • -s<字符位置>或–skip-chars=<字符位置> 忽略比较指定的字符。
    • -u或–unique 仅显示出一次的行列。
    • -w<字符位置>或–check-chars=<字符位置> 指定要比较的字符。

    wc命令

    wc命令是Linux中用来统计文件中的行数、字数、字节数和字符数的工具。它的语法格式如下:

    wc [选项] [文件]

    其中,常用的选项有:

    • -c或–bytes:只显示字节数。
    • -l或–lines:只显示行数。
    • -m或–chars:只显示字符数。
    • -w或–words:只显示字数。
    • -L或–max-line-length:显示最长行的长度。
    • –help:显示帮助信息。
    • –version:显示版本信息。

    如果没有指定文件,或者文件为“-”,则wc命令会从标准输入读取数据。如果指定了多个文件,每个文件对应输出一行,最后一行显示总计。

    例如,如果您想统计一个名为test.txt的文件中的行数、字数和字符数,可以使用如下命令:

    wc -lwm test.txt

    输出结果可能如下:

    10 20 100 test.txt

    这表示test.txt文件有10行,20个字,100个字符。

    comm命令

    comm命令是用于比较两个已排过序的文件的工具。它可以输出三列结果,分别表示仅在第一个文件中出现的行,仅在第二个文件中出现的行,以及在两个文件中都出现的行。

    1. comm命令的语法格式如下:
    2. comm [-123] [–help] [–version] [第一个文件] [第二个文件]

    其中,各个参数的含义如下:

    • -1或–suppress-column-1:不显示只在第一个文件中出现的行。
    • -2或–suppress-column-2:不显示只在第二个文件中出现的行。
    • -3或–suppress-column-3:不显示在两个文件中都出现的行。
    • –help:显示帮助信息。
    • –version:显示版本信息。

    如果没有指定文件,或者文件为“-”,则comm命令会从标准输入读取数据。如果指定了多个文件,每个文件对应输出一行,最后一行显示总计。

    例如,如果您想比较两个名为aaa.txt和bbb.txt的文件,可以使用如下命令:

    comm aaa.txt bbb.txt

    输出结果可能如下:

    aaa bbb ccc aaa ddd eee hhh ttt

    这表示aaa.txt文件有aaa、ddd、eee三行是独有的,bbb.txt文件有bbb、hhh、ttt三行是独有的,ccc和aaa两行是共有的。

    diff命令

    linux diff命令是用于比较两个文本文件或目录的差异的工具。它可以逐行地比较文件的内容,也可以递归地比较目录的内容。diff命令的输出内容可以让我们知道要使两个文件相同需要做哪些修改,

    1. linux diff命令的语法格式如下:
    2. diff [选项] [文件1或目录1] [文件2或目录2]

    其中,常用的选项有:

    • -a或–text:将所有输入文件视为文本文件。
    • -b或–ignore-space-change:忽略空格字符的变化。
    • -B或–ignore-blank-lines:忽略空白行的变化。
    • -c或–context:以上下文格式显示差异。
    • -C或–context=NUM:以上下文格式显示差异,并指定上下文行数。
    • -i或–ignore-case:忽略大小写的差异。

    2.4文件的归档与压缩处理

    压缩格式

    Linux tar命令是一个用于在Linux系统上创建或解压缩归档文件的命令。归档文件是一种将多个文件或目录合并为一个文件的格式,通常用于备份或传输数据。tar命令支持多种压缩格式,如gzip、bzip2、compress等,可以在创建或解压缩归档文件时进行压缩或解压操作

    1. tar命令的基本语法格式是:
    2. tar [选项] [归档文件] [文件或目录...]

    tar压缩 

    tar解压

    zip压缩

    unzip解压

    其它相关 

    2.5文件的上传与下载

    rz、sz命令

    三、基础属性

    3.1基础概念

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

    Linux 基础属性是指 Linux 系统中文件或目录的一些特征,包括文件类型、文件权限、文件属主、文件属组等。这些属性可以通过 ls -l 命令查看,也可以通过 chgrp、chown、chmod 等命令修改。Linux 基础属性的作用是为了保护系统的安全性,防止不同的用户对同一文件进行非法的操作。

    Linux 基础属性的具体内容如下:

            1.文件类型:Linux 系统中有多种不同的文件类型,如普通文件、目录文件、链接文件、设备文件等。文件类型可以通过 ls -l 命令的第一个字符来判断

    • 当为[ d ]则是目录

    • 当为[ - ]则是文件;

    • 若是[ l ]则表示为链接文档 ( link file );(快捷方式)

    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );

    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    每个文件的属性由左边第一部分的10个字符来确定(如下图):

    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

    同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

    文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

    因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

    在以上实例中,boot 文件是一个目录文件,属主和属组都为 root。

     3.2更改文件属性

    1、chgrp:更改文件属组

    语法:

    chgrp [-R] 属组名 文件名

    参数选项

    • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    2、chown:更改文件属主,也可以同时更改文件属组

    语法:

    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名

    3、chmod:更改文件9个属性

    chmod [-R] xyz 文件或目录
    • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
    • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

    Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

    先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    • r:4
    • w:2
    • x:1

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

    • owner = rwx = 4+2+1 = 7
    • group = rwx = 4+2+1 = 7
    • others= --- = 0+0+0 = 0

    符号类型改变文件权限

    还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

    • user:用户
    • group:组
    • others:其他

    那么我们就可以使用 u, g, o 来代表三种身份的权限。

    四、文件内容查看

    Linux系统中使用以下命令来查看文件的内容:

    • cat 由第一行开始显示文件内容

    • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

    • nl  显示的时候,顺道输出行号!

    • more 一页一页的显示文件内容

    • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

    • head 只看头几行

    • tail 只看尾巴几行

    你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

    cat 由第一行开始显示文件内容

    4.1​cat 命令

    ​cat 命令是 Linux 系统中用于连接文件并打印到标准输出设备上的一个常用命令。它的英文全拼是 concatenate,意思是连接或串联。​

    cat 命令的基本语法是:

    cat [选项] [文件]...
    

    如果你在包含文件的同一目录中,你可以直接使用上面的命令。否则,你需要指定文件的路径,例如:

    cat [选项] [path/to/file]...
    

    cat 命令有以下几种常用的选项:

    • -n 或 --number:给所有输出的行数编号,从 1 开始。
    • -b 或 --number-nonblank:给非空白行编号,空白行不编号。
    • -s 或 --squeeze-blank:将连续的多个空白行替换为一个空白行。
    • -v 或 --show-nonprinting:显示不可打印的字符,除了换行符和制表符之外。
    • -E 或 --show-ends:在每行结束处显示 $ 符号。
    • -T 或 --show-tabs:将制表符显示为 ^I 符号。
    • -A 或 --show-all:相当于 -vET 选项的组合。

    cat 命令有以下几种常见的用法:

    • 显示文件内容:例如 cat file.txt 可以显示 file.txt 的全部内容。
    • 创建文件:例如 cat > file.txt 可以从键盘输入内容并创建 file.txt 文件,按 Ctrl+D 结束输入。
    • 追加内容到文件:例如 cat >> file.txt 可以从键盘输入内容并追加到 file.txt 文件末尾,按 Ctrl+D 结束输入。
    • 合并多个文件:例如 cat file1.txt file2.txt > file3.txt 可以将 file1.txt 和 file2.txt 的内容合并到 file3.txt 文件中。
    • 制作镜像文件:例如 cat /dev/fd0 > image.img 可以将软盘的内容复制到 image.img 文件中。

    4.2stat命令

    `stat`是Linux中的一个命令,用于显示文件或文件系统的详细信息,包括文件的所有者、权限、大小、修改时间、访问时间、状态等。

    该命令的常用语法如下:

    ```
    stat [选项] 文件或目录
    ```

    其中,常用的选项包括:

    - `-f`:显示文件系统状态而非文件状态;
    - `-c`:使用指定的格式输出信息;
    - `-t`:使用指定的时间格式输出时间戳;
    - `-L`:显示符号链接指向的文件的信息,而非链接本身的信息。

    例如,下面的命令可以显示当前目录下的文件“test.txt”的详细信息:

    stat test.txt

    执行该命令后,会输出类似如下的信息:

    1.   File: ‘test.txt’
    2.   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    3. Device: 801h/2049d      Inode: 139008      Links: 1
    4. Access: (0664/-rw-rw-r--)  Uid: ( 1000/  user)   Gid: ( 1000/  user)
    5. Access: 2021-05-25 19:31:43.469398772 +0800
    6. Modify: 2021-05-25 19:31:43.469398772 +0800
    7. Change: 2021-05-25 19:31:43.469398772 +0800
    8.  Birth: -

    其中,各字段的含义如下:

    - `File`:文件名;
    - `Size`:文件大小;
    - `Blocks`:文件占用的块数;
    - `IO Block`:文件系统的块大小;
    - `Device`:文件所在设备的编号;
    - `Inode`:文件的inode编号;
    - `Links`:文件的硬链接数;
    - `Access`:文件的访问权限;
    - `Uid`:文件所有者的用户ID;
    - `Gid`:文件所在组的组ID;
    - `Access`:文件的访问时间;
    - `Modify`:文件的修改时间;
    - `Change`:文件的状态修改时间;
    - `Birth`:文件的创建时间。

     

     4.3tac 命令

    tac 命令是一个 Linux 系统中的命令,它的功能是将文件内容从后向前逐行连接和打印到标准输出设备上。它相当于 cat 命令的倒序输出。这个命令的主要作用是方便查看文件内容,特别是当文件内容较多,需要逐行查看时

    tac 命令的基本语法是:

    tac [选项]... [文件]...
    

    如果没有指定文件或文件是 -,则 tac 命令会从标准输入读取数据。

    tac 命令有以下几种常用的选项:

    • -b 或 --before:在每行的前面而不是后面添加分隔符。
    • -r 或 --regex:将分隔符视为正则表达式来解析。
    • -s 或 --separator=STRING:指定字符串代替换行符作为行分隔符。
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出

    tac 命令有以下几种常见的用法:

    • 反转文件内容:例如 tac file.txt 可以将 file.txt 的内容从最后一行开始倒序显示。
    • 反转管道输出:例如 ls -l | tac 可以将 ls -l 命令的输出从最后一行开始倒序显示。
    • 按照指定的分隔符反转文件内容:例如 tac -s ',' file.csv 可以将 file.csv 的内容按照逗号分隔符反转显示。
    • 在文件中搜索最新的匹配项:例如 tac log.txt | grep -m 1 'error' 可以在 log.txt 文件中从最后一行开始搜索第一个包含 ‘error’ 的行,并将其显示出来。

     4.4 nl 命令

    nl 命令是一个 Linux 系统中的命令,它的功能是将文件内容从前向后逐行连接和打印到标准输出设备上,并在每行的左边加上行号。它是 number of lines 的缩写

    nl 命令的基本语法是:

    nl [选项]... [文件]...
    

    如果没有指定文件或文件是 -,则 nl 命令会从标准输入读取数据。

    nl 命令有以下几种常用的选项:

    • -b 或 --body-numbering=STYLE:指定主体部分的行号指定方式,主要有三种:
      • a:表示不论是否为空行,也同样列出行号(类似 cat -n);
      • t:如果有空行,空的那一行不要列出行号(默认值);
      • n:不列出任何行号。
    • -h 或 --header-numbering=STYLE:指定头部部分的行号指定方式,同上。
    • -f 或 --footer-numbering=STYLE:指定页脚部分的行号指定方式,同上。
    • -n 或 --number-format=FORMAT:列出行号表示的方法,主要有三种:
      • ln:行号在屏幕的最左方显示;
      • rn:行号在自己栏位的最右方显示,且不加 0 ;
      • rz:行号在自己栏位的最右方显示,且加 0 ;
    • -w 或 --number-width=NUMBER:指定行号栏位占用的位数。
    • -p 或 --no-renumber:在逻辑定界符处不重新开始计算。
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出。

    nl 命令有以下几种常见的用法:

    • 显示文件内容并加上行号:例如 nl file.txt 可以显示 file.txt 的内容并在每一行前面加上行号。
    • 创建文件并加上行号:例如 nl > file.txt 可以从键盘输入内容并创建 file.txt 文件,并在每一行前面加上行号,按 Ctrl+D 结束输入。
    • 追加内容到文件并加上行号:例如 nl >> file.txt 可以从键盘输入内容并追加到 file.txt 文件末尾,并在每一行前面加上行号,按 Ctrl+D 结束输入。
    • 合并多个文件并加上行号:例如 nl file1.txt file2.txt > file3.txt 可以将 file1.txt 和 file2.txt 的内容合并到 file3.txt 文件中,并在每一行前面加上行号。

    4.5 more命令

    more  一页一页翻动

    在 more 这个程序的运行过程中,你有几个按键可以按的:

    • 空白键 (space):代表向下翻一页;

    • Enter     :代表向下翻『一行』;

    • /字串     :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

    • :f      :立刻显示出档名以及目前显示的行数;

    • q       :代表立刻离开 more ,不再显示该文件内容。

    • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

    more 命令有以下几种常见的用法:

    • 显示文件内容并加上行号:例如 more file.txt 可以显示 file.txt 的内容并在每一行前面加上行号。
    • 创建文件并加上行号:例如 more > file.txt 可以从键盘输入内容并创建 file.txt 文件,并在每一行前面加上行号,按 Ctrl+D 结束输入。
    • 追加内容到文件并加上行号:例如 more >> file.txt 可以从键盘输入内容并追加到 file.txt 文件末尾,并在每一行前面加上行号,按 Ctrl+D 结束输入。
    • 合并多个文件并加上行号:例如 more file1.txt file2.txt > file3.txt 可以将 file1.txt 和 file2.txt 的内容合并到 file3.txt 文件中,并在每一行前面加上行号。

     4.6less命令

    less 命令是一个 Linux 系统中的命令,它的功能是用于分页显示文本文件内容。它与 more 命令类似,但是 less 命令可以随意浏览文件,支持向上翻页和向下翻页,而 more 命令只能向前浏览。less 命令还支持搜索、跳转、标记等功能,让你更方便地查看文件内容。

    less 命令的基本语法是:

    less [选项]... [文件]...
    

    如果没有指定文件或文件是 -,则 less 命令会从标准输入读取数据。

    less 命令有以下几种常用的选项:

    • -b 或 --buffers=NUM:设置缓冲区的大小为 NUM K 字节。
    • -e 或 --quit-at-eof:当到达文件末尾时自动退出。
    • -f 或 --force:强制打开特殊文件,例如目录和二进制文件。
    • -g 或 --hilite-search:只高亮显示最后一次搜索的匹配项。
    • -i 或 --ignore-case:忽略搜索时的大小写。
    • -m 或 --long-prompt:显示详细的提示信息。
    • -N 或 --LINE-NUMBERS:显示每行的行号。
    • -o 或 --LOG-FILE=FILE:将 less 输出的内容保存到 FILE 文件中。
    • -Q 或 --QUIET:不使用响铃音和视觉提示。
    • -s 或 --squeeze-blank-lines:将连续的多个空行压缩为一行显示。
    • -x 或 --tabs=NUM:将制表符显示为 NUM 个空格。

    less 命令有以下几种常见的用法:

    • 显示文件内容并分页浏览:例如 less file.txt 可以显示 file.txt 的内容并按页显示,你可以使用空格键、回车键、上下箭头键、PageUp 和 PageDown 键来控制翻页。
    • 搜索文件内容并高亮显示:例如 less file.txt 后输入 /keyword 可以在 file.txt 中搜索包含 keyword 的行,并将其高亮显示,你可以使用 n 键和 N 键来跳转到下一个或上一个匹配项。
    • 跳转到指定的行号或百分比位置:例如 less file.txt 后输入 100g 可以跳转到 file.txt 的第 100 行,输入 50p 可以跳转到 file.txt 的中间位置(50%)。
    • 标记和回到标记位置:例如 less file.txt 后输入 ma 可以在 file.txt 的当前位置设置一个名为 a 的标记,输入 'a 可以回到该标记位置。

    less运行时可以输入的命令有:

    • 空白键  :向下翻动一页;

    • [pagedown]:向下翻动一页;

    • [pageup] :向上翻动一页;

    • /字串   :向下搜寻『字串』的功能;

    • ?字串   :向上搜寻『字串』的功能;

    • n     :重复前一个搜寻 (与 / 或 ? 有关!)

    • N     :反向的重复前一个搜寻 (与 / 或 ? 有关!)

    • q     :离开 less 这个程序;

     4.7head 命令

    head 命令是一个 Linux 系统中的命令,它的功能是显示文件开头的内容,默认为前 10 行。

    head 命令的基本语法是:

    head [选项]... [文件]...
    

    如果没有指定文件或文件是 -,则 head 命令会从标准输入读取数据。

    head 命令有以下几种常用的选项:

    • -c 或 --bytes=[-]NUM:显示文件的前 NUM 个字节,如果 NUM 为负数,则显示除了最后 NUM 个字节之外的所有内容。
    • -n 或 --lines=[-]NUM:显示文件的前 NUM 行,如果 NUM 为负数,则显示除了最后 NUM 行之外的所有内容。
    • -q 或 --quiet 或 --silent:不显示文件名的头信息。
    • -v 或 --verbose:总是显示文件名的头信息。
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出。

    head 命令有以下几种常见的用法:

    • 显示文件开头的内容:例如 head file.txt 可以显示 file.txt 的前 10 行内容。
    • 显示多个文件开头的内容:例如 head file1.txt file2.txt 可以分别显示 file1.txt 和 file2.txt 的前 10 行内容,并在每个文件前加上文件名。
    • 显示指定字节数的内容:例如 head -c 20 file.txt 可以显示 file.txt 的前 20 个字节的内容。
    • 显示指定行数的内容:例如 head -n 5 file.txt 可以显示 file.txt 的前 5 行内容。
    • 显示除了最后部分之外的所有内容:例如 head -c -20 file.txt 可以显示 file.txt 中除了最后 20 个字节之外的所有内容。

    4.8tail 命令

    tail 命令是一个 Linux 系统中的命令,它的功能是显示文件末尾的内容,默认为后 10 行。

    tail 命令的基本语法是:

    tail [选项]... [文件]...
    

    如果没有指定文件或文件是 -,则 tail 命令会从标准输入读取数据。

    tail 命令有以下几种常用的选项:

    • -c 或 --bytes=[-]NUM:显示文件的后 NUM 个字节,如果 NUM 为负数,则显示除了前 NUM 个字节之外的所有内容。
    • -f 或 --follow[={name|descriptor}]:持续显示文件末尾最新内容,如果指定了 name 或 descriptor,则在文件被移动或重命名后继续跟踪。
    • -n 或 --lines=[-]NUM:显示文件的后 NUM 行,如果 NUM 为负数,则显示除了前 NUM 行之外的所有内容。
    • -q 或 --quiet 或 --silent:不显示文件名的尾信息。
    • -v 或 --verbose:总是显示文件名的尾信息。
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出。

    tail 命令有以下几种常见的用法:

    • 显示文件末尾的内容:例如 tail file.txt 可以显示 file.txt 的后 10 行内容。
    • 显示多个文件末尾的内容:例如 tail file1.txt file2.txt 可以分别显示 file1.txt 和 file2.txt 的后 10 行内容,并在每个文件前加上文件名。
    • 显示指定字节数的内容:例如 tail -c 20 file.txt 可以显示 file.txt 的后 20 个字节的内容。
    • 显示指定行数的内容:例如 tail -n 5 file.txt 可以显示 file.txt 的后 5 行内容。
    • 持续刷新显示指定文件末尾的最新内容:例如 tail -f log.txt 可以实时显示 log.txt 文件的最新更新,并且不断刷新。

    4.9which命令

    Linux which命令是用于查找文件的一个命令,它可以在环境变量$PATH设置的目录里搜索符合条件的文件,并返回第一个搜索结果。它可以帮助我们确定某个系统命令是否存在,以及执行的是哪一个位置的命令。

    Linux which命令的语法格式如下:

    which [选项] [–] 程序名 […]

    Linux which命令的常用选项有:

    -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

    -p<文件名长度> 与-n选项相同,但此处的<文件名长度>包括了文件的路径。

    -w 指定输出时栏位的宽度。

    -V 显示版本信息。

    例如,如果我们想要查找lsmod这个命令的位置,可以输入以下命令:

    which lsmod

    输出结果如下:

    /sbin/lsmod

    这说明lsmod这个命令存在,并且位于/sbin目录下。

    如果我们想要查找cd这个命令的位置,可以输入以下命令:

    which cd

    输出结果如下:

    which: no cd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

    这说明cd这个命令不存在,或者不在$PATH变量指定的路径中。实际上,cd是bash内建的命令,所以which无法找到它。

    4.10find命令

    linux find命令是一个用于在指定目录下查找文件和目录的命令。它可以使用不同的选项来过滤和限制查找的结果,例如按照文件名、文件类型、文件大小、文件时间、文件权限等条件进行搜索。find命令还可以结合-exec选项来对查找到的文件执行其他命令

    find命令的基本语法格式是:

    find   path  -option  [ -print ]  [ -exec   -ok    ] [  command  {} \;  ]
    

    find命令的使用示例:

    • 查找当前目录下名为file.txt的文件:

      find . -name file.txt

    • 查找/home目录下大于1MB的普通文件:

      find /home -type f -size +1M

    • 查找/var/log目录下在7天前修改过的目录,并删除它们:

      find /var/log -type d -mtime +7 -exec rm -rf {} \;

    五、链接

    5.1相关概念

    Linux 链接是一种在 Linux 系统中创建文件或目录的别名的方法,可以方便地访问或管理同一个文件或目录。Linux 链接分为两种,一种是硬链接(Hard Link),另一种是软链接(Symbolic Link)或符号链接。

    硬链接是指通过索引节点(inode)来连接文件或目录,也就是让不同的文件名指向同一个 inode 号,从而指向同一个数据块。硬链接的特点是:

    • 硬链接不能跨越不同的文件系统,只能在同一个文件系统中创建。
    • 硬链接不能用于目录,只能用于普通文件。
    • 硬链接对原文件和链接文件是平等的,删除任何一个都不会影响另一个的访问。
    • 硬链接可以保护重要文件,防止误删或修改。

    软链接是指通过存储另一个文件或目录的路径来连接文件或目录,也就是创建一个特殊的文件,其中包含了原文件或目录的位置信息。软链接的特点是:

    • 软链接可以跨越不同的文件系统,可以在任何地方创建。
    • 软链接可以用于目录和普通文件。
    • 软链接对原文件和链接文件是主从关系,删除原文件会导致链接文件失效。
    • 软链接可以方便地创建快捷方式,节省空间和便于管理。

    Linux 中创建链接的命令是 ln,它有以下几种常用的选项:

    • -s 或 --symbolic:创建软链接,默认情况下创建硬链接。
    • -f 或 --force:如果目标文件已经存在,则强制覆盖它。
    • -i 或 --interactive:如果目标文件已经存在,则询问用户是否覆盖它。
    • -v 或 --verbose:显示详细的操作信息。

    5.2 touch命令

    touch 命令是一个 Linux 系统中的命令,它的功能是用于修改文件或者目录的时间属性,包括访问时间和修改时间。如果文件不存在,系统会建立一个新的文件。

    touch 命令的基本语法是:

    touch [选项]... [文件]...
    

    touch 命令有以下几种常用的选项:

    • -a:只修改文件的访问时间,不修改修改时间。
    • -c:如果文件不存在,不创建新文件。
    • -d:指定文件的访问和修改时间,可以使用各种不同的格式。
    • -m:只修改文件的修改时间,不修改访问时间。
    • -r:使用参考文件的访问和修改时间,而不是当前系统时间。
    • -t:指定文件的访问和修改时间,格式与 date 命令相同。

    touch 命令有以下几种常见的用法:

    • 创建一个空文件:例如 touch file.txt 可以创建一个名为 file.txt 的空文件。
    • 修改一个已存在文件的时间属性:例如 touch -d "2023-05-18 15:44" file.txt 可以将 file.txt 的访问和修改时间设置为 2023 年 5 月 18 日 15 点 44 分。
    • 使用参考文件的时间属性:例如 touch -r file1.txt file2.txt 可以将 file2.txt 的访问和修改时间设置为与 file1.txt 相同。

     5.3echo 命令

    echo 命令是 Linux 系统中的一个常用命令,它的功能是将参数输出到标准输出设备上,通常是终端或者文件。echo 命令通常用于显示变量的值,输出字符串或者其他命令的结果,或者在 shell 脚本中进行提示或调试

    echo 命令的基本语法是:

    echo [选项]... [字符串]...
    

    如果没有指定字符串或字符串是 -,则 echo 命令会从标准输入读取数据。

    echo 命令有以下几种常用的选项:

    • -n:不输出换行符,使得下一个输出与本次输出在同一行。
    • -e:启用转义字符的解释,例如 \n 表示换行,\t 表示制表符等。
    • -E:禁用转义字符的解释,这是默认选项。
    • --help:显示帮助信息并退出。
    • --version:显示版本信息并退出。

    echo 命令有以下几种常见的用法:

    • 输出普通字符串:例如 echo Hello, World! 可以输出 Hello, World! 到终端。
    • 输出带有双引号或单引号的字符串:例如 echo \"Hello, World!\" 可以输出 "Hello, World!" 到终端,需要用反斜杠进行转义。
    • 输出带有特殊字符的字符串:例如 echo -e "Hello\tWorld\n" 可以输出 Hello World 到终端,并换行,需要用 -e 选项启用转义字符。
    • 输出变量的值:例如 name="Linux" 后 echo $name 可以输出 Linux 到终端,需要用 $ 符号引用变量。
    • 输出命令的结果:例如 echo $(date) 可以输出当前日期和时间到终端,需要用 $() 包含命令。
    • 输出结果重定向到文件:例如 echo Hello, World! > file.txt 可以将 Hello, World! 写入到 file.txt 文件中,覆盖原有内容。
    • echo "Hello, World!" >> file.txt  输出追加到文件中,而不是覆盖原有的内容,使用 >> 符号。

    六、通配符

    文件通配符

    通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等。常用的通配符有*?[]
    用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。

    星号 *
    匹配任意长度的文件名字符串(包括空字符串)。 

    问号 ?
    匹配任一单字符。 

    方括号 [ ]
    代表指定的一个字符范围,只要文件名中[ ]位置处的字符在[ ]中指定的范围之内,那么这个文件名就与这个模式串匹配。
    方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符(-)组成。
    例如,[a-d]与[abcd]的作用相同,都表示匹配a,b,c,d中任意一个字符。

    非通配符中的特殊字符:

    点字符 .
    当它作为文件名或路径名分量的第一个字符时,必须显式匹配。 

    反斜线 \
    是一个特殊的字符。它屏蔽后继特殊字母的特殊含义(转意),使该字符仅取其符号所代表的字面意义。 

    如何匹配?何为显式匹配?举几个例子:

    *file表示以 file 结尾的任意字符串,能匹配file和makefile,但不匹配 .profile 文件(文件名以 . 开头,需要把 . 打出来,显式匹配)

    f*匹配以 f 开头的任意字符串。但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配。例如*不能匹配.file,.*才可以匹配.file。

    t*c匹配try1.c try.c try.basic。说明*可以匹配中间是.的文件,但是*不能匹配开头是.的文件。

     与dos文件通配符的区别

     七、系统操作

    八、日期与时间

    date命令

    通过date命令可以在命令行中查看系统的时间
    语法:date [-d][+格式化字符串]
    -d 按照给定的字符串显示日期, 一般用于日期计算
    格式化字符串: 通过特定的字符串标记, 来控制显示的日期格式

    • %Y  年
    • %y  年份后两位数字 (00..99)
    • %m  月份 (01.12)
    • %d  日 (01..31)
    • %H  小时 (00.23)
    • %M  分钟 (00.59)
    • %S  秒 (00_60)
    • %s    自 1970-01-01 00:00:00 UTC 到现在的秒数

    举例

    •  显示当前日期和时间,或者按照指定的格式显示日期和时间。例如,date '+%Y-%m-%d %H:%M:%S' 可以显示类似 2023-04-09 15:25:37 的格式。
    • 设置系统日期和时间,或者根据指定的字符串设置日期和时间。例如,date -s '2023-04-10 16:30:00' 可以将系统时间设置为 2023-04-10 16:30:0012345。
    • 显示或设置时区,或者显示不同时区的日期和时间。例如,date -u 可以显示协调世界时 (UTC) 的时间12345。
    • 显示或计算相对于当前日期和时间的过去或未来的日期和时间。例如,date -d '3 days ago' 可以显示三天前的日期

      chrony

    chrony 是一个用来实现网络时间协议 (NTP) 的软件包,它可以用来同步系统时钟和其他 NTP 服务器或参考时钟。它有两个程序:chronyd 和 chronyc,分别是一个守护进程和一个命令行界面

    它可以用来同步系统时钟和其他 NTP 服务器、参考时钟或手动输入的时间。它也可以用来作为 NTP 服务器,为同一网络中的其他计算机提供时间服务2。它的优点是可以在不同的条件下,如间歇性的网络连接、高负载的网络、变化的温度等,保持时钟的准确性和稳定性。

    Linux chrony 包含两个程序:chronyd 和 chronyc。chronyd 是一个可以在启动时运行的守护进程,负责调整系统时钟和与 NTP 服务器通信。chronyc 是一个命令行界面程序,用来监控 chronyd 的性能和在运行时更改各种操作参数。

    Linux chrony 的配置文件是 /etc/chrony.conf,其中可以指定 NTP 服务器或池、时区、日志文件等设置。要查看或设置系统时钟的状态,可以使用 chronyc 命令的 tracking、sources、sourcestats 等选项。

  • 相关阅读:
    基于PHP+MySQL大学教学工作网络平台的设计与实现
    软件架构设计(业务架构、应用架构、数据架构、技术架构)
    数学建模--评价类模型
    分布式事务详解
    C++造轮子之: 打印调用栈
    2023常见自动化测试工具集合
    【2023研电赛】安谋科技企业命题特别奖:面向独居老人的智能居家监护系统
    多线程间的通信方式你知道几种?
    JS 数据结构:链表
    顺序结构程序设计(python)
  • 原文地址:https://blog.csdn.net/qq_62377885/article/details/132940019