Sim*_*ied 8 command-line bash scripts directory mkdir
我正在处理脚本,我能够创建一个脚本,该脚本在运行时提示我输入新目录的名称,创建它然后创建几个文件,回显行,然后将其全部删除。
我想做的是稍微改变它,以便它自己创建和命名目录!
我知道这似乎是一个毫无意义的练习,但搞砸它是我学习的最佳方式。
这是我当前的脚本:
#!/bin/bash
echo "Give a directory name to create:"
read NEW_DIR
ORIG_DIR=$(pwd)
[[ -d $NEW_DIR ]] && echo $NEW_DIR already exists, aborting && exit
mkdir $NEW_DIR
cd $NEW_DIR
pwd
for n in 9 8 7 6 5 4 3 2 1 0
do
touch file$n
done
ls file?
for names in file?
do
echo This file is named $names > $names
done
cat file?
cd $ORIG_DIR
rm -rf $NEW_DIR
echo "Goodbye"
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式为NEW_DIR变量设置硬编码值,而不是使用read命令NEW_DIR从输入中获取值:
替换脚本中的以下行:
read NEW_DIR
Run Code Online (Sandbox Code Playgroud)
与以下行:
NEW_DIR="new_dir_hard_coded_value"
Run Code Online (Sandbox Code Playgroud)
如果你想要一个惊喜,而不是硬编码名称,你可以使用一种技术来生成一个随机字符串,例如
NEW_DIR=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w8 | head -n1)
Run Code Online (Sandbox Code Playgroud)
这将设置NEW_DIR为一个由八个字母数字字符组成的字符串。每次运行脚本时,新目录都会有不同的随机名称...
或者要获取随机单词,请从中选择一个字典/usr/share/dict/并使用shuf,例如:
$ shuf -n1 /usr/share/dict/british-english
soupier
$ shuf -n1 /usr/share/dict/british-english
penguins
Run Code Online (Sandbox Code Playgroud)
所以
NEW_DIR=$(shuf -n1 /usr/share/dict/british-english)
mkdir "$NEW_DIR"
...
Run Code Online (Sandbox Code Playgroud)