bash函数中的管道命令

时间:2011-11-15 13:40:19

标签: bash function

定义bash函数时,可以使用command命令调用bash命令。

function ls() {
  clear
  command ls "$@"
}

如何在bash函数中管道命令?

e.g。

function ls() {
  clear
  command ls "$@" | head
}

编辑:输出没问题,但有--color=auto。看here

2 个答案:

答案 0 :(得分:3)

~/.bashrc

中试试这个
function ls() { clear ; builtin ls "$@" | head ; }

它类似于你已经拥有的函数,但是包含builtin,它保证不会陷入调用自身的循环中。希望这有效!

编辑:应该注意的是,ls使用--color=auto选项生成的任何颜色信息都不会通过管道进行传输。

答案 1 :(得分:1)

如果在所谓的伪终端中运行ls,您可以将head命令生成的颜色信息传递给ls(以便ls认为它是script将其输出写入终端,而不是管道。这可以通过使用ls() { type -P command 1>/dev/null || { echo 'No "command" executable found!'; return 1; } clear script -q /dev/null command ls -G "$@" | tr -d '\r' | head } cat /usr/bin/command # on Mac OS X 10.6.8 #!/bin/sh # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $ # This file is in the public domain. builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"} 命令来实现。

{{1}}

有关详细信息,请参阅:ls command operating differently depending on recipient