如何查看运行bash函数的命令?



我想做哈希的快捷方式。代码在。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解释器加载内置模块。

相关内容

  • 没有找到相关文章

最新更新