标签: scripts

如果 [ -e $name ]; -e 做什么?

有人可以帮助我告诉我 -e 在 if 构造后跟目录或文件中做什么?非常感谢

bash scripts

1
推荐指数
1
解决办法
507
查看次数

撤消脚本中的“sudo”

有什么办法可以撤消sudo脚本中的内容吗?喜欢..

sudo ./script.sh
Run Code Online (Sandbox Code Playgroud)

sudo具有权限的命令 1,2,3,4,5

命令 6,7,8,9 无sudo权限

sudo scripts

1
推荐指数
1
解决办法
3221
查看次数

安装软件包后 apt-get 退出 bash 脚本

我已阅读这篇文章中的答案,但它似乎对我的问题不起作用。

我正在通过 wget 的 stdin 执行 bash 脚本:

wget -O - http://serverip/subfolder/script | sudo bash
Run Code Online (Sandbox Code Playgroud)

我尝试过使用apt-get -y --force-yes install <packages..> || true,但如果列出的脚本是由 apt-get 安装的,它仍然会退出脚本。

如果已安装所有列出的软件包,它不会退出脚本。

apt-get upgrade如果我有一个并且它安装了软件包,也会发生同样的事情。它将退出脚本。

我有另一组脚本,似乎有效。在这种情况下,安装脚本只是一个存根,用于下载、运行脚本bash <scriptname>,然后删除脚本。脚本本身将通过 sudo 来提升其权限。 apt-get在这里按预期工作。

任何有关如何防止apt-get终止脚本的见解将不胜感激。

command-line apt bash scripts

1
推荐指数
1
解决办法
1778
查看次数

使用 wget 从列表中下载文件

我有一个文件,其中包含这样的下载链接:

Google.com/image2
Google.com/image3
Google.com/image4
Google.com/image5
Google.com/image6
Run Code Online (Sandbox Code Playgroud)

我想使用脚本下载所有这些。如果名称以's'开头,则将此文件下载到s目录,如果是b,则将其移动到b目录...

command-line scripts

1
推荐指数
2
解决办法
3831
查看次数

使用 find 的脚本在我执行时运行良好,但无法从 cron 正确运行

谁能告诉我这个脚本有什么问题?

它在 中不起作用cron,但在我正常执行时工作正常。

警告:此命令很危险,可能会删除大量文件

#!/bin/bash

/bin/find  .  -maxdepth 1 -type d  -ctime +2 -exec /bin/rm -rf {} \;
Run Code Online (Sandbox Code Playgroud)

scripts cron find

1
推荐指数
1
解决办法
94
查看次数

/etc/rc.local(通过 systemd 运行)在 cat'ing /dev/urandom 时挂起

我创建了一个/etc/rc.local

$ cat /etc/rc.local 
#!/bin/bash

echo "Starting"
randomString=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`
echo "Finished"
Run Code Online (Sandbox Code Playgroud)

这在交互式运行时运行:

$ /etc/rc.local 
Starting
Finished: lkFcvByNaIu7zmxuCYB3BQmJ05LwuVWL
Run Code Online (Sandbox Code Playgroud)

但是,当从 systemd 运行时,它会挂起并且不会返回。

如果我 ctrl+C 看起来它挂在fold命令上:

$ systemctl status rc-local
? rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; enabled-runtime; vendor preset: enabl
  Drop-In: /lib/systemd/system/rc-local.service.d
           ??debian.conf
   Active: activating (start) since Mon 2019-03-11 12:04:06 UTC; 12s ago
     Docs: man:systemd-rc-local-generator(8)
Cntrl PID: 936 (rc.local)
    Tasks: 5 (limit: 1152)
   CGroup: /system.slice/rc-local.service …
Run Code Online (Sandbox Code Playgroud)

startup scripts systemd

1
推荐指数
1
解决办法
751
查看次数

用于计算网站中 SSL 证书到期剩余天数的 Bash 脚本

我有一个名为的网站xplosa.com,它有一个有效的 SSL 证书,我通过 bash 脚本应该能够计算剩余天数到期。我知道有很多替代方法可以完成这项工作,但我喜欢使用 Ubuntu bash 。顺便说一句,我正在使用Ubuntu 18.04

这是我的示例逻辑

#!/bin/bash

get_the_cert_expiry_date() {
    # command to retrieve the expiry date
}

currentDate="$(date +%Y-%m-%d)"
website="xplosa.com"
certExpDate="$(get_the_cert_expiry_date)"
count=$((currentDate - certExpDate))

echo "remaining days for expiry: ${count}"
Run Code Online (Sandbox Code Playgroud)
  • 这是一个正确的逻辑吗?
  • 如何实施 get_the_cert_expiry_date

command-line bash scripts ssl

1
推荐指数
1
解决办法
2879
查看次数

如何编辑此代码以供用户输入并以 0 结尾?

#!/bin/bash

printf "Type in a whole number!: " && read X
x=1
while [ $x -le 5 ]
do
  echo x
x=$(( $x - 1 ))
done
Run Code Online (Sandbox Code Playgroud)

我希望这个脚本让用户输入一个数字,然后让它从那个数字“x”开始倒计时并停在 0。我不知道为什么它只是无限地继续运行而不是停在 0。

command-line bash scripts

1
推荐指数
1
解决办法
215
查看次数

清除缓冲区/缓存的脚本仍然说权限被拒绝

我有一个名为clearcache.sh的脚本来清除我的缓冲区/缓存,但是当我运行时它一直说权限被拒绝。

脚本中的内容:clearcache.sh

#!/bin/bash
sync && echo 1 | tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
权利:
-rwxr-xr-x 1 rt rt 464 Dec  5 02:10 clearcache.sh
Run Code Online (Sandbox Code Playgroud)

图片


我如何运行它来测试它:

rt@sys76:~/clearcache$ ./clearcache.sh 
tee: /proc/sys/vm/drop_caches: Permission denied
1
Run Code Online (Sandbox Code Playgroud)

我想把它放在一个 chron 工作中,但我需要解决这个权限问题:

更新: 这是drop_caches文件,它的权限归 root 所有,使用脚本从 chron 作业运行它的正确方法是什么?PS:我正在运行 Ubuntu 20.04

图像2

permissions bash scripts

1
推荐指数
1
解决办法
370
查看次数

用于修剪换行符 \n 和额外空白的 Bash 替代方法

我正在尝试解析一个多行句子:

You have to go tomorrow by
                                        car.
Run Code Online (Sandbox Code Playgroud)

如您所见,有一个新的 line + space 然后是“car”。

我使用了这个正则表达式:

You.have.to.go.tomorrow.by.\n.+
Run Code Online (Sandbox Code Playgroud)

当我将它与regex101一起使用时效果很好,但是当我在 bash 中使用它时,它仅适用于第一句话:

Parser='You.have.to.go.tomorrow.by.\n.+'
Run Code Online (Sandbox Code Playgroud)

结果:

You have to go tomorrow by
Run Code Online (Sandbox Code Playgroud)

我正在使用 bash,我想要完整的句子:

"You have to go tomorrow by car."
Run Code Online (Sandbox Code Playgroud)

我在用:

sed -e 's/<[^>]\+>/ /g' | grep -oP $parser
Run Code Online (Sandbox Code Playgroud)

删除所有 HTML 标签,然后 grep 解析器。

command-line bash scripts kubuntu text-processing

1
推荐指数
1
解决办法
1661
查看次数

标签 统计

scripts ×10

bash ×6

command-line ×5

apt ×1

cron ×1

find ×1

kubuntu ×1

permissions ×1

ssl ×1

startup ×1

sudo ×1

systemd ×1

text-processing ×1