标签: scripts

我可以让命令在后台执行而不产生任何输出吗?

有没有一种方法或选项可以使命令在后台运行,而无需等待它结束才能恢复提示?(就像mplayer在后台播放音乐文件并在听音乐时执行另一个命令的命令一样)

command-line bash scripts

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

使用 /etc/environment 中的 bash 脚本将路径添加到 PATH 环境变量

我需要将可执行应用程序的路径添加到 PATH 环境变量。因为我需要在 .deb 软件包安装过程中添加路径,所以我应该使用debian 软件包中的postinst 脚本。在阅读Ubuntu 官方文档Askubuntu 问题/etc/environment后,由于系统范围的用户访问,我决定使用文件来添加我的应用程序路径。这是我的 bash 脚本:

#! /bin/bash

cd ~
echo 'PATH="$PATH:/path/to/my/bin"' >> /etc/environment
Run Code Online (Sandbox Code Playgroud)

这是/etc/environment执行 postinst bash 脚本后的内容:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH="$PATH:/path/to/my/bin"
Run Code Online (Sandbox Code Playgroud)

现在,当我注销并尝试登录时,我陷入了登录循环!

更新1:

我在主目录中测试了 .profile 的方法,效果很好!但我需要添加所有用户的路径,所以我必须使用/etc/environmentfile.

package-management scripts login deb environment-variables

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

如何使用 VBoxManage guestcontrol 传递 shell 参数?

我在来宾机(均为 Ubuntu)上从主机运行命令:

VBoxManage guestcontrol Ubuntu1 run --exe "script.sh" --username xx --password xx --wait-stdout
Run Code Online (Sandbox Code Playgroud)

来宾计算机上的 shell 脚本如下

#!/bin/bash
echo $1
Run Code Online (Sandbox Code Playgroud)

执行shell脚本时如何传递参数1?

我认为它应该作为

run --exe "script.sh arg1"
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。

command-line bash virtualbox scripts guest-additions

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

使用 cron 运行基本命令!

我运行的是Ubuntu16。
我正在尝试运行非常简单的 bash 脚本和 cron 作业!

我试图让 cron 每天运行以下 bash 脚本:

#!/bin/bash
echo "Hello James how is your day going" 
Run Code Online (Sandbox Code Playgroud)

我可以从命令行运行脚本没有问题,但 cron 不会吗?我的 Cron 工作是这样设置的:

0 15 * * * /tmp/myjob.sh
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

bash scripts

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

~/bin 中的脚本“未找到命令”

我安装了 Ubuntu 17.04 并将自定义脚本复制到~/bin. 然后我通过chmod. 我在 GUI 中仔细检查了这些文件是可执行的。

我检查了 ~/.profile,它已经包含以下行(未注释掉):

if [ -d "$HOME/bin" ]; then
    PATH="$HOME/bin:$PATH" 
fi
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过在终端中键入来运行脚本(在该目录中)时my-script-name,出现“找不到命令”错误,但是当我键入 时~/bin/my-script-name,它会正常运行。

我能够~/bin在 16.04 LTS 中以这种方式从目录运行自定义脚本,但在 17.04 中它对我不起作用。我需要做什么才能使这项工作成功?17.04 不再检查该目录吗?

scripts

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

Bashrc、shell 脚本和 crontab

/home/my_username/.bashrc我正在尝试使用由 crontab 执行的 shell 脚本中定义的函数。

#crontab -l

# m h  dom mon dow   command
  * *  * * * /bin/sh /home/my_username/CronTab_shell_script.sh >> /home/my_username/Desktop/file.log  
Run Code Online (Sandbox Code Playgroud)

假设我将 Mounted() 函数保存在

/home/my_username/.bashrc 

function mounted(){

    if mount|grep $1; then
    echo "mounted"
    else
    echo "not mounted"
    fi

 }
Run Code Online (Sandbox Code Playgroud)

如何从

/home/my_username/CronTab_shell_script.sh
Run Code Online (Sandbox Code Playgroud)

bash scripts cron bashrc

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

Shell 脚本不执行

我使用的是 Ubuntu 18.04,但我的 .sh 文件不会执行,它们只是在 gedit 中打开。我尝试更改文件打开方式,但不知道要从列表中选择哪个应用程序。

scripts 18.04

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

如何将脚本命令输出转换为纯文本

我用来script-command将终端的输出保存到文件中。

但是,它提供了一些额外的字符,例如square-like字符和其他文本加密字符。

man script命令告诉,通过使用-q标志/选项,它给出了相当的输出,而不将开始和完成消息写入标准输出,但它不会删除额外的字符。

这里

我怎样才能得到以下信息:

1)使输出文件与终端输出完全相同,删除多余的字符。

2)在生成的文件中,由于纯文本没有颜色(与终端不同),我无法直接弄清楚input commands,因为我输入的输出和命令出现相同的字体,

我可以使命令比其余输出更粗体或更容易识别吗?

command-line bash scripts gnome-terminal console

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

apt-get 安装 software-properties-common 必须先于 ppa:X 吗?

这就是我目前在我的 Ubuntu 18.04 服务器环境中安装一些基本软件的方式。恐怕我这里可能有一些冗余:

apt-get update -y
apt-get install software-properties-common
add-apt-repository ppa:ansible/ansible ppa:certbot/certbot

apt-get upgrade unattended-upgrades sshguard curl wget git ansible zip unzip tree mc lamp-server^ python-certbot-apache
Run Code Online (Sandbox Code Playgroud)

必须在apt-get install software-properties-common两个ppas 之前吗?

upgrade apt ppa scripts syntax

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

如何编写shell脚本来检查端口并杀死它?

我有一个命令来检查端口并终止该端口上运行的特定 pid。但我想修改为

  1. 检查端口是否繁忙或可用
  2. 如果端口繁忙则杀死 pid

我怎样才能做到这一点?

代码如下。

sudo netstat -nlpt | grep 2020 | awk '{print $7}' | sed s+/.*++g | sort -u | xargs -i kill -kill {}
Run Code Online (Sandbox Code Playgroud)

bash scripts

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