Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux awk命令的别名-引号太多_Linux_Bash_Shell_Awk - Fatal编程技术网

Linux awk命令的别名-引号太多

Linux awk命令的别名-引号太多,linux,bash,shell,awk,Linux,Bash,Shell,Awk,这里可能缺少一些简单的东西,但我不是shell脚本专家 我有一个本地命令,它工作得很好 tail -f /path/to/file | awk ' /INFO/ {print "\033[32m" $0 "\033[39m"} /ERROR/ {print "\033[31m" $0 "\033[39m"} /WARNING/ {print "\033[33m" $0 "\033[39m"} ' 如果我ssh到我的盒子中并粘贴它,它会工作得很好。但是我似乎不能给它加别名,因为它已

这里可能缺少一些简单的东西,但我不是shell脚本专家

我有一个本地命令,它工作得很好

tail -f /path/to/file | awk '
  /INFO/ {print "\033[32m" $0 "\033[39m"}
  /ERROR/ {print "\033[31m" $0 "\033[39m"} 
  /WARNING/ {print "\033[33m" $0 "\033[39m"}
'
如果我ssh到我的盒子中并粘贴它,它会工作得很好。但是我似乎不能给它加别名,因为它已经使用了这两种引号,所以
alias='…'
不起作用。我还尝试将其变成一个函数:

function tailMyFile {
    tail -f /path/to/file | awk '
    /INFO/ {print "\033[32m" $0 "\033[39m"}
    /ERROR/ {print "\033[31m" $0 "\033[39m"} 
    /WARNING/ {print "\033[33m" $0 "\033[39m"}'; 
}

这告诉我:
-bash:/INFO/:没有这样的文件或目录

尝试以下函数声明方式:

tailMyFile() {
    tail -f /path/to/file | awk '
    /INFO/ {print "\033[32m" $0 "\033[39m"}
    /ERROR/ {print "\033[31m" $0 "\033[39m"} 
    /WARNING/ {print "\033[33m" $0 "\033[39m"}'; 
}

但是,似乎您的错误与函数的定义无关,而是与/INFO/目录是否正确显示有关,您能否
cd/INFO
没有任何问题?

改进:将
/path/to/file
更改为
$1
,并将文件路径作为参数传递给函数(即
tailMyFile/path/to/file
)。然后您可以对任何文件使用该函数,而不仅仅是一个文件。@Isaac在意外标记附近给了我一个
语法错误
(“
。我试着在它前面加上
函数”,但这给了我和我原来一样的错误。这里的代码段是一个完全有效的函数。如果你的shell不喜欢这样,那就有问题了。@EtanReisner我想我在那里的某个地方遇到了一个奇怪的小精灵。我试着从头开始为字符重新键入它,结果成功了,但粘贴了从另一个shell中输入使其无法工作,即使它们看起来完全相同。很好的捕获-谢谢。来自bash的错误意味着出于某种原因,它没有将
/INFO/
视为单个引用的awk脚本。