Bash 脚本创建目录

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)

Yar*_*ron 5

您可以通过以下方式为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)

有关bash-scripting-tutorial/bash-variables 的更多信息的链接


Zan*_*nna 5

如果你想要一个惊喜,而不是硬编码名称,你可以使用一种技术来生成一个随机字符串,例如

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)