macos - Zsh 外壳别名
问题描述
我在 Mac OS 终端上使用 Zsh 作为我的默认 shell,并使用 .zshrc 文件来更新别名
我要更新的命令之一是cat
. 我想用语法高亮和行号打印命令的输出。所以当我输入cat <filename>
它应该别名为pygmentize -g <filename> | nl -b a
到目前为止我尝试过的不同方法,方法#1:
alias cat="pygmentize -g $1 | nl -b a"
这是立即打印带有行号的文件内容,但暂时不会返回。因此,当我按下 Ctrl+C 时,出现以下错误。
Traceback (most recent call last):
File "/usr/local/bin/pygmentize", line 33, in <module>
sys.exit(load_entry_point('Pygments==2.7.3', 'console_scripts', 'pygmentize')())
File "/usr/local/Cellar/pygments/2.7.3/libexec/lib/python3.9/site-packages/pygments/cmdline.py", line 557, in main
return main_inner(popts, args, usage)
File "/usr/local/Cellar/pygments/2.7.3/libexec/lib/python3.9/site-packages/pygments/cmdline.py", line 408, in main_inner
code = sys.stdin.buffer.read() # use .buffer to get a binary stream
KeyboardInterrupt
方法#2:
function cat() { pygmentize -g $1 | nl -b a }
相同的输出,当按下 Ctrl+C 时,与上面相同的堆栈跟踪。
有人可以帮我解决这个问题吗?
解决方案
删除“function”关键字,它应该可以正常工作:
cat() {
pygmentize -g $1 | nl -b a
}
如果你想让它滚动得更好一点:
cat() {
pygmentize -g $1 | nl -b a | less -Rai
}
我还建议将其命名为稍有不同的名称,例如ccat
,因为cat
您可能运行的任何脚本仍然可以轻松访问它。
推荐阅读
- html - 平板电脑上的中心区
- mysql - 由于 mysql 进程未正确停止,无法启动 docker。Mysql 在某处运行
- amazon-web-services - 如何使用 AWS CodePipeline 将 dotnet 核心应用程序部署到 ElasticBeanstalk
- laravel - 操作员在 Laravel 中如何工作?
- json - 在 Shell 脚本中读取 JSON 变量
- python - 将 Dataframe 列的值与列表值进行比较
- sql-server - t-SQL - 确定员工工作的天数 - 在现有代码中(计算员工每个期间的 FTE 数量)
- sql - SQLite 查询 - 过滤器名称,其中每个关联的 id 都包含在一组 id 中
- css - 如何创建适用于移动设备和桌面的粘性页脚?
- racket - amb -< 运算符未定义