Linx基础(8)shell基础

news2024/11/15 12:08:30

该文章主要为完成实训任务,详细实现过程及结果见【参考文章】
参考文章:https://howard2005.blog.csdn.net/article/details/127139576?spm=1001.2014.3001.5502

文章目录

  • 一、常用shell命令
    • 1. 管道命令
      • 任务1、查看/etc目录信息前5行信息
      • 任务2、查看/etc/profile文件后5行信息
    • 2. grep命令
      • 任务1、抓取/etc目录下的python信息
      • 任务3、抓取用户数据文件中以root打头的信息
      • 任务4、显示所有以d开头的文件中包含hi的行
      • 任务5、显示两个文件匹配某个字符串的行
      • 任务6、显示文件中至少有n个连续小写字符的行
    • 3. find命令
      • 任务1、按类型查找
      • 任务2、按名称查找
      • 任务3、按大小查找
      • 任务4、按权限查找
    • 4. sed命令
    • 1)替换操作(s - substitute)
      • 任务1、将所有行的第一个hello替换成HELLO
      • 任务2、将第2行到第3行的第2个hello替换成HELLO
      • 任务3、将第2行的hello全部替换成HELLO
      • 任务4、将全部的hello替换成HELLO后生成新文件
      • 任务5、将全部的hello替换成hi,要求修改原文件
    • 2)插入操作(i - insert, a - append)
      • 任务1、删除第2行
      • 任务2、删除第2行到第3行
      • 任务3、删除文件所有行
      • 任务4、删除包含指定字符串的行
    • 5. tail命令
      • 任务1、显示文件最后4行内容*
      • 任务2、显示文件最后4个字符内容
      • 任务3、显示文件修改行
    • 6. sort命令
      • 任务1、对文件按行排序
      • 任务2、对文件按第4节排序
    • 7. cut命令
      • 任务1、提取ips.txt文件第7列字符
      • 任务2、提取ips.txt文件第4节内容
    • 8. history命令
      • 任务1、查看历史操作记录
      • 任务2、查看最近10条历史命令
      • 任务3、查看最开始10条历史命令
      • 任务4、曾多少次使用vim编辑文本文件?
      • 任务5、执行历史第4条命令
      • 任务6、执行上一条命令
      • 任务7、执行最后一次以his开头的命令
      • 任务8、将当前历史命令缓冲区命令写入历史命令文件中
      • 任务9、 清除第5条历史命令
      • 任务10、清除所有历史命令
      • 任务11、将历史命令文件中的命令读入当前历史命令缓冲区
  • 二、shell脚本
    • 1. 直接执行脚本
    • 2. shell脚本实战
      • 任务1、显示当前用户主目录
      • 任务2、编程实现两个数相乘
      • 任务3、编程实现两个整数的四则运算


一、常用shell命令

1. 管道命令

(1)命令概述

  • 管道命令只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入
    在这里插入图片描述
  • 【指令1】正确输出,作为【指令2】的输入,然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面。
    (2)命令格式
  • 命令1 | 命令2,命令1的输入作为命令2的输入

(3)案例演示

任务1、查看/etc目录信息前5行信息

  • 执行命令:ll /etc | head -5
    在这里插入图片描述

任务2、查看/etc/profile文件后5行信息

  • 执行命令:cat /etc/profile | tail -5
    在这里插入图片描述

2. grep命令

(1)命令概述

  • grep (缩写来自Globally search a Regular Expression and Print - 全局搜索正则表达式并打印)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。

(2)命令格式

  • grep [选项参数] 文件

(3)选项参数
在这里插入图片描述
(4)案例演示

任务1、抓取/etc目录下的python信息

  • 执行命令:ll /etc | grep python
    在这里插入图片描述
  • 执行命令:cat /etc/profile | grep dev
    在这里插入图片描述

任务3、抓取用户数据文件中以root打头的信息

  • 执行命令:cat /etc/passwd | grep root*
    在这里插入图片描述

任务4、显示所有以d开头的文件中包含hi的行

  • 执行命令:grep hi d*
    在这里插入图片描述

任务5、显示两个文件匹配某个字符串的行

  • 执行命令:grep 'hadoop' demo.txt demo1.txt
    在这里插入图片描述

任务6、显示文件中至少有n个连续小写字符的行

  • 执行命令:grep '[a-z]\{7\}' demo.txt
    在这里插入图片描述

3. find命令

(1)命令概述

  • find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
    (2)命令格式
  • find 路径 [选项参数]
    (3)选项参数
    在这里插入图片描述
    (4)案例演示

任务1、按类型查找

  • 执行命令:find /etc/sysconfig -type 'd'
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -type 'l'
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -type 'f'
    在这里插入图片描述

任务2、按名称查找

  • 执行命令:find /etc/sysconfig -name ‘network’
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -name 'net*' (可使用通配符)
    在这里插入图片描述

任务3、按大小查找

  • 执行命令:find /etc/sysconfig -size 15c(等于15字节)
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -size +10k(大于10240个字节)
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -size -20c (小于20个字节)
    在这里插入图片描述

任务4、按权限查找

  • 执行命令:find /etc/sysconfig -perm '777' (权限字符串:rwxrwxrwx)
    在这里插入图片描述
  • 执行命令:find /etc/sysconfig -perm '755' (权限字符串:rwxr-xr-x)
    在这里插入图片描述

4. sed命令

(1)命令概述

  • sed (stream editor)是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

(2)命令格式

  • sed “[action]” [filename]

(3)参数说明
在这里插入图片描述
(4)案例演示

  • 预备工作:创建demo.txt
    在这里插入图片描述

1)替换操作(s - substitute)

任务1、将所有行的第一个hello替换成HELLO

  • 执行命令:sed "s/hello/HELLO/" demo.txt
    在这里插入图片描述
  • 注意:输出内容是替换了的,但是原文件依然如故。

任务2、将第2行到第3行的第2个hello替换成HELLO

  • 执行命令:sed "2,3s/hello/HELLO/2" demo.txt
    在这里插入图片描述
  • 假设一个文件有5行,要替换的是第2行到第4行
  • 执行命令:sed "2,4s/hello/HELLO/2"

任务3、将第2行的hello全部替换成HELLO

  • 执行命令:sed "2s/hello/HELLO/g" demo.txt
    在这里插入图片描述

任务4、将全部的hello替换成HELLO后生成新文件

  • 执行命令:sed "s/hello/HELLO/g" demo.txt > demo1.txt
    在这里插入图片描述

任务5、将全部的hello替换成hi,要求修改原文件

  • 执行命令: sed -i "s/hello/hi/g" demo.txt
    在这里插入图片描述

2)插入操作(i - insert, a - append)

任务1、在第2行之前插入一行新内容

  • 执行命令:sed "2 i I love Linux" demo.txt
    在这里插入图片描述

3)删除操作(d - delete)

任务1、删除第2行

  • 执行命令:sed '2d' demo.txt
    在这里插入图片描述

任务2、删除第2行到第3行

  • 执行命令: sed '2,3d' demo.txt
    在这里插入图片描述

任务3、删除文件所有行

  • 执行命令:sed 'd' demo.txt
    在这里插入图片描述

任务4、删除包含指定字符串的行

  • 执行命令:sed '/scala/g' demo.txt
    在这里插入图片描述
  • 删除内容并且删除行,执行命令:sed '/scala/d' demo.txt
    在这里插入图片描述

5. tail命令

(1)命令概述

  • 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

(2)命令格式

  • tail [选项参数] 文件名

(3)选项参数
在这里插入图片描述

(4)案例演示

任务1、显示文件最后4行内容*

  • 执行命令:tail -n 4 anaconda-ks.cfg
    在这里插入图片描述

任务2、显示文件最后4个字符内容

  • 执行命令:tail -c 4 love.txt
    在这里插入图片描述

任务3、显示文件修改行

  • tail -f filename 显示文件修改的内容。

  • 说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

  • 查看test.txt内容
    在这里插入图片描述

  • 修改test.txt,在末尾增加10换行内容,然后存盘退出
    在这里插入图片描述

6. sort命令

(1)命令概述

  • Linux sort 命令用于将文本文件内容加以排序。sort 可针对文本文件的内容,以行为单位来排序。

(2)命令格式

  • sort [选项参数] 文件

(3)选项参数
在这里插入图片描述
(4)案例演示

  • 预备工作:创建ips.txt文件
    在这里插入图片描述

任务1、对文件按行排序

  • 执行命令:sort ips.txt,按字典排序法升序排列
    在这里插入图片描述
  • 执行命令:sort -r ips.txt,按字典排序法降序排列
    在这里插入图片描述

任务2、对文件按第4节排序

  • 执行命令:sort -t '.' -k 4 ips.txt,升序排列
    在这里插入图片描述
  • 执行命令:sort -t '.' -k 4 -r ips.txt,降序排列
    在这里插入图片描述

7. cut命令

(1)命令概述

  • cut命令就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

(2)命令格式

  • cut [选项参数] 文件名

(3)参数说明 在这里插入图片描述
(4)案例演示

任务1、提取ips.txt文件第7列字符

  • 执行命令:cut -c 7 ips.txt
  • 执行命令:cut -b 7 ips.txt
    在这里插入图片描述

任务2、提取ips.txt文件第4节内容

  • 执行命令:cut -d '.' -f 4 ips.txt,提取第4节内容
    在这里插入图片描述
  • 执行命令:cut -d '.' -f 2 ips.txt,提取第2节内容
    在这里插入图片描述

练习:提取汉字文件内容

在这里插入图片描述

  • 提取第7列,执行命令:cut -c 7 districts.txt
    在这里插入图片描述
  • 提取第3节:cut -d '.' -f 3 districts.txt
    在这里插入图片描述

8. history命令

(1)命令概述

  • Linux中history命令主要用于显示历史指令记录内容, 下达历史纪录中的指令。读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。

(2)命令格式

  • history [选项参数]

(3)参数说明
在这里插入图片描述

(4)案例演示

任务1、查看历史操作记录

  • 执行命令:history
    在这里插入图片描述

任务2、查看最近10条历史命令

  • 执行命令:history 10 (写成history -n 10也是一样效果)
    在这里插入图片描述

任务3、查看最开始10条历史命令

  • 执行命令:history | head -10
    在这里插入图片描述

任务4、曾多少次使用vim编辑文本文件?

  • 执行命令:history | grep vim
    在这里插入图片描述

任务5、执行历史第4条命令

  • 查看历史第4条命令
    在这里插入图片描述
  • 执行命令:!4
    在这里插入图片描述

任务6、执行上一条命令

  • 执行命令:!!

任务7、执行最后一次以his开头的命令

  • 执行命令:!his
    在这里插入图片描述
  • !<字符串>,字符串随便输入,shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。

任务8、将当前历史命令缓冲区命令写入历史命令文件中

  • 执行命令:history -w myhis
    在这里插入图片描述
  • 执行命令:cat myhis | tail -5
    在这里插入图片描述

任务9、 清除第5条历史命令

  • 查看第5条历史明令
    在这里插入图片描述
  • 执行命令:history -d 5
    在这里插入图片描述
  • 检查一下原来的第5条历史还是否存在
    在这里插入图片描述

任务10、清除所有历史命令

  • 执行命令:history -c
    在这里插入图片描述
  • 此命令发布之后,按上方向键就不能调出历史命令了。

任务11、将历史命令文件中的命令读入当前历史命令缓冲区

  • 执行命令:history -r myhis
    在这里插入图片描述
  • 执行命令:history | head -10
    在这里插入图片描述
  • 观察一下,读取历史命令文件后,以前的命令进入当前命令缓冲区,但是插入的第1条命令是刚才读取历史命令文件的命令。

二、shell脚本

  • 注意:脚本文件第一行必须是#!/bin/bash,指定命令解释器bash

1. 直接执行脚本

  • 创建脚本文件,执行命令:vim /home/shell.sh
    在这里插入图片描述
  • 此时,shell.sh对于所有者而言,只有读和写的权限,并不是可执行的脚本。
    在这里插入图片描述

(1)直接执行脚本

  • shell.sh文件必须具备可读与可执行(rx) 的权限
  • 增加shell.sh的写权限,执行命令:chmod u+x /home/shell.sh
    在这里插入图片描述

绝对路径方式执行脚本

  • 执行命令:/home/shell.sh
    在这里插入图片描述

相对路径方式执行脚本

  • 执行命令:cd /home
  • 执行命令:./shell.sh (.表示当前目录)
    在这里插入图片描述

(2)利用source命令执行脚本

  • 执行命令:source shell.sh
    在这里插入图片描述

(3)利用bash或sh命令执行脚本

  • 执行命令:bash shell.sh
    在这里插入图片描述
  • 执行命令: sh shell.sh
    在这里插入图片描述

2. shell脚本实战

任务1、显示当前用户主目录

1)编写脚本

  • 执行命令:vim shell01.sh
    在这里插入图片描述

2)设置权限

  • 执行命令:chmod u+x shell01.sh,增加可执行权限
    在这里插入图片描述

3)执行脚本

  • 执行命令:./shell01.sh
    在这里插入图片描述
  • 为了让其他用户能执行该脚本,那么应该修改权限,让其他人也有执行权限
  • 执行命令:chmod o+x shell01.sh

任务2、编程实现两个数相乘

1)编写脚本

  • 执行命令:vim shell02.sh
    在这里插入图片描述
#/bin/bash

read -p "a = " a
read -p "b = " b
product=$((a*b))
echo "$a * $b = $product"

2)设置权限

  • 执行命令:chmod u+x shell02.sh
    在这里插入图片描述
    3)执行脚本
  • 执行命令:./shell02.sh
    在这里插入图片描述

任务3、编程实现两个整数的四则运算

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

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

相关文章

【谷歌新作】Transformer杀入机器人领域,RT-1:97%成功率,轻松完成700多条控制指令

谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型&#xff0c;显著改进了对新任务、环境和对象的零样本泛化。 我们知道&#xff0c;机器学习&#xff08;ML&#xff09;多个子领域&#xff08;如 NLP 和 CV&#xff09;的最新重大进展通过一种共享的通用方法实…

ZYNQ之FPGA学习----SPI协议驱动模块仿真实验

1 SPI通信协议简介 SPI通信协议基础知识学习&#xff1a;硬件设计基础----通信协议SPI 2 实验任务 设计SPI驱动模块&#xff0c;并进行仿真验证&#xff0c;观察仿真波形 3 实验设计 3.1 创建工程 新建工程&#xff0c;操作如图所示&#xff1a; 输入工程名和路径&#x…

m基于K-means聚类算法和神经网络的模糊控制器设计matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇&#xff0c;使得同一个簇内的数据对象的相似性尽可能大&#xff0c;同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一…

React学习23(redux基本使用)

理解 1&#xff09;学习文档 英文文档&#xff1a;https://redux.js.org/ 中文文档&#xff1a;https://www.redux.org.cn/ github:https://github.com/react.js/redux 2&#xff09;redux是什么 redux是一个专门用于状态管理的JS库&#xff08;不是react插件库&#xff09; …

JavaScript中的4种for循环

这里介绍了4中for循环的方法。 注&#xff1a;这里不介绍do while循环。 普通for循环 这个应该是最常规的for循环了&#xff0c;按照数组下标遍历。 for (var i 0; i < 3; i) {console.log(i); }var arr [{"text":"text2","key":1},{&q…

IIS 使用 office365 SMTP relay

IIS上设置smtp 代理不是难事&#xff0c;但是如果使用office365就比较复杂点&#xff0c;弄不好会陷在里面。 一.office365 SMTP的选项 先了解一下office365对于smtp的三个选项&#xff0c;对应三张图及对比。 第一种方式&#xff0c;是使用office365的邮箱账号&#xff0c;通…

《小白WEB安全入门》02. 开发篇

开发篇初识HTML潜在漏洞初识CSS潜在漏洞初识JS潜在漏洞初识后端潜在漏洞后端能做什么后端种类后端框架潜在漏洞本系列文章只叙述一些超级基础理论知识&#xff0c;极少有实践部分 本文涉及到的语言需自行掌握 初识HTML潜在漏洞 HTML指的是超文本标记语言&#xff08;Hyper Tex…

math_基本导数公式@积分公式@部分推导

文章目录导数积分公式表&#x1f388;积分计算器pictures versionmarkdown Table version&#x1f388;&#x1f388;&#x1f388;&#x1f388;Notes补充几个积分公式的推导和记忆方法&#x1f388;x2a2x^2\pm{a^2}x2a2a2−x2\sqrt{a^2-{x^2}}a2−x2​x2−a2\sqrt{x^2-a^2}x2…

【C++天梯计划】1.13 广搜(BFS)(search widely)

文章目录什么是广搜?与深搜的对比实际应用例题1&#xff1a;快乐的马里奥题目描述输入输出样例代码1代码2例题2&#xff1a;迷宫出口题目描述输入输出样例思路代码&#x1f386;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;…

解释最小二乘法(最小平方法)?

Reference: https://blog.csdn.net/Rosie9/article/details/119717881 &#xff08;二乘 aa 平方&#xff09; 最小化误差平方和残差平方和最小&#xff0c;是一种数学优化技术。 问题&#xff1a;对于一元线性回归模型, 假设从总体中获取了n组观察值&#xff08;X1&#x…

【财务】FMS财务管理系统---应收管理

笔者前面介绍了FMS财务管理系统相关逻辑结构&#xff0c;本篇文章继续对应收管理进行了系统的介绍&#xff0c;希望通过此文能够加深你对FMS财务管理系统的认识。 上一篇主要介绍了财务进销存系统的数据流与模块组成&#xff0c;知道了FMS系统中数据的来源并从系统结构上说明了…

SAP Gateway Foundation Client Proxy 的使用方法

根据实际使用场景&#xff0c;SAP OData 客户端代理配置有多种消费类型和 OData 版本。 OData Client Proxy是ABAP中OData服务消费中客户端&#xff08;服务的消费者&#xff09;和服务实现&#xff08;数据提供&#xff09;之间的接口。 这使 ABAP 开发人员能够创建 OData 客…

Android核心技术——Coil 解析与使用

概述 Coil 是一个非常年轻的图片加载库&#xff0c;在 2020 年 10 月 22 日才发布了 1.0.0 版本&#xff0c;但却受到了 Android 官方的推广&#xff0c;在 Android Developers Backstage 这个博客中专门聊过一期。推广的原因比较简单&#xff1a;一方面是这个库确实做得很好&…

双机高速互联

双机高速互联 配置ip[非必须] 配置ip步骤是可以省略的, 但是如果你希望每次重新连接时候不用反复为新识别的网络配置成特定专用网络然后共享, 或者是每次为共用网络开启网络发现, 可以固定下网络ip, 这样每次网络发现都是不用重新设置的 配置如下 192.168.1.1 主机配置 19…

演讲类或观点类的爆款短视频脚本是怎样写出来的?模板分享

演讲类或观点类的爆款短视频脚本是怎样写出来的&#xff1f;模板分享 今天刷到一个讲全职妈妈价值的短视频&#xff0c;点赞量近千万&#xff0c;拆解分析了一下。 加上最近在我赢助手小禾呈序学到的观点类短视频脚本文案的模板&#xff0c;分析给大家看看&#xff1a; 第一部…

初探React环境搭建与运行

在家看React 知识&#xff0c;在本地环境搭建&#xff0c;记录下来&#xff0c;方便查看。 环境前置&#xff1a;Nodejs 14 及以上 网站地址&#xff1a;React中文官网 一、方式一命令生成项目 通过 create-react-app脚手架 来创建 React项目&#xff0c;其中 npx 是 npm5.2 …

68、4K-NeRF:高分辨率重建

简介 官网&#xff1a;https://github.com/frozoul/4K-NeRF 基于nerf方法的渲染过程通常依赖于一种像素方式&#xff0c;在这种方式中&#xff0c;射线(或像素)在训练和推断阶段都是独立处理的&#xff0c;这限制了其描述微妙细节的表示能力&#xff0c;特别是当提升到极高分…

机器学习——04朴素贝叶斯

机器学习——04朴素贝叶斯 参考资料 AIlearningMachine-Learning-in-Action庞善民.西安交通大学机器学习导论2022春PPT 更多原理请参考本人另一篇博客&#xff1a;[机器学习导论]——第六课——贝叶斯分类器 使用Jupyter进行练习&#xff0c;python3 一、知识准备 贝叶斯…

【算法技术专题】如何用Java实现一致性 hash 算法( consistent hashing )(上)

一致性hash的历史 【Consistent Hashing算法】早在 1997 年就在论文 Consistent hashing and random trees 中被提出&#xff0c;目前在 cache 系统中应用越来越广泛&#xff1b; 一致性hash的目的 一致性哈希算法是分布式系统中常用的算法&#xff0c;一致性哈希算法解决了…

[附源码]Nodejs计算机毕业设计基于社区疫情防控管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…