我刚刚开始使用 Ubuntu。我正在尝试创建一个脚本来执行以下操作:
ls -al
对用户主目录中的文件执行,然后将其保存到我的目录中的文件中。- 我想将主目录的树信息保存到我的目录中名为 tree.dat 的文件中。
- 在我的主目录中创建一个名为 的新目录
backups
。 - 将我创建的文件移动到该新目录。
我遇到的问题是我一直收到权限被拒绝的错误。它告诉我我的主目录不存在,尽管它应该存在。
这是我的脚本:
#!/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
你做错了几件事。
- 用户的主目录是
/home/<USERNAME>
,不是/home
。 tree
和路径之间需要一个空格。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
笔记:
~
是简写/home/<USERNAME>
对于当前用户,您也可以使用/home/<USERNAME>
代替 来~
指定用户。- 由于您正在编写脚本,我假设您会多次运行它。第二次运行该脚本会引发错误除非你删除文件
backups
夹前再次运行脚本。为了解决这个问题,您需要将mkdir backups
命令更改为mkdir -p backups
。