定义bash函数时,可以使用command
命令调用bash命令。
function ls() {
clear
command ls "$@"
}
如何在bash函数中管道命令?
e.g。
function ls() {
clear
command ls "$@" | head
}
编辑:输出没问题,但有--color=auto
。看here
答案 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