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

linux笔记6--shell相关

文章目录

  • 1. 查看当前的shell类型
  • 2. ps -f命令
  • 3. 父子shell
  • 4. 分号在命令里的作用
    • 问题:
    • 环境变量echo:
  • 5. sleep和jobs
    • sleep:
    • jobs:
    • 例子:
    • &:
  • 6. 外部命令和内建命令
    • 图解外部命令
    • type命令
  • 7. history命令
  • 8. alias命令
  • 9. 推荐

1. 查看当前的shell类型

命令:cat   /etc/passwd
在这里插入图片描述
在这里插入图片描述
由此可见,该系统终端的shell为bash
注:
① Debian -> dash     linux中的dash shell是什么
    Ubuntu -> bash
在这里插入图片描述
这里dash可以执行成功是因为Ubuntu也属于Debian
② 其它shell
③ shell的默认使用方式可以更改
④ ls -lF /bin/bash 执行后会发现这里实际上有一个软件 2022 /bin/bash*
    (bash本质上是一个软件,也是一个终端)
在这里插入图片描述

2. ps -f命令

显示进程列表及其详细信息。

3. 父子shell

① shell分为父shell和子shell
② 父shell -> 子shell 的过程类似于(ps -f 可以很清楚地看到它们之间的关系):
    孩子a
    父亲a 儿子b
    爷爷a 儿子b 孙子c
    以Ubuntu为例,bash一次相当于要一个小孩,再bash一次再要一个小孩
③ PPID指的是当前进程父亲的PID,或者说它是基于谁创建的

一个窗口运行了三个终端(3个bash),输入了三个exit才彻底退出在这里插入图片描述
父子shell是相对的。即PID=3536的bash是PID=3543的bash的父shell,PID=3543的bash同时又是PID=3551的bash的父shell。

4. 分号在命令里的作用

作用:分隔多个命令,使它们依次执行。跟’ | '作用一样
命令1 空格 分号 空格 命令2 空格 分号 空格 命令3 分号前后的空格表示分隔不同的命令
括号 命令1 空格 分号 空格 命令2 空格 分号 空格 命令3 括号 带括号意味着创建一个子shell去执行
例如:
在这里插入图片描述
①②的异同:
    相同点:执行结果一样
    不同点:1> ①没有生成一个子shell执行,②生成了一个子shell执行。2> ①的执行结果成为进程列表,②的不是。

问题:

问:为什么ls ; pwd ; cd / 执行完以后切换到了根目录,而(ls ; pwd ; cd / )却没有?
答:在第一个命令中,cd/ 意味着 cd 命令后跟着一个参数 /,表示切换到根目录。而在第二个命令中,(ls ; pwd ; cd/) 在括号内,这意味着括号内的命令将在子shell中执行。当子shell执行完毕后,不会影响当前shell的状态,所以在执行完 (ls ; pwd ; cd/) 后,你还停留在原来的目录,而不会切换到根目录。
问:(ls ; pwd ; cd / )既然生成了一个子shell执行,为什么ps -f 看不到这个进程?
答:在Unix-like系统中,ps -f 命令用于显示进程列表及其详细信息。当你在子shell中执行命令时,子shell本身会成为一个新的进程,但是它不会显示在外部shell的进程列表中,因为外部shell不直接管理子shell的执行。因此,虽然第二个例子中生成了一个子shell,但它不会被ps -f命令显示出来,因为ps -f只显示外部shell及其直接创建的进程列表。
问:什么叫进程列表?
答:进程列表指的是当前正在运行的所有进程的清单或列表。在操作系统中,每个正在运行的程序都是一个进程,这些进程可能是用户启动的应用程序、系统服务或操作系统本身的一部分。进程列表通常包含每个进程的标识符、状态、内存使用情况等信息,可以通过特定的系统命令或工具来查看。
问:为什么ls ; pwd ; cd / 生成的结果叫进程列表,(ls ; pwd ; cd / )生成的不叫?
答:第一个例子中,我们可能会将一系列命令看作一个整体,因为它们按顺序执行,就像列表中的项目一样。这种情况下,我们将这些命令的执行结果称为进程列表。而第二个例子中,命令被放在括号内,括号将这些命令分组在一个子shell中执行。这些命令的执行不会直接影响到外部的环境,所以我们不太倾向将它们称为进程列表。

环境变量echo:

命令:echo $BASH_SUBSHELL—检测有没有创建子shell执行。
例如:
在这里插入图片描述

5. sleep和jobs

sleep:

① sleep + 数字 --让终端休眠__秒后执行(倒计时)
② sleep + 数字& --让终端休眠__秒后执行,且这个过程在后台
③ man sleep 查看sleep说明文档
问:为什么要用sleep?
答:因为有时候我们需要程序在执行某些操作后暂停一段时间,或者在循环中添加一个延迟以控制程序的执行速度。

jobs:

① jobs – 看看谁在搞休眠
② jobs -l – 在jobs的基础上多显示了PID

例子:

在这里插入图片描述

&:

‘&’ – 把某个操作挂载后台执行,我们可以在当前页面做别的事情。例如:Windows解压压缩包时,我们点完解压之后,通常会把那个页面最小化(放在后台),然后去干别的事情。linux中输入(tar -zxvf … ; tar -zxvf … ; cp … )&就可以让解压操作在后台执行。

6. 外部命令和内建命令

        如图所示,输入ps -f 查看进程信息时,ps -f 也算一个进程(Windows任务管理器查看进程时,任务管理器本身也算一个进程),像ps -f 这种必须单独创建一个进程,在外部看内部的命令叫作外部命令;像cd这种不单独创建进程的,我们叫非外部命令(别名:内建命令)
在这里插入图片描述
在这里插入图片描述

图解外部命令

外部命令:站在一个更高的层次看shell里的东西,站在外边看里边的东西看的更清楚。
在这里插入图片描述
在这里插入图片描述

type命令

type + 命令名称:判断一个命令是外部命令还是内部命令
输出结果:命令名称 is /usr/bin/命令名称 – 外部命令
输出结果:命令名称 is a shell builtin – 内建命令
例如:
在这里插入图片描述

7. history命令

history命令–可以查看我们之前运行的所有命令(显示条数有上限)。它也是内建命令
② 执行history -> 显示:序号 + 命令 -> 输入!+序号,即可执行序号对应命令
③ !!:执行上一个命令
    !$:执行上一个命令
例如:
在这里插入图片描述
在这里插入图片描述
④ less .bash_history:以文件形式查看之前的命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8. alias命令

① alias命令–作用:起别名。好处:可以让我们缩写
② alias -p:显示全部已定义的别名
在这里插入图片描述
进一步理解alias:此处执行ll 时本质上是执行ls -alF;此处执行ls本质上是执行ls --color=auto(自动高亮)。补充:ls =‘ls --color=auto’ 是Ubuntu特有的,mac上就没有。
③ 创建属于自己的别名:alias 别名 = ’ 原来的命令’
    缺点:一旦退出当前的shell,就不可以使用了
例如:
在这里插入图片描述
注意:等号前后不要加空格
在这里插入图片描述

9. 推荐

frank的linux课教程 以上笔记全部来源于此

-----------------------------------未完待续...------------------------
---------------------------出现问题欢迎批评指正啊 ---------------------

相关文章:

linux笔记6--shell相关

文章目录 1. 查看当前的shell类型2. ps -f命令3. 父子shell4. 分号在命令里的作用问题:环境变量echo: 5. sleep和jobssleep:jobs:例子:&: 6. 外部命令和内建命令图解外部命令type命令 7. history命令8. alias命令9. 推荐 1. 查看当前的sh…...

链表-线性表的链式表示

链表-线性表的链式表示 #mermaid-svg-ozpXrKnNCyYdqHvN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ozpXrKnNCyYdqHvN .error-icon{fill:#552222;}#mermaid-svg-ozpXrKnNCyYdqHvN .error-text{fill:#552222;stro…...

GNU/Linux - 时区设置

CST China Standard Time 北京时间/中国标准时间 在时区划分上,属东八区,比协调世界时早 8 小时,记为 UTC8 GMT Greenwich Mean Time 格林威治标准时间 是指位于英国伦敦郊区的格林尼治天文台的标准时间,因为本初子午线被定…...

红队攻防渗透技术实战流程:云安全之云原生安全:内核漏洞和版本漏洞

红队云攻防实战 1. 云原生安全 -Docker安全-容器逃逸-版本漏洞1.1 容器逃逸-版本漏洞-runC容器逃逸1.2 实战案例-版本漏洞-runC容器逃逸1.3 容器逃逸-版本漏洞-containerd逃逸1.4 实战案例-版本漏洞-containerd逃逸1.5 Docker安全-容器逃逸-CDK自动化1.6 Docker安全-容器逃逸-c…...

spring状态机实战

一、什么是状态机 状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型,是一种概念性机器,它能采取某种操作来响应一个外部事件。这种操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。状态…...

Ubuntu系统上安装NVIDIA驱动【笔记】

Ubuntu上安装NVIDIA驱动,您可以按照以下步骤操作: 首先,您需要配置软件源(根据情况配置,否则影响更新和下载速度)。 接下来,您可以按照上一条回答中的步骤来安装新的NVIDIA驱动。首先&#xff…...

生成式AI导论2024-李宏毅

生成式AI导论2024-李宏毅 第0讲: 课程说明第1讲:生成式AI是什么第2講:今日的生成式人工智慧厲害在哪裡?從「工具」變為「工具人」 第0讲: 课程说明 生成式AI的入门课程 第1讲:生成式AI是什么 生成式人…...

跨平台之用VisualStudio开发APK嵌入OpenCV(三)

本篇将包含以下内容: 1.使用 Visual Studio 2019 开发一个 Android 的 App 2.导入前篇 C 编译好的 so 动态库 3.一些入门必须的其它设置 作为入门,我们直接使用真机进行调试,一方面运行速度远高于模拟器,另一方面模拟器使用的…...

渗透测试框架之CobaltStrike,Metasploit域名上线隐藏IP

概述 为什么要隐藏IP 在拿下了目标机之后,目标机在内网里面,使用msf或者CS时,用自己的VPS做服务器的话,导致很容易被溯源。 域名上线原理 当我们访问域名时会经过域名解析 域名解析就是域名到IP地址的转换过程,那么…...

vue.js对接海康威视摄像头web开发包

一、登录海康开放平台下载web开发包,下载需要先登录海康账号,没有的需先注册一个。 这里的appkey、ip、port、secret 和cameraIndexCodeasd是自己去申请的 appkey: "****", ip: "****", port: **, secret: "****", //必填…...

Selenium中使用的三种等待

文章目录 1.前言2.在selenium中常见的等待操作一般有3个 1.前言 在使用selenium时很多元素在使用的时候都需要加载,如果不等待加载结束直接使用就会报错,功能不能继续。一般解决的办法就是使用等待操作。 2.在selenium中常见的等待操作一般有3个 slee…...

推荐一款媒体影音嗅探神器—Chrome扩展插件(猫抓cat-catch)

目录 1.1、前言1.2、下载地址1.3、github Releases 版本说明1.4、安装步骤1.5、猫抓插件常规设置1.5.1、设置抓取文件的类型1.5.2、设置抓取文件的后缀名 1.1、前言 我们在日常上网的过程中,很多音频、视频网站下载资源都非常不方便,要么需要安装客户端&…...

LLaMA-Factory 微调训练

LLaMA-Factory 微调训练 该框架功能,标注-微调-导出-合并-部署,一整条流程都有,而且训练时消耗的gpu算力也会小一些 一,安装(推荐在linux中训练,win可以用wsldocker) git clone https://githu…...

阿里云ECS服务器怎么设置时区

在自己部署在阿里云服务器上的应用中,控制台打印的日志时间和本地不一致,于是决定修改阿里云服务器的时区为Asia/Shanghai。 具体操作如下: 第一步:连接服务器 通过finalshell等连接工具通过公网IP连接到服务器。 第二步&#…...

【698协议】帧校验算法

698协议,帧校验算法 帧格式 帧校验范围 校验算法 #include "fcs16.h" /* * u16 represents an unsigned 16-bit number. Adjust the typedef for * your hardware. * Drew D. Perkins at Carnegie Mellon University. * Code liberally borrowed from M…...

FileZilla“服务器发回了不可路由的地址,使用服务器地址代替

问题:在宝塔创建的FTP无法使用,提示“服务器回应不可路由的地址。使用服务器地址代替 第一种解决办法:由于宝塔把FTP被动模式端口范围设置成了39000-40000,所以只需要把阿里云服务器上相应的端口范围开放即可。 第二种解决办法&am…...

【路径规划】基于遗传算法GA实现最短距离 多起点多终点多旅行商问题求解附Matlab代码

基于遗传算法GA实现最短距离 多起点多终点多旅行商问题求解 研究背景:研究步骤:研究方法和技术路线:代码研究背景: 多起点多终点多旅行商问题是旅行商问题(TSP)的一个扩展,该问题要求确定多个旅行商从各自的起点出发,分别经过一系列目标点最终回到各自的终点,使得总路…...

计算机毕业设计 | springboot+vue房屋租赁管理系统(附源码)

1,绪论 1.1 课题来源 随着社会的不断发展以及大家生活水平的提高,越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中,大家也面临着各种各样的问题,比如需要费时费力去现场看房&…...

重大活动网络安全保障建设及运营指南

在当今高度数字化的社会中,各类重大活动如会议、展览、赛事及庆典等正面临着日益复杂和严峻的网络安全威胁。这些威胁不限于网络入侵或数据泄露,更涉及到对基础设施、关键信息系统和公众舆论的复杂攻击,需要国际社会的密切合作和长期关注。因…...

基于信号分解方法的机械故障诊断方法存在的问题

一方面,由于结构共振、测试噪声的干扰,为了确保分解精度,需要给定准确的参数初值(例如,瞬时频率)。研究人员通常认为零部件特征频率与通过传动比和驱动转速计算的理论值基本吻合,并基于理论值设置参数初值。事实上&…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...