【发布时间】:2010-02-17 12:10:05
【问题描述】:
例如看下面这行 bash-code
eval `echo "ls *.jpg"`
它列出了当前目录中的所有 jpg。现在我希望它只将行打印到提示符,以便我可以在执行之前对其进行编辑。 (例如,就像 key-up 一样)
我该怎么做?
这个问题的原因来自一个更有用的别名:
alias ac="history 2 | sed -n '1 s/[ 0-9]*//p' >> ~/.commands; sort -fu ~/.commands > ~/.commandsTmp; mv ~/.commandsTmp ~/.commands"
alias sc='oldIFS=$IFS; IFS=$'\n'; text=(); while read line ; do text=( ${text[@]-} "${line}") ; done < ~/.commands; PS3="Choose command by number: " ; eval `select selection in ${text[@]}; do echo "$selection"; break; done`; IFS=$oldIFS'
alias rc='awk '"'"'{print NR,$0}'"'"' ~/.commands; read -p "Remove number: " number; sed "${number} d" ~/.commands > ~/.commandsTmp; mv ~/.commandsTmp ~/.commands'
ac 添加或记住最后输入的命令,sc 显示可用命令并执行它们,rc 删除或忘记命令。 (你需要touch ~/.commands才能工作)
如果我可以在执行之前编辑sc 的输出,那将更加有用。
【问题讨论】:
标签: bash