标签: bash

sudo 在 bash 脚本中显示输入的密码

我有一个使用sudo了几次的 bash 脚本。不过,它有一些奇怪的地方。

  1. 在我为上一个命令输入密码后,它会在几秒钟内询问我的密码。
  2. 我第二次输入密码时,它会回显到显示屏上。

这是脚本的相关部分。

sudo service apache2 stop
drush sql-dump --root="$SITE_DIR" --structure-tables-key=svn --ordered-dump | grep -iv 'dump completed on' | sudo tee "$DB_DIR/${SITE_NAME}.sql" > /dev/null
sudo svn diff "$DB_DIR" | less
sudo svn commit -m "$MESSAGE" "$DB_DIR"
sudo service apache2 start
Run Code Online (Sandbox Code Playgroud)

第一个密码是停止apache,它按预期工作。如前所述,sudo tee它不“记得”我有提升的权限,再次要求输入密码,然后将其回显到屏幕上。鉴于这完全tee是关于回显到屏幕,我已经使用了一些简单的脚本,这些脚本具有| sudo tee,并且它们都按预期工作。

编辑: 我查看了drush命令本身,它是一个 bash 文件,它使用exec. 这听起来可能有潜力 - 有什么想法吗?这是来自drush.

exec php $SCRIPT_PATH --php=`which php` "$@"
Run Code Online (Sandbox Code Playgroud)

Edit2: 正在查找与 Ruby 脚本有关的内容,并 …

script sudo bash

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

Bash 提示不可见颜色

有没有办法在 Bash 提示 ( $PS1) 中隐藏一些信息,例如使用 ANSI 转义序列的“不可见颜色”之类的东西。

方法应该是通用的。它不应使用某些罕见终端类型的特殊隐身功能。隐藏的数据也应该隐藏在例如纯 Linux 控制台 ( $TERM == linux) 中。

bash command-line

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

如何在不指定密码的情况下在 bash 脚本中使用 scp?

我是 bash 新手,正在编写一个 bash 脚本,允许在两台计算机之间传输文件。顺便说一句,有没有比 scp 更安全的替代品?

目前,我正在使用 scp 手动执行此操作。远程服务器总是提示我输入密码,我提供。我想自动化这个(因此是 bash 脚本)。但是,我不想以纯文本形式提供我的密码(或者如果有的话 - 我的印象是开放 SSL 会取消密码并使用证书等?)。

任何人都可以解释我如何在不显式显示我的密码的情况下自动化我当前的过程。

我在 Ubuntu 10.0.4 上运行

linux bash scp ubuntu

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

bash 中的字符是什么意思?

, 在 bash 中是什么意思?例如,“accurev update -9 2>,update 1>&2”中的 , 是什么意思?(accurev是一个版本控制软件)

抱歉这个蹩脚的问题,我只是不知道如何用谷歌搜索特殊字符。

linux unix bash

3
推荐指数
2
解决办法
6831
查看次数

如何在 bash 中创建两个相同的别名?

我想为同一个命令创建两个不同的别名而不重复我自己。我怎样才能在 bash 中做到这一点?例如,我希望 listlong 和 longlist 都是“ls -al”的别名。

bash shell-script bash-alias

3
推荐指数
2
解决办法
279
查看次数

bash脚本的多个参数

我需要在我的 bash 脚本中检查用户提供的选项,但在调用脚本时并不总是提供这些选项。例如,可能的选项可以是 -dontbuild -donttest -dontupdate 的任意组合,有没有办法检查它们?对不起,如果这个问题真的很基础,我是 bash 脚本的新手。

谢谢

编辑:我尝试了这段代码,并使用选项 -disableVenusBld 调用了脚本,但它仍然打印出“开始构建”。难道我做错了什么?提前致谢!

while [ $# -ne 0 ]
do
    arg="$1"
    case "$arg" in
        -disableVenusBld)
            disableVenusBld=true
            ;;
        -disableCopperBld)
            disableCopperBld=true
            ;;
        -disableTest)
            disableTest=true
            ;;
        -disableUpdate)
            disableUpdate=true
            ;;
        *)
            nothing="true"
            ;;
    esac
    shift
done

if [ "$disableVenusBld" != true ]; then
    echo "Starting build"
fi
Run Code Online (Sandbox Code Playgroud)

linux unix bash shell-script

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

重命名会话

在 bash 中,我可以通过执行以下操作来启动命名屏幕

screen -S test
Run Code Online (Sandbox Code Playgroud)

如果我输入

ctrl-a A new_screen_name
Run Code Online (Sandbox Code Playgroud)

它只会改变屏幕的标题。当我做一个

screen -r
Run Code Online (Sandbox Code Playgroud)

我看到会话名称仍然相同。

session bash gnu-screen

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

rm -rf: Unix 认为 '-rf' 是一个文件而不是一个选项

我在 OS X Snow Leopard 笔记本电脑上的终端中运行以下命令:

rm -rf /path/to/directory
Run Code Online (Sandbox Code Playgroud)

通常,这会删除目录和所有内容/子目录。但是,出于某种原因,它现在给出了以下错误消息:

rm: –rf: No such file or directory
rm: /path/to/directory: is a directory
Run Code Online (Sandbox Code Playgroud)

如果有人可以分享为什么 rm 不将“-rf”识别为选项字符串,我将不胜感激?

mac unix bash shell

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

Bash:查找包含两个文件的文件夹

嘿,我有一个很大的目录树。我想找出所有包含文件的目录,文件名以“.ext1”结尾,文件名以“.ext2”结尾。

这怎么可能?我想过使用两个查找,一个用于“.ext1”,一个用于“.ext2”,但后来我需要找到交集,这怎么做?

谢谢!

bash find

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

sudo 权限被拒绝

我运行了这个代码:

sudo cat <<EOF | sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF
Run Code Online (Sandbox Code Playgroud)

但是即使我得到“权限被拒绝”,因为您必须是 root 才能在 /etc/init.d 目录中进行更改。不知何故,我上面的命令不起作用。

有没有办法解决这个问题?

linux debian bash ubuntu

3
推荐指数
2
解决办法
7986
查看次数

标签 统计

bash ×10

linux ×4

unix ×3

shell-script ×2

ubuntu ×2

bash-alias ×1

command-line ×1

debian ×1

find ×1

gnu-screen ×1

mac ×1

scp ×1

script ×1

session ×1

shell ×1

sudo ×1