linux shell 相关命令
linux
本文字数:1.2k 字 | 阅读时长 ≈ 5 min

linux shell 相关命令

linux
本文字数:1.2k 字 | 阅读时长 ≈ 5 min

1. Shell 运行

下面写一个简单的 shell 程序 bash.sh,使用 ./bash.sh 或者 bash bash.sh 来运行上述脚本,#! 这句放在第一行告诉终端用什么解释器来运行 shell 脚本,终端会输出 "Hello World !",如果 ./train.sh 无法运行,可能是权限不够,在执行命令之前输入 chmod +x train.sh 即可

#!/bin/bash
echo "Hello World !"

2. Shell 变量

3. 文件读写操作

4.命令行传递参数

下面向 Shell 中传递三个参数 1,2,3,在命令行输入 ./train.sh 1 2 3,一般来说第 0 个参数不算参数,参数总量从 1 算起,123 一共三个参数

#!/bin/bash
echo "第零个参数:$0";
echo "第一个参数:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

# output
第零个参数:./train.sh
第一个参数:1
第二个参数为:2
第三个参数为:3

5. 基本分隔符

在 Shell 中,&; 都是命令分隔符,用于分隔多条命令

6. set -e

set -e 命令表示如果任何语句的执行结果不是 true,脚本就会立即退出。这有助于防止错误积累或错误的结果传播,使得问题更难以追踪

#!/bin/bash
set -e
cd some_directory    # 如果这个目录不存在,脚本将在这里退出
rm *                 # 如果脚本没有在上一行退出,这一行将从some_directory删除所有文件

在上面的脚本中,如果 cd 命令失败(可能是因为目录不存在),那么 rm * 命令将不会执行。这可以防止误删除文件的可能性,set -e 可以帮助我们编写更安全、更健壮的脚本。

7. sh -c

sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.1/zsh-in-docker.sh)"

  1. 从GitHub仓库下载名为"zsh-in-docker"的脚本,并使用sh命令来执行这个脚本,-O-选项表示将下载的内容输出到标准输出(stdout)。下载zsh-in-docker.sh脚本并将其内容输出到标准输出
  2. sh -c "$(command)": 这里的 sh -c 表示使用 sh 命令来执行 commandcommand 是一个字符串参数。$(command) 表示将command命令的输出作为参数传递给sh -c。所以这个命令的作用是执行wget命令下载的脚本

综上所述,这个命令会先下载zsh-in-docker.sh脚本,然后使用sh命令执行它,从而在系统中安装并配置Zsh。

常用深度学习参数

mmediting的shell脚本

#!/usr/bin/env bash

CONFIG=$1
GPUS=$2
PORT=${PORT:-29500}

PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
torchrun --nproc_per_node=$GPUS --master_port=$PORT \
    $(dirname "$0")/train.py $CONFIG --launcher pytorch ${@:3}

运行时执行CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 ./tools/dist_train.sh configs/file_data.py 8

接下来我们看一下dist_train.sh里面的内容

4月 06, 2025
3月 10, 2025
12月 31, 2024