标签: user-input

如何在shell脚本中输入“密码”之类的?

可能的重复:
如何隐藏在 Linux shell 中键入的命令?
在 Bash 脚本中读取密码而不显示在屏幕上

我想将密码作为输入,但我希望用户能够像其他实用程序处理它一样输入它,即字符不会出现在屏幕上。我试着搜索这个,但没有找到确切的答案。

我需要接收一个变量,然后我会将输入与来自脚本开头的配置文件之一的预定义独立密码硬编码变量相匹配。

预期行为

$./startScript
username: mtk
password: ********
Run Code Online (Sandbox Code Playgroud)

*显示为占位符。我需要这部分不可见。当前,密码在用户键入时显示。

这该怎么做?

password shell-script user-input

19
推荐指数
3
解决办法
6万
查看次数

如何从管道读取用户输入?

假设我有一个以confirmation.sh以下内容命名的文件:

#!/bin/bash
echo -n "Are you sure [Y/n]? "
read line
case "$line" in
    n|N) echo "smth"
        ;;
    y|Y) echo "smth"
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式运行这个脚本:

cat confirmation.sh | sh
Run Code Online (Sandbox Code Playgroud)

我看到Are you sure [Y/n]?了,剧本被打断了。有什么问题?

shell pipe shell-script user-input

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

逐行读取文件时请求用户输入

对于类,我需要编写一个 Bash 脚本来获取输出ispell,当我尝试在 while 循环中请求用户输入时,它只会将文件的下一行保存为用户输入。

我怎样才能在 while 循环中请求用户输入?

#!/bin/bash
#Returns the misspelled words
#ispell -l < file

#define vars
ISPELL_OUTPUT_FILE="output.tmp";
INPUT_FILE=$1


ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE;

#echo a new line for give space between command
#and the output generated
echo "";

while read line;
do
   echo "'$line' is misspelled. Press "Enter" to keep";
   read -p "this spelling, or type a correction here: " USER_INPUT;

   if [ $USER_INPUT != "" ]
   then
      echo "INPUT: $USER_INPUT";
   fi


   echo ""; …
Run Code Online (Sandbox Code Playgroud)

bash shell-script control-flow user-input

9
推荐指数
1
解决办法
4577
查看次数

如何逐行读取用户输入直到 Ctrl+D 并包括键入 Ctrl+D 的行

此脚本一行接一行地接受用户输入,并myfunction在每一行上执行

#!/bin/bash
SENTENCE=""

while read word
do
    myfunction $word"
done
echo $SENTENCE
Run Code Online (Sandbox Code Playgroud)

要停止输入,用户必须按[ENTER],然后按Ctrl+D

如何重建我的脚本以仅结束Ctrl+D并处理Ctrl+D按下的行。

scripting bash shell-script user-input read

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

如何发出输入结束信号以“读取-N”?

我一直试图弄清楚如果我Ctrl+D使用read -N 1inbashksh93.

我知道传输结束字符和文件结束条件之间的区别,并且我知道Ctrl+D在使用readwithout时会做什么-N(它发送 EOT,如果输入为空,则底层read()返回零,发出信号EOF)。

但我不确定为什么尝试读取特定数量的字符会如此彻底地改变这种行为。我会期望 EOF 条件并且以下循环将退出:

while read -N 1 ch; do
  printf '%s' "$ch" | od
done
Run Code Online (Sandbox Code Playgroud)

按下时输出Ctrl+D

0000000   000004
0000001

bash手册说,关于read -Nksh93也有类似的措辞):

-N nchars; read 在完全读取nchars字符后返回,而不是等待完整的输入行,除非遇到 EOF或读取超时。

...但它没有说明将 TTY 切换到原始/无缓冲模式(这是我假设正在发生的情况)。

-n选项read似乎在关于以同样的方式工作Ctrl+D,并且要读取的字符数目似乎没有任何关系。

我如何read -N向循环发出结束输入信号并退出循环(除了测试读取的值),为什么这与“裸”不同read

bash ksh tty user-input read

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

Bash 脚本 - 自动输入用户输入(密钥库的密码)

我知道以前有人问过这个问题,但几乎只提供了解决方法。还没有解决我的问题。

我正在尝试创建自己的.sh文件,该文件将生成一个apk. 使用 jarsigner 后,它要求输入我的密钥库的密码。现在这部分的安全性对 atm 不起作用,所以我只是想知道,我怎样才能(删除我的.keystore文件的密码或以纯文本形式输入密码)实现这一目标?

完整命令:

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore keyForApk.keystore 
  apk/android-release-unsigned.apk alias_name
Run Code Online (Sandbox Code Playgroud)

然后它提示我以下内容:

Enter Passphrase for keystore:
Run Code Online (Sandbox Code Playgroud)

现在我可以通过哪个命令在 jarsigner 命令之后动态输入它?

shell bash centos shell-script user-input

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

如何使用 libinput 在 Debian 9 中启用/禁用突触触摸板?

我最近从 Debian 8 升级到了 Debian 9 扩展版。显然他们不再使用synaptics/synclient 来控制触摸板输入。我正在寻找的是一个简单的命令来按需启用或禁用触摸板功能,使用libinput.

使用突触驱动程序,我使用了命令,

synclient TouchpadOff=1
Run Code Online (Sandbox Code Playgroud)

禁用“垫”,和

synclient TouchpadOff=0
Run Code Online (Sandbox Code Playgroud)

当我想要它回来的时候。

简单直接。我经常在不经常使用鼠标的情况下长时间打字,而触摸板会无意中接收到输入,将我的光标扔在整个文档上。我不想永久禁用,也不想自动禁用(IE,每当检测到 USB 鼠标或检测到打字时),我只希望它在打开时打开,在我需要时关闭离开。

只需一个简单的命令即可按需启用或禁用打击垫。谁能帮我这个?我一直在寻找某种方法来做到这一点,而不必对系统进行永久性更改,但似乎找不到任何东西。没有其他人做这样的事情吗?我真的宁愿不必回到 Debian 8 只是为了恢复命令功能,但我实际上正在考虑它,尽管看起来很荒谬。

我更喜欢终端命令解决方案,但 GUI 也很好,如果有人知道的话。在这一点上我几乎会接受任何东西,我认为这里的关键是一个简单的、切换开/关的解决方案。我不能是唯一一个试图解决这个问题的人。

debian synclient user-input libinput

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

创建每个 Unix 用户并将其添加到特定组时,将特定文件放入其主目录中

如何设置 Solaris 系统,以便每次创建用户并将其分配给特定组时,都会将特定文件放置在该用户的主目录中?

group useradd files user-input

4
推荐指数
1
解决办法
480
查看次数

在用户输入时将多个命令粘贴到终端停止

将一些连续的命令粘贴到终端停止使用用户输入的命令,例如:

read VAR
echo $VAR
Run Code Online (Sandbox Code Playgroud)

或者

select VAR in 1 2 3; do break; done
echo $VAR
Run Code Online (Sandbox Code Playgroud)

echo $VAR 没有被粘贴/执行。

将所有命令放在一行上虽然有效:

read VAR; echo $VAR
Run Code Online (Sandbox Code Playgroud)

但是当有更多命令跟随时,这不是首选。


为什么会出现这种情况以及如何解决?

我的用例是在服务文档中有一些重复的命令。
我当然可以编写一个脚本,但这不是我打算做的,并且在仅具有读取访问权限的系统上可能无法实现。

shell terminal clipboard user-input

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

bash 脚本 - 通过 gui 请求输入

我目前正在用 bash 编写一个 nemo 动作脚本,我需要一种方法来从用户那里获取输入。

怎么办?,运行动作脚本时终端不显示。

反正有没有在GUI中弹出一个查询窗口来询问用户输入?

gui shell-script user-input nemo

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

在bash文件上自动输入“yes”

Slurm 是工作负载管理器。有两种运行作业的模式,交互(srun)和批处理模式(sbatch)。

使用交互模式时,需要让终端保持打开状态,这可能会给远程终端(笔记本电脑)带来额外的负担。

但是sbatch模式只需要提交bash脚本(*.sh)就可以关闭远程终端。以下所有步骤均由计算节点处理。

当我运行可执行程序时,它提示“所有文件名都正确吗?” 并期待“是”。我想要的是脚本在运行 *.sh 文件时自动为这个提示输入“是”,以便程序可以在没有交互的情况下继续。

如果您需要任何进一步的说明,请告诉我。

bash cluster user-input slurm redhat-satellite

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

在 while-read 循环中等待键盘输入

我有一个 bash 脚本,其结构如下:

\n\n
while read foo bar baz;\ndo\n    echo "Processing $foo $bar $baz"\n    # more code here\ndone < /etc/somefile\n
Run Code Online (Sandbox Code Playgroud)\n\n

在循环内,我希望脚本等待键盘输入(基本上只是“按 Enter 继续”。但是,循环内的以下代码

\n\n
echo "Press [ENTER] to continue"\nread -s\n
Run Code Online (Sandbox Code Playgroud)\n\n

不会\xe2\x80\x99t 导致脚本停在那里\xe2\x80\x94 显然它从提供的文件而不是键盘获取输入。如何强制它从键盘读取?

\n

shell-script user-input read

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

如何检查目录中的每个文件并要求用户在 csh shell 中执行操作

我想用这个脚本做的动作是

  1. 读取目录中每个文件的名称(不带基数)
  2. 对于每个文件,询问用户是否要执行操作(例如,将文件移动到目录中)
  3. 执行或不执行该操作。

    我有 while 循环和读取输入的问题。我试过这个:

    #!/bin/csh -f set DIR = 'pwd' find $DIR -name * -exec basename {} \; | while read filename do read -p $filename" (y or n?)" selection if ($choice = "y") then <> endif end

但我收到错误:

find: `basename' terminated by signal 13.
Run Code Online (Sandbox Code Playgroud)

我也在考虑再次使用一段时间来扩展用户的输入,直到给出是或否,但这是一个二阶问题。

csh user-input

-1
推荐指数
1
解决办法
403
查看次数