linux中的pushd、popd与dirs

最近在项目中,看到一些模块的启动脚本中,有一些 pushd、popd等操作。之前并没有接触过这类命令,但是目测它是与目录相关的,因为都是操作完了目录之后,才能运行启动命令。dirs展示目录栈。什么是目录栈?使用cd命令进入一个目录后,该目录会存放进以个栈中,当前目录永远位于栈顶。dirs 可以用来查

最近在项目中,看到一些模块的启动脚本中,有一些 pushd、popd等操作。之前并没有接触过这类命令,但是目测它是与目录相关的,因为都是操作完了目录之后,才能运行启动命令。

dirs

展示目录栈。

什么是目录栈?

使用cd命令进入一个目录后,该目录会存放进以个栈中,当前目录永远位于栈顶dirs 可以用来查看栈中的目录信息。如:

注意:最左边表示栈顶,最右边表示栈底

一些具体操作:

-c:删除目录栈中的所有记录
-l:以完整格式显示
-p:一个目录一行的方式显示
-v:每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N:显示从左到右的第n个目录,数字从0开始
-N:显示从右到左的第n个日录,数字从0开始

有了目录栈,自然会有与栈相关的操作,如入栈与出栈,即可通俗理解成pushd、popd。

pushd

主要功能就是修改栈顶目录,即切换目录。主要有如下3种体现:

  1. 将目录入栈,即加入到栈顶。
  2. 将栈中某个目录切换栈顶。

不带参数,与cd -同语义:

带目录,与cd some_dir同语义:

+/-n,切换栈中某个具体位置的目录到栈顶:

  • pushd +N: 将栈内元素循环左移,直到将(从边数)第N个元素移动到栈顶,由0开始计。
  • pushd -N: 将栈内元素循环左移,直到将(从边数)第N个元素移动到栈顶,由0开始计。

注:图中~/Movies的标号应该为3,特此更正

popd

主要功能是将目录出栈。包括栈顶(修改当前目录为上次目录,即单向的cd -)、及其他位置目录(可能不修改栈顶目录)。

  • 不带任何参数:栈顶元素出栈。
  • popd +N:删除栈中(从右边数)第N个元素,由0开始计。
  • popd -N:删除栈中(从左边数)第N个元素,由0开始计。

小结

可以理解为cd -的加强版本,实际作用可能并不是特别大。

Read more

Volcano 与 Kubernetes GPU 调度学习笔记

本笔记系统整理 Volcano 调度器、Kubernetes 调度框架、GPU Device Plugin、HAMi 等云原生 AI 调度领域的核心知识,适合用于学习、复习和工程实践参考。 目录 * 第一部分:Volcano 入门 * 1. Volcano 是什么 * 2. 安装与快速使用 * 3. 核心特性一览 * 第二部分:Volcano 整体架构 * 4. Volcano 解决的核心问题 * 5. 整体架构与数据流 * 6. 三层抽象模型 * 第三部分:Volcano 核心实现原理 * 7. Session 机制 * 8. Gang Scheduling 实现 * 9. Queue 与 DRF 公平调度

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd