标签: scripts

如何在“安全环境”中测试 shell 脚本以避免损坏我的计算机?

我想使用以下命令安装一个名为 42FileChecker 的 bash 脚本:

git clone https://github.com/jgigault/42FileChecker ~/42FileChecker &&
    cd ~/42FileChecker &&
    bash ./42FileChecker.sh
Run Code Online (Sandbox Code Playgroud)

但是我不知道 42FileChecker.sh 是否会在我的 PC 上做任何奇怪的事情,因为我是初学者并且不知道该脚本中发生了什么。有没有办法在虚拟终端或虚拟根文件夹或类似的东西中运行它以查看会发生什么,以便我避免像格式化驱动器这样的疯狂事情。即使 42FileChecker.sh 是安全的,我也想知道有什么方法可以为未来的 shell 脚本测试 shell。

testing scripts safely

29
推荐指数
5
解决办法
7406
查看次数

“set -x”在 bash 脚本中有什么作用?

我正在阅读一个 bash 脚本,它以set -x. 我用谷歌搜索,我没有找到任何专门详细描述所有标志的手册-x。

如果我听起来像是在问这个问题之前没有做研究的人,我很抱歉,但我真诚地没有找到任何关于set -x. 有任何想法吗?

bash scripts

29
推荐指数
1
解决办法
6万
查看次数

如何使用已在命令行上输入的某些文本启动终端?

与其重新表述我的问题,不如让我向您描述所需的用户案例:

我创建了一个简短的 shell 脚本来运行命令“gnome-terminal --someoptionflagname '我要发布的文本'”,并执行这个脚本。

弹出 Gnome 终端,命令行提示后跟我的文本。

IE: fields@mycomputer:/$ my text to be posted

这能做到吗?

command-line bash scripts gnome-terminal

28
推荐指数
3
解决办法
4万
查看次数

如何使 bash 脚本运行有延迟(即每次迭代等待 1 秒)?

我有这个 bash 脚本;

for (( i = 1 ; i <= 160 ; i++ )); do
  qsub myccomputations"${i}".pbs
done
Run Code Online (Sandbox Code Playgroud)

基本上,我希望每次迭代之间有 1 秒的延迟。原因是在每次迭代时,它都会将程序文件发送mycomputation"${i}$.pbs到一个核心节点进行求解。动机是在这种情况下求解涉及使用伪随机数,而我使用的 RNG (R's) 使用 CPU 时间作为种子。

那么你如何要求 bash

for (( i = 1 ; i <= 160 ; i++ )); do
  wait 1 sec    
  qsub myccomputations"${i}".pbs
done
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts

28
推荐指数
1
解决办法
6万
查看次数

什么是 apt-fast,我应该使用它吗?

在过去几年中,我多次听说有人使用它apt-fast来更新和安装软件包,但我不确定它的作用。我想我已经将它的起源追溯到这个论坛帖子,它似乎是一个加速apt-get操作的脚本。

脚本具体是做什么的?使用它有什么潜在的缺点吗?如果没有,为什么不是每个人都使用它?

updates apt scripts

28
推荐指数
2
解决办法
8750
查看次数

返回从现在到给定日期的天数的脚本或函数

我想编写一个脚本或函数来告诉我从现在到将来的给定日期有多少天。我正在努力解决的是如何处理给定的日期并将其与当前日期进行比较......我正在想象这样的事情

read -p "enter the date in the format YYYY-MM-DD "
Run Code Online (Sandbox Code Playgroud)

然后我假设我有一个对 shell 没有意义的字符串,我必须做一些评估,比如...?? (这只是一个例子;我想bc是需要的)

i=$(($(date +%Y)-${REPLY%%-*}))
j=$(($(date +%m)-${REPLY:5:2}))
k=$(($(date +%d)-${REPLY##*-}))
Run Code Online (Sandbox Code Playgroud)

然后我不知道如何处理这些数字......?

if $i > 1 then assign l=$((i*365)) and else what?? # what about leap years?
Using $j somehow assign m   # confused before I've started
Using $k somehow assign n   # just as bad
echo $((l+m+n))   
Run Code Online (Sandbox Code Playgroud)

我肯定让自己太难了;可能有一个文本处理工具可以理解日期并可以比较它们。

我怎样才能做到这一点?

command-line bash scripts date text-processing

28
推荐指数
5
解决办法
5217
查看次数

运行带有 GNU 屏幕的程序并在之后立即分离

我想弄清楚如何编写一个脚本,该脚本将在系统启动时在 GNU Screen 会话中启动程序。我正在尝试这个:

#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \
Run Code Online (Sandbox Code Playgroud)

但是由于会话已经分离而无法执行命令?我唯一需要的是在屏幕会话中运行命令并立即分离此会话。

感谢您的回答,但现在我面临另一个问题。在我为“程序和程序 2”放置一些变量后,脚本停止工作。像这样的东西:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
Run Code Online (Sandbox Code Playgroud)

出于某种原因,“-f config.cfg”被忽略了。我也试图引用命令并且也没有帮助。

scripts gnu-screen

27
推荐指数
1
解决办法
10万
查看次数

从脚本中请求 root 权限

我有一个可以作为sudo script.sh或运行的脚本pkexec script.sh

如果脚本在按名称运行时要求用户输入密码,从用户的角度来看会好得多script.sh。

如何“嵌入”请求pkexec或sudo使用 root 权限运行整个脚本?

请注意,运行所有内容sudo sh -c可能不是最佳解决方案,因为我在脚本中有函数。

command-line bash scripts

27
推荐指数
5
解决办法
4万
查看次数

Bash 脚本问题:“声明:未找到”

我有一个运行良好的脚本,但是当我今天运行它时,它说declare: not found. 我正在使用 bash shell,并且脚本开头的路径是正确的。

我的脚本中有两行标记如下:

declare -a RESPONSE
RESPONSE=($RESULT)
Run Code Online (Sandbox Code Playgroud)

它还说(是出乎意料的,但我想这是由于第一个错误而出现的。值得一提的是,当我直接输入declare时效果很好。

declare | grep USER 显示

USER=ashfame
USERNAME=ashfame
           values="$SVN_BASH_USERNAME";
Run Code Online (Sandbox Code Playgroud)

那么,这里有什么问题吗?

bash scripts

26
推荐指数
2
解决办法
4万
查看次数

如何在系统重新启动时自动重新启动 Tomcat7?

我已经在 Ubuntu 12.04 LTS 上安装了 Tomcat 7,它在 Amzon EC2 实例上运行。现在我希望 tomcat 应该在系统重启时自动重启。

我阅读了这篇博客,其中建议将以下脚本添加到/etc/init.d/tomcat7:

# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

case $1 in
start)
sh /usr/share/tomcat7/bin/startup.sh
;;
stop) 
sh /usr/share/tomcat7/bin/shutdown.sh
;;
restart)
sh /usr/share/tomcat7/bin/shutdown.sh
sh /usr/share/tomcat7/bin/startup.sh
;;
esac 
exit 0
Run Code Online (Sandbox Code Playgroud)

并发出以下命令:

sudo chmod 755 /etc/init.d/tomcat7

sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat

sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat

sudo /etc/init.d/tomcat7 restart
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 该tomcat7已经在它的脚本,在这里我们必须粘贴提示脚本?
  2. 建议的程序是否正确?

init.d scripts tomcat

26
推荐指数
1
解决办法
12万
查看次数