我试图在计算机重新启动后登录或注销然后登录时覆盖文件。
- 文件位置:
/user_data/somePrefs.txt
- 要替换的文件的位置:
/software_location/somePrefs.txt
我当然可以尝试手动复制粘贴的方法来覆盖文件,但每当我的计算机重新启动/注销时这样做就会很麻烦。
在启动期间是否有一种自动化的方法可以执行此操作?
答案1
- 右键单击,新建文档,清空文档。(在任何你喜欢的地方创建). 将其命名为以 结尾的任何名称
.sh
(例如:StartupCommands.sh) #!/bin/bash
在第一行输入(棘手的部分)在下一行输入复制命令。它应该与下面的行完全相同。不要忘记
'
引号cp '/path/to/user_data/somePrefs.txt' '/path/to/software_location/somePrefs.txt'
并且路径必须是“绝对路径”(从根目录开始一直到您的文件)。
...所以最终文件看起来应该是这样的:
#!/bin/bash
cp '/path/to/user_data/somePrefs.txt' '/path/to/software_location/somePrefs.txt'
右键单击您的
.sh
文件,属性,在权限下,选中“允许以程序形式执行文件”框打开“启动应用程序”(按开始按钮并搜索)
点击“添加”
您可以在“名称”和“评论”字段中输入您想要的内容
单击“浏览...”并选择您的
.sh
文件
完成了。干杯。
如果您需要第 3 步的帮助,请在评论中告诉我
步骤 3 的提示
somePrefs.txt
您可以打开一个新的终端。将文件(一次一个)拖放到终端中。终端中显示的是绝对路径。
答案2
现在这是实现您想要的功能所需的命令:
cat /user_data/somePrefs.txt > /software_location/somePrefs.txt
现在我们有三种场景:
启动,又称引导:
在这种情况下,我们可以使用
systemd
程序在每次启动时实现这一点- 使用上述命令在任意位置创建脚本。
- 使用以下命令获取权限
755
:chmod 755 name_of_file systemd
像这样创建服务文件:[Unit] Description=copy script [Service] Type=simple ExecStart=/bin/bash -c "/path/to/file/copy.sh" [Install] WantedBy=multi-user.target
不管你怎么称呼它,我都这样称呼它
cop.service
将该文件放在
/etc/systemd/system/
使用以下命令启用它:
sudo systemctl enable cop
- 每次启动时都会运行该文件
重启时:
使用
cron
来运行它。像这样设置:
crontab -e @reboot /path/to/cop.sh
每次重启时都应该运行
在注销-登录时:
- 将该命令文件放在
/home/$USER/.bashrc
文件中,它将在每次注销和登录时运行 - 使用以下命令使文件可执行:
chmod +x /path/to/cop.sh
- 添加
/path/to/cop.sh
文件 - 源文件确保没有错误:
source ~/.bashrc
- 现在,无论何时您注销并登录,该脚本都会运行。
- 将该命令文件放在
包含命令的简单示例脚本如下:
#!/bin/bash
cat /user_data/somePrefs.txt > /software_location/somePrefs.txt
笔记:
您需要根据自己的情况更改目录路径。