如何提取shell配置文件的别名?

Hai*_*ang 0 regex perl

我需要编写一个脚本来向我展示我在某些配置文件中设置的所有别名,如.tcshrc和一些私有脚本,以防我忘记别名的含义,如"a","b"等.配置文件中别名的格式是别名"别名a的内容"或别名b'别名b'的内容.

我写的代码如下:

#! /usr/bin/perl
open ( F , "<" , ".tcshrc" ) or die "can't open it; $! " ;

while ( <F> ) {
if ( /\b(alias\s+\w+\s+[\'\"][^\'\"]*[\'\"])/ ) {  
        print $1 ;
}
Run Code Online (Sandbox Code Playgroud)

但代码不起作用.那么你们中的任何人都可以查看代码并告诉我reqex有什么问题吗?


@KarelBílek是的,我错过了第二次反击,现在它奏效了.但我仍然有兴趣知道是否有更好的方法来编写正则表达式.

@Charles我想要匹配的行就像

alias a 'ls -l'
alias b  "rm *"
Run Code Online (Sandbox Code Playgroud)

Rya*_*ght 5

您可能不需要脚本.在tcsh中,您可以在alias没有任何参数的情况下执行,它将列出所有别名定义.或者查找特定的别名,只需运行alias [name]NAME是别名的名称.

例如:

$ alias
a   ls -l
b   rm *
$ alias a
ls -l
$ alias b
rm *
Run Code Online (Sandbox Code Playgroud)

如果你想以另一种方式去,比如记住哪些别名映射到ls,你可以使用grep:

$ alias | grep ls
a   ls -l
Run Code Online (Sandbox Code Playgroud)

这也适用于其他shell,如bash和zsh.