• Linux-常见命令(二)


    前言

    作者小蜗牛向前冲

    名言我可以接受失败,但我不能接受放弃

      如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。

    目录

    man指令(重要)

    cp指令(重要)

    mv指令(重要)

    cat 命令和more命令

    head指令和tail指令

    时间相关的指令

     Cal指令

     在继续分享Linux简单操作命令时我们先复习一下前面讲的,前面我们学会了如何对目录经行操作(ls),如何去创建和删除目录和普通文件,我们还区分了什么是文件,如何去查看cpu的占用率。

    下面我们继续去学习吧!

    man指令(重要)

    Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man 语法: man [选项] 命令

    常用选项

    -k 根据关键字搜索联机帮助
    num 只在第num章节找
    -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

    这里我们要注意的是man是一个查看命令,系统调用的,C接口的手册! 该手册是有编号的,man的默认编号是从1号手册开始查找,找到即停止。

     这里我们通过man man指令可以对man手册进行查找,上面我们也说man手册是有章节的,man其实有9个章节,对于我们初学者来说,我们了解前3个章节即可。

    章节1:指的是表示各种命令

    章节2:指是由操作系统为我们提供的各种接口

    章节3:是指库函数(C语言)

     这么我们要注意的是如何退出呢?

    我们在键盘上输入q即可。

    这里我们还要注意的是虽然Linux为我们提供查找的库函数,但是我们只能查找C语言的函数,因为Linux操纵系统是C语言写的,虽然我们可以查找部分语言的库,但那都比较麻烦,我们还不如去对应的官网查询。

    这里有时候我们会发现我们用不了,这可能是我们系统没有安装man手册,这里我们可以通过在个命令行经行安装一定要在root账号下经行(或者进行sudo提权)。

    yum install -y man-pages
    

    cp指令(重要)

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

    -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
    -i 或 --interactive 覆盖文件之前先询问用户
    -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
    接,则一律视为普通文件处理
    -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理gai

    该命令就相当于window下的复制命令 

     这里我们要注意的是:cp 源文件 目标文件/

    mv指令(重要)

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

    语法: mv [选项] 源文件或目录 目标文件或目录

    功能:

    1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录), mv命令将文件重命名或将其移至一个新的目录中。
    2. 当第二个参数类型是文件时, mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
    3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv命令将各参数指定的源文件均移至目标目录中。

    常用选项:

    -f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

     这里大家可以看到,mv和cp都是遵循 命令 源文件 目标文件这种格式。

    cat 命令和more命令

    cat 命令是用了查看目标文件的内容的,但是该命令适合查看小文本或者代码片段。

    语法: cat [选项][文件]
    常用选项:

    -b 对非空输出行编号
    -n 对输出的所有行编号
    -s 不输出多行空行

    more命令也是用来查看目标文件的内容的,但是该命令适合查看大文件。 

    这里我们用cat查下一下文件内容:

    1. pjb@VM-8-3-centos lesson1]$ ll
    2. total 8
    3. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    4. -rw-rw-r-- 1 pjb pjb 0 Sep 29 18:57 file2
    5. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    6. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    7. [pjb@VM-8-3-centos lesson1]$ cat file.txt
    8. hello world

    查看文件内容:(nano可以直接打开文件,可以查看,记得安装:sudo yum install -y nano)

    下面我们通过一段程序写一个大文件。

    1. [pjb@VM-8-3-centos lesson1]$ ll
    2. total 8
    3. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    4. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    5. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    6. [pjb@VM-8-3-centos lesson1]$ touch test.txt
    7. [pjb@VM-8-3-centos lesson1]$ cnt=0; while [ $cnt -le 10000 ] ; do echo "hello world [$cnt]"; let cnt++; done > test.txt
    8. [pjb@VM-8-3-centos lesson1]$ ll
    9. total 196
    10. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    11. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    12. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    13. -rw-rw-r-- 1 pjb pjb 188910 Sep 29 19:35 test.txt
    14. //我们用cat 查看文件内容
    15. [pjb@VM-8-3-centos lesson1]$ cat test.txt
    16. //带行号的查询
    17. [pjb@VM-8-3-centos lesson1]$ cat -n test.txt

     这里cat要与tac做个对比:

    命令本省是反过来的,内容本身也是反过来的。tac是逆序打印出来的。

     从上面我们可以看出cat 是直接打印文本的所有内容,那么这样就不利用我们查看文本的内容。

    那有从头开始查看的命令吗?这就不得不用到more命令了.

    1. [pjb@VM-8-3-centos lesson1]$ ll
    2. total 196
    3. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    4. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    5. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    6. -rw-rw-r-- 1 pjb pjb 188910 Sep 29 19:35 test.txt
    7. [pjb@VM-8-3-centos lesson1]$ more test.txt

    这里我们就可以通过回车一行一行的查看文本的内容,这里我们按q就可以退出查看

    其实还有一种命令可以查看适合大文件他支持用键盘的上下翻找,less命令。

    1. [pjb@VM-8-3-centos lesson1]$ ll
    2. total 196
    3. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    4. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    5. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    6. -rw-rw-r-- 1 pjb pjb 188910 Sep 29 19:35 test.txt
    7. [pjb@VM-8-3-centos lesson1]$ less test.txt
    8. //可通过键盘的上下翻找文件内容

    但有时候我们要仅仅要查看文件的前面10行或者后面10行,那又该这么办呢?

    其实这就要用到我们的heard和tail命令了.

    head指令和tail指令
     

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然就是看档案的结尾。

    head指令
    语法: head [参数]... [文件]...
    功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行
    选项:

    -n<行数> 显示的行数

    tail指令 

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。

    语法: tail[必要参数][选择参数][文件]
    功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
    选项:


    -f 循环读取
    -n<行数> 显示行数
     

    查看文本前10行 

    1. pjb@VM-8-3-centos lesson1]$ clear
    2. [pjb@VM-8-3-centos lesson1]$ ll
    3. total 196
    4. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    5. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    6. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    7. -rw-rw-r-- 1 pjb pjb 188910 Sep 29 19:35 test.txt
    8. [pjb@VM-8-3-centos lesson1]$ head test.txt
    9. hello world [0]
    10. hello world [1]
    11. hello world [2]
    12. hello world [3]
    13. hello world [4]
    14. hello world [5]
    15. hello world [6]
    16. hello world [7]
    17. hello world [8]
    18. hello world [9]

     查看文本后10行:

    1. [pjb@VM-8-3-centos lesson1]$ ll
    2. total 196
    3. drwxrwxr-x 2 pjb pjb 4096 Sep 29 18:57 file1
    4. -rw-rw-r-- 1 pjb pjb 13 Sep 29 19:29 file.txt
    5. -rw-rw-r-- 1 pjb pjb 0 Sep 29 11:53 test.c
    6. -rw-rw-r-- 1 pjb pjb 188910 Sep 29 19:35 test.txt
    7. [pjb@VM-8-3-centos lesson1]$ tail test.txt
    8. hello world [9991]
    9. hello world [9992]
    10. hello world [9993]
    11. hello world [9994]
    12. hello world [9995]
    13. hello world [9996]
    14. hello world [9997]
    15. hello world [9998]
    16. hello world [9999]
    17. hello world [10000]

     那么我们要查看文本的[1000,1010]10行又要这么办呢?

    我们可以创建一个临时文件:

    1. [pjb@VM-8-3-centos lesson1]$ head -1010 test.txt > tmp.txt
    2. [pjb@VM-8-3-centos lesson1]$ tail -10 tmp.txt
    3. hello world [1000]
    4. hello world [1001]
    5. hello world [1002]
    6. hello world [1003]
    7. hello world [1004]
    8. hello world [1005]
    9. hello world [1006]
    10. hello world [1007]
    11. hello world [1008]
    12. hello world [1009]

    如果我们不借助临时文件: 

    这里我们就要引入一个管道的概念,这么我们先简单了解一下:

    1 是用来传输数据的

    2 要一个入口和一个出口

    1. [pjb@VM-8-3-centos lesson1]$ head -1010 test.txt | tail -10
    2. hello world [1000]
    3. hello world [1001]
    4. hello world [1002]
    5. hello world [1003]
    6. hello world [1004]
    7. hello world [1005]
    8. hello world [1006]
    9. hello world [1007]
    10. hello world [1008]
    11. hello world [1009]

    这里我们用到了 " | "是用来组和命令的,这里就相当于head打印到管道中,而tail去管道中读取。

    时间相关的指令

    date显示
    date 指定格式显示时间: date +%Y:%m:%d
    date 用法: date [OPTION]... [+FORMAT]
    显示一下现在的时间:

    1. //直接显示
    2. [pjb@VM-8-3-centos lesson1]$ date
    3. Thu Sep 29 20:23:38 CST 2022
    4. //格式显示
    5. [pjb@VM-8-3-centos lesson1]$ date +%Y:%m:%d
    6. 2022:09:29

    .在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下:

    %H : 小时(00..23)
    %M : 分钟(00..59)
    %S : 秒(00..61)
    %X : 相当于 %H:%M:%S
    %d : 日 (01..31)
    %m : 月份 (01..12)
    %Y : 完整年份 (0000..9999)
    %F : 相当于 %Y-%m-%d

    在设定时间方面

    date -s //设置当前时间,只有root权限才能设置,其他只能查看。
    date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
    date -s 01:01:01 //设置具体时间,不会对日期做更改
    date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
    date -s “01:01:01 20080523″ //这样可以设置全部时间
    date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
    date -s “20080523 01:01:01″ //这样可以设置全部时间

    时间戳
     其实我们在语言写猜数字项目的时候就用到了时间戳,那在Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

    时间->时间戳: date +%s
    时间戳->时间: date -d@1508749502

    1. [pjb@VM-8-3-centos lesson1]$ date -d@1508749502
    2. Mon Oct 23 17:05:02 CST 2017
    3. [pjb@VM-8-3-centos lesson1]$ date +%s
    4. 1664454939

     Cal指令

    cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

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

    常用选项:

    -3 显示系统前一个月,当前月,下一个月的月历
    -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
    -y 显示当前年份的日历

    举例:

    1. [pjb@VM-8-3-centos lesson1]$ cal
    2. September 2022
    3. Su Mo Tu We Th Fr Sa
    4. 1 2 3
    5. 4 5 6 7 8 9 10
    6. 11 12 13 14 15 16 17
    7. 18 19 20 21 22 23 24
    8. 25 26 27 28 29 30
    9. [pjb@VM-8-3-centos lesson1]$ cal -3
    10. August 2022 September 2022 October 2022
    11. Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    12. 1 2 3 4 5 6 1 2 3 1
    13. 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
    14. 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
    15. 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
    16. 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
    17. 30 31
    18. [pjb@VM-8-3-centos lesson1]$ cal -j
    19. September 2022
    20. Sun Mon Tue Wed Thu Fri Sat
    21. 244 245 246
    22. 247 248 249 250 251 252 253
    23. 254 255 256 257 258 259 260
    24. 261 262 263 264 265 266 267
    25. 268 269 270 271 272 273
    26. [pjb@VM-8-3-centos lesson1]$ cal -y
    27. 2022
    28. January February March
    29. Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    30. 1 1 2 3 4 5 1 2 3 4 5
    31. 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
    32. 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
    33. 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
    34. 23 24 25 26 27 28 29 27 28 27 28 29 30 31
    35. 30 31
    36. April May June
    37. Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    38. 1 2 1 2 3 4 5 6 7 1 2 3 4
    39. 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
    40. 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
    41. 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
    42. 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
    43. July August September
    44. Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    45. 1 2 1 2 3 4 5 6 1 2 3
    46. 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
    47. 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
    48. 17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
    49. 24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
    50. 31
    51. October November December
    52. Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
    53. 1 1 2 3 4 5 1 2 3
    54. 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
    55. 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
    56. 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
    57. 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31

  • 相关阅读:
    Java爬虫框架下代理使用中的TCP连接池问题及解决方案
    # LeetCode第169题—多元数组
    C# 实例解释面向对象编程中的里氏替换原则
    Python基本数据类型与常用库
    【性能测试】Cannot assign requested address (Address not available)
    B站每日自动签到&传统单节点网站的 Serverless 上云
    Jackson和fastjson解决序列化时字段属性大小写改变的问题
    vue中$nextTick的使用
    【元宇宙欧米说】从NFT迈向元宇宙:CYBER-VERSE
    springboot第55集:思维导图Sharding-JDBC,事务,微服务分布式架构周刊
  • 原文地址:https://blog.csdn.net/qq_61552595/article/details/127102520