使脚本可执行

使脚本可执行

在 18.04 中,此代码运行良好

#!/bin/bash
# Opens Libreofice most recent version of Weekly Task Sheet using zsh
# Following creating the script, at root terminal command evaluate chmod 755 tasksheet
# to set permissions; then execute with ./tasksheet
# linuxcommand.org/lc3_wss0010.php

zsh -c 'soffice <path>/WeeklyTaskSheet/*.odt(om[1])'

在 22.04 中我找不到把它放在哪里。我没有要报告的错误消息,因为我还没有找到它应该放在哪里。我找到了一个 /bin/bash 文件,但是当我 cat/bin/bash 时,我得到的是机器语言,没有任何可以编辑的内容。

@rexypoo 这是很久以前的 18.04 中发生的,今天的整个事件是在计算机硬件升级之后发生的,旧盒子现已被回收利用。

@usr68186 根据目前的建议,这里取得了一些进展。脚本现在位于我认为是我的主文件夹的一个文件中。

截屏

回到这里并按照建议,这就是我得到的结果

roger@roger-Precision-Tower-3620:~$ ls -l tasksheet
-rw-rw-r-- 1 roger roger 70 Nov  8 19:10 tasksheet
roger@roger-Precision-Tower-3620:~$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  snap  tasksheet  Templates  Videos
roger@roger-Precision-Tower-3620:~$ cat tasksheet
zsh -c 'soffice LS220DB8F0/AWP/WPGenerl/WeeklyTaskSheet/*.odt(om[1])'
roger@roger-Precision-Tower-3620:~$ 

运行 chmod 之后,我仍然没有找到:

roger@roger-Precision-Tower-3620:~$ ls -l tasksheet
-rwxrwxr-x 1 roger roger 70 Nov  8 19:10 tasksheet
roger@roger-Precision-Tower-3620:~$ .tasksheet
.tasksheet: command not found

我发现“在终端中打开”是访问 NAS 驱动器的一种方式,现在我认为问题在于我如何描述可执行文件的路径。这是我修改脚本后得到的结果

zsh -c 'soffice /run/user/1000/gvfs/smb-share:server=ls220db8f0,share=share$ /AWP/WPGenerl/WeeklyTaskSheet/*.odt(om[1])'
roger@roger-Precision-Tower-3620:/bin$ ./ tasksheet
bash: ./: Is a directory

你对我非常有耐心。我确实认为我遵循了你的指示,但还没有做到

roger@roger-Precision-Tower-3620:~$ mkdir bin
roger@roger-Precision-Tower-3620:~$ ls
bin      Documents  Music     Public  tasksheet  Videos
Desktop  Downloads  Pictures  snap    Templates
roger@roger-Precision-Tower-3620:~$ pwd
/home/roger
roger@roger-Precision-Tower-3620:~$ mv tasksheet /home/roger/bin/tasksheet
roger@roger-Precision-Tower-3620:~$ ls
bin      Documents  Music     Public  Templates
Desktop  Downloads  Pictures  snap    Videos
roger@roger-Precision-Tower-3620:~$ cd bin
roger@roger-Precision-Tower-3620:~/bin$ ls
tasksheet
roger@roger-Precision-Tower-3620:~/bin$ ./tasksheet
zsh:1: no matches found: /AWP/WPGenerl/WeeklyTaskSheet/*.odt(om[1])
roger@roger-Precision-Tower-3620:~/bin$ pwd
/home/roger/bin
roger@roger-Precision-Tower-3620:~/bin$ ls
tasksheet
roger@roger-Precision-Tower-3620:~/bin$ tasksheet
tasksheet: command not found
roger@roger-Precision-Tower-3620:~/bin$ pwd
/home/roger/bin
roger@roger-Precision-Tower-3620:~/bin$ 

答案1

使脚本可执行

脚本只是一个纯文本文件。您必须告诉 Ubuntu 该文件是可执行的。有多种方法可以做到这一点。

在终端中

命令行方法是输入以下命令:

chmod +x tasksheet

执行此命令后,如果再次运行 ls -l tasksheet,您将在输出中看到x类似内容。表示该文件现在可以执行。-rwxr...x

GUI 和鼠标方式

打开应用程序文件tasksheet(又名 Nautilus)并右键单击里面的文件文件

选择特性右键单击上下文菜单。转到权限标签:

在此处输入图片描述

勾选复选框允许作为程序执行文件

您只需执行其中一个,而不必同时执行两个。之后,您可以使用以下命令:

.tasksheet

如何使脚本可执行?了解更多信息。

其他指导

您必须输入cd /bin以下内容才能得到提示:

roger@roger-Precision-Tower-3620:/bin$

如果你打算转到/home/roger/bin/,你应该输入cd bin。然后你会看到提示:

roger@roger-Precision-Tower-3620:~/bin$

注意~之前的/

然后你输入:

roger@roger-Precision-Tower-3620:/bin$ ./ tasksheet
# There should be no space here          ↑

尝试 ./tasksheet。即:

roger@roger-Precision-Tower-3620:/bin$ ./tasksheet

如果您已将文件tasksheet从移动/home/roger//bin。不建议这样做。重要系统程序和实用程序位于 /bin。此文件夹不适用于您的个人脚本。请参阅本指南Linux 目录结构了解更多信息。

我应该把我的 Bash 脚本放在哪里?

如果您是唯一使用此脚本的人,我建议您将其移至/home/roger/bin/

如果您有其他用户帐户,并且预计通常登录此计算机的其他人将使用此脚本,我建议您将其移至/usr/local/bin/

所有这些文件夹:

/bin/
/home/roger/bin/
/usr/local/bin

位于 PATH 环境变量中。因此,您不必在 后面使用cd /bin或。cd bin./tasksheet

您可以tasksheet像输入命令一样直接输入,如下所示:

roger@roger-Precision-Tower-3620:$ tasksheet

请注意,上面的命令提示符表示当您以用户身份登录时打开终端时您位于默认位置roger

希望这可以帮助

相关内容