• Linux常见指令2


    一.Linux常见指令

    前言:为了方便我们在Linux中写指令
    介绍一下:
    1.clear指令:
    清屏操作
    2.在Linux的命令行中,可以通过使用上下键来翻阅历史使用过的命令
    3.Alt+Enter键:进入全屏模式,退出全屏模式

    1.man

    在这里插入图片描述
    在这里插入图片描述
    按q退出后,自动切换至下一行命令
    在这里插入图片描述
    我们刚才查看的是Linux下的ls命令,也就是使用的man手册的1号手册
    那么我们接下来看一下3号手册
    以printf为例
    在这里插入图片描述

    你会发现,这里依然是使用的1号手册,那么这是为什么呢?
    这是因为printf在shell脚本中也是一个命令,但是这个命令跟C语言中的printf函数没有任何关联,它就是一个可执行程序
    也就是说我们完全可以这样做
    在这里插入图片描述
    但是我们就是想让它在3号手册去查,该怎么办呢?
    在这里插入图片描述
    在这里插入图片描述
    所以:

    man 手册编号 查找的内容
    
    • 1

    如果大家使用man 3 printf后查不到,那么请使用root账号执行以下命令

    yum install -y man-pages
    
    • 1

    为了讲解下面的cp命令,我们先了解一下nano工具

    补充知识:nano

    为了方便后续操作的理解,下面先给大家介绍一个工具nano(相当于windows中的记事本)
    我们执行了

    nano file.txt
    
    • 1

    后进入了下面这个界面,并且写了一段C语言代码
    在这里插入图片描述
    这里的^代表着ctrl键,
    当我们想退出时,按ctrl+x
    然后它问我们是否需要保存
    在这里插入图片描述
    我们输入y
    在这里插入图片描述
    然后按回车键
    成功退出
    在这里插入图片描述
    如果大家的系统中没有nano
    那么使用root账号执行以下命令:

    yum -install -y nano
    
    • 1

    2.cp

    大家应该知道:在windows中:同级目录下不允许存在同名文件或者同名目录,
    在Linux中也是如此
    windows中同名文件区分大小写,Linux中也是如此
    在这里插入图片描述
    我们把file.txt拷贝到了上级目录下
    这里先介绍一下cat命令:
    在这里插入图片描述

    在这里插入图片描述
    发现这两份文件内容完全相同,验证了cp命令的正确性

    那么我们能不能拷贝到当前目录中呢?
    在这里插入图片描述
    答案是:不可以
    那么我们非要拷贝到当前目录中呢?
    我们可以给他改个名字
    在这里插入图片描述
    这样就成功拷贝到当前目录中了

    以上我们证实了cp能拷贝文件,
    那么cp能不能拷贝目录呢?

    我们创建了一个目录dir1,
    并且在dir1中创建了4个文件
    想要拷贝到上级目录中,但是无法拷贝
    因为cp默认不能拷贝目录
    在这里插入图片描述
    但是我们就是想要拷贝目录,怎么办?

    cp -rf 目录名 目标位置
    
    • 1

    在这里插入图片描述
    那么我如果想把dir1拷贝到当前目录下可以吗?

    我们执行了:
    cp -rf dir1 dir1
    
    • 1
    • 2

    在这里插入图片描述
    结果发现我们把dir1拷贝到了dir1目录里面,并没有拷贝到当前目录里面(刚才多拷贝的我随手就删了)
    在这里插入图片描述
    那么我们就只能改一下名字了
    在这里插入图片描述
    在这里插入图片描述
    我们也可以把该目录拷贝到其他目录下,并且可以同时更改文件名(这里以拷贝到/home/wzs目录下为例)

    注意:拷贝的时候隐藏文件并不会拷贝过去
    原因:

    1.隐藏文件:我们拷贝的时候默认是我们自己认为把我们所能看到的文件都拷贝过去,
    如果我们自己知道有隐藏文件的话,那么我们可以把隐藏文件单独拷贝过去
    如果我们自己不知道有隐藏文件,那么隐藏文件的目的就达到了

    2.隐藏文件就不应该被拷贝过去,因为每一个目录里面都自带两个隐藏文件
    分别是一个点和两个点
    如果把它们也拷贝过去,势必会发生目标目录下文件名的冲突问题

    3.mv

    在这里插入图片描述

    注意:mv和cp一样,(src:源文件,dst:目标文件)
    mv src dst:
    如果dst是一个目录,那么就会把src移动到dst这个目录里面
    如果dst是一串路径后面跟有名字,那么就会把src移动到对应路径下并且把名字改成你所指定的那个名字
    
    • 1
    • 2
    • 3
    • 4

    mv命令就相当于windows系统下的剪切命令
    下面我们演示一下
    在这里插入图片描述
    我们把当前目录下的dir1 mv 到了上级目录,并且重命名为dir2,
    然后我们分别ls上级目录下的dir2和当前目录下的dir1,发现移动成功

    同理,普通文件也可以mv

    注意:mv还可以对一个文件进行重命名

    在这里插入图片描述

    mv src dst
    当dst为当前路径时:
    (1)当dst为已经存在的目录时,mv命令会把src移动到dst目录下面
    (2)当dst是尚未存在的目录是,mv命令会把src移动到当前路径下,名字改为dst,也就是将src重命名为dst
    如上图所示,我们将目录newdir 重命名为mvdir
    对于普通文件也是如此
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.cat

    在这里插入图片描述

    补充知识:echo

    在这里插入图片描述
    echo命令:
    1.我们输入什么内容,它就会向显示器中打印什么内容
    在这里插入图片描述
    2.echo “xxx” > 文件名
    如果这个文件存在,那么会清空该文件的所有内容,然后写入xxx内容
    如果这个文件不存在,那么会创建这个文件,然后写入xxx内容,类似于C语言中的fopen中的"w"选项

    echo写入文件,默认会写入"\n"换行符

    关于C语言文件操作的知识,大家可以看我的这篇博客:
    C语言文件操作详解
    在这里插入图片描述

    输出重定向

    下面我们隆重介绍一个概念:输出重定向
    (两个作用:1.输出 2.重定向(即:重新改变了它的方向))

    echo "hello world"  默认是向显示器中显示的
    echo "hello world" > 9-29.txt   现在直接显示到了文件当中
    
    • 1
    • 2

    在这里我们先引入一个Linux的设计哲学

    Linux下一切皆文件:
    Linux的设计者以这种哲学理念来设计Linux,
    这么做有利于减少Linux系统的编码维护成本
    这个哲学理念我们以后还会谈到,大家先有一个印象即可

    那么我们回过头来继续去理解重定向

    echo “hello world” 默认是向显示器中显示的 ------------ 默认是向显示器这个文件进行写入

    echo “hello world” > 9-29.txt 现在直接显示到了文件当中 ------------ 现在向9-29.txt这个文件进行写入了

    那么以后我们新建一个文件又多了一个选择

    >文件名
    
    • 1

    在这里插入图片描述
    又因为输出重定向在写入时默认会先清空该文件,那么我们发现
    在这里插入图片描述
    我们也可以通过相同的方式去清空一个文件

    如果我们就是不想清空这个文件,我就是想要在它末尾追加新的内容,怎么办呢?
    下面我们介绍一下:追加重定向

    追加重定向

    在这里插入图片描述

    echo “hello 9.29-1” >> appendFile.txt
    echo “hello 9.29-2” >> appendFile.txt

    实现了我们刚才的需求,这就相当于C语言文件操作中的fopen的"a"选项

    那么有没有>>>呢?,答案是:没有

    接下来我们就能够向文件中写入多行内容了
    那么我们回过头来继续学习cat

    回到cat

    1.cat -n: 对输出的所有行编号
    在这里插入图片描述
    2.cat -s:不输出多行空行
    在这里插入图片描述
    3.cat -b:对非空输出行编号
    在这里插入图片描述
    4.tac
    逆向输出文件内容
    在这里插入图片描述

    cat其他用法

    在这里插入图片描述

    输入cat后,我们输入什么,cat就给我们打印什么(按ctrl+c)后退出

    我们翻译一下:
    输入cat后,我们输入什么,cat就给我们打印什么
    cat从键盘文件中读取什么,就向显示器文件写入什么

    也就是说cat默认读取的时候是从键盘文件中读取的
    如果我们想要让cat从其他文件中读取呢?
    在这里插入图片描述
    我们就引出了输入重定向:<

    <:把本来应该在键盘文件中读入的内容,更改成为普通文件中进行输入

    cat的用途:通常用来打印一些比较短小的文件内容

    5.less和more

    那么很长的文件内容呢?
    这里就要说一下more(现在已经不常用了)和less了

    补充内容

    为了写出很长的文件内容,我们介绍一行命令行的shell脚本(先用一下)

    i=0; while [ $i -le 10 ]; do echo "hello $i";touch $i.txt; let i++;done
    这里的le:小于等于的意思
    i是变量,从0一直++到10
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    打印了11行信息 并且 创建了11个文件,(这个命令可以跟多条)

    介绍完了之后,我们用一下这个命令

    i=0; while [ $i -le 1000 ]; do echo "hello $i"; let i++;done > HelpFile.txt
    
    • 1

    在这里插入图片描述
    制造了一个大文件
    这是我们cat之后的一部分
    很显然这么大的文件用cat去查看内容真的很不方便
    在这里插入图片描述
    所以我们要用到less

    回到less

    讲解less前,我们先说一下more

    more HelpFile.txt(按q退出)
    
    • 1

    在这里插入图片描述
    然后我们可以按回车键来逐行往下翻
    但是按上,按下是没有反应的(所以more现在很少用)
    在这里插入图片描述

    而我们查文件的时候应该是也可以往上翻,也可以往下翻,所以我们要重点推荐less

    less HelpFile.txt(按q退出)
    
    • 1

    在这里插入图片描述
    我们可以回车往下翻,也可以按上,按下
    还可以这样
    在这里插入图片描述
    我们输入了927
    然后它就帮助我们查找到了927
    在这里插入图片描述
    所以这个less的主要用途

    1.可以让我们在不打开某个代码文件的情况下查看该文件的源代码
    2.可以查看一些简单的日志文件

    在这里插入图片描述
    比方说我们想要查看一个四五百行的代码,可以不用vim或者nano,直接用less就行

    6.head和tail

    如果我们指向查看一个文件的开头位置若干行或者结尾位置若干行呢?
    就需要用到head和tail了
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    默认是显示前10行
    tail也是如此

    补充知识:命令行管道

    那么如果我们想要提取一个大文件的任意一个中间部分呢?(刚才那个文件一共1001行)

    比方说我们想要提取这个文件的第800行到第810行呢?

    第一种做法:
    先提取头部的810行,再提取尾部的10行
    第二种做法:
    先提取尾部的201行,在提取头部的10行

    我们可以先把第一步得到的结果重定向到一个临时文件中
    然后再在临时文件中执行第二部操作

    这里以第一种做法为例:
    第一步:把HelpFile.txt的前810行重定向到临时文件temp.txt中
    在这里插入图片描述
    第二步:提取后10行
    在这里插入图片描述
    这样的做法可以,但是毕竟要形成临时文件,太不优雅了
    并且很明显的是:

    head -810 HelpFile.txt 的输出作为了tail -10的输入

    所以我们用到了命令行管道
    在这里插入图片描述
    这个|(就是连接两个指令的这个竖划线)就是命令行管道,也就是将

    head -810 HelpFile.txt 的输出作为了tail -10的输入

    管道中流动的是上一条指令的输出数据,这个数据被上一条指令交给了管道
    管道在把这个数据作为下一条指令的输入
    这就是一个流水线作业
    
    • 1
    • 2
    • 3

    那么如果我们想要局部性的逆置一下呢?
    在这里插入图片描述
    我要是逆置完了之后在想提取前三行呢?
    在这里插入图片描述
    很像一条流水线

    先tail,后head:
    在这里插入图片描述

    以上就是Linux常见指令2,希望能对大家有所帮助!

  • 相关阅读:
    UE必学系列(基础篇完结)
    如何使用 Kubeadm 和 Kubectl 从头开始​​启动 Kubernetes 集群
    【Linux】软交换机Open vSwitch的移植
    超好用!在线即可制作电子产品图册
    达梦控制台还原报错“管道失败”
    Astory 访谈|了解「非常律师禹英禑」背后的故事
    算法题系列9·最后一个单词的长度
    【笔试刷题训练】day_17
    x264编码器中的多线程等待
    Vue配置代理学习笔记
  • 原文地址:https://blog.csdn.net/Wzs040810/article/details/133420049