Linux初识——基本指令(2)

news2025/1/29 14:01:42

本文将继续从上篇末尾讲起,讲解我们剩下的基本指令

一、剩余的基本指令

1、mv

mv指令是move(移动)的缩写,其功能为:1.剪切文件、目录。2.重命名

先演示下重命名,假设我想把当前目录下的di34改成dir5

那如何实现剪切操作呢?

我们发现,dir2已经被剪切到上一级目录了。

因此,mv的语法通式为:mv [文件或目录] [文件或目录]。当后一个是文件的时候,代表着是重命名,当后一个是路径的时候,代表着剪切。

但如果是mv [文件或目录] 目录+文件名,代表着我不仅要把它剪切到目标位置,还要重命名。

2. cat指令(用来显示文件的内容)

在学这个指令之前,我们先简单介绍一下nano ,他的用处就是在我们创建的文件中编辑内容,比如nano xx.txt即可在里面写东西了。

当我们写好以后,按下ctrl+x即可退出文件。

在保存后,我们想看一看里面写的到底是什么,只需要cat 文件名即可。

除此之外,我们也可以加选项-n,即可打印出行数

不仅如此,如果内容之间穿插着换行也可以有效地显示出来,但如果我们只想把有效内容输出出来,可以使用-b选项(只对非空行编号),此外,还有-s选项(不输出多行空行,即两行有效内容间最多输出一行空行)且可以组合使用。

还有一个与它很像的命令tac,也就是把cat倒过来,它的作用就是把内容逆序输出。

3.more和less指令

cat指令用于显示文件中的内容,但有时候我们面对一个大文件时想展开,用cat往往会造成刷屏的现象,此时more和less就派上用场了,他们和cat语法一样,只不过more和less显示的是开头的内容,cat会直接显示内容的末尾,看不到开头,且less支持用键盘上下键来查看上下文内容,也可以通过/关键字来跳转位置。而more只能通过enter键下翻内容,实际中我们基本都用less不用more。

在此我们对文件的读写内容补充一个知识点:重定向

对于cat指令,我们如果直接输入cat后面什么也不跟的情况下,我们在键盘上输入什么它就会打印出什么内容在显示器上。在Linux中呢,一切皆文件,包括我们的键盘、显示器等,我们所输入的内容并在显示器上呈现,其实就是对显示器这个文件进行写入操作。在C语言中,我们用scanf或者cin写入,即在键盘上获取数据,在Linux中,我们用echo指令,比如echo “hello,world”此时屏幕上就会输出 “hello,world”。

但是我们看第二个echo结果并没有在显示器文件进行写入了,而是在test.txt这个文件里写入,也就是说这个文件里现在有了内容“hello world”。如果此路径没有我们的文件名它就会新建一个该名的文件并在里面写入。貌似我们发现了新的新建文件的方式,以前我们都是touch 文件名。现在只需>文件名即可。">"我们叫输出重定向。

下一个,如果我们继续像该文件里写入内容,按道理,用上面的方法即可

本意我们是想在hello world后面加上aaaaa,但我们发现输入以后之前的内容消失了。所以我们得出,每一次的输出重定向,都是一次全新的写入。并将之前的内容清空。有了这个原理,我们就可以把已存在内容的文件进行内容清空,只需要>文件名即可,就像创建新的文件一样。

那我们想追加写入内容怎么办呢?用>>即可(中间不能用空格)>>叫追加重定向

又有一个新的问题,我们明明没打换行,但每次都有换行符,其实是echo导致的,echo的内容本身具有换行,那我们也不想要换行呢?把echo换成printf即可。

接下来,我们想用cat打印文件内容,cat指令本质是从键盘上获取内容并输出,但我们用<+文件即可(相当于从文件中获取内容并输出)<叫输入重定向

4.head和tail

这两个指令是为了我们看文件的开头和结尾的 

语法是head 文件名(tail一样)它会默认显示10行,如果我们想控制行数使用选项-数字即可比如head -50 test.txt ,tail同理。如果想查看某一区间呢?混用!假设想看[a,b],先把前b行的内容存到临时文件中,然后在读取临时文件的b-a+1行(用tail)即可。但这样太麻烦了,我们也有不用临时文件的方法,通式:head -b 文件名 | tail -(b-a+1)。“ | ”我们叫管道。可以把这个管道看成临时文件一样,可以多个|加多个命令实现不同的操作结果

5.find指令

find用于找指定路径下的指定文件

语法为 find 路径 -name 文件名相当于windows中的搜索

除此之外,还有一个查找指令which,是用来搜索指定的指令的。指令看起来挺高级的,输入指令就能满足功能,但到底是个啥呢?其实。指令就是一个可执行程序,而且我们也可以自己编写指令,就像c、c++中的自定义函数一样,在Linux系统的指令中,所有自带的指令都在一个/bin的目录下,我们使用指令时,是/bin/ls,但系统自动帮我们省略了,只需要直接输入指令即可使用,但有时候,我们自己想编写一个指令,我们也不一定放在/bin目录下,也可能是在某一目录中,此时如果我们想使用的话,直接输入我们的指令名字就会报错,因为如果直接输入指令名字,他会自动去/bin目录下寻找,找不到就会报错,所以如果我们想使用不在/bin下的指令,包括运行某一文件,需要./文件名字(相对路径)(告诉Linux在当前目录下去找就行了)

6. alias——指定命令起别名

c和c++的自定义函数中,只要函数内部的功能不变,那么起什么名字是我们自己可以控制的,Linux的指令也可以起别名,其中,ll就是ls -l的别名。起别名的办法我们用alias,语法:alias 别名='指令',比如 alias zhangsan='ls -a',以后我们想输入ls -a,只需要输入zhangsan即可。可惜的是,一旦我们重启了服务器,这些别名就会失效。

7.grep

这个指令相当于关键字过滤器,语法:grep '关键字'(有无‘’均可)

啥意思呢?比如我现在的文件有一下数据

以下就是筛选出有big 和Big关键字的行数

很明显,grep进行筛选时是区分大小写的。如果我们不行区分大小写,只要是有big字母的都显示出来就用 -i选项,如果我们想显示出除了big以外的行而不显示big行就用-v选项(也可以组合使用)

8. zip与unzip压缩与解压缩

语法:zip 要压缩成的名称(xxx.zip) 要压缩的名称

这里,我们就把dir1目录压缩成了压缩包,但我们通过底层发现,他只是把dir1这个目录进行了压缩,如果我们进行移动并解压的话,只会获得一个空的dir1目录,需要带一个-r选项进行压缩。

解压缩就是unzip [压缩包名称]。但这种解压的结果只会解压在当前目录,如果我们先解压在其他目录呢?还需要借助选项,语法:unzip 压缩包 -d 指定路径

9. tar指令(打包与解包)

tar的用途其实和zip和unzip差不多,只不过tar的打包只是把多个文件放在一块,并没有实现压缩功能,但我们也可以通过选项来用tar实现压缩。我们先看一下其具体可以带什么选项。

选项太多我们直接上用法。

语法:tar (-可带可不带)czf 新创建压缩包的名字 要打包的文件。

c表示创建一个压缩包文件,z表示过程中不仅要打包还要压缩,f后面接你的压缩包名字,在zip的压缩中,我们的压缩包名字都是xxx.zip,tar这里我们的后缀是xxx.tar.gz,我们直接简写为xxx.tgz。选项v就是在压缩中显示被压缩的文件。

如果我们要解压tgz文件,只需要改一个选项即可,把c改成x,即tar xzf 压缩包。这种语法默认会解压缩在当前路径,如果要改变其解压路径需要再加一个 -C选项,即tar xvzf 压缩包 -C 路径。

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

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

相关文章

单片机-STM32 WIFI模块--ESP8266 (十二)

1.WIFI模块--ESP8266 名字由来&#xff1a; Wi-Fi这个术语被人们普遍误以为是指无线保真&#xff08;Wireless Fidelity&#xff09;&#xff0c;并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词&#xff0c;Wi-Fi还出现在ITAA的一个论文中。…

80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL

53&#xff0c;【3】BUUCTF WEB october 2019 Twice SQLinjection-CSDN博客 上面这个链接是我第一次接触二次注入 这道题也涉及了 对二次注入不熟悉的可以看看 BUUCTF出了点问题&#xff0c;打不开&#xff0c;以下面这两篇wp作为学习对象 [SUCTF 2018]MultiSQL-CSDN博客 …

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置

Prometheus部署及linux、mysql、monog、redis、RocketMQ、java_jvm监控配置 1.Prometheus部署1.2.Prometheus修改默认端口 2.grafana可视化页面部署3.alertmanager部署4.监控配置4.1.主机监控node-exporter4.2.监控mysql数据库mysqld_exporter4.3.监控mongod数据库mongodb_expo…

问题排查 - TC397 CORE2 50MS/100MS任务不运行

1、问题描述 CORE2 的任务运行次数的计数值OsTask_100ms_Core2 - task_cnt[12]、OsTask_50ms_Core2 - task_cnt[16]不在累加&#xff0c;但是其他任务OsAlarm_1ms_Core2、OsAlarm_5ms_Core2、OsAlarm_10ms_Core2、OsAlarm_20ms_Core2 任务计数值累加正常。 如果是任务栈溢出&a…

Spring FatJar写文件到RCE分析

背景 现在生产环境部署 spring boot 项目一般都是将其打包成一个 FatJar&#xff0c;即把所有依赖的第三方 jar 也打包进自身的 app.jar 中&#xff0c;最后以 java -jar app.jar 形式来运行整个项目。 运行时项目的 classpath 包括 app.jar 中的 BOOT-INF/classes 目录和 BO…

百度APP iOS端磁盘优化实践(上)

01 概览 在APP的开发中&#xff0c;磁盘管理已成为不可忽视的部分。随着功能的复杂化和数据量的快速增长&#xff0c;如何高效管理磁盘空间直接关系到用户体验和APP性能。本文将结合磁盘管理的实践经验&#xff0c;详细介绍iOS沙盒环境下的文件存储规范&#xff0c;探讨业务缓…

蓝桥杯之c++入门(一)【第一个c++程序】

目录 前言一、第⼀个C程序1.1 基础程序1.2 main函数1.3 字符串1.4 头文件1.5 cin 和 cout 初识1.6 名字空间1.7 注释 二、四道简单习题&#xff08;点击跳转链接&#xff09;练习1&#xff1a;Hello,World!练习2&#xff1a;打印飞机练习3&#xff1a;第⼆个整数练习4&#xff…

14-6-1C++STL的list

(一&#xff09;list容器的基本概念 list容器简介&#xff1a; 1.list是一个双向链表容器&#xff0c;可高效地进行插入删除元素 2.list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[ ]操作符 &#xff08;二&#xff09;list容器头部和尾部的操作 list对象的默…

【AI论文】Sigma:对查询、键和值进行差分缩放,以实现高效语言模型

摘要&#xff1a;我们推出了Sigma&#xff0c;这是一个专为系统领域设计的高效大型语言模型&#xff0c;其独特之处在于采用了包括DiffQKV注意力机制在内的新型架构&#xff0c;并在我们精心收集的系统领域数据上进行了预训练。DiffQKV注意力机制通过根据查询&#xff08;Q&…

InceptionV1_V2

目录 不同大小的感受野去提取特征 经典 Inception 网络的设计思路与运行流程 背景任务&#xff1a;图像分类&#xff08;以 CIFAR-10 数据集为例&#xff09; Inception 网络的设计思路 Inception 网络的运行流程 打个比方 多个损失函数的理解 1. 为什么需要多个损失函数&#…

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习&#xff1a;Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点&#xff0c;但是经过三角化成功的三维点并不一定是有效的&#xff0c;需要筛选才能作为初始化地图点。 …

【ArcGIS微课1000例】0141:提取多波段影像中的单个波段

文章目录 一、波段提取函数二、加载单波段导出问题描述:如下图所示,img格式的时序NDVI数据有24个波段。现在需要提取某一个波段,该怎样操作? 一、波段提取函数 首先加载多波段数据。点击【窗口】→【影像分析】。 选择需要处理的多波段影像,点击下方的【添加函数】。 在多…

一文大白话讲清楚webpack基本使用——17——Tree Shaking

文章目录 一文大白话讲清楚webpack基本使用——17——Tree Shaking1. 建议按文章顺序从头看&#xff0c;一看到底&#xff0c;豁然开朗2. 啥叫Tree Shaking3. 什么是死代码&#xff0c;怎么来的3. Tree Shaking的流程3.1 标记3.2 利用Terser摇起来 4. 具体使用方式4.1 适用前提…

PyCharm配置Python环境

1、打开PyCharm项目 可以从File-->Open-->选择你的项目路径-->OK&#xff0c;或者直接点击Open&#xff0c;找到项目路径-->OK&#xff0c;如图所示(点击Ok后可能有下面的弹窗&#xff0c;选择“Trust Project”即可&#xff0c;然后选择“New Window”打开项目) …

c#配置config文件

1&#xff0c;引用命名空间 Configuration 及配置信息

RDMA 工作原理 | 支持 RDMA 的网络协议

注&#xff1a;本文为 “RDMA” 相关文章合辑。 英文引文机翻未校。 图片清晰度受引文所限。 Introduction to Remote Direct Memory Access (RDMA) Written by: Dotan Barak on March 31, 2014.on February 13, 2015. What is RDMA? 什么是 RDMA&#xff1f; Direct me…

01-硬件入门学习/嵌入式教程-CH340C使用教程

前言 CH340C广泛应用于DIY项目和嵌入式开发中&#xff0c;用于USB数据转换和串口通信。本文将详细介绍CH340C的基本功能、引脚接线及使用方法。 CH340C简介 CH340C是一款USB转TTL电平转换器&#xff0c;可以将电脑的USB数据转换成串口数据&#xff0c;方便与单片机&#xff…

STM32——LCD

一、引脚配置 查看引脚 将上述引脚都设置为GPIO_Output 二、导入驱动文件 将 LCD 驱动的 Inc 以及 Src 中的 fonts.h,lcd.h 和 lcd.c 导入到自己工程的驱动文件中。 当然&#xff0c;后面 lcd 的驱动学习可以和 IMX6U 一块学。 三、LCD函数 void LCD_Clear(u16 Color); 功能…

操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之内存的划分

前言 MMU&#xff1a;内存管理单元(Memory Management Unit)完成的工作就是虚拟地址到物理地址的转换&#xff0c;可以让系统中的多个程序跑在自己独立的虚拟地址空间中&#xff0c;相互不会影响。程序可以对底层的物理内存一无所知&#xff0c;物理地址可以是不连续的&#x…

.NET MAUI进行UDP通信(二)

上篇文章有写过一个简单的demo&#xff0c;本次对项目进行进一步的扩展&#xff0c;添加tabbar功能。 1.修改AppShell.xaml文件&#xff0c;如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…