【Linux常见指令以及权限理解】基本指令(2)

news2024/11/25 23:01:46

写在前面

今天我们继续学习Linux的基本指令,

这里是上一篇博客的链接:http://t.csdn.cn/9AgHP

接下来我会继续讲解Linux指令相关内容。

目录

写在前面

1. man

描述:

用法:

例子:

例1:

例2:

2. cp

描述:

用法:

例子:

例1:

例2:

例3:

例4:

3. mv

描述:

用法:

例子:

例1:

例2:

例3:

4. 扩展 

4.1 出现奇怪的问题咋办

4.2 如何理解指令?

4.3 别名

4.4 补充内容:(重定向)

输出重定向:

追加重定向:

补充:

输入重定向

5. cat

描述:

用法:

例子:

例1:

例2:

6. more 

描述:

用法:

例子:

例1:

例2:

7. less

描述:

用法:

例子:

例1:

 8, 9. head 和 tail

描述:

用法:

例子: 

例1:

例2:

补充内容:(管道) 

总结:

写在最后:


1. man

描述:

Linux的命令千千万,我们不可能全部都记住。

man手册可以用来查询一些我们忘记或者不了解的指令/接口。

用法:

man + (数字) + 指令名称

例子:

例1:

比如说我们可以用man手册学习一下ls命令:

 我们可以看到有很多选项:

 注:(如果man手册不起作用,可以输入:yum install -y man-pages )

例2:

既然man手册可以查看系统的指令,我们当然也可以用man手册学习如何使用man手册:

 我们可以看见,man手册有很多选项:

 这里我们只需要了解最常用的前3个:

1. 第一个,也就是直接使用man可以查询Linux自带指令

2. 第二个,使用 man 2 选项可以查询系统调用接口

例:

fork就是一个系统调用接口,可以创建一个子进程:

3. 第三个,使用 man 3 选项可以查看C语言的接口

例:

相信大家对printf并不陌生:

 这就是我们需要学习的三个选项。

2. cp

描述:

这是一个拷贝指令,可以拷贝文件、目录。

用法:

cp + 选项 + 源文件或目录 目标文件或目录        

常用选项:-r (递归拷贝)

例子:

例1:

 拷贝文件到当前的目录下。

例2:

拷贝目录到当前文件下。

 例3:

可以把文件拷贝到上级目录,

所以,我们可以通过相对路径,将文件拷贝到我们想要的地方:

 我们拷贝了一个文件进test目录里面。

例4:

当然,我们也可以验证一下,这个拷贝是否真的把整个文件拷贝了:

我们可以观察到,test.txt文件里面的内容,

copy.txt里面也有,可以得出结论,cp确实拷贝了这个文件。

注:(补充一点:同一个目录下不能存在同名文件)

注:(echo 是输出指令,可以向屏幕输出)(举个例子)

例:(我们往屏幕输出了 hello Linux )

注:( > 是输出重定向,我们将echo输出的内容重定向到了test.txt文件里面 )

注:(cat 指令可以查看文件内容) 

3. mv

描述:

可以用来移动文件或者给文件改名。

用法:

mv + 文件原名 + 新的名字

mv + 文件名 + 目录

例子:

例1:

修改名字:

把test.txt 改名成name了。 

例2:

移动文件:

 我们把test目录移动到了上级目录。

例3:

移动并改名:

 我们可以发现,移动到上级目录的test被改名成了name。

以上是mv命令。

4. 扩展 

4.1 出现奇怪的问题咋办

比如说,Linux的命令行输出命令用不了了:

你好像输什么他都不停止,这个时候,可以:

Ctrl + c 

如果遇到解决不了的问题或者死循环之类的,可以用这个指令杀掉当前的进程。

注:(可以解决大部分问题(但不是万能的!))

4.2 如何理解指令?

1. 我们发现指令是可以运行的,

指令和可执行程序都可以运行->指令就是可执行程序!

那我们的指令放在哪里呢?

我们可以看到,随便输入的字符,当前的shell跟我们说 not found 找不到指令,

那系统是在哪找我们的指令的?

2. 指令在执行前,做了什么?

先在系统中查找对应的指令(指令一定是在系统的某一个位置存在的!)

问题来了:指令究竟在哪里?

 实际上,指令就在这个目录里面:

 我们发现这些指令都是存在的!

因此我们可以得出这样一个结论,

指令是在系统特定的路径下存在的!

 而这些指令一定是某种可执行程序(而且一定是用C/C++/shell...这些语言写出来的!)

那么,现在我们就要做一个实验了:

我们用nano(记事本)写一段C语言程序

 

 然后执行:

注:(这里是用gcc编译这段代码)

然后改名:

 

既然我们这个是可执行程序,如果我们把它放到指令的位置,

只不是也能像指令一样执行呢???

确实是这样的!!!

 (但是把程序放进指令的地方需要比较高的权限,我们这里切换到root用户)

注:(我用su 命令切换到root用户(输入su,然后输入root的密码))

我们将mytest 拷贝进指令的位置:

 

 发现没有,mytest真的可以像指令一样使用了。

结论:

指令的本质就是可执行程序,

和我们自己写的代码编译好的可执行程序没有本质区别!(唯一的区别可能是别写的比你好...)

注:(我们把这个可执行程序拷贝到系统,这其实就是一种安装)

当然,最后别乱污染系统的指令:

我们就直接把它删除了。 (这其实就是卸载) 

所以:系统的指令其实就是别人写好的可执行程序放到系统里面,仅此而已。

最后总结:指令的本质就是一个文件(一个可执行的文件)安装到了系统的某种路径下。

(可以在我们要使用的时候自动查找,仅此而已。)

4.3 别名

那话又说回来,ls -l 为什么可以写成 ll 呢?

例:

我们可以看看 ll 指令是啥:

注:(which 指令可以看一条指令是啥,第二行是该指令的位置)

例:(我们也可以看看其他指令,比如:rm)

这里就不再去看其他指令了,感兴趣的话可以自己去试试。

我们观察 ll 指令可以发现,他有个:alias ll = 'ls -l -- color=auto'

 这个意思其实就是 ll 是 ls -l 的别名,而后面那个 -- color=auto 是配色方案。

注:(有时候为了方便使用,就可以给指令设置别名)

例:(比如说我们想起个别名)

 我给mycmd 起了个别名,就能直接使用了。(就是 ls -al )

注:(这个重命名方法只存在于这一次(你关掉xshell重进就会没了))

那为什么 ll 一直都在呢?因为他被写在了配置文件里面。

注:(不建议自己重命名,学好系统的指令再说)

4.4 补充内容:(重定向)

我在这里抛出一个概念:(或者说是理解Linux的一种思想)

Linux下一切皆文件 - 比如:显示器、键盘、普通文件...

比如说:(我用这三个例子进行说明)

1. 我们向显示器写入,不就是对显示器写入吗:write()(对显示器文件进行写入操作)

实际上,我们是不能读取显示器文件的信息的,但是我们也认为在显示器文件

里面是存在:read() 这样的一个函数/方法,但是这是个空方法,无法使用而已。

2. 系统从键盘读取数据,那么可以想见,键盘具有:read() 这样的一个函数,

系统不可能往键盘里写入什么数据,总不可能系统给键盘写入一个a,你键盘的a建就跳起来吧,

所以我们可以推断出键盘文件中:write() 写入函数是一个空函数,无法使用。

3. 而普通文件,我们可以对文件进行读取 read() 和 写入 write()。

根据这三个例子,我们可以发现他们都可以具有读写方法,所以我们当然可以把他们当文件!

注:(当然,文件操作的方法肯定不止读写,这里我使用读写方法作为例子举例。)

注:(系统里面还有很多很多东西,还有硬件设备,在Linux下,他们都是文件吗?是!!!

总结:Linux下一切皆文件!(初步理解)

输出重定向:

 所以:(我们使用 echo 指令往显示器上打印这串字符)

 现在我们把这句话说成:echo 指令将这串字符写入到显示器文件中。

而我们使用 > 重定向,显示器上就没有显示出这段话了,

将原本应该写入到显示器文件的内容写入到out.txt文件里面,

这种操作就叫做重定向。

而 cat out.txt 就相当于把out.txt文件的数据写入到显示器文件里面。

输出重定向有一个特点:

例2:

 实际上进行输出重定向的时候会覆盖原内容,具体操作如下:

1. 清空文件

2. 写入新内容

例2:

我们发现如果重定向往文件写入空,文件就清空了(对应上面的操作)

追加重定向:

 我们发现用 >> 追加重定向,就不会清空文件,并在文件尾写入。

注:(在C语言文件操作中,使用 -a 选项其实就是追加(append))

注:(echo 指令自带换行)(printf 指令不自带换行(有兴趣可以试试))

补充:

如果我们使用cat指令,后面什么都不加会怎么样?

 我们输入什么,他就自动输出什么,

结合我们刚刚学的,cat 指令默认就是从输入设备(键盘)读取,写入到显示器文件中。

输入重定向

本来 cat 应该从键盘文件读取数据,现在变成从指定文件读取了,

这就是输入重定向。 

那么补充知识暂时到这里了,我们继续学习指令。

5. cat

描述:

cat 命令可以查看文件内容。

用法:

cat + 文件名

例子:

例1:

用cat 查看test.c文件内容。

例2:

如果一个文件内容很多会咋样?

我们用shell 脚步写一万行hello Linux进test.txt文件

注:( cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done > test.txt ) 

我们发现用cat 查看该文件内容,直接被刷屏了,

如果我们想要看开头咋办,那就会很麻烦。

6. more 

描述:

可以查看文件内容。

用法:

more + 文件名

选项 -n (可以选择看哪行)

例子:

例1:

用more查看test.txt文件:

会从头开始查看。

注:(按 enter 下翻)(按 q 键退出) 

实际上,我们没办法上翻(more只支持下翻...)

 

我们可以用 / 查找文件内容:

 

例2:

我们可以在用more的时候就选择看哪行:

这样就直接跳转到这里了: 

 

实际上我们用more用的不多(因为其实不太好用)

7. less

描述:

可以查看文件内容的命令。

用法:

less + 文件名

例子:

例1:

用less指令查看test.txt文件:

 

less 命令也支持用 / 查找内容:

这样就能找到999出现的地方:

 

注:(less 支持上下翻(直接用键盘的上下键即可))

 8, 9. head 和 tail

描述:

head可以查看文件头部内容,tail可以查看文件尾部内容。

用法:

head -n 文件名

tail -n 文件名

选项:n代表你选择的行数(也可以不加)

例子: 

例1:

用head查看文件头:

用head从上往下查看文件指定位置:
  

注:(查看头1000行内容)

例2:

用less查看文件尾:

 用tail从下往上查看文件大小:

 

注:(查看尾5行的内容)

补充内容:(管道) 

如果有这样一种场景,

我们想要查看这个文本的1000~1020行,我们可以怎么做?

我们当然可以用less直接去查找,

但是,我们也可以这样:

 

那么问题来了,这个 |   是什么?

这个 | 就是管道文件。

管道文件是一个内存级的文件,(我们该怎么理解这个‘内存级’?)

比如说:

我们要修改一个文件,系统是直接在磁盘了修改,还是先加载到内存呢?

答案显而易见,系统需要先把文件加载到内存

换句话说,所有的文件都需要被加载到内存再进行操作,

所以这些文件在一定的生命周期里他们都是内存文件,

一个程序把自己的执行结果写到管道文件里,另一个文件再把数据从管道里读出来,

这就是管道。

所以上面的那张图片的工作原理就是这样的。

注:(管道通常可以支持流水线工作(将数据一步步加工直到我们满意))

总结:

我们今天学习了Linux一些新的指令,

还加深了对Linux系统的理解,接触了Linux下一切皆文件的思想,

认识到指令其实就是Linux系统下的软件,一个可执行程序,而且我们能在系统找到他们,

了解了重定向以及管道相关的知识。

想要和我一起继续学习和探索Linux的奥秘,可以订阅这个专栏哟~Linux从入门到精通。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能

实验环境:MC9S12G128开发板 基本功能:控制开发板上的按键,模拟车辆移动的上下左右四个方位,通过can通信告诉上位机界面,车辆轨迹的移动方位。 1. 1939报文发送的示例代码 MC9S12G128开发板1939协议发送can报文数据的…

redmine问题跟踪系统4.1版本一键安装包下载

很好用的项目管理,缺陷跟踪系统,开源免费使用 Version 4.1.1-4 2020-08-31 由 redmineplugins.cn Admin 在 超过 2 年 之前添加 Version 4.1.1-4 2020-08-31 Maintenance releaseUpdated Apache to 2.4.46Updated Git to 2.28.0Updated PHP to 7.3.21U…

初识uniapp

创建小程序 依次点击HBuilderx 左上方的按钮:文件->新建->项目 然后打开该界面,输入项目名称,点击 浏览 按钮,可以选择项目保存的目录,这些完成后点击 创建 按钮就好了 比如小颖的项目名叫 :test-y…

基于一致性的半监督学习用于诊断x线片分类

文章目录 Consistency-Based Semi-supervised Evidential Active Learning for Diagnostic Radiograph Classification摘要方法Evidential-based Semi-supervised LearningEvidential-based Active Learning Consistency-Based Semi-supervised Evidential Active Learning for…

Java+Angular开发的医院信息管理系统源码,系统部署于云端,支持多租户

云HIS系统源码,采用云端SaaS服务的方式提供 基于云计算技术的B/S架构的云HIS系统源码,采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、…

第四届CECC中国计算机教育大会召开,飞桨持续加码产教融合教育新生态

‍‍大模型作为人工智能发展的新方向,对人才的需求和培养带来了新挑战。4月21日至22日,以“新时代 新挑战 新任务”为主题的第四届中国计算机教育大会(CECC)在厦门召开,飞桨承办“人工智能与大模型”论坛同期举办。立足…

【Python安卓开发】BeeWare框架:环境准备

💭 写在前面:我们假定读者已经安装好了 3.8 版本后的 Python,并且安装好了依赖项,在 Windows 上构建 BeeWare 应用程序需要 Git,你可以可以从 git-scm.org 网站下载。安装完毕后重新启动 cmd,然后就可以准备…

Compiler- 循环展开

循环展开不仅在编译原理中有涉及到&#xff0c;笔者记得在CSAPP里面也提到了这种优化方法。 话不多说&#xff0c;我们先来看个例子。 int loop(int a) {int result 0;for(int i 0; i < a; i){result i;}return result; }int loop1(int a) {int result 0;int len a/2…

虚拟化、容器与Docker基本介绍以及安装部署镜像加速

目录 一.虚拟化概述 1.虚拟化是什么&#xff1f; 2.虚拟化两大组件 3.虚拟化类型 4.虚拟化功能 二.容器概述 1.容器是什么&#xff1f; 2.容器的优点 3.容器的缺点 三.Docker概述 1.Docker是什么&#xff1f; 2.Docker容器与虚拟机的区别 3.容器在内核中支持两种重…

从0开始学习docker-1.mysql安装

从0开始学习docker 环境安装安装mysql备份镜像删除镜像镜像恢复 环境安装 yum update yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce systemc…

IOS工程:NSThread sleepForTimeInterval的使用,游戏中途中断(接电话或者点击Home按钮),重新回到游戏音频音效失效问题

IOS工程&#xff1a;NSThread sleepForTimeInterval的使用&#xff0c;游戏中途中断&#xff08;接电话或者点击Home按钮&#xff09;&#xff0c;重新回到游戏音频音效失效问题 设备/引擎&#xff1a;Mac&#xff08;11.7&#xff09;/cocos 开发工具&#xff1a;Xcode 开发…

composer 安装gitlab私有库

开发PHP项目&#xff0c;免不了用composer。最近做一个项目&#xff0c;需要到公司内部开发的核心包&#xff0c;核心包放在内网搭建的gitlab仓库中&#xff0c;于是我用composer进行下载&#xff0c;报错&#xff1a; Cloning into bare repository C:/Users/Administrator/A…

Mac电脑系统管家CleanMyMac X4.13安装下载使用教程

当我们刚刚拿到那闪亮的新Mac时&#xff0c;是多么令人愉悦的一种感觉&#xff01;随着时间的推移&#xff0c;你可能已经注意到它的速度减慢&#xff0c;磁盘空间逐渐减少。不用担心&#xff0c;CleanMyMac会为你的电脑带来焕然一新的体验。这篇文章将向你介绍CleanMyMac的奇妙…

企业oa管理系统是什么

办公自动化&#xff08;Office Automation&#xff0c;简称OA&#xff09;&#xff0c;是将计算机、通信等现代化技术运用到传统办公方式&#xff0c;进而形成的一种新型办公方式。 办公自动化利用现代化设备和信息化技术&#xff0c;代替办公人员传统的部分手动或重复性业务活…

史上最全Python14张思维导图+字节跳动出品《Python背记手册》,高清PDF限时开放!

前言 Python是一种语法简单、功能强大的编程语言&#xff0c;它既适用于传统编程语言擅长的Web开发、移动开发、游戏开发、桌面应用&#xff0c;又适用于当前流行的人工智能、大数据、科学计算、金融分析…… 如果你想要学习一门编程语言Python肯定是一个不错的选择&#xff…

Scala之集合(2)

目录 集合基本函数&#xff1a; &#xff08;1&#xff09;获取集合长度 &#xff08;2&#xff09;获取集合大小 &#xff08;3&#xff09;循环遍历 &#xff08;4&#xff09;迭代器 &#xff08;5&#xff09;生成字符串 &#xff08;6&#xff09;是否包含 衍生集合…

itop-3568 开发板系统编程学习笔记(20)看门狗应用编程

【北京迅为】嵌入式学习之Linux系统编程篇 https://www.bilibili.com/video/BV1zV411e7Cy/ 个人学习笔记 文章目录 看门狗简介看门狗编程命令&#xff08;方法&#xff09;开启和关闭看门狗设置超时时间获取超时时间喂狗 看门狗底层简析看门狗编程实验 看门狗简介 看门狗&#…

MiniGPT-4开源了:看图聊天、教学、创作、搭网站

深度学习系列文章 文章目录 深度学习系列文章前言MiniGPT4效果展示 前言 一个月前&#xff0c;OpenAI 总裁 Greg Brockman 向世人展示了 GPT-4 令人惊讶的多模态能力&#xff0c;如从手写文本直接生成网站和识别图像中的幽默元素等。 尽管目前 OpenAI 暂未对 GPT-4 用户开放这…

农业灌溉以电折水测控终端-开启用水计量新模式

产品概述 农业灌溉以电折水测控终端&#xff08;MGTR-W&#xff09;是一款拥有“最强大脑”的农业水资源计量管理终端&#xff0c;内置以电折水逻辑运算&#xff0c;主要研究耗电量与取水量之间的关系&#xff0c;分析水电折算系数&#xff0c;进而通过计算耗电量与水电折算系数…

如何在个人web项目中使用Servlet监听器?

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录 一. Servlet监听器是什么&#xff1f;二. Servlet监听器有哪些作用?2.1 监听域对象的创建和销毁2.1.1 ServletContextListener接口…