我想做哈希的快捷方式。代码在。bashrc
中代码:
hash() {
python3 -c "import hashlib; print(hashlib.$0($1).hexdigest())"
}
alias sha256=hash
alias md5=hash
alias sha1=hash
alias sha512=hash
但是当我输入sha256 hello
时,它显示
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: module 'hashlib' has no attribute 'bash'
在设置$0
之前展开别名,并且$0
是指进程名,而不是被调用的shell函数的名称。而不是别名,定义额外的函数:
hash() {
python3 -c "import hashlib; print(hashlib.$1($2).hexdigest())"
}
sha256 () { hash sha256 "$1"; }
md5 () { hash md5 "$1"; }
sha1 () { hash sha1 "$1"; }
sha512 () { hash sha512 "$1"; }
另外,最好将函数名和参数作为shell参数传递,而不是动态地构造一个Python脚本。就像
hash() {
python3 -c '
import sys
import hashlib
fname, s = sys.argv[:2]
f = getattr("hashlib", fname)
print(f(s).hexdigest())' "$@"
}
我想你有一个名为haslib.py的文件。重命名该名称,以便python解释器加载内置模块。