我在.profile文件中有一个函数,我管道命令。我怎样才能做到这一点?

时间:2013-07-07 20:42:05

标签: pipe bash

很抱歉,问题标题令人困惑。我真的不确定如何说出这个问题。

我的.profile文件中有一个函数,它是sublime文本的快捷方式:

function s() { subl "$@" & }
export -f s

但是,当我执行ls | s时,我的Sublime窗口中没有得到ls的输出。当我ls | subl时,我确实在Sublime窗口中获得了输出。我可以修改我的功能,以便ss file.txt以及ls | s正常使用吗?

1 个答案:

答案 0 :(得分:2)

在后台处理之前阅读所需的任何输入。

s() { 
    # Is stdin a terminal?
    if [[ -t 0 ]]
    then
        #not piping
        subl "$@" &
    else
        #piping
        contents=$(cat)
        subl "$@" <<< "$contents" &
    fi
}