Tag: bash

在远程计算机上运行shell脚本时,选择Command not working

我想在远程计算机上运行我的shell脚本,我需要用户想为某些变量赋值,因为我们在本地机器上运行脚本时使用Read命令但是我在远程机器上运行脚本时使用相同的命令但是它不是为我工作。 如何在远程计算机上使用Read命令运行脚本? 示例代码: restore (){ echo “Restore” } deploy () { echo “Deploy” } echo “Select any option to proceed…” read opt case $opt in restore) restore; break;; deploy) deploy; break;; esac 此代码适用于在本地计算机上运行脚本时。 提前致谢 !

从* .desktop文件执行sh脚本?

我想要做的是:创建带有图标的脚本。 所以我只知道一种方式 – 带图标的file.desktop文件。 它上面的设置图标是成功的,但我没有运气设置EXEC值:/ 有人能解释一下如何创建带有图标的可执行脚本吗? 创建.desktop文件并将其链接到该脚本? 有人能给我这个.desktop文件的结构吗?

是否可以取消或清除使用notify-send创建的通知?

所以我写了一个小脚本,确保某个用户在登录时插入笔记本电脑(如果没有则禁用)。 该脚本使用notify-send告诉他将其插入。如果他将其插入,脚本将退出。 是否可以在插入通知时自动清除通知? 我想它可能需要以某种方式获取由notify-send产生的进程id并杀死该PID,但我不知道如何做到这一点。 这是当前的脚本: #!/bin/bash cat /sys/class/power_supply/BAT0/status OUTPUT=”$(cat /sys/class/power_supply/BAT0/status)” echo “${OUTPUT}” if [ “${OUTPUT}” = “Charging” ] || [ “${OUTPUT}” = “Unknown” ]; then echo charging or full elif [ “${OUTPUT}” = “Discharging” ]; then notify-send -i /home/evamvid/Documents/Programming/OokiNoUse/power25.png “Hey there brother” “plug it in” COUNTER=0 while [ “$COUNTER” -le 12 ] do cat /sys/class/power_supply/BAT0/status […]

‘。’之间的区别 ,’?’ 和正则表达式中的’*’?

我可以举一个关于这三个元素(这些元称为元字符吗?)有何不同的例子? 我知道*意味着全部或全部,但我不确定这是否是思考它的正确方法。 另一方面. 和? 看起来一样。 他们匹配一个角色,对吗?

如何在每次启动时循环浏览grub背景图像

最终答案已经公布 在阅读整个问题之前,请注意以下答案。 问题的简短版本 在Bash中如何找到此文件中的下一个项目? … / 640×480,A.JPG … / 640×480,B.JPG … / 640×480,C.JPG 当前项目嵌入此字符串中? GRUB_BACKGROUND=”/home/rick/Pictures/Wallpaper/640×480-a.jpg” 如果当前项是最后一个文件条目,则需要选择第一个文件条目。 需要在grub中更新新条目以进行下一次引导。 到目前为止做了什么 我有Grub的多个背景图片。 手动编辑/etc/default/grub来更改背景图像,然后运行sudo update-grub非常耗时,我可能会忘记这样做。 我希望每次启动/重启都会自动完成。 我已经设置了一个名为/etc/cron.d/cycle-grub-background的cron作业,其中包含: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin @reboot root /usr/local/bin/cron-reboot-cycle-grub-background 我相信这项工作将在每次重启时运行,而不是每天运行,因为有时笔记本电脑很多天没有重启,我不想跳过可用的grub背景图像。 忽略下面充满假设和危险错误的代码 以下代码仅供历史参考。 请不要使用它,因为它严重破坏和设计不佳。 文件/usr/local/bin/cron-reboot-cycle-grub-background包含: #!/bin/bash # NAME: cron-reboot-cycle-grub-background # DATE: February 18, 2017 # PATH: /usr/local/bin/ # DESC: Cycle through available 640×480 wallpaper for grub background […]

任何人都可以解释为什么带通配符的sudo ls不起作用?

$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/access* ls: cannot access /sites/servers/server_instance/logs/access*: No such file or directory $ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/ total 594812 -rwxrwxrwx 1 abc abc 45 Mar 21 12:42 old.log -rwxrwxrwx 1 abc abc 304537970 Mar 24 12:45 console.log -rwxrwxrwx 1 abc abc 304537970 Mar 24 13:20 access_nginx.log 谁能解释为什么会这样? 由于这个原因,我被困在一个脚本上。

在Ubuntu上运行在记事本(Windows)中创建的脚本

我在Windows上创建了一个记事本文件并将其复制到Ubuntu。 该文件包含一些iptables规则。 使用chmod +x使文件可执行并执行后,它不起作用。 但是,当我创建一个Ubuntu( gedit )文件并从记事本文件中复制相同的内容,使其可执行并运行它,它工作。 我该怎么做才能使记事本文件在Ubuntu上运行?

如何传递带空格作为参数的文件名?

我有一个接受字符串参数的Python脚本。 $ python script.py “one image.jpg” “another image.jpg” 这按预期工作。 Python argparse: [“one image.jpg”, “another image.jpg”] 如果我需要传递文件名,我会这样做, $ python script.py $(ls “/some/dir/*.jpg”) Python argparse: [“one”, “image.jpg”, “another”, “image.jpg”] 如果使用-Q of ls命令,我可以在双引号之间包装结果。 但是,引号在Python脚本中保持转义,即。 $ python script.py $(ls -Q “/some/dir/*.jpg”) Python argparse: [‘”one image.jpg”‘, ‘”another image.jpg”‘] 我应该如何将ls文件名扩展为适当的字符串以用作参数? (在我的第一个例子中)

从终端创建文件的最快方法

使用命令行创建文件的最简单方法是什么? 通常我用: touch filename 但这是最简单/最快的方式吗?

删除文件时排除某些文件和目录

我的顶级目录是data 。 data包括几个目录,这些目录有子目录。 我需要删除data/中的所有文件和目录data/除了某些目录中的几个文件。 例如,数据包括目录100和101 。 我只想将100/ c.txt和d.txt文件中的a.txt和b.txt文件保存在101/同时删除100和101所有其他文件和目录。 例: . ├── 100 │ ├── a.txt │ ├── b.txt │ ├── c.txt │ └── d.txt └── 101 ├── a.txt ├── b.txt ├── c.txt └── d.txt 我使用rm -rf !(a.txt|b.txt)命令,但我无法自动为每个目录应用此命令。