shell和bash脚本命令学习
概念
Shell指的是任何提供命令行界面的程序,它提供了用户与操作系统之间的交互界面。它允许用户输入命令并执行它们,同时提供脚本编写功能,使得自动化任务成为可能。Shell有多种类型,比如Bourne Shell(sh)、C Shell(csh)、Korn Shell(ksh)等。
Bash是Shell的一种,全称为Bourne Again Shell,是Bourne Shell的一个自由软件版本。
学习资料
在Bash脚本中, $(dirname $0) 是一个表达式,用于获取当前脚本文件所在的目录路径。
$0是一个特殊的变量,它代表当前脚本的文件名,包括其路径。dirname是一个Unix命令,用于从完整的文件路径中去除文件名,只留下目录部分。
例如,如果你有一个脚本文件位于 /home/user/myscript.sh,那么执行 $(dirname $0) 将得到 /home/user。
这个表达式在脚本中经常用于确定脚本的安装位置,以便脚本可以找到其依赖的文件或执行其他需要知道脚本位置的操作。
bash脚本示例
#!/usr/bin/env bash
CONFIG=$1
GPUS=$2
NNODES=${NNODES:-1}
NODE_RANK=${NODE_RANK:-0}
PORT=${PORT:-29500}
MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"}
# export TORCH_DISTRIBUTED_DEBUG=INFO
# export CUDA_VISIBLE_DEVICES=0
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
python -m torch.distributed.launch \
--nnodes=$NNODES \
--node_rank=$NODE_RANK \
--master_addr=$MASTER_ADDR \
--nproc_per_node=$GPUS \
--master_port=$PORT \
$(dirname "$0")/train.py \
$CONFIG \
--launcher pytorch ${@:3}

浙公网安备 33010602011771号