我想映射-到cd -
我试过逃避它,带和不带单引号/双引号,但它们似乎都不起作用。
alias \-='cd -'或alias '-'='cd -'
=>
bash: alias: -=: invalid option
alias: usage: alias [-p] [name[=value] ... ]
所以问题是 bash 认为我想为别名定义一个选项。(什么是 | 有没有)对此的解决方法?
我经常通过例如从 cli 启动应用程序command &以立即返回提示。这样做的缺点是,我仍然得到 STDOUT 和 STDERR。
所以我command &> /dev/null习惯丢弃这些输出。
当不得不在一天中经常写这篇文章时,这可能会变得很麻烦。
所以我的问题是,在不需要时是否有更好的(阅读更短的)方法来丢弃 STDOUT 和 STDERR?
可以做什么?也许编写一个包装脚本来启动应用程序?这样做的优雅方式是什么?
我找到了一个关于如何使用 Linuxdate命令转换时区的解决方案:
Timezone conversion by command line
$ date --date='TZ="Asia/Taipei" 18:00'
Fri Jul 16 11:00:00 BST 2010
Run Code Online (Sandbox Code Playgroud)
它运行良好,但我无法弄清楚如何在 Bash 脚本中使用它,当时间是一个变量时,例如:
TIME=18:00
DATE="`date --date='TZ="Asia/Taipei" $TIME' +%F\ %H:%M`"
echo $DATE;
Run Code Online (Sandbox Code Playgroud)
我在转义特殊字符时遇到问题。而且我完全不明白为什么该date命令适用于BST、EET等时区,而不适用于“亚洲/台北”、欧洲/莫斯科等时区。
$@和之间有哪些区别$*?例如,我在这里看不到任何区别:
#! /bin/bash
echo with star: $*
echo with at sign: $@
Run Code Online (Sandbox Code Playgroud) 如何将 ffmpeg 文件信息输出保存到变量?如果我将以下命令放入变量中,它始终为空,即使该命令生成输出
/usr/bin/ffmpeg/ffmpeg -i $1
我试过的
INFO=$(/usr/bin/ffmpeg/ffmpeg -i $1)
if [ -z "$INFO" ]; then
echo "empty variable"
else
echo "$INFO"
fi
Run Code Online (Sandbox Code Playgroud) 我正在处理一个 bash 脚本,我需要实现“选项”。我怎么能用 bash 做到这一点?
我的目标是按以下方式运行脚本:
/myscript.sh -d "/var/log/" -c "test"
我试过的:
while shift; do
case $1 in
-d)
shift&&DIR="$1"||die
;;
-c)
shift&&COMMAND="$1"||die
;;
esac
done
echo "$DIR"
echo "$COMMAND"
Run Code Online (Sandbox Code Playgroud) 阅读man pages我希望sudo -E将所有环境变量传递给子shell,但我没有得到预期的结果。
正如预期的那样,很棒:
$ export LD_LIBRARY_PATH=/home/mmendez/toolchains/x86-destdir/usr/lib/
$ env | grep LD
LD_LIBRARY_PATH=/home/mmendez/toolchains/x86-destdir/usr/lib/
Run Code Online (Sandbox Code Playgroud)
更多精彩:
$ env -i LD_LIBRARY_PATH=/tmp/no/where env | grep LD
LD_LIBRARY_PATH=/tmp/no/where
Run Code Online (Sandbox Code Playgroud)
不是预期的:
$ env -i LD_LIBRARY_PATH=$LD_LIBRARY_PATH sudo -E /usr/bin/env | grep LD
$
$ env -i LD_LIBRARY_PATH=/tmp/no/where sudo -E /usr/bin/env | grep LD
$
Run Code Online (Sandbox Code Playgroud)
所以,我怎么能得到sudo -E通过LD_LIBRARY_PATH,而无需编辑/etc/sudoers?
编辑:
根据
如何使 sudo 保留我的环境变量?OP 表明外壳可能与!env_reset. 我正在运行Arch Linux,默认 shell 是BASH. 再次,我不 …
Virtualbox 能够向正在运行的虚拟机发出命令:
vboxmanage controlvm NameOfRunningVM acpipowerbutton
Run Code Online (Sandbox Code Playgroud)
但是,此命令会立即返回,这会导致我的情况无法正常关闭。
情况:我计划在 /etc/init.d 脚本中使用它。这将允许正常关闭所有正在运行的 VM。目前,当我发出vboxmanage controlvm NameOfRunningVM acpipowerbutton命令时,关闭会被切断,因为该命令不会等待 VM 关闭。
我需要一个 Bash 脚本,它将 Virtualbox 机器的名称和超时(以秒为单位)作为输入,然后等待 VM 返回到“关机”状态或超时发生?
我不确定这样做的最佳方法是什么。
我正在考虑使用以下命令检查 VM 的状态:
[user@machine ~]$ vboxmanage list runningvms
"VirtualMachineName" {65c93f1f-4508-4119-b07d-ce9e89b23b8e}
Run Code Online (Sandbox Code Playgroud)
bash 脚本可能会轮询正在运行的虚拟机列表。一旦机器名称停止列出,VM 将被视为已完成。
我nohup经常在linux/下用于重要的长时间运行的进程bash,以至于这nohup time my command with arguments && mv nohup.out my.log对我来说几乎是一个习语。
问题是nohup将stdout和 都stderr放入nohup.out,我无法控制文件的名称。这意味着如果我不小心nohup在同一个目录中启动了两个s,它们的输出将在nohup.out.
问题是:
我该如何处理这个问题?总是nohup在不同的目录中运行s 并编写一个首先检查的 shell 函数,这./nohup.out是我看到的两个糟糕的选项。
为什么我不知道nohup将输出重定向到哪里?GNU 工具往往有这么多的选择,为什么不nohup呢?
我正在使用 Ubuntu 10.10
当我使用普通GUI桌面登录时,似乎环境与终端不一样。
我在.bashrc. 但是,这不适用于 GUI 会话。
实际问题是这样的:
我怎么解决这个问题?
bash ×10
alias ×1
command-line ×1
ffmpeg ×1
init-script ×1
nohup ×1
redirection ×1
routing ×1
shell ×1
sudo ×1
sysvinit ×1
time-zone ×1
unix ×1
virtualbox ×1