当前位置: 首页 > 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 课题来源 随着社会的不断发展以及大家生活水平的提高,越来越多的年轻人选择在大城市发展。在大城市发展就意味着要在外面有一处安身的地方。在租房的过程中,大家也面临着各种各样的问题,比如需要费时费力去现场看房&…...

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

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

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

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

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

零基础设计模式——行为型模式 - 责任链模式

第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...