在bash中不间断地读取用户输入

时间:2014-06-08 07:59:54

标签: linux bash shell

我试图将用户命令grep到变量中。 如果命令以特定单词开头,我将命令重定向到另一个shell(不是BASH),如果不是,它将在bash上定期运行。 当我使用"阅读"我丢失了BASH提示,然后我无法自动完成,退格等等。

我的目标是:

如果我键入例如ls -la,命令将不会运行并将被分配到变量:

user@machine:~$ ls -la

user_command = 'ls -la'

如果命令不是其他shell命令(不是BASH)

eval $user_command

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

我想你想:通过另一个shell而不是bash

调用一些特定的命令

您可以为每个命令定义一个函数

为例:

ls () { # function that, instead of bash, launch 'ls' through ksh
    ksh -c "ls $*"
}

这样,每个函数的名称都与你想要用另一个shell运行的命令匹配(如果需要使用另一个shell而不是ksh运行,则相应地编辑函数内部)

将这些功能放在特定用户"〜/ .bashrc"文件。

答案 1 :(得分:-1)

您可以编写ls的实施方案并将其放入~/bin/ls 授予此文件的完全权限