【BASH】回顾与知识点梳理(七)
【BASH】回顾与知识点梳理 七
- 七. 前六章知识点总结及练习
- 7.1 总结
- 7.2 练习
该系列目录 --> 【BASH】回顾与知识点梳理(目录)
七. 前六章知识点总结及练习
7.1 总结
- 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的指令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作。用户不能直接操作内核,如果要操作内核只能通过两个途径:
- 调用system call接口
- glibc为用户封装了库函数,用户通过glibc间接调用system call接口

- 学习 shell 的原因主要有:文字接口的 shell 在各大 distribution 都一样;远程管理时文字接口速度较快;shell 是管理 Linux 系统非常重要的一环,因为 Linux 内很多控制都是以 shell 撰写的。
- 系统合法的 shell 均写在 /etc/shells 文件中;
[root@node-135 ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash - 用户默认登入取得的 shell 记录于 /etc/passwd 的最后一个字段;
- bash 的功能主要有:命令编修能力;命令与文件补全功能;命令别名设定功能;工作控制、前景背景控制;程序化脚本;通配符
- type 可以用来找到执行指令为何种类型,亦可用于与 which 相同的功能;主要参数:
-p -t -a - 变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据
- 变量主要有环境变量与自定义变量,或称为全局变量与局部变量
- 使用 env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量;
declare/typeset -x和export用法和功能相同 - set 可以观察目前 bash 环境下的所有变量;unset取消变量
- $? 亦为变量,是前一个指令执行完毕后的回传值。在
Linux 回传值为 0 代表执行成功; - locale 可用于观察语系资料;
- 可用 read 让用户由键盘输入变量的值;主要参数:
-p -t - ulimit 可用以限制用户使用系统的资源情况;常用参数:
-u -f -n - bash 的配置文件主要分为 login shell 与 non-login shell。login shell 主要读取 /etc/profile 与 ~/.bash_profile,non-login shell 则仅读取 ~/.bashrc
- 在使用 vim 时,若不小心按了 [crtl]+s 则画面会被冻结。你可以使用 [ctrl]+q 来解除冻结
- 通配符主要有:
*, ?, []等等 - 数据流重导向透过 >, 2>, < 之类的符号将输出的信息转到其他文件或装置去;
- 连续命令的下达可透过 ; && || 等符号来处理
- 管线命令的重点是:『管线命令仅会处理 standard output,对于 standard error output 会予以忽略』 『管线命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。』
- 管线命令主要有:
cut, grep, sort, wc, uniq, tee, tr, col, join, paste, expand, split, xargs等,有些命令虽然不是管线命令,但仍可以和管线命令组合使用,例如ls
7.2 练习
- 情境模拟题一:由于 ~/.bash_history 仅能记录指令,我想要在每次注销时都记录时间,并将后续的指令 50 笔记录下来, 可以如何处理?
o 目标:了解 history ,并透过数据流重导向的方式记录历史命令;
o 前提:需要了解本章的数据流重导向,以及了解 bash 的各个环境配置文件信息。
答:其实处理的方式非常简单,我们可以了解 date 可以输出时间,而利用 ~/.myhistory 来记录所有历史记录,而目前最新的 50 笔历史记录可以使用 history 50 来显示,故可以修改 ~/.bash_logout 成为底下的模样:
[dmtsai@study ~]$ vim ~/.bash_logout
date >> ~/.myhistory
history 50 >> ~/.myhistory
- 在 Linux 上可以找到哪些 shell(举出三个) ?那个文件记录可用的 shell ?而 Linux 预设的 shell 是?
bashshcsh/etc/shellsbash
- 你输入一串指令之后,发现前面写的一长串数据是错的,你想要删除游标所在处到最前面的指令串内容,应该如何处理?
ctrl + u
ctrl + k 向后删
ctrl + a 移动行首
ctrl + e 移到行尾 - 在 shell 环境下,有个提示字符 (prompt),他可以修改吗?要改什么?默认的提示字符内容是?
可以
环境变量PS1
$,『[\u@\h \W]$』==> [“目前使用者的账号名称”@“仅取主机名在第一个小数点之前的名字” “当前工作目录名”]$ - 如何显示 HOME 这个环境变量?
[root@node-135 ~]# echo $HOME
/root
- 如何得知目前的所有变量与环境变量的设定值?
环境变量:env,export
所有变量:decaler,set
[root@node-135 ~]# abcde=1234
[root@node-135 ~]# env|grep abcde
[root@node-135 ~]# export|grep abcde
[root@node-135 ~]# declare|grep abcde
abcde=1234
[root@node-135 ~]# set|grep abcde
abcde=1234
- 我是否可以设定一个变量名称为 3myhome ?
不可以,变量名有数字、字母和下划线组成,第一位不可以是数字 - 在这样的练习中『A=B』且『B=C』,若我下达『unset $A』,则取消的变数是 A 还是 B?
B
unset $A 相当于 unset B - 如何取消变量与命令别名的内容?
unset unalias - 如何设定一个变量名称为 name 内容为 It’s my name ?
name=“It’s my name” - bash 环境配置文件主要分为哪两种类型的读取?分别读取哪些重要文件?
login-shell/no-login-shell
login-shell读取/etc/profile和~/.bash_profile
no-login-shell读取~/.bashrc - CentOS 7.x 的 man page 的路径配置文件案?
/etc/man_db.conf - 试说明 ', ", 与
这些符号在变量定义中的用途? 双单引号':标记字符串,字符串内容不支持转义 双双引号":标记字符串,字符串内容支持转义 双撇\:用于执行其内的命令,同$() - 跳脱符号 \ 有什么用途?
- 在echo -e 字符串中能够转义
[root@node-135 ~]# echo -e "123\t123">123 [root@node-135 ~]# cat 123 123 123 - 成为一般字符
[root@node-135 ~]# echo "\"it is cat"\" "it is cat" [root@node-135 ~]# echo "it is cat" it is cat - 逃脱符号,命令过长能进行换行
- 连续命令中, ;, &&, || 有何不同?
;:命令顺序执行,cmd1 ; cmd2,不管前一个命令cmd1 是否成功,cmd2都会执行
&&:cmd1 && cmd2 ,cmd1执行成功,执行cmd2。cmd1执行失败,不执行cmd2。
||:cmd1 || cmd2 ,cmd1执行成功,不执行cmd2。cmd1执行失败,执行cmd2。 - 如何将 last 的结果中,独立出账号,并且印出曾经登入过的账号?
last|cut -d' ' -f 1
last|cut -d' ' -f 1|sort |uniq
- 请问 foo1 && foo2 | foo3 > foo4 ,这个指令串当中, foo1/foo2/foo3/foo4 是指令还是文件? 整串指令的意义为?
foo1,2,3指令,foo4文件
foo1执行失败,则程序结束
foo1执行成功,foo2执行成功,把stdout输出给foo3作为stdin,执行foo3,foo3执行完成后的结果输出给foo4
foo1执行成功,foo2执行失败,把空输出给foo3作为stdin,执行foo3,foo3执行完成后的结果输出给foo4,foo4里什么都没有 - 如何秀出在 /bin 底下任何以 a 为开头的文件文件名的详细资料?
[root@node-135 ~]# ls /bin/a* -l
- 如何秀出 /bin 底下,文件名为四个字符的文件?
ls -ld /bin/????
- 如何秀出 /bin 底下,档名开头不是 a-d 的文件?
ll /bin/[^a-d]*
- 我想要让终端机接口的登入提示字符修改成我自己喜好的模样,应该要改哪里?(filename)
[root@node-135 ~]# cat /etc/issue
\S (terminal: \l)
Date: \d \t
Kernel \r on an \m
Welcome!
- 承上题,如果我是想要让使用者登入后,才显示欢迎讯息,又应该要改哪里?
[root@node-135 ~]# cat /etc/motd
Hello everyone,
Our server will be maintained at 2015/07/10 0:00 ~ 24:00.
Please don't login server at that time. ^_^
该系列目录 --> 【BASH】回顾与知识点梳理(目录)
相关文章:
【BASH】回顾与知识点梳理(七)
【BASH】回顾与知识点梳理 七 七. 前六章知识点总结及练习7.1 总结7.2 练习 该系列目录 --> 【BASH】回顾与知识点梳理(目录) 七. 前六章知识点总结及练习 7.1 总结 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我…...
Python实现对IP网段的快速检测
前言 本文是该专栏的第33篇,后面会持续分享python的各种干货知识,值得关注。 在工作上可能会遇到这样的需求,需要你对某个IP地址的网段进行批量检测。将可用和不可用IP批量筛选出来,尤其是在爬虫项目中,对于IP可用性的检测需求较多。 那么在python中,有没有方法可以快速…...
伪操作、C和汇编、ATPCS协议
一、伪操作.global 全局.local 局部.equ 声明.macro 子函数.if .endif 条件编译.rept 重复操作.weak 弱化.word 申请一个字空间.byte 申请一个字节空间.align 地址对齐.arm ARM指令.thumb Thumb指令.text 代码段.data 数据段.space 申请N个字节空间 二、C和汇编的混合编程三、A…...
OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask
滤波函数 中值滤波 medianBlur(frame, detectmat, 5); 平均滤波 blur(frame, detectmat, Size(5, 5)); 高斯滤波(最后一个是方差 越大越模糊) GaussianBlur(frame, detectmat, Size(5, 5),0); sobel的边缘检测函数 Sobel(gray, dx, CV_16S, 1, 0, 3…...
20天突破英语四级高频词汇——第②天
20天突破英语四级高频词汇~第2天加油(ง •_•)ง💪 🐳博主:命运之光 🌈专栏:英语四级高频词汇速记 🌌博主的其他文章:点击进入博主的主页 目录 20天突破英语四级高…...
【Python 学习】第一个python案例
Python的ATM机Demo 一、需要安装python环境(略) 二、ATM源码 # 初始化全局余额 money 5000# 定义初始化界面菜单函数def menu(name):"""主页面-主菜单 返回用户选择的菜单:param name: 用户名称:return: 返回菜单类型"""print(f"{name}…...
【C#学习笔记】值类型(2)
文章目录 Struct结构体类型为什么不推荐struct 元组类型可为空的值类型从可为空的值类型转换为基础类型提升的运算符如何确定可为空的值类型为什么建议少用T?装箱和取消装箱 Struct结构体类型 结构类型(“structure type”或“struct type”)是一种可封…...
【设计模式】-建造者模式
Java建造者模式:创建复杂对象的灵活构建者 在软件开发中,我们经常遇到需要创建一个复杂对象的情况。如果使用传统的构造函数进行对象创建,可能会导致构造函数参数过多,难以管理和维护。建造者模式(Builder Pattern&am…...
【N32L40X】学习笔记14-在RT-thread系统中读取eeprom数据
eeprom 说明 eeprom介绍 AT24C01A,1K串行EEPROM:内部组织16页8字节,1K需要一个7位数据字地址进行随机字寻址。AT24C02,2K串行EEPROM:内部组织32页8字节,2K需要一个8位数据字地址进行随机字寻址。AT24C04,4K串行EEPRO…...
Python OpenCV读取并显示USB UVC摄像头
1. 安装Python, 略。 2. 安装 OpenCV: pip install opencv-python 3. 预览摄像头画面脚本: import cv2cap cv2.VideoCapture(0, cv2.CAP_DSHOW)if not (cap.isOpened()):print("Could not open video device")cap.set(cv2.CAP_PR…...
针对高可靠性和高性能优化的1200V碳化硅沟道MOSFET
目录 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance摘要信息解释研究了什么文章创新点文章的研究方法文章的结论 标题:1200V SiC Trench-MOSFET Optimized for High Reliability and High Performance 摘要 本文详…...
在服务器上搭建gitlab
最终效果展示: 官方文档: 安装部署GitLab服务 1.在服务器上下载gitlab wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm rpm -ivh gitlab-ce-12.9.0-ce.0.el7.x86_64.rpm 2.编辑站点位置 vim …...
Amazon Aurora Serverless v2 正式发布:针对要求苛刻的工作负载的即时扩展
我们非常兴奋地宣布,Amazon Aurora Serverless v2 现已面向 Aurora PostgreSQL 和 MySQL 正式发布。Aurora Serverless 是一种面向 Amazon Aurora 的按需自动扩展配置,可让您的数据库根据应用程序的需求扩展或缩减容量。 亚马逊云科技开发者社区为开发者…...
nginx的优化和防盗链 重要!!!
实验一、隐藏版本号 要把nginx的版本号隐藏起来,防止恶意攻击 方法一:修改配置文件 在http模块中加入一个命令 server_token off; 过程: 备份,改配置文件一定要备份 修改配置文件 在http模块中添加 server_tokens …...
十五.redis缓存穿透,击穿,雪崩
redis哨兵模式 一.缓存穿透1.概念2.解决方案1)接口校验2)缓存空值3)布隆过滤器4)实时监控 二.缓存击穿1.概念2.解决方案1)设置热点数据永不过期2)加互斥锁3)”提前“使用互斥锁 / 逻辑过期4&…...
Spring源码——初识Spring容器
Spring源码之工厂(容器) 为什么把Spring的工厂又叫做容器呢? 工厂的责任是创建对象,但是创建完对象后还要进行存储(针对于单例的对象来讲),以供其他地方使用,这就是容器。为了能存…...
arcgis--数据库构建网络数据集
1、打开arcmap软件,导入数据,如下: 该数据已经过处理,各交点处均被打断,并进行了拓扑检查。 2、在文件夹下新建文件数据库,名称为路网,在数据库下新建要素类,并导入道路shp文件&…...
华为OD机试真题【西天取经】
1、题目描述 【西天取经】 唐僧师徒四人去西天取经,一路翻山越岭。一日,师徒四人途径一个 mxn 长方形区域,已知 1.将取经队伍作为一个整体,4 人行走相同路线。 2.取经队伍的起点为该长方形区域的左上角,目的地为该长方…...
心电信号时域特征分析与Python实现
目录 1 引言 2 心电信号时域特征的含义 3 Python实现心电信号时域特征提取 4 结论 1 引言 心电信号是由心脏电活动引起的电信号...
认识MyBatis 之 MyBatis的动态SQL
前言 本篇介绍MyBatis里如何使用动态SQL,了解如何去简单使用动态标签;如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言MyBatis - 动态 SQLif标签trim标签where标签update set 标签delet…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
