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

标签 linux bash shell

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

我的目标是:

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

user@machine:~$ ls -la

user_command = 'ls -la'

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

eval $user_command

有什么办法可以实现吗?

最佳答案

我猜你想:通过另一个 shell 而不是 bash 调用一些特定的命令

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

例子:

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

这样,每个函数的名称都与您要使用另一个 shell 运行的命令相匹配(如果需要使用 ksh 以外的其他 shell 运行,则相应地编辑函数的内部)

将这些函数放在特定用户的“~/.bashrc”文件中。

关于linux - 在 bash 中不中断地读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104143/

相关文章:

php - 保护我网站的管理部分

linux - AWK/SED 附加到日志文件

linux - 解释 shell 脚本代码 "for loop"

macos - 找到 : -printf: unknown option

linux - 如何在kshell中获取前几天的日期

linux - 用于复制文件、重命名并将其共享到 azure blob 的脚本

shell - 在 shell 中打印到文本文件时如何保留新行?

linux - 在特定时间运行作业

linux - Bash 如何解释这些语句?

Linux - 将部分输出重定向到文件