【Linux】4.Linux常见指令以及权限理解(2)
文章目录
- 3. Linux指令
- 3.1 ls指令和rm指令补充
- 3.2 man指令(重要)
- 3.3cp指令(重要)
- 输出重定向
- 3.3.1ubuntu20.04如何安装tree
- 3.4 mv指令(重要)
- mv指令更改文件名
- mv指令更改目录名
- 如何看待指令
- 指令的重命名
- 3.5 cat指令
- 追加重定向
- 输入重定向
- 3.6 more指令
- 3.7 less指令(重要)
- 3.8 tail指令
3. Linux指令
3.1 ls指令和rm指令补充

*:通配符
ls *:显示任何文件
ls *.c:局部匹配(前面不管,只匹配.c后缀)
ls test.*:局部匹配(前面匹配test,后缀不管)

rm * -rf:删除所有的

rm -rf 文件名/目录名和rm 文件名/目录名 -rf作用一样,但是推荐写成前者。

rm -i:删除前逐一询问确认
- 在
root用户不用-i也会询问确认- 普通用户不用
-i就直接删除了,使用了-i才会询问确认
3.2 man指令(重要)
访问Linux手册页的命令是man
语法: man 命令
man ls:

按空格键翻页

按键盘上的⬆和⬇可以上下慢慢移动页面。
退出man:点击q

man man:也是可以的
下方1-9的是指Linux手册编号,因为是云服务器,所以联网的。

man printf:也是可以的
printf不止是C语言有,Linux里面也有。
我们可以通过下面的语句调用printf指令。
printf "hello %d,hello %f" "12" "3.14"

这个printf和我们之前学习的C语言的printf不是一个东西,就像六耳猕猴和孙悟空一样。
如果想要调用C接口里面的printf呢?
man 3 printf:这里的3指的是手册的编号。

如果直接man 指令名,那么得到的是按照手册编号顺序得到的解释。1号手册有就是1号手册的该指令的定义。没有就查2号手册,依此类推。
如果全都没有,就说明这个指令是不存在的。

3.3cp指令(重要)
输出重定向
讲
cp指令的前面要先讲一下输出重定向。
echo "hello Linux":echo指令可以把后面跟着的字符串打印在显示器上。
echo "hello Linux" > mytest.txt:把hello Linux写到mytest.txt里面。
我们可以通过ll看到文件大小从0变成了12。

cat mytest.txt:打印mytest.txt文件的内容

实际上
echo "hello Linux" > mytest.txt经过了两个阶段:
echo "hello Linux":echo指令将字符串打印在显示器上这里的
echo "hello Linux" >没有在显示器显示字符串这个数据被写入文件中。
我们把在指令后面带
>和一个文件名,现象是没有在显示器显示字符串,这个数据被写入文件中,我们把它称为:输出重定向。输出重定向:本来应该显示到显示器的内容,打印到文件中
cp mytest.txt mytest_backup.txt:把mytest.txt拷贝成mytest_backup.txt

想要把一个文件拷贝给另一个文件但是两个文件名字一样,那么就会报错。

cp mytest.txt ../mytest.txt:拷贝mytest.txt给上一级路径
ls ../:查看上一级路径


常识告诉我们,同一个目录下不能存在同名文件。
3.3.1ubuntu20.04如何安装tree
依次执行下面两行语句:
sudo apt update
sudo apt install tree

ll:显示指定文件或目录的详细属性信息
mkdir –p d1/d2/d3:递归建立多个目录

目录无法直接拷贝

cp -r lesson3 lesson3_backup:递归拷贝lesson3目录 (-r是递归的意思)

我们也可以进一步验证mytest.txt文件的内容

-i:覆盖文件之前先询问用户

-f:强行复制文件或目录, 不论目的文件或目录是否已经存在(一般不会询问)

-fi:是会问的,因为为了保险起见。

3.4 mv指令(重要)
mv指令更改文件名
mv mytest_backup.txt mytest1.txt:把mytest_backup.txt重命名为mytest1.txt

mv:也可以剪切
mv mytest.txt ../:把mytest.txt剪切到上级目录

mv ../mytest.txt .:把上级路径的mytest.txt剪切到当前路径

mv mytest.txt ../test.txt:把mytest.txt剪切并重命名为test.txt到上级目录

那么怎么分辨mv是剪切还是重命名还是剪切并重命名呢?
mv 当前文件 目录:剪切
mv 当前文件 路径/文件名:剪切并重命名
mv a.txt b.txt:(剪切并)重命名
mv a.txt ./b.txt:剪切并重命名(本质上mv都是剪切)
Ctrl+C:撤销这一次的操作
mv指令更改目录名

mv 目录名1 目录名2:这里不管是重新命名还是剪切,目录名2都要不存在,存在的话就会重名。这个时候,会把目录名1放进目录名2里面。
不存在的话就是重新命名和剪切了。

如何看待指令
-
如何看待指令?
指令和可执行程序都是可执行的,指令就是可执行程序。
指令一定在系统的某一个位置存在。

-
我们在执行指令前,我们要干什么?
先在系统中查找对应的指令。
-
指令存在在系统中,可以得出:指令是在系统中特定的路径下存在的。
一定是某种可执行程序
指令的本质就是可执行程序和我们自己写的代码编译好的程序,没有本质区别。
例如:我们编译后出现一个可执行程序
a.out,我们把这个可执行程序a.out重命名为ssss后放到/user/bin/里面后,我们直接输入刚刚那个重命名的ssss,就会出现这个可执行程序的运行结果。不过不建议自己写了丢进去,因为以后会忘记,也没多大用处。 -
把可执行程序从刚刚的系统路径下删除,实际上就是卸载。
这种概念在
Windows下面也是一样的。 -
指令的本质就是文件(可执行文件),就是直接安装到系统的某个路径下,然后使用的时候会自动跳到那边使用。
指令的重命名
alias A='B';
把B操作重命名为A
which可以查询指令的地址,但是在Ubuntu里面which只能查询没有被重命名的指令的位置。


3.5 cat指令
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b对非空输出行编号
-n对输出的所有行编号
-s不输出多行空行
-
Linux下一切皆文件。
例如:
显示器(向显示器打印–>向显示器文件写入
fwhite,不会从显示器读取fread(){}读方法为空)键盘(向键盘输入–>向键盘文件读取
fread,不会向键盘打印fwhite(){}写方法为空)普通文件…
之前的输出重定向本质上就是把向显示器文件写入变成向另外的文件写入。

echo后面跟的是字符串,把后面原封不动的打印出来。
cat后面跟的是文件名,cat打印的是文件的内容
ll后面跟的是我们所对应的文件的属性,ll打印的是文件的属性

这个情况很有意思,一开始test.txt里面是hello Linux。
后来输入了多次echo "hello Linux" > test.txt,结果还是打印一行hello Linux。
然后我们输入echo "108 good" > test.txt,结果打印108 good了。
这种输出重定向有个特点:
向目标问价写入的时候会从文件的开始把所有的内容
覆盖写入。实际上,在重定向过程中要干两件事:
- 清空原始文件
- 写入新内容
由此,我们想清空一个文件的话,我们可以这样:

这个>号就代表重定向。
这里打开文件的时候就默认清空了。
追加重定向
扩展:
如果我想让文件的内容不清空呢?

这个>>中间不能带空格,> >是错误的。
这种重定向叫做:追加重定向。
echo默认带换行。
如果我们想不换行,那就可以换成printf

然后我们可以看一下cat后面如果不跟文件名会发生什么:

我输入了a回车,他就打印a
我输入了b回车,他就打印b
我输入了回车,他就打印回车
说明cat后面如果不跟文件名,就默认从键盘读。本来cat指令就是向显示器打印的,所以我输一个回车他就打印一个。
输入重定向
我们还可以这样:

这里我们呢可以认为,本来应该从键盘文件读取的,就不从键盘读了,转而从我们指定的文件读取。
这个叫做输入重定向。
两个问题:
- 当然,这里也可能感觉
cat test.txt就可以实现了,为什么要用cat < test.txt呢?因为这里要将。
- 他们有区别吗?
有区别,但是后面讲。现阶段会用就行了。

由图可见,创建新文件不一定非得要touch。

这里的cat就是打印。
cat -n 文件名:对输出的所有行编号

cat -b 文件名:对非空输出行编号
我们先创建一些空行在里面

然后输入命令

cat -s 文件名:不输出多行空行(多个空行变一行空行)

也可以组合使用

3.6 more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
-n对输出的所有行编号
q退出more
先用脚本语言来创建一个脚本

使用cat来读的话:

说明cat不适合大文本,适合小文本。
所以要使用more:
默认显示一面

按回车下翻

退出就按Q,就行了
more也可以带选项:


more一般靠按键只能下翻不能上翻。
我们也可以直接/9999

3.7 less指令(重要)
less工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
less的用法比起more更加的有弹性。在more的时候,我们并没有办法向前面翻, 只能往后面看。但若使用了
less时,就可以使用[pageup][pagedown]等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在
less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法:
less [参数] 文件功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。选项:
-i:忽略搜索时的大小写
-N:显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
我们输入less:


按↓会下翻,按↑会上翻。所以less适合大文本的上下布局。
less也可以输入/999查看后面的消息

也可以输入?899查看之前的消息

cat不适合看大文本,适合看小文本。
那么我们为什么要看一个比较大的文本呢?什么文本属于大文本呢?
在项目里面可以用到。
3.8 tail指令
tail 命令从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容。
语法:
tail[必要参数][选择参数][文件]功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f: 循环读取
-n<行数>: 显示行数
如何读取1001-1020行内容呢?
head -1020 log.txt >temp.txt;
tail -20 temp.txt
head -1020 log.txt > temp.txt
- 从 log.txt 文件的开头读取前 1020 行
- 将这 1020 行保存到 temp.txt 文件中
>是重定向符号,会覆盖已存在的 temp.txt 文件
tail -20 temp.txt
- 从 temp.txt 文件(包含前面获取的 1020 行)中读取最后 20 行
- 将这 20 行显示在屏幕上
最终效果:
- 显示 log.txt 文件的第 1001 行到第 1020 行
- 相当于查看了原文件的第 1001-1020 行的内容
这里要创建temp.txt文件,如果不创建文件能完成吗?
我们可以使用管道。
# 使用管道,无需临时文件
head -1020 log.txt | tail -20

区分左右两侧的|称为管道文件。
这个管道文件是一种内存级别的文件。
什么叫做管道呢?
- 有输入有输出
- 传输资源
相关文章:
【Linux】4.Linux常见指令以及权限理解(2)
文章目录 3. Linux指令3.1 ls指令和rm指令补充3.2 man指令(重要)3.3cp指令(重要)输出重定向3.3.1ubuntu20.04如何安装tree 3.4 mv指令(重要)mv指令更改文件名mv指令更改目录名 如何看待指令指令的重命名3.5…...
ffmpeg aac s16 encode_audio.c
用ffmpeg库时,用代码对pcm内容采用aac编码进行压缩,出现如下错误。 [aac 000002bc5edc6e40] Format aac detected only with low score of 1, misdetection possible! [aac 000002bc5edc8140] Error decoding AAC frame header. [aac 000002bc5edc81…...
vue3监听器
1.侦听数据源类型 watch 的第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组 const x ref(0) const y ref(0)// 单个 ref watch(x, (newX) > {console.log(x is ${newX}) …...
03-51单片机定时器和串口通信
一、51单片机定时器 1.定时器介绍 1.1为什么要使用定时器 在前面的学习中,用到了 Delay 函数延时,这里学习定时器以后,就可以通过定时器来完成,当然定时器的功能远不止这些: 51 单片机的定时器既可以定时ÿ…...
系统架构设计师考点—项目管理
一、备考指南 项目管理主要考查的是进度管理、软件配置管理、质量管理、风险管理等相关知识,近几年都没有考查过,但是有可能在案例分析中考查关键路径的技术问题,考生了解为主。 二、重点考点 1、项目的十大管理(速记࿱…...
代码随想录算法训练营第三十二天|509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯
目录 509.斐波那契数 动态规划五部曲: 1.确定dp数组(dp table)以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 70.爬楼梯 动态规划五部曲: 1.确定dp数组(dp table)…...
【2024年华为OD机试】 (A卷,100分)- 总最快检测效率(Java JS PythonC/C++)
一、问题描述 题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同,采样效率为 N 人/小时。由于外界变化,采样员的效率会以 M 人/小时为粒度发生变化,M 为采样效率浮动粒度…...
【大数据】Apache Superset:可视化开源架构
Apache Superset是什么 Apache Superset 是一个开源的现代化数据可视化和数据探索平台,主要用于帮助用户以交互式的方式分析和展示数据。有不少丰富的可视化组件,可以将数据从多种数据源(如 SQL 数据库、数据仓库、NoSQL 数据库等࿰…...
LabVIEW调用不定长数组 DLL数组
在使用 LabVIEW 调用 DLL 库函数时,如果函数中的结构体包含不定长数组,直接通过 调用库函数节点(Call Library Function Node) 调用通常会遇到问题。这是因为 LabVIEW 需要与 DLL 中的数据结构完全匹配,而包含不定长数…...
MySQL 17 章——触发器
在实际开发中,我们经常会遇到这样的情况:有2个或者多个相关联的表,比如商品信息表和库存信息表,分别存放在两个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在…...
面向对象分析与设计Python版 面向对象设计方法
文章目录 前言一、职责驱动设计二、职责驱动设计-案例 前言 面向对象设计目标:在面向对象分析建立的领域模型的基础上,定义对象操作(职责)。为对象分配职责的方法有: 职责驱动设计遵循GRASP设计原则(Gene…...
GB/T 19582.1-2008主要内容
标准背景与概述 GB/T 19582.1-2008是由中国国家标准化管理委员会发布的国家标准,旨在指导和规范基于Modbus协议的工业自动化网络的设计和实施。该标准由全国工业过程测量控制和自动化标准化技术委员会(TC124)归口,并由中国机械工…...
[石榴翻译] 维吾尔语音识别 + TTS语音合成
API网址 丝路AI平台 获取 Access token 接口地址:https://open.xjguoyu.cn/api/auth/oauth/token,请求方式:GET,POST Access token是调用服务API的凭证,调用服务API之前需要获取 token。每次成功获取 token 以后只有…...
算法题(32):三数之和
审题: 需要我们找到满足以下三个条件的所有三元组,并存在二维数组中返回 1.三个元素相加为0 2.三个元素的下标不可相同 3.三元组的元素不可相同 思路: 混乱的数据不利于进行操作,所以我们先进行排序 我们可以采取枚举的方法进行解…...
webpack03
什么是source-map 将代码编译压缩之后,,可以通过source-map映射会原来的代码,,,在调试的时候可以准确找到原代码报错位置,,,进行修改 source-map有很多值: eval &#…...
组会 | SNN 的 BPTT(backpropagation through time)
目录 1 神经学基础知识1.1 神经元1.2 神经元之间的连接1.3 膜电位1.4 去极化与超极化 2 SNN2.1 LIF 模型2.2 BPTT 中存在的问题2.3 梯度爆炸或消失问题 前言: 本博仅为组会总结,如有谬误,请不吝指正!虽然标题为 BPTT&am…...
CDA数据分析师一级经典错题知识点总结(3)
1、SEMMA 的基本思想是从样本数据开始,通过统计分析与可视化技术,发现并转换最有价值的预测变量,根据变量进行构建模型,并检验模型的可用性和准确性。【强调探索性】 2、CRISP-DM模型Cross Industry Standard Process of Data Mi…...
django基于Python的电影推荐系统
Django 基于 Python 的电影推荐系统 一、系统概述 Django 基于 Python 的电影推荐系统是一款利用 Django 框架开发的智能化应用程序,旨在为电影爱好者提供个性化的电影推荐服务。该系统通过收集和分析用户的观影历史、评分数据、电影的属性信息(如类型…...
JVM与Java体系结构
一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...
网络授时笔记
SNTP的全称是Simple Network Time Protocol,意思是简单网络时间协议,用来从网络中获取当前的时间,也可以称为网络授时。项目中会使用LwIP SNTP模块从服务器(pool.ntp.org)获取时间 我们使用sntp例程,sntp例程路径为D:\Espressif\…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
