我想加快編譯C文件時使用別名的時間。別名,變量和文件名
這裏是我的別名:
alias gccp="gcc -pendantic -Wall -ansi '$1'.c -o '$1'"
我嘗試GCCP p1和希望它運行的命令gcc -pendantic -Wall -ansi p1.c -o p1
。
我在做什麼錯?
我想加快編譯C文件時使用別名的時間。別名,變量和文件名
這裏是我的別名:
alias gccp="gcc -pendantic -Wall -ansi '$1'.c -o '$1'"
我嘗試GCCP p1和希望它運行的命令gcc -pendantic -Wall -ansi p1.c -o p1
。
我在做什麼錯?
別名不能有參數;在你的情況下,1美元是沒有的。你需要創建一個完成這個並導出它的函數。
編輯:
我犯了一個錯誤。參數可能在bash別名中,但可能在創建別名時分配,而不是在調用別名時分配。所以爲了達到你想要的目的,在你的.bashrc文件中添加這個函數並重新啓動bash。
function gccp()
{
gcc -pendantic -Wall -ansi $1.c -o $1
}
甚至在再編輯
這一切都取決於你長期爭論。例如,如果我加入我的.bashrc
下列文件並重新啓動的bash
alias blabla="echo $HOSTNAME"
我調用blabla
我得到我的主機名。但$ HOSTNAME並不是一個真正的參數。這是一個變量。一個論點意味着你正在提供你正在調用的函數/命令的某種信息。所以通過這個定義,別名不需要帶參數。
爲什麼這個別名工作呢?別名subl =「打開-a /Applications/Sublime.app $ 1」 –
@Dave請參閱我的編輯 –
別名不能帶參數,請參閱Bash manual。當您使用參數調用別名時,參數只會附加到命令的末尾,因爲shell實際上只是將命令名替換爲別名值。
使用shell function代替:
gccp()
{
gcc -pendantic -Wall -ansi "$1".c -o "$1"
}
使用make
代替。
$ export CFLAGS=-pendantic -Wall -ansi
$ make p1
make
將使用其內置的模式匹配規則來做你想做的事。
如果使用環境變量與其他事物以不希望的方式進行交互,請將CFLAGS
的值直接傳遞給make
,或者寫入一行代碼爲CFLAGS
的makefile。
別名無法處理像$ 1這樣的參數。轉換爲'函數gccp {gcc - ... $ 1 ...; }'。祝你好運。 – shellter
其實他們可以。別名djang =「django-admin.py startproject $ 1」很好用。 –
@Dave:運行'djang blah'時,shell將'django-admin.py startproject'替換爲'djang'並運行命令'django-admin.py startproject blah'。評估別名時,$ 1被擴展爲空字符串。 –