当前位置: 首页 > news >正文

Linux-Shell

1.什么是Bash shell(壳)

Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。

通过xshell连接,就是打开了一个bash程序的窗口,不能点鼠标,只能输入命令

当我们使用远程连接工具连接linux服务,系统则会给打开一个默认的shell,我们可在这个界面执行命令、比如:获取系统当前时间,创建一个用户等等…

image

2.Bash Shell能干什么?

使用Shell实现对Linux系统的大部分管理,例如:
1.文件管理(文件创建,移动,复制,删除,编辑…)
2.权限管理(不同用户不通权限)
3.用户管理(创建,删除….)
4.磁盘管理(挂载)
5.网络管理
6.软件管理
.等等.

3.平时我们如何使用Shell呢?

输入命令 –> 效率低 –>适合少量的工作
Shell Script –> 效率高–>适合复杂重复性的工作
例如:创建100个用户,单纯输入命令需要执行100次,而Shell脚本只需要几行命令即可完成100个用户的创建

vim test.sh
for i in {1..100}
douseradd test$iecho "create test$i"
donebash test.sh

4.Shell提示符

# $ = 普通用户, # = root用户(超级管理员)
### [root@lqz ~]# 
# root:当前登录用户
# @ :没有意义
# lqz:主机名称,如果很长会显示不全,通过hostname查看
# ~:当前用户所在家目录
# #:通常指超级管理员
# $:普通用户
[root@lqz ~]# whoami
root[root@web01 ~]# useradd jack
[root@web01 ~]# passwd jack
Changing password for user jack.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@web01 ~]# su jack
[root@web01 ~]# cd root   提示没有权限

5.Shell基础语法

命令行bash shell, 为用户提供输入, 执行命令的界面

#命令  选项  参数
command [-options] [arguments][root@lqz ~]# ls             #命令
[root@lqz ~]# ls -a          #命令+选项
[root@lqz ~]# ls -a /home/   #命令+选项+参数
ls -a -l
ls -la
ls --all
ls --list
ls -c
ls --color
ls -a /tmp
#命令: 整条shell命令的主体
#选项: 用于调节命令的输出效果#以 “-”引导短格式选项(单个字符),例如“-l”#以“--”引导长格式选项(多个字符),例如“--color”#多个短格式选项可以写在一起,只用一个“-”引导,例如“-al”
#参数: 命令操作的对象,如文件、目录名等
# 选项和参数可以出现位置调换,命令,选项,参数之间要至少有一个空格
# 命令必须开头, 选项和参数位置可以发生变化

2.Bash Shell基本特性

1.命令补全

当使用windows查找一个目录层级特别多的文件时,打开的效率会非常的慢,但如果使用linux查找一个目录层级特别多的文件时,可以通过tab键快速的补全

PS: tab键可以实现命令补全,路径补全,在实际生产中tab补全往往是我们使用的最多的, 因为可以减少执行命令以及路径出错率。

# yum provides ifconfig
# yum install net-tools#查看ip时忘记具体了命令
[root@lqz ~]# ifcon
#按下tab键会自动补全
[root@lqz ~]# ifconfig#按一下tab键没有反应, 按两下tab键列出所有if开头的命令
[root@lqz ~]# if
if         ifconfig   ifenslave  ifrename
ifcfg      ifdown     ifnames    ifup#linux目录较深,经常使用tab键进行补全, 如果路径出错是没有办法补全(带斜线表示是目录(window叫文件夹))
[root@lqz ~]# ls /etc/sysconfig/network-scripts/# 安装选项补全
yum install bash-comple*
yum install bash-completion 
# ls -- Tab建,空格上下翻

2.命令快捷键,快捷键可以帮助我们大大提升工作效率

Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e    #光标跳转至正在输入的命令行的尾部
Ctrl + c    #终止前台运行的程序
Ctrl + d    #在shell中,ctrl-d表示推出当前shell。
Ctrl + z    #将任务暂停,挂至后台
Ctrl + l    #清屏,和clear命令等效。
Ctrl + k    #删除从光标到行末的所有字符
Ctrl + u    #删除从光标到行首的所有字符
Ctrl + r    #搜索历史命令, 利用关键字,Tab建选中
Ctrl + w    #按单词或空格进行向前删除
Ctrl + 左右建 #按单词或空格进行向前向后跳#在命令行前加面加 "#" 则该命令不会被执行

3.历史命令History, 追溯之前发生情况

-w 保存命令历史到历史文件
-c 清空命令历史记录, 不会情况文件
-d 删除命令历史的第 N 条行

#1.使用双 !! 可执行上一条执行过的命令
[root@lqz ~]# ls
lqz.com
[root@lqz ~]# !!
ls
lqz.com#2.输入!6, 执行history命令历史中第 6 行命令
[root@lqz ~]# !6
touch lqz.com#使用!cat, 调用history命令历史最近一次执行过的cat命令
[root@lqz ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
[root@lqz ~]# !cat  # 最近一次
cat /etc/sysconfig/network-scripts/ifcfg-eth0[root@lqz ~]# ls /etc/passwd
#调用上一条命令的最后参数或选项, 按下ESC松开, 然后按下 "."
[root@lqz ~]# cat
[root@lqz ~]# cat /etc/passwd
#第二种方式, 输入!$
[root@lqz ~]# ls !$
ls /etc/passwd
/etc/passwd# history -d 100  删除第100条历史记录
# history -c      清空记录(保存到文件中的还有)
# history -w      保存历史集合,保存到当前用户的家目录 .bash_history
# > .bash_history  清空文件的保存(操作完,不让别人看你执行的命令)

3.命令别名

命令别名将用户经常使用的复杂命令简单化, 可以用"alias 别名名称=命令"命令创建属于自己的命令别名, 若要取消一个命令别名,则是用unalias 别名名称命令。

#1.定义临时别名, wk为查看eth0网卡别名
[root@lqz ~]# alias wk='ifconfig'
# alias 查看一下是否成功,发现系统内置了很多
[root@lqz ~]# wk
# 取消别名(都是临时的)
[root@lqz ~]# unalias wk #2.如果定义命令本身, 会执行什么?
[root@lqz ~]# alias ifconfig='ifconfig eth0'
#绝对路径执行, 调用命令本身
[root@lqz ~]# /sbin/ifconfig
#通过转义字符, 调用命令本身
[root@WebServer ~]# ifconfig#3.取消别名
[root@lqz ~]# unalias ifconfig#4.永久生效,/etc/bashrc
[root@lqz ~]# echo "alias ifconfig='ifconfig eth0'" >> /etc/bashrc

3.Bash Shell获取帮助

1.命令 –help帮助

[root@lqz ~]# ls --help
用法: ls [选项]...[文件]...#ls 常见选项
-a  #查看目录下的所有文件,包括隐藏文件
-l  #以长格式的方式显示文件的详细内容
-h  #以人性化的方式显示内容,配合-l使用
-d  #只列出目录名,不列出目录以下的内容
-t  #按修改时间进行排序
-i  #显示文件的inode(该文件在该分区的一个编号)[root@lqz ~]# date --help
Usage: date [OPTION]... [+FORMAT]or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]][root@lqz ~]# date +%F   #查看日期
2019-03-28
[root@lqz ~]# date -s 12:00  #修改时间#时间不是用来查看,而是有其他的用途
[root@web01 ~]# touch `date +%F`_file.txt
[root@web01 ~]# ls
2019-03-28_file.txt

2.命令 man手册

# man ls    #查看ls命令的手册

3.linux命令大全url传送门
linux命令大全
​​​​​​linux命令手册

4.Bash Shell命令流程

1.当我们执行一个命令, 整个命令执行流程如下:

  1. 判断命令是否通过绝对路径执行
  2. 判断命令是否存在alias别名
  3. 判断用户输入的是内部命令还是外部命令
  4. Bash内部命令直接执行,外部命令检测是否存在缓存
  5. 通过PATH路径查找命令,有执行,无报错

2.什么是内部命令,什么是外部命令

内部命令: shell程序自带的命令。
外部命令: 在系统PATH变量的某个路径下的可执行程序。

3.如何检查用户输入的命令是内部命令还是外部命令

#cd命令属于shell内部命令
[root@linux-node1 ~]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd#ping属于外部命令, 同时会打印当前命令路径
[root@lqz ~]# type -a  ping
ping is /bin/ping

4.如果是外置命令,Bash可以通过查找PATH变量,获取该命令的绝对路径。

#打印当前环境变量目录
[root@lqz ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PS: PATH由多个路径组成,每个路径值之间用冒号间隔,对这些路径的增加和删除操作都将影响到Bash解释器对Linux命令的查找

5.如果是外置命令还会涉及到一个内存缓存,也就是说,当我们出现重复执行相同的命令,会通过缓存调取执行,也就意味着不会搜索PATH路径。

#表缓存命令所在位置
[root@lqz ~]# hash
hits    command1    /usr/bin/tty3    /sbin/ifconfig#已缓存命令,如果移动位置会导致无法找到该命令
[root@lqz ~]# mv /sbin/ifconfig /bin/
[root@lqz ~]# ifconfig
-bash: /sbin/ifconfig: No such file or directory#删除缓存过的ifconfig命令, 即可执行
[root@lqz ~]# hash -d ifconfig
[root@lqz ~]# ifconfig#当然可以清空缓存表
[root@lqz ~]# hash -r#注意: 命令缓存hash需要注意如下情况:
1.只要执行外部命令1次就会对该命令进行缓存
2.如果将命令移动了位置,该如何执行a.使用绝对路径执行b.删除hash表的缓存指令

6.命令执行流程总结: 当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下:

  1. 检查执行的命令是否使用的是绝对路径执行的。
  2. 检查ping命令是否存在alias别名
  3. 检查ping命令是内部命令还是外部命令
  4. 如果是内部命令Bash直接执行,如果是外部命令,首先检查Hash缓存,存在则直接调取
  5. 如果该命令不存在Hash缓存,则通过PATH路径进行逐行查找该命令所在的位置
  6. 如果PATH路径没有查找到该命令所在的路径,则返回错误码。command not found

相关文章:

Linux-Shell

1.什么是Bash shell(壳) Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。 通过xshell连接,就是打开了一…...

Python读取csv、Excel文件生成图表

简介 本文章介绍了通过读取 csv 或 Excel 文件内容,将其转换为折线图或柱状图的方法,并写入 html 文件中。 目录 1. 读取CSV文件 1.1. 生成折线图 1.1.1. 简单生成图表 1.1.2. 设置折线图格式 1.2. 生成柱状图 1.2.1. 简单生成图表 1.2.2. 设置柱…...

虚拟机中Linux的IP地址配置详解

目录 第一章、虚拟机中Linux的IP地址配置详解1.1)什么是IP地址1.2)如何查看自己电脑ip地址1.3)虚拟机NAT模式中Linux的IP地址设置有什么要求 第二章、使用Linux中的编辑命令进行网卡信息文件的配置 友情提醒 先看文章目录,大致了…...

Codeforces Round 889 (Div. 2) 题解

晚上睡不着就来总结一下叭~(OoO) 赛后榜(希望不要被Hack...Orz) 终榜!!! 瞬间的辉煌(呜呜呜~) 先不放图了。。怕被dalaoHack...呜呜呜~ 总结 7.29半夜比赛,本来是不想打的,感觉最近做的题太多…...

系统学习Linux-MySQL用户权限管理(三)

一、用户权限管理概述 数据库用户权限管理是数据库系统中非常重要的一个方面,它用于控制不同用户访问和操作数据库的权限范围。数据库用户权限管理可以保护敏感数据和数据库结构,确保只有被授权的用户才可以操作和使用数据库,防止数据被修改…...

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境4

7、使用串口工具 (1)连接硬件 连接 Type C 线, 一端电脑一端开发板 查看设备是否已经正确识别: 在 Windows 下可以打开设备管理器来查看 如果没有发现设备, 需要确认有没有装驱动以及接触是否良好 (2&a…...

阿里云NVIDIA A100 GPU云服务器性能详解及租用费用

阿里云GPU服务器租用费用表包括包年包月、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折,阿里云百科分享阿里云GPU服务器租用表、GPU一个小时多少…...

数字身份、分布式存储、跨链技术等将如何推动Web3数据的发展?

Web3数据是基于区块链技术、去中心化、可信任的数据,具有较高的安全性和可信度。随着Web3.0时代的到来,Web3数据将会在金融、物联网、医疗、教育、政务等领域发挥重要的作用。其中,数字身份、分布式存储、跨链技术等将会是Web3数据发展的重要…...

Ubuntu 新增2T 硬盘,配置自动挂载

Ubuntu 台式机内存太小了,增加了一块 2T 的硬盘,记录下配置过程: 查看硬盘信息 可以看出,我电脑当前有三块硬盘: (1) /dev/nvme0n1 系统盘,256 G,分了两个区 /dev/nvme0n…...

Windows下安装HBase

Windows下安装HBase 一、HBase简介二、HBase下载安装包三、环境准备3.1、 JDK的安装3.2、 Hadoop的安装 四、HBase安装4.1、压缩包解压为文件夹4.2、配置环境变量4.3、%HBASE_HOME%目录下新建临时文件夹4.4、修改配置文件 hbase-env.cmd4.4.1、配置JAVA环境4.4.2、set HBASE_MA…...

在家构建您的迷你 ChatGPT

这篇文章分为三个部分;他们是: 什么是指令遵循模型?如何查找遵循模型的指令构建一个简单的聊天机器人废话不多说直接开始吧!!! 什么是指令遵循模型? 语言模型是机器学习模型,可以根…...

Cisco IOS操作(红茶三杯CCNA)

Cisco路由器组件 CPU:执行指令RAM:断电内容丢失 运行操作系统运行配置文件IP路由表ARP缓存数据包缓存区 ROM:保存开机自检软件,存储路由器的启动引导程序 bootstrap指令基本的自检软件迷你版IOS 非易失RAM(NVRAM&#…...

在Linux中用strsignal函数输出对各种信号的描述

2023年7月29日&#xff0c;周六上午 目录 函数原型Linux有多少种信号使用示例 函数原型 #include <string.h>char* strsignal(int signum);strsignal函数接受一个整数参数signum&#xff0c;表示信号的编号。 用于把信号编号转换成一个简短的对这个信号编号的描述。 L…...

分布式文件存储与数据缓存 Redis高可用分布式实践(上)

一、Reids概述 1.1 为什么要使用NoSQL 单机Mysql的美好年代 在90年代&#xff0c;一个网站的访问量一般都不大&#xff0c;用单个数据库完全可以轻松应付。在那个时候&#xff0c;更多的都是静态网页&#xff0c;动态交互类型的网站不多。 遇到问题&#xff1a; 随着用户数的…...

chatglm2外挂知识库问答的简单实现

一、背景 大语言模型应用未来一定是开发热点&#xff0c;现在一个比较成功的应用是外挂知识库。相比chatgpt这个知识库比较庞大&#xff0c;效果比较好的接口。外挂知识库大模型的方式可以在不损失太多效果的条件下获得数据安全。 二、原理 现在比较流行的一个方案是langcha…...

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router】 本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router&#xff08;处理业务的部分&#xff09;、抽取框架的全局配置文件 从配置文件中读取数据&#xff08;服务器监听端口、监听IP等&a…...

建设银行秋招指南,备考技巧和考试内容详解

建设银行秋招简介 银行作为非常吃香的岗位&#xff0c;每年都有不少同学通过投递简历&#xff0c;进入笔试&#xff0c;再到面试成功&#xff0c;成功到银行就职&#xff0c;也有相当一部分同学因为信息差&#xff0c;符合条件却没有报名。无法进入银行工作。 建设银行的秋招…...

Cilium 系列-7-Cilium 的 NodePort 实现从 SNAT 改为 DSR

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能。但是通过对 Cilium 不同模式的切换/功能的启用&#xff0c;可以进一步提升 Cilium 的网络性能。具体调优项包括不限于&#xff1a; 启用本地路由 (Native Rou…...

React的hooks---useReducer

useReducer 作为 useState 的代替方案&#xff0c;在某些场景下使用更加适合&#xff0c;例如 state 逻辑较复杂且包含多个子值&#xff0c;或者下一个 state 依赖于之前的 state 等。 使用 useReducer 还能给那些会触发深更新的组件做性能优化&#xff0c;因为父组件可以向自…...

自然语言处理从入门到应用——LangChain:模型(Models)-[文本嵌入模型Ⅱ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商&#xff0c;如&#xff1a;OpenAI、Cohere、Hugging Face等&#xff0c;这个类旨在为所有这些提供一个标准接口。 …...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...