0

我想为我的终端制作一些自定义命令(我使用的是 Ubuntu)。

我已经了解到,例如,我需要编辑“.bash_aliases”文件(在 /home/your_user_name/ 中),输入“source ~/.bash_aliases”,然后它应该可以工作。

好吧,有些事情确实有效,例如如果我写(在'.bash_aliases'中)类似:

my_comm(){
            if [ "$1" = aaa ]; then
                    echo hi a
            fi

            if [ "$1" = bbb ]; then
                    echo hello b
            fi

            #echo this is a comment :]
            echo ending echo 
    }

然后如果我要保存文件,输入'source ~/.bash_aliases',然后运行:

my_comm

它将打印:

ending echo

和写作

my_comm bbb

会给:

hello b
ending echo

很好,但我想知道更多的东西,我无法通过谷歌找到它们:(




- - - - - - - - - - - - - - - - - - - - - 问题 - - - - ---------------------------------



(1) 如何设置变量然后获取变量?

喜欢:

var myVar = "some_dir"
cd /home/user/'myVar'/some_sub_dir/

?

(2) 我想创建一个函数来简化我经常使用的 find/grep 命令:

find . -name "var_1" -print0 | xargs -0 grep -l "var_2"

我做了类似的事情:

    ff(){
            find . -name '"$1"' -print0 | xargs -0 grep "$3" '"$2"'
    }

所以,现在执行:

ff views.py url -l

应该给我:

find . -name 'views.py' -print0 | xargs -0 grep -l 'url'

但相反我收到:

grep: find . -name "$1" -print0
: There is no such file or directory



请帮助:)

4

2 回答 2

2

(1) 如何设置变量然后获取变量?

像这样:

myVar="/long/name/may have/a space/"
....
cd /home/user/"$myVar"/someSubDir.

双引号不会阻止变量替换(与单引号不同)。

(2) 我想创建一个函数来简化我经常使用的 find/grep 命令:

find . -name '"$1"' -print0 | xargs -0 grep "$3" '"$2"'

在这里使用多种引号没有任何用处;实际上,您可以防止$1$2被替换,这会破坏您的功能。尝试这个:

find . -name "$1" -print0 | xargs -0 grep "$3" "$2"
于 2013-01-30T18:24:37.370 回答
0

您甚至可以将alias关键字用于单个指令或使用function关键字并将几个指令组合在一起。你可以看看这个

于 2013-01-30T18:38:15.273 回答