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

写在前面

上一篇文章,我们学习了Linux的一些常用指令,

学习了如何理解Linux系统,介绍了对Linux系统的理解:Linux下一切皆文件

介绍了重定向还有管道相关的知识。这里是上一篇博客的链接:http://t.csdn.cn/2d6fc

接下来我会对Linux常用指令进行收尾,并谈一谈如何理解指令。

目录

写在前面

1. date

描述:

用法:

例子:

例1:

例2:

例3:

例4:

2. cal

描述:

用法:

例子:

例1:

例2:

 3. find(重要)

描述:

用法:

例子:

例1:

例2:

例3:

4. grep(非常重要)

描述:

用法:

例子:

例1:

例2:

例3:

例4:

5. zip/unzip

描述:

用法:

例子:

例1:

例2:

例3:

6. tar

描述:

用法:

例子:

例1:

例2:

例3:

 7. bc

描述:

用法:

例子:

例1:

例2:

8. uname

描述:

用法:

例子:

例1:

例2:

 9. 常用快捷键介绍

tab 补齐功能

Ctrl d 

Ctrl r 查找历史命令

上下键查找最近使用过的命令

history

10. shutdown

指令原理的理解

指令的运行原理:

解析:

总结:

写在最后:


1. date

描述:

date指令可以用来查看时间。

用法:

date

选项:有很多,我待会儿会实操介绍

例子:

例1:

直接使用date指令:

 

例2:

携带选项,自己设置格式:

Y代表年,m代表月,d代表日,H代表小时,M代表分钟,C代表秒。 

例3:

查看时间戳:

 补充:

什么是时间戳?

时间戳是从1970年1月1日开始计算到现在的秒数。

我们为什么需要时间戳?

就程序员而言,以后我们工作,写代码都会需要携带日志信息,

而日志信息包括了时间信息,而使用我们现在的时间并不太准确,

为什么呢?因为世界各地之间是有时差的。

所以日志信息包括的时间是使用这个统一的时间戳。

例4:

如何将时间戳转换成具体时间:

在date后面加上 -d @时间戳 即可,我这里前面携带了自定义的格式。

2. cal

描述:

查看日历(西历)

用法:

cal 查看本月日历

cal + 年份 查看该年的日历

例子:

例1:

直接用cal。

 

例2:

cal + 年份

 3. find(重要)

描述:

查找文件

用法:

find + 路径 + -name + 文件名

例子:

例1:

比如说,查找根目录下所有叫 test 的文件:

操作系统就递归搜索了所有叫 test 的文件。 

例2:

查找指定地址下的 ls 命令

 (注:我们之前有讲过,其实指令就是一个可执行程序,所以我们能在指定目录下找到他们) 

例3:

奇怪的现象:

 我们在 /usr 目录下面查找 ls 指令的时候,出现了 Permission denied 这样的提示,

其实是在查找的过程中出现了一些不允许进入的区域,就是有些地方被禁止(用户)访问了。

4. grep(非常重要)

描述:

查找文件内容。

用法:

选项:

-i 无视大小写

-n 顺便输出行号

-v 反向选择(就是显示出你没搜索的内容)

例子:

例1:

 我用 shell 脚本写了一些东西进 log.txt 文件中

脚本提供:cnt=0; while [ $cnt -le 100 ]; do echo "hello linux $cnt"; let cnt++; done > log.txt

使用 grep 查找所有带有 9 的内容:

例2:

测试 -n 

 测试 -v

不难观察出,我们看不到 9。

例3:

我们还能通过 grep 指令批量查找文件内容:

再创建一个文件:(并输入99)

 通过 grep 查找当前目录下所有文件的 99 都在哪里:

 

(注:* 是通配符)

例4:

通过 grep 查找根目录下所有文件的main函数在哪一行:

grep -nR "int main() " ~

 为了不让它刷屏啊,我就中途停止了,

我们可以看到他确实能将所有包含int main()的信息查找出来。

(注:~ 就是根目录的意思(之前的文章有提到过))

其实grep之后还有很多应用的场景,我们以后还会经常见到它。

5. zip/unzip

描述:

压缩和解压的指令。

用法:

zip + 压缩后的文件名 + 被压缩文件名

选项:

-r 递归压缩

-d 指定目录

例子:

例1:

首先我想补充一些内容,我们为什么要压缩文件,

1. 我们将文件打包压缩到一起,可以很方便我们发送给其他人,就算丢失,也是全部都丢了;

如果我们一下子传输一堆文件,容易出现有一些文件丢失了,那就非常难受,不知道丢了那个文件

2. 压缩后的文件比较小,更容易传输

那废话不多说,现在开始:

使用 zip 打包目录和文件:

我们先创建一些文件:

 打包压缩:

 解压:

 我们把这个压缩文件在上级目录解压,发现确实解压出来了。

结果一查看,d1里面什么都没有,这是为什么呢?

(注:如果你的Linux里面没有zip,下载指令:yum install -y unzip zip(要在root用户下载)) 

例2:

对于目录,我们需要递归打包压缩:

 我们还是一样的操作,在上级目录解压该文件:

查看:

 

例3:

解包解压到指定目录:

 解包到 test 目录下面了。

6. tar

描述:

主要功能:打包压缩、预览、解压解包。

用法:

tar + czf + 压缩后文件名 + 文件名 = 打包压缩

tar + tzf + 文件名 = 预览

tar + xzf + 文件名 = 解压解包

例子:

例1:

打包压缩:

 

例2:

预览:

 

例3:

解包解压:

 7. bc

描述:

计算器。

用法:

bc

例子:

例1:

直接bc:

你可以随意计算。 

例2:

其实我们还可以用管道:

 这样也可以调用计算器。

8. uname

描述:

uname用来获取电脑和操作系统的相关信息。

用法:

选项:

-r 查看操作系统内核版本

-a 查看基本信息

例子:

例1:

-r 和 -a 选项:

 我们可以看到 3.10.0 这个其实就是我们的内核版本,x86_64位机器。

例2:

扩展:我们还有命令可以查看CPU信息:

lscpu 命令:

 9. 常用快捷键介绍

之前我已经介绍了 Ctrl c 结束当前程序,

还有一些好用的快捷键,

tab 补齐功能

比如说,我有一个命令忘记了:(clear命令) 

双击 tab 键:

 会有提示,其他命令也是如此,你可以试试。

另外,

tab 键的补齐非常好用,平时进入目录的时候,也可以用 tab 键补齐。

Ctrl d 

一直按Ctrl d可以直接退出xshell。

Ctrl r 查找历史命令

我使用该命令:

只输入了while,他就自动帮我找到了之前使用的脚步,非常好用。

上下键查找最近使用过的命令

这个我就不演示了,大家知道就行,

非常好用。

history

实际上,为什么我们能查找到曾经用过命令呢,因为Linux帮我们存起来了,

用history我们就能查看:(太长了,我就截一小段)

10. shutdown

这个是关机指令,直接输入就能关机,

但是我想说:Linux服务器永不关机,记住这个点,

因为我们以后工作,也是不会关机的。

指令原理的理解

经过上述的学习以及之前文章的学习,我们总算是把常见常用的指令都学习了一遍,

在这其中我也穿插了不少对于Linux操作系统的理解,那么现在我们也来理解一下指令。

指令的运行原理:

我们来看看我们平时输指令的地方:

输入指令的过程,本质就是输入字符串。

我们之前也有讲过如何理解指令,

指令的本质其实就是编译好的程序和脚本,

一定是存放在系统的某一个地方。(之前也找过在哪) 

图中的那一行其实叫做 bash 命令行。

先说结论:我们输入指令到 bash 命令行,命令行解释器告诉操作系统,

然后操作系统处理结果返回给命令行解释器,命令行解释器再将结果告诉用户。

那么这是个什么原理呢?

解析:

我们输入的所有指令,最终都要在OS内部运行,

但是OS的操作难度很高,普通人很难说直接去操作我们的OS,

这个时候就出现了:图形化界面 / 命令行解释器

平时我们用的Windows系统就是图形化界面,我们现在用的Linux就是命令行解释器

也就是图中的 bash 命令行,就是我们这个版本的命令行解释器。

这就有了上面说的,命令行解释器将用户的命令翻译给操作系统,

同时,也将操作系统的处理结果翻译给用户。

不仅如此,命令行解释器还能保护系统,它可以驳回用户的错误/非法操作。

像这样:(找不到命令)

就像一个外壳一样保护这操作系统:(如图)

 我们将命令行解释器统称为shell,

举个例子,如果说shell是学生的总称,

那么我们的 bash 命令行就是一个大一学生张三

其他类型的命令行解释器例如 sh 就是大二学生李四

他们都是学生。他们都是shell。

 等以后学了进程,我会带着你们自己实现一个shell,到时候我们能对它有更深的理解。

总结:

文章将常用的指令基本讲解完了,

最后讲述了如何理解指令的运行原理,希望对大家有所帮助。

写在最后:

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue组件化编程

2.1. 模块与组件、模块化与组件化 模块: 理解:向外提供特定功能的 js 程序,一般就是一个 js 文件为什么:js 文件很多很复杂作用:复用、简化 js 的编写,提高 js 运行效率 组件: 定义&#xff…

QT界面开发杂记(五)

QString转char* QString("name").toStdString().c_str() c_str()没有‘\0’结尾可能导致一些错误可以使用以下方法解决: QString xmlPath "path"; const char cXmlName[1024] {0}; memcpy((void*)cXmlName,xmlPath.toStdStri…

Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析

Prompt learning 教学[案例篇]:文生文案例设定汇总,你可以扮演任意角色进行专业分析 1.角色扮演 行为Prompt写法“牙医”““我想让你扮演一名牙医。我会向你提供有关寻找牙科服务(例如 X 光、清洁和其他治疗)的个人的详细信息。…

《编程思维与实践》1072.下一位妙数

《编程思维与实践》1072.下一位妙数 题目 思路 思路与最小不重复数基本一致,从最高位开始找到第一个出现9的位置,让其加1,后面全变为0即可. 只需要再加一个判定条件:不能被9整除. 由数学知识,一个数不能被9整除当且仅当各位数之和不能被9整除. 这里给出简单的证明: 不妨以三位…

工程化:vite4和vue3里面的命令式loading的封装及使用

用习惯了vue的组件使用方式,转到vue3里面发现没有了vue的原型,不能全局挂载方法了,我们要使用命令式调用组件该怎么做, 效果展示 代码演练 1.组件结构 2.基础的组件模板loading.vue <template><sectionclass="full-loading":class

多台电脑共享鼠标键盘软件

背景 最近接手了2个不同base的项目&#xff0c;由于2个base的不同代码加密管理&#xff0c;必须要用两台电脑进行分别开发。于是&#xff0c;我不大的办公桌上要摆上2个键盘和2个鼠标&#xff0c;一下子就显得桌面特别杂乱&#xff0c;办公心情都不舒畅了。 我跟朋友吐槽了这件…

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原

华硕ROG|玩家国度魔霸新锐2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右…

《小钊记》项目启动前期工作相关记录:VUE、powerdesigner建模、虚拟机密码重置、代码生成

目录 VUE镜像基本命令vue 不是内部或外部命令路径配置路由 powerdesigner 建模栏位添加注释id设置自增导出sql 虚拟机root密码重置&#xff08;centos7&#xff09;生成代码工具安装EasyCode插件连接数据库生成代码可以自定义模板复制现有的模板&#xff0c;在其基础上进行改造…

神秘的IP地址8.8.8.8地址到底是什么?为什么会被用作DNS服务器地址呢?

当我们在配置网络连接或者路由器时&#xff0c;经常会遇到需要填写DNS服务器地址的情况。而在这些情况下&#xff0c;很多人都会听到一个神秘的数字地址&#xff1a;8.8.8.8。那么&#xff0c;这个地址到底是什么&#xff0c;为什么会被用作DNS服务器地址呢&#xff1f;本文将详…

【HA】HomeAssistant 添加 小米温湿度计2代

本方法只是被动的获取小米温湿度计广播出的温度和湿度数据&#xff0c;并没有其他更多功能。 0. 本人配置 树莓派3B Debian 11 (Bullseye) 64 位 Supervisor 2023.05.dev0901 HomeAssistant 已安装 HACS 1. 安装 打开侧边栏中的HACS&#xff0c;点击“集成” 右下角找到“…

如何把软件从C盘移到D盘?

​为什么要把软件从C盘移到D盘&#xff1f; C盘是安装操作系统的系统分区。虽然很多用户在安装系统的时候会给C盘分配了大量的磁盘空间&#xff0c;但是大多数用户会发现C盘很快就会无缘无故的被占满。这是为什么呢&#xff1f;这主要是由于大多数三方程序默认安装在C盘造成…

ios打包ipa的四种实用方法(.app转.ipa)

总结一下&#xff0c;目前.app包转为.ipa包的方法有以下几种&#xff1a; 1、Apple推荐的方式&#xff0c;即实用xcode的archive功能 Xcode菜单栏->Product->Archive->三选一&#xff0c;一般选后两个。 局限性&#xff1a;个人开发一般采用这种方法&#xff0c;但…

【C++】-const对象及成员函数之类和对象中篇完结(中)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 文章目录 前言一、案例的引入二、const对象和成员函数三、取地…

HR怎么看待PMP证书呢?

我们可以先了解一下各个公司对于PMP证书的一个观点 针对PMP证书&#xff0c;在HR看来&#xff0c;有这几个直观的感受和判断&#xff1a; 公司要求PMP优先&#xff0c;那我盯着这个看就行&#xff0c;没有就不要&#xff0c;省事儿招的多了也有一些基本了解&#xff0c;考到这…

从C语言到C++⑨(第三章_CC++内存管理)详解new和delete+面试题笔试题

目录 1. C语言动态内存管理 1.1 C/C内存分布 1.2 C语言中动态内存管理的方式 2. C动态内存管理方式 2.1 new/delete操作内置类型 2.2 初始化new数组的问题 2.3 new 和 delete 操作自定义类型 3. operator new与operator delete函数详解 3.1 operator new与operator de…

计算机专业含金量高的证书

目录 第一种证书&#xff1a;计算机技术与软件专业资格考试证书 第二种证书&#xff1a;微软认证 第三种证书&#xff1a;Oracle认证 第四种证书&#xff1a;思科认证 第五种证书&#xff1a;华为认证 第六种证书&#xff1a;红帽认证工程师 第七种证书&#xff1a;阿里…

数据表的创建和管理 (数据库)

目录 一、数据表结构的创建 1、利用create命令创建表 2&#xff0e;关于创建表时运用约束的说明 &#xff08;1&#xff09;空值约束&#xff08;NULL or NOT NULL&#xff09; &#xff08;2&#xff09;主键约束&#xff08;primary key constraint&#xff09; &#x…

Java多线程入门到精通学习大全?了解线程池和线程常用集合的基本原理、代码示例!(第六篇:线程池和集合的学习)

设计和实现多线程应用程序需要了解线程池、线程常用集合等相关知识。下面我们将分别介绍线程池、线程常用集合的原理、使用场景、代码示例、注意事项和总结。 1. 线程池 线程池是一种线程调度机制&#xff0c;它可以管理多个线程&#xff0c;并且可以重复使用这些线程来处理多…

Node.js 与 TypeScript

目录 1、什么是 TypeScript 2、运行TypeScript 3、TypeScript 在Node.js 生态中的情况 1、什么是 TypeScript TypeScript是一种流行的开源语言&#xff0c;由微软维护和开发。它受到了世界各地许多软件开发人员的喜爱和使用。 基本上&#xff0c;它是JavaScript的超集&…

SpringBoot+@Validate+全局异常拦截实现自定义规则参数校验(校验get请求参数不能为空且在指定枚举类型中)

场景 SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例&#xff1a; SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例_validated 怎么设置boolean类型非空_霸道流氓气质的博客-…