执行 bash 脚本时出错:权限被拒绝;没有此文件或目录

执行 bash 脚本时出错:权限被拒绝;没有此文件或目录

我刚刚开始使用 Ubuntu。我正在尝试创建一个脚本来执行以下操作:

  1. ls -al对用户主目录中的文件执行,然后将其保存到我的目录中的文件中。
  2. 我想将主目录的树信息保存到我的目录中名为 tree.dat 的文件中。
  3. 在我的主目录中创建一个名为 的新目录backups
  4. 将我创建的文件移动到该新目录。

我遇到的问题是我一直收到权限被拒绝的错误。它告诉我我的主目录不存在,尽管它应该存在。

这是我的脚本:

#!/bin/bash
cd /home
ls -al > ls.txt
tree/home>tree.txt
mkdir backups 
cd backups 
mv -t /home/backups ls.txt tree.txt
mv ls.txt ls.bu
mv tree.txt tree.bu

这是输出:

luse@luse-VirtualBox:~$ sudo 777 script1.sh
sudo: 777: command not found
luse@luse-VirtualBox:~$ chmod 754 script1.sh
luse@luse-VirtualBox:~$ ./script1.sh
./script1.sh: line 4: ls.dat: Permission denied
./script1.sh: line 5: tree.dat: Permission denied
mkdir: cannot create directory `backups': Permissions denied
mv: failed to access '/home/backups': No such file or directory
./script1.sh: line 8: cd: backups: No such file or directory
mv: cannot stat 'ls.dat': No such file or directory
mv: cannot stat 'tree.dat': No such file or directory
luse@luse-VirtualBox:~$

显示错误消息的终端屏幕截图

答案1

你做错了几件事。

  1. 用户的主目录是/home/<USERNAME>不是 /home
  2. tree和路径之间需要一个空格。
  3. mv用于将.txt文件移动到文件夹的特定命令语法backups必须包含 cd backups

考虑到所有这些,您的脚本应该是这样的:

#!/bin/bash
cd ~
ls -al > ls.txt
tree ~ > tree.txt
mkdir backups
mv -t ~/backups ls.txt tree.txt
cd backups
mv ls.txt ls.bu
mv tree.txt tree.bu

笔记:

  1. ~是简写/home/<USERNAME> 对于当前用户,您也可以使用/home/<USERNAME>代替 来~指定用户。
  2. 由于您正在编写脚本,我假设您会多次运行它。第二次运行该脚本会引发错误除非你删除文件backups再次运行脚本。为了解决这个问题,您需要将mkdir backups命令更改为mkdir -p backups

相关内容