linux常见指令下

接下来我们就聊聊linux的后面十条指令。

一:echo

作用是往显示器输出内容,和printf类型,但是该指令最核心的是与之相关的一些概念

概念1.输出重定向:

   echo不仅可以向显示打印内容,还可以向文件输出内容,本应该输出到显示器的输出到其它文件去了叫输出重定向(输出的方向重新改变),想必到这里肯定有小伙伴想问显示器是显示器,文件是文件,这两个能相提并论吗,或者说输出到显示器和输出到文件echo会不会做不同的处理。这时候用一句话即可为原因开个头,linux下一切皆文件,我们讲完输入,输出以及追加重定向再简略说。

输出重定向如下图 

[hqy@VM-24-5-centos ~]$ echo "hello linux"
hello linux
[hqy@VM-24-5-centos ~]$ tree
.
|-- a.out
|-- d1
|-- test.c
`-- test.txt

1 directory, 3 files
[hqy@VM-24-5-centos ~]$ echo "hello linux">test.c
[hqy@VM-24-5-centos ~]$ cat test.c  用cat查看,发现echo确实把语句
 hello linux                                  输出到test.c文件中去了

以及追加重定向,其实输出重定向在写入文件时是会先刷新文件才写入数据的。

[hqy@VM-24-5-centos ~]$ echo "hello linux">test.c
[hqy@VM-24-5-centos ~]$ cat test.c
hello linux
[hqy@VM-24-5-centos ~]$ echo "hello ">test.c
[hqy@VM-24-5-centos ~]$ cat test.c
hello 

要想原先数据保存下来,就得用追加重定向。如下:

[hqy@VM-24-5-centos ~]$ echo "hello linux">>test.c
[hqy@VM-24-5-centos ~]$ cat test.c
hello 
hello linux

二 cat

格式:cat+文件名

功能:查看文件内容

若不加文件,此时默认到键盘文件(标准输入端口)中读取,输出显示到显示器上展示
输入重定向也就是不从标准输入端口读取,而从其它文件中读取并显示到显示器上。

[hqy@VM-24-5-centos ~]$ echo "hello linux">test.c
[hqy@VM-24-5-centos ~]$ cat test.c    目前来看cat+文件名与输入重定向相似
                                      今后会有一点区别
hello linux
[hqy@VM-24-5-centos ~]$ cat <test.c   输入重定向
hello linux

  当我们了解了输入重定向和输出重定向,就再聊聊linux中echo输出字符到显示器和文件是否有区别,实际上没有区别,linux将一切看成文件来处理。(了解的不多,也只能合并一些资料勉强解释我的疑问)

   文件就是一种可以读和写的东西,读写是站在程序的角度,输入输出是站在内存来看的,注意:输入和写入是站在不同的角度来看的,程序的读取从内存来看是输入,写入则是输出。显示器和键盘其实都被看成文件,首先显示器文件是只能写入,不可读取的文件,我们将内存从显示器读取数据的fread函数写为空函数,所以无输入功能,为啥不提供输入功能从目前我学的一点语言知识还解释不了,键盘文件只能读取,不能写入,指的是内存对键盘的fwrite方法写为空,无法输出数据给键盘,但不意味着我们无法写入数据给键盘,不然怎么从键盘读数据呢?

   还有就是初学c时我好像听说我们scanf读取数据是从键盘中读取,只是由于显示器会回显我们输入的数据,时间久了我就忘了是从键盘读取,每次就是输入一个字符,然后显示器显示了,scanf也读到了,导致我以为我是从显示器读取的,其实是从键盘文件中读取的。

   我们在linux用的最多的就是指令,这些指令实际上就是存在系统特定位置的一个个可执行程序,指令就是文件,如下:现在想想我们我们在linux经常接触指令,它们实质上就是一个个可执行文件,当我们输入命令ls时,编译器就会去/usr/bin目录下执行该文件。在linux指令上我曾提到执行当前目录自己的可执行文件用./+可执行文件名(例如a.out),之所以ls这些可执行文件无需指定路径,我想显然编译器是知道去哪找的,这些指令的存放就是系统安排的位置,系统自己怎么可能不知道。

[root@VM-24-5-centos ~]# cd /usr/bin
[root@VM-24-5-centos bin]# ls -l /usr/bin/ls
-rwxr-xr-x 1 root root 117608 Nov 17  2020 /usr/bin/ls
[root@VM-24-5-centos bin]# ls -l /usr/bin

三 more

cat显示大文本时有缺陷,它会一股脑全打印出来。more则会先显示一屏幕,按回车下翻逐渐显示下面的内容,但是不能按上下方向键上下翻,我在测试这里的时候发现我的more没有显示行号的选项,所以这里感觉没有特别直观。

四 less

格式:less +[选项]+文件名

而less则可以按上下键上翻下翻,非常便于我们查看大文本信息。

选项:

-N显示行号

q:(quit),less的展示和more ,cat不同,结束展示要按q才能回到linux输入命令的窗口。

五 tail

语法:tail +[行数n]+文件名

功能:表示从该文件中读取末尾的n行显示到屏幕中去。

六 head

语法:head +[行数n]+文件名

功能:表示从该文件中读取开头的n行显示到屏幕中去

在说完tail和head指令我们再说一个特殊的文管道文件:|,管道文件可以临时保存我们的数据,也可以将保存的数据给下一个head和tail使用,像个管道一样连接两个指令。head和tail命令都是把截取的数据输出到屏幕上,那么我们如果用输出重定向,不就可以将读取的n行数据输出到管道文件中去吗。实际应用如下演示:

 我们可以对数据一步步加工,先对数据做截取尾尾15行,存到管道文件,管道文件会自动把数据传给下一个指令做处理,可以看到的是,下一个指令tail使用时未曾指定文件,实际上管道文件就充当了数据的提供者,这使得数据可以像在流水线上一步步被加工。

七 cal

命令格式:cal [参数] [月份][年份]

下面任意选项如果后面只有一个参数,该参数都会被认为是年份,两个参数第一个被认为月份,第二个是年份。

功能:查看日历

如下:

[hqy@VM-24-5-centos ~]$ cal 3 2023
     March 2023     
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

选项:

-1:显示当前月份的日历,不加也默认显示当前月份,也可以指定年月份显示

[hqy@VM-24-5-centos ~]$ cal -1 6 2023
      June 2023     
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

-3:显示前一个月,当前月,下一个月的日历,共三个月,同样可以指定年月份

[hqy@VM-24-5-centos ~]$ cal -3 7 2023
      June 2023             July 2023            August 2023    
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3                     1         1  2  3  4  5
 4  5  6  7  8  9 10   2  3  4  5  6  7  8   6  7  8  9 10 11 12
11 12 13 14 15 16 17   9 10 11 12 13 14 15  13 14 15 16 17 18 19
18 19 20 21 22 23 24  16 17 18 19 20 21 22  20 21 22 23 24 25 26
25 26 27 28 29 30     23 24 25 26 27 28 29  27 28 29 30 31      
                      30 31                                     
[hqy@VM-24-5-centos ~]$ cal -3 6 2023
      May 2023              June 2023             July 2023     
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6               1  2  3                     1
 7  8  9 10 11 12 13   4  5  6  7  8  9 10   2  3  4  5  6  7  8
14 15 16 17 18 19 20  11 12 13 14 15 16 17   9 10 11 12 13 14 15
21 22 23 24 25 26 27  18 19 20 21 22 23 24  16 17 18 19 20 21 22
28 29 30 31           25 26 27 28 29 30     23 24 25 26 27 28 29
                                            30 31               
[hqy@VM-24-5-centos ~]$ 

我知道这里肯定有同学和我一样会去尝试cal -3然后带个年份会咋样,个人觉得这有点像是未定义的,cal -3显示的多个月份,后面又跟着个年份,难道是想让编译器显示多个年份吗?linux对此的处理像是忽略了-3选项,而是显示了整年的日历。

-y:  显示当前年的日历,可指定年份

-j:  显示当前日期是一年中的第几天,并且当前月份是一年中的第几天都会显示出来,如果和-3选项复用,则会将三个月的日期转为一年中的天数显示,若是后面直接加年份,则会将一年的日期转为一年中的第几天来显示。

八 find

格式:find -name +文件名

find是在特定的家目录下查找文件,这个文件名可以是test.c,或者test.cpp,甚至我们可以不指定详细的文件名,而是找出所有相同后缀的文件

[hqy@VM-24-5-centos ~]$ find *.c
main.c
processbar.c
test.c
[hqy@VM-24-5-centos ~]$

九 grep

   作用:在文件搜索字符串,用单引号和双引号引起都行,会找到匹配的行打印出来,c语言是以单双引号区分字符和字符串,但是在linux下貌似没这种分别。

选项: -i 忽略字符的大小写

         -n 顺便输出行号

十 uname -r

这个指令是查看我们使用的计算机体系结构的。会显示操作系统版本等基本信息。

-a选项会输出所有详细信息依次是内核名称,主机号,内核版本号等,了解了解即可

[hqy@VM-24-5-centos ~]$ uname -r -a
Linux VM-24-5-centos 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[hqy@VM-24-5-centos ~]$ uname -r

3.10.0-1160.71.1.el7.x86_64

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

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

相关文章

图片视频抹除算法总结Inpaint

基本是从图片抹水印和视频抹水印两个方向 Video Inpainting&#xff1a;https://paperswithcode.com/task/video-inpaintingImage Inpainting&#xff1a;https://paperswithcode.com/task/image-inpainting 请根据目录查看 图片 Partial Conv 部分卷积层 源自于Image In…

人工智能时代如何加强网络安全

人工智能正在为软件开发人员赋予以前被认为难以想象的新能力。新的生成式人工智能可以提供复杂、功能齐全的应用程序、调试代码或使用简单的自然语言提示添加内嵌注释。 它已准备好以指数方式推进低代码自动化。但与此同时&#xff0c;新一代人工智能可能会为不良行为者提供帮…

vue中控制element表格列的显示与隐藏

背景 根据‘执行进度计算方式’的单选框里面的选项不同&#xff0c;展示不同的column 按最小制剂单位统计: 按含量统计: 实现方式 就是拿到选项框里面的值&#xff0c;再根据里面的值来判断哪些column显示和隐藏&#xff1b;关于显示和隐藏可以设置变量&#xff1b; <…

比对Excel数据

以a个为准绳比对b表数据&#xff0c;添加比对结果列输出。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么…

训练自己的ChatGPT 语言模型(一).md

0x00 Background 为什么研究这个&#xff1f; ChatGPT在国内外都受到了广泛关注&#xff0c;很多高校、研究机构和企业都计划推出类似的模型。然而&#xff0c;ChatGPT并没有开源&#xff0c;且复现难度非常大&#xff0c;即使到现在&#xff0c;没有任何单位或企业能够完全复…

【内控版】BLM 战略方法论:战略意图篇

目录 介绍 战略意图 专栏列表 详细内容 配图 介绍 欢迎大家继续来到华为战略方法论的系列内容。 今天就来讲讲 BLM 模型中的战略意图篇。 战略意图在 BLM 模型中的位置,大家可以看这张图。 战略意图</

Redis 主从复制 哨兵 集群

Redis 主从复制 哨兵 集群 一、Redis 主从复制1.1 Redis 主从复制介绍1.2 主从复制的作用1.3 主从复制的流程 二、搭建Redis 主从复制2.1 安装 Redis2.2 创建redis工作目录2.3 环境变量2.4 定义systemd服务管理脚本2.5 修改 Redis 配置文件&#xff08;Master节点操作&#xff…

基于TF-IDF+Tensorflow+PyQt+孪生神经网络的智能聊天机器人(深度学习)含全部Python工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型生成 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…

Microsoft Remote Desktop for mac安装教程

适用于Mac的Microsoft远程桌面测试版&#xff01;Microsoft Remote Desktop Beta for Mac是一种远程工具&#xff0c;允许用户从Mac远程访问基于Windows的计算机。使用此工具&#xff0c;用户可以随时随地使用Mac连接到远程桌面、应用程序和资源。 Microsoft Remote Desktop B…

【玩转Linux操作】一文带你明白Shell的判断,循环语句

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;判断语句⭐单层if&#x1f388;示例 ⭐…

【python】制作一个串口工具(下)!

上一章节我们说了UI界面的设计&#xff0c;这一节来说下怎样实现其功能。 一.实例演示 1.创建一个.py文件&#xff0c;以下代码用来实现获取所有的串口信息&#xff1a; import serial import serial.tools.list_portsfrom PyQt5.QtWidgets import QComboBoxclass My_ComBoBo…

signed char 与 unsigned char 的取值范围

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; 【C语言趣味教程】(2) 整数类型 | 数据类型的概念 | 原码反码与补码 | 有符号型和无符类型 | 研究 signed char 与 unsigned char 的取值范围 ​—— 热门专栏《维生素C语言》的重…

小程序页面顶部标题栏、导航栏navigationBar如何隐藏、变透明?

在app.json中的 "window"下面追加一行 "navigationStyle": "custom" 小程序顶部的白色背景条就不见了&#xff0c;直接变透明&#xff0c;只剩下右上角的胶囊按钮 警告&#xff1a; 如果页面有 <web-view src"{{src}}" /> …

【网络原理】TCP连接管理机制(三次握手四次挥手)

&#x1f94a;作者&#xff1a;一只爱打拳的程序猿&#xff0c;Java领域新星创作者&#xff0c;CSDN、阿里云社区优质创作者。 &#x1f93c;专栏收录于&#xff1a;计算机网络原理 在使用TCP协议进行网络交互时&#xff0c;TCP会进行三次握手即建立连接&#xff0c;TCP四次挥手…

密码学学习笔记(八):Public-Key Encryption - 公钥加密1

简介 公钥加密也被称为非对称加密。下面是一个例子&#xff1a; Bob生成一个密钥对&#xff0c;发布他的公钥&#x1d443;&#x1d43e;&#x1d435;, 保管密钥&#x1d446;&#x1d43e;&#x1d435; 私有的Alice使用&#x1d443;&#x1d43e;&#x1d435; 加密明文M…

TypeScript - 函数(下)

目录 1、在函数中声明this 2、其他需要知道的类型 2.1 void 2.2 object 2.3 unknow 2.4 never 2.5 Function 3、其余参数&#xff08;rest&#xff09;和参数 4、参数解构 5、函数的可分配性 1、在函数中声明this TypeScript 将通过代码流分析推断函数中应该是什么&…

安卓JNI从0到1入门教程(二)

经过上一篇《安卓JNI从0到1入门教程&#xff08;一&#xff09;》介绍&#xff0c;我们对JNI有了初步认识&#xff0c;接下来我会从ndk-build方式和cmake方式分别来介绍怎么构建native库&#xff1a; 一、ndk-build ndk-build依赖配置文件Android.mk&#xff0c;存放代码的位…

AI PPT 一句话搞定PPT讲演搞

相信大家在职场中&#xff0c;一定会接触过写PPT&#xff0c;经常会把你搞得焦头烂额。在大部分的公司里&#xff0c;写PPT汇报又是不可能逃避的事情。但随着AI时代的到来&#xff0c;有很多AI帮你写PPT的工具也逐渐崭露头角&#xff0c;可以自动帮助你制作出华丽的PPT&#xf…

docker部署rabbitmq 后访问管理首页常见问题

1.项目启动后 管理首页无法访问 1&#xff09;检查15672端口是否可以访问 2&#xff09;docker exec -it your_container_name /bin/bash 进入docker容器执行如下命令&#xff1a; 3) rabbitmq-plugins enable rabbitmq_management 2.访问首页时提示不是私密连接&#xff1a;…

自动化测试 selenium 篇

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 什么是自动化测试&#xff1f;Selenium 介绍Selenium 是什么Selenium 特点工作原理 seleniumJava环境搭建ChromeJava1.下载ch…