Linux常见指令2

Linux常见指令[2]

  • 一.Linux常见指令
    • 1.man
      • 补充知识:nano
    • 2.cp
    • 3.mv
    • 4.cat
      • 补充知识:echo
      • 输出重定向
      • 追加重定向
      • 回到cat
      • cat其他用法
    • 5.less和more
    • 补充内容
      • 回到less
    • 6.head和tail
      • 补充知识:命令行管道

一.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 手册编号 查找的内容

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

yum install -y man-pages

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

补充知识:nano

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

nano file.txt

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

yum -install -y nano

2.cp

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

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

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

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

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

cp -rf 目录名 目标位置

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

我们执行了:
cp -rf dir1 dir1

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

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

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

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

3.mv

在这里插入图片描述

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

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
对于普通文件也是如此

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   现在直接显示到了文件当中

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

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

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

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

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

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

>文件名

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

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

追加重定向

在这里插入图片描述

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

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

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

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

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

回到less

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

more HelpFile.txt(按q退出)

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

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

less HelpFile.txt(按q退出)

在这里插入图片描述
我们可以回车往下翻,也可以按上,按下
还可以这样
在这里插入图片描述
我们输入了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的输入

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小沐学C++】C++ 基于Premake构建工程项目(Windows)

文章目录 1、简介2、下载和安装2.1 下载2.3 快速入门 3、使用3.1 支持的工程文件Project Files3.2 构建设置Build Settings3.3 链接Linking3.4 配置Configurations3.5 平台Platforms3.6 过滤Filters3.7 预设值Tokens 4、测试4.1 测试1&#xff1a;入门例子4.2 测试2&#xff1a…

Spring修炼之路(1)基础入门

一、简介 1.1Spring概述 Spring框架是一个轻量级的Java开发框架&#xff0c;它提供了一系列底层容器和基础设施&#xff0c;并可以和大量常用的开源框架无缝集成&#xff0c;可以说是开发Java EE应用程序的必备。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&…

【CTFHUB】SSRF绕过方法之靶场实践(二)

SSRF POST请求 提示信息&#xff1a; 这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年 首先测试了http的服务请求&#xff0c;出现对话框 输入数值后提示&#xff1a;只能接受来自127.0.0.1的请求 右键查看源码发现key值 通过file协…

一个简单的敏捷开发的例子

敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。 敏捷开发以用户的需求进化为核心&#xff0c;采用迭代、循序渐进的方法进行软件开发。在敏捷开发中&#xff0c;软件项目在构建初期被切分成多个子项目&#xff0c;各个子项目的成果都经过测试&#xff0c;具备可视…

SpringMVC 学习(八)整合SSM

10. 整合 SSM (1) 新建数据库 CREATE DATABASE SSM;USE SSM;DROP TABLE IF EXISTS BOOKS;CREATE TABLE BOOKS (BOOK_ID INT(10) NOT NULL AUTO_INCREMENT COMMENT 书ID,BOOK_NAME VARCHAR(100) NOT NULL COMMENT 书名,BOOK_COUNTS INT(11) NOT NULL COMMENT 数量,DETAIL VARCH…

5.wifi开发【智能家居:上】,开发准备:智能开关灯,智能采集温湿,智能调彩灯

一。wifi智能家居项目开发 【开发准备1】&#xff1a;继电器控制开发 1.智能开关 器件准备&#xff1a;wifi&#xff08;esp8266&#xff0c;使用CP2102&#xff09;继电器 结果&#xff1a; 2.继电器工作原理 &#xff08;1&#xff09;继电器是一种自动电气开关 &#xff…

排序:外部排序算法分析

1.外存与内存之间的数据交换 1.外存&#xff08;磁盘&#xff09; 操作系统以“块”为单位对磁盘存储空间进行管理&#xff0c;如:每块大小1KB 各个磁盘块内存放着各种各样的数据。 2.内存 磁盘的读/写以“块”为单位数据读入内存后才能被修改修改完了还要写回磁盘。 2.外…

【数据结构】归并排序、基数排序算法的学习知识点总结

目录 1、归并排序 1.1 算法思想 1.2 代码实现 1.3 例题分析 2、基数排序 2.1 算法思想 2.2 代码实现 2.3 例题分析 1、归并排序 1.1 算法思想 归并排序是一种采用分治思想的经典排序算法&#xff0c;通过将待排序数组分成若干个子序列&#xff0c;将每个子序列排序&#xff…

C++中实现一些特殊的类|设计模式

1.设计一个类 不能被拷贝 拷贝只会发生在两个场景中&#xff1a;拷贝构造以及赋值运算符重载。想要让一个类禁止拷贝&#xff0c;只需要该类不能调用拷贝构造和赋值运算符重载 c98中 将拷贝构造与赋值运算符重载只声明不定义&#xff0c;不定义是因为该函数根本不会调用&#x…

【Java 进阶篇】MySQL多表查询之子查询详解

在数据库查询中&#xff0c;多表查询是一项非常常见且重要的任务。它允许我们从多个相关联的表中检索和组合数据&#xff0c;以满足各种复杂的查询需求。在多表查询中&#xff0c;子查询是一种强大的工具&#xff0c;用于在查询中嵌套另一个查询。本文将深入探讨MySQL中的子查询…

【Java】建筑工地智慧管理系统源码

智慧工地系统运用物联网信息技术&#xff0c;致力于推动建筑工程行业的建设发展&#xff0c;做到全自动、信息化&#xff0c;智能化的全方位智慧工地&#xff0c;实现工程施工可视化智能管理以提高工程管理信息化水平。 智慧工地平台拥有一整套完善的智慧工地解决方案&#xff…

源码编译安装zstd

目录 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕 5 输入whereis zstd 检查安装结果 1 下载源码https://github.com/facebook/zstd 2 解压 3 在解压后的目录里输入make 4 sudo make install 安装完毕…

图扑软件受邀亮相 IOTE 2023 国际物联网展

IOTE 2023 国际物联网展&#xff0c;作为全球物联网领域的盛会&#xff0c;于 9 月 20 日 - 22 日在中国深圳拉开帷幕。本届展会以“IoT构建数字经济底座”为主题&#xff0c;由深圳市物联网产业协会主办&#xff0c;打造当前物联网最新科技大秀。促进物联网与各行业深度融合&a…

安卓玩机-----给app加注册码 app加弹窗 云注入弹窗

在对接很多工作室业务中有些客户需要在他们自带的有些app中加注册码或者验证码的需求。其实操作起来也很简单。很多反编译软件有自带的注入功能。例如注入弹窗。这个是需要对应的注册码来启动应用。而且是随机id。重新安装app后需要重新注册才可以继续使用&#xff0c;原则上可…

mysql面试题5:索引、主键、唯一索引、联合索引的区别?什么情况下设置了索引但无法使用?并且举例说明

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说索引、主键、唯一索引、联合索引的区别? 索引、主键、唯一索引和联合索引是数据库中常用的索引类型,它们有以下区别: 索引:索引是一种数…

ShowDoc部署与应用:文档管理的最佳实践

在项目开发和协作中&#xff0c;文档管理扮演着至关重要的角色。ShowDoc作为一款卓越的开源文档管理工具&#xff0c;不仅提供强大的文档管理功能&#xff0c;还具备简单易用的协作和部署特性。我们的项目团队最初选择了ShowDoc作为文档管理工具&#xff0c;用以促进前后端协作…

UE4/5数字人MetaHuman通过已有动画进行修改

目录 通过已有动画修改动画 开始制作 创建一个关卡序列 将动画序列烘焙到控制绑定 打开我们自己创建的动画序列 之后便是烘焙出来 通过已有动画修改动画 首先架设我们已经有相关的MetaHuman的动画&#xff0c;但是这个动画因为是外部导入进来的&#xff0c;所以可能会出…

MySQL报错:this is incompatible with sql_mode=only_full_group_by 解决方法

文章目录 项目场景&#xff1a;原因分析及解决方案&#xff1a;总结&#xff1a; 项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_f…

Vue中自定义实现类似el-table的表格效果实现行颜色根据数据去变化展示

主要使用div布局实现表格效果&#xff0c;并使用渐变实现行背景渐变的效果 页面布局 <div class"table-wrap"><div class"table-title"><divv-for"(item, index) in tableColumn":key"index":prop"item.prop&qu…

【Linux学习】05-1Linux上安装部署各类软件

Linux&#xff08;B站黑马&#xff09;学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 04Linux实用操作 05-1Linux上安装部署各类软件 文章目录 Linux&#xff08;B站黑马&#xff09;学习笔记前言05-1Linux上安装部署各类软件JDK安装部署Tomcat安装部署maven…