Linux编写脚本实现:由运行参数给出指定目录,执行格式为: 程序名 [目录名],若执行时位置参数没有给出目录名,则默认为当前目录。在指定目录下建立20个目录即user01~user20,并设置每个目录的权限有:所有者和所属组为读写执行权限,其他用户为只读权限。要求:目录数在1~9时,目录名设为user01~user09。
时间: 2023-11-27 12:50:15 浏览: 57
以下是实现该功能的脚本:
```bash
#!/bin/bash
# 检查是否有指定目录,如没有则使用当前目录
if [ $# -eq 0 ]; then
dir="."
else
dir=$1
fi
# 创建20个目录
for i in {1..20}; do
if [ $i -le 9 ]; then
dirname="user0$i"
else
dirname="user$i"
fi
mkdir "$dir/$dirname"
chmod 750 "$dir/$dirname"
done
```
脚本首先检查是否有指定目录,如果没有则使用当前目录。然后使用循环创建20个目录,目录名根据目录数的不同而变化,同时设置权限为所有者和所属组为读写执行权限,其他用户为只读权限。
相关问题
上述实验题若改为由运行参数给出指定目录,执行格式为: 程序名 [目录名],若执行时位置参数没有给出目录名,则默认为当前目录。 脚本要怎么改?
可以使用Python中的sys.argv来获取运行参数。修改脚本如下:
```python
import os
import sys
# 获取目录名参数,如果没有则默认为当前目录
if len(sys.argv) > 1:
path = sys.argv[1]
else:
path = '.'
# 遍历目录下的所有文件和子目录
for root, dirs, files in os.walk(path):
for file in files:
# 输出文件路径
print(os.path.join(root, file))
```
在命令行中执行时,输入以下命令即可:
```
python script.py [目录名]
```
其中,`script.py`为脚本文件名,`[目录名]`为可选的目录名参数。如果不提供目录名参数,则默认为当前目录。
linux编写脚本实现:在主目录下建立20个目录即user01~user20,由运行参数给出指定目录,执行格式为:程序名[目录名],若执行时位置参数没有给出目录名,则默认为当前目录。 并设置每个目录的权限有:所有者和所属组为读写执行权限,其他用户为只读权限。要求:目录数在1~9时,目录名设为user01~user09。
可以使用以下脚本实现:
```bash
#!/bin/bash
# 获取运行参数指定的目录名,如果没有则使用当前目录
if [ $# -eq 0 ]
then
dir=$(pwd)
else
dir=$1
fi
# 创建20个目录,设置权限
for i in {1..20}
do
if [ $i -lt 10 ]
then
mkdir $dir/user0$i
else
mkdir $dir/user$i
fi
chmod 755 $dir/user*
done
# 设置所有者和所属组为读写执行权限,其他用户为只读权限
chmod 755 $dir/user*
chmod o-w $dir/user*
```
首先获取运行参数指定的目录名,如果没有则使用当前目录。然后使用循环创建20个目录,当目录数在1~9时,目录名设为user01~user09。创建完毕后,使用chmod命令设置每个目录的权限,所有者和所属组为读写执行权限,其他用户为只读权限。最后输出创建目录的结果。