我使用 oh-my-zsh 一段时间了,效果很好。我想使用命令行模糊查找器插件,因此我在 .zshrc 中启用了它:
plugins=(fzf)
Run Code Online (Sandbox Code Playgroud)
但是,如果未安装“fzf”,我在打开终端窗口时会收到警告:
[oh-my-zsh] fzf 插件:找不到 fzf 安装目录。请添加
export FZF_BASE=/path/to/fzf/install/dir到您的 .zshrc
有没有办法隐藏该警告消息?当我使用“sudo dnf install fzf”安装 fzf 时,警告消失,但也许我想将我的点文件克隆到另一台计算机上,该计算机不可用,而且在那里并不那么重要。
请考虑以下 crontab (root):
SHELL=/bin/bash
...
...
0 */3 * * * /var/maintenance/raid.sh
Run Code Online (Sandbox Code Playgroud)
和 bash 脚本/var/maintenance/raid.sh:
#!/bin/bash
echo -n "Checking /dev/md0... "
if ! [ $(mdadm --detail /dev/md0 | grep -c "active sync") -eq 2 ]; then
mdadm --detail /dev/md0 | mail -s "Raid problem /dev/md0" "my@email.com";
echo "ERROR"
else
echo "ALL OK"
fi;
#-------------------------------------------------------
echo -n "Checking /dev/md1... "
...
Run Code Online (Sandbox Code Playgroud)
这就是当...
...从 shell 提示符 (bash) 执行:
带有mdadm --detail /dev/md0输出的邮件被发送到我的电子邮件(正确的行为)
...由 cron 执行:
空白邮件发送到我的邮箱(主题在那里,但没有消息)
为什么会有这种差异以及如何解决?
我有以下脚本:
#!/usr/bin/env python
import sys
import pyttsx
def main():
print 'running speech-text.py...'
engine = pyttsx.init()
str = "Hi..."
if len(sys.argv) > 1:
str = sys.argv[1]
engine.say(str)
engine.runAndWait()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
而且我把它放进去了 /usr/bin/speech-test.py
我还给root了它的可执行权限和所有权:
sudo chown root:root /usr/bin/speech-test.py
sudo chmod 4755 /usr/bin/speech-test.py
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行,此脚本将只能正确运行sudo speec-test.py.如果我试图运行它只是speech-test.py它抱怨没有找到一堆ALSA lib文件.
我错过了让我的脚本以root权限运行的东西吗?
假设text当前目录中有一个名为(不管它包含什么内容)的文本文件,当我运行命令时(在 Ubuntu 14.04,bash 版本 4.3.11 中):
nocommand > text # make sure noommand doesn't exists in your system
Run Code Online (Sandbox Code Playgroud)
它报告“找不到命令”错误并删除文本文件!我只是想知道如果命令不存在我是否可以避免文件的破坏。我尝试这个命令set -o noclobber,但如果我运行以下命令,也会出现同样的问题:
nocommand >| text # make sure noommand doesn't exists in your system
Run Code Online (Sandbox Code Playgroud)
bash 似乎在寻找要运行的特定命令之前重定向输出。谁能给我一些如何避免这种情况的建议?
我试图阻止 git 提交继续使用预提交挂钩。通过阅读手册,当您返回 0 以外的退出代码时,它应该停止。我正在测试 csscomb 命令是否返回错误,如果返回错误,则中断循环并退出,但 git 提交仍然继续通过 来输入消息git commit (-a)。
我已经从https://github.com/filtercake/git-pre-commit-csscomb分叉并修改了下面的脚本
#!/bin/bash
# pre-commit hook to comb staged .sass and .scss files
# save as .git/hooks/pre-commit
# make executable: chmod +x .git/hooks/pre-commit
# sources:
# http://www.hagenburger.net/BLOG/Using-Git-Commit-Hooks-to-Autocompile-Sass-to-CSS.html
# http://stackoverflow.com/questions/8470755/git-pre-commit-hook-add-file-into-index/8471009#8471009
# http://stackoverflow.com/questions/592620/how-to-check-if-a-program-exists-from-a-bash-script/677212#677212
# https://gist.github.com/openam/8406343
# check if sass/scss files are staged for commit
# diff-lines from http://stackoverflow.com/a/12179492/3019532
# takes the line
function diff-lines() {
local path=
local line=
while read; do
esc=$'\033'
if [[ $REPLY =~ ---\ …Run Code Online (Sandbox Code Playgroud) 我需要检入Shell脚本(如果已安装Docker)(Ubuntu服务器)。
我想出了这一点,但语法不正确。
if [[ which docker && docker --version ]]; then
echo "Update docker"
# command
else
echo "Install docker"
# command
fi
Run Code Online (Sandbox Code Playgroud)
我也试过 if [ which docker ] && [ docker --version ]; then
尝试使用wget下载文件的脚本,或者如果Linux中不存在wget则使用curl.如何让脚本检查是否存在wget?
我正在尝试创建一个小脚本来检查程序是否已安装.我正在尝试使用tmux,......
`tmux --help` | grep "tmux: command not found" &> /dev/null
if [ $? == 1 ]; then
echo "tmux is not installed"
exit
fi
Run Code Online (Sandbox Code Playgroud)
安装完tmux后,我得到:
usage: tmux [-2lquvV] [-c shell-command] [-f file] [-L socket-name]
[-S socket-path] [command [flags]]
tmux is not installed
Run Code Online (Sandbox Code Playgroud)
如果没有安装程序,请使用字符串"tmux:command not found".这可以解释为什么我grep输出tmux --help命令.是否是检查tmux是否安装的正确方法?
脚本alwais回声"未安装tmux".即使我安装了tmux.它出什么问题了?