编写shell脚本实现如下功能: 在/root目录创建一个目录 etcbac 。在目录里面创建一个文档,将data.txt 。 将/etc/ 目录下 m开头的所有文件名称 写到data.txt中。将 m开头的所有文件分别打包到etcbac目录中,打包名称为”原文件名.tar.gz”。
时间: 2024-03-26 22:38:19 浏览: 17
好的,这是一个需要进行权限管理的操作,我需要确认一下您是否有足够的权限来进行这些操作。请以管理员身份运行此脚本,或者使用sudo命令来运行脚本。
以下是实现该功能的shell脚本:
```bash
#!/bin/bash
# 创建目录
mkdir /root/etcbac
# 创建文档并写入文件名
find /etc -type f -name "m*" -print > /root/etcbac/data.txt
# 打包文件
cat /root/etcbac/data.txt | while read file; do
tar czvf "/root/etcbac/$(basename "$file").tar.gz" "$file"
done
```
该脚本首先创建一个名为“etcbac”的目录,然后在目录内创建一个名为“data.txt”的文件,用于存储/etc/目录下以“m”开头的文件的名称。然后,该脚本使用find命令来查找所有以“m”开头的文件,并将它们的名称写入data.txt文件中。最后,该脚本使用tar命令将每个文件打包到etcbac目录中,并使用原文件名.tar.gz作为打包文件的名称。
相关问题
开始任务前,请先打开右侧命令行窗口,执行如下命令创建数据环境: bash /data/workspace/myshixun/env.sh 1.在 spark-shell 中读取 Linux 系统本地文件 /data/bigfiles/test.txt,然后统计出文件的行数,将统计结果保存到 /root/result.txt 文件中。 2.在 spark-shell 中读取 HDFS 系统文件 /user/hadoop/test.txt,然后统计出文件的行数,将统计结果保存到 /root/result2
由于我是一个 AI 语言模型,并没有实际操作环境,无法执行命令。但是根据您提供的命令,可以理解为先执行一个脚本文件 `env.sh` 来创建数据环境,然后通过 Spark Shell 分别读取本地文件和 HDFS 文件,并统计它们的行数并保存到本地文件中。
以下是可能的实现代码:
1. 统计本地文件行数并保存结果:
```
// 读取本地文件
val file = sc.textFile("file:///data/bigfiles/test.txt")
// 统计行数
val count = file.count()
// 将结果保存到本地文件
val result = sc.parallelize(Seq(count.toString))
result.saveAsTextFile("file:///root/result.txt")
```
2. 统计 HDFS 文件行数并保存结果:
```
// 读取 HDFS 文件
val file = sc.textFile("hdfs:///user/hadoop/test.txt")
// 统计行数
val count = file.count()
// 将结果保存到本地文件
val result = sc.parallelize(Seq(count.toString))
result.saveAsTextFile("file:///root/result2.txt")
```
执行上述代码时需要保证 Spark Shell 已经与 Spark 集群连接成功,并且具有读取和写入本地文件的权限。
编写一个shell脚本,把本服务器的/data/java/123/123.jar 、/data/java/234/234.jar 传 192.168.110.1服务器的/data/java/sftp/下,192.168.110.1服务器的sftp账号root,密码:123
你可以编写一个shell脚本来实现将本服务器的两个jar文件传输到192.168.110.1服务器的指定目录下。以下是一个示例脚本:
```shell
#!/bin/bash
# 定义本地jar文件路径
local_path1="/data/java/123/123.jar"
local_path2="/data/java/234/234.jar"
# 定义远程服务器信息
remote_host="192.168.110.1"
remote_user="root"
remote_password="123"
remote_path="/data/java/sftp/"
# 使用sftp命令传输文件
sftp_command="put $local_path1 $remote_path
put $local_path2 $remote_path
bye"
# 执行sftp命令
echo "$sftp_command" | sftp -oBatchMode=no -b-
# 输出传输结果
if [ $? -eq 0 ]; then
echo "文件传输成功!"
else
echo "文件传输失败!"
fi
```
你可以将以上脚本保存为一个.sh文件,然后在终端中执行该脚本即可完成文件传输操作。