Articles of zsh

bash vs csh vs其他 – 哪个更适合应用程序维护?

可能重复: 我应该使用哪个Linux shell? 我开始熟练掌握Linux环境,并且正在尝试从命令行脚本中select一个select武器(因为我仍然是一个很大的n00b),这将帮助我(和其他人)pipe理,testing并pipe理在* NIX环境中运行的一组服务器端应用程序。 我的问题是:当考虑到以下标准时,什么是优先级命令shell? 学习/理解一个从未接触过shell脚本的初级开发者有多容易? 那里有大量的开发人员知道这个shell脚本吗? 是安全和易于使用 – 脚本错误将保持沉默或提供智能的错误输出,它会让不经意的射击自己的脚? 它是多么便携? – 我可以期待在OpenSolaris以及Redhat,FreeBSD上运行相同的脚本吗? (授予特定操作系统的命令语法和选项将相应地改变) 标准如何? 预计它将被包含在* NIX的大部分发行版中还是必须另外安装? 我知道那里有一些阵营,他们对特定的命令壳抱有强烈的感情,我只是在寻找知情的意见。

带参数的别名

如果有可能使用zsh别名中的参数? 像这样的东西: alias ssh_nokia="ssh root@<ip_parameter>" 用法: ssh_nokia 192.168.1.2

在bash中后缀别名

后缀别名是我考虑切换到ZSH的唯一原因,但我想坚持bash。 那么是否有可能在bash中有后缀别名? 对于那些不知道后缀别名是什么的,下面在ZSH中 $ alias -s cpp=vi $ filename.cpp 将以filename.cpp作为第一个参数运行vi 。 请注意,诸如xdg-open或gnome-open是不够的。 当input文件名时,我希望bash执行命令。 完成对我来说非常重要。 因此,如果文件名的开头是键入的,那么如果在按下TAB键时文件的其余部分将被完成,那将是很好的。

Bash(或其他shell):用函数/脚本包装所有命令

编辑:这个问题最初是特定于bash的。 我还是有一个bash的解决scheme,但是如果在另一个shell中有这样一个好方法,那么知道这个也是有用的! 好的,问题的顶层描述。 我想能够添加一个钩子bash,使得当用户input时,例如$cat foo | sort -n | less $cat foo | sort -n | less $cat foo | sort -n | less ,这个被截获并翻译成wrapper 'cat foo | sort -n | less' wrapper 'cat foo | sort -n | less' wrapper 'cat foo | sort -n | less' 。 我已经看到了在每个命令之前和之后运行命令的方法(使用DEBUG陷阱或者PROMPT_COMMAND或类似的命令),但没有涉及如何截取每个命令并允许其他进程来处理命令。 有没有办法做到这一点? 对于为什么我想这样做的解释,以防人们有其他方法来处理它的build议: 像脚本这样的工具可以让你把你在terminal上做的所有事情都logging到日志中(就像bash历史一样)。 然而,他们做得不是很好 – […]

如何使用给定的模式来追踪最新的日志文件

我使用一些日志系统,每小时创build一个日志文件,如下所示: SoftwareLog.2010-08-01-08 SoftwareLog.2010-08-01-09 SoftwareLog.2010-08-01-10 我试图尾随遵循最新的日志文件给出一个模式(例如SoftwareLog *),我意识到有: tail -F (tail –follow=name –retry) 但只有一个特定的名称 – 这些名称按date和小时不同。 我尝试了这样的: tail –follow=name –retry SoftwareLog*(.om[1]) 但通配符语句在传递到尾部之前被消除,并且每次尾部重试都不会重新执行。 有什么build议么?

不区分大小写在zsh / bash上的Glob

我需要列出名字以“SomeLongString”开头的所有文件。 但“SomeLongString”的情况可能会有所不同。 怎么样? 我正在使用zsh,但也欢迎bash解决scheme。

设置variables时找不到bash命令

我正在写一个shell脚本,我设置了几个variables,其值是命令的输出。 我得到的错误是: $ $tag_name="proddeploy-$(date +"%Y%m%d_%H%M")" -bash: =proddeploy-20141003_0500: command not found 现在,我读了其他类似的问题,并基于此,尝试了各种各样的东西: 将命令分成两个调用 $ $deploy_date=date +"%Y%m%d_%H%M" bash: =date: command not found $ $tag_name="proddeploy-$deploy_date" bash: proddeploy- command not found 尝试使用反引号 $ $tag_name=`proddeploy-$(date +"%Y%m%d_%H%M")` bash: proddeploy-20141003_1734: command not found bash: =: command not found 尝试使用$() $ $tag_name=$(proddeploy-$(date +"%Y%m%d_%H%M")) bash: proddeploy-20141003_1735: command not found bash: =: command not found […]