我正在尝试查看在任意时间范围内在远程服务器上foo bar出现了多少次/var/log/foo.log,但是到目前为止我没有尝试过。 我已经有了一个计时器脚本,可以用来跟踪自开始拖尾以来已经有多长时间了/var/log/foo.log,现在我想要一种方法来判断foo bar拖尾输出中出现了多少次。 我搜索了google,但在搜索结果的前10页中没有发现任何相关信息。 这是我尝试过的令人沮丧的结果: ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | cat -n - ## works on local, …
在我的文章中.profile,我使用以下代码来确保仅在登录shell实际上是Bash时才获得与Bash相关的别名和函数: # If the current (login) shell is Bash, then if [ "${BASH_VERSION:-}" ]; then # source ~/.bashrc if it exists. if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 我目前正在将我的shell配置文件,脚本和函数置于版本控制之下。我也最近开始去除shell脚本不从击的特定功能中受益,如休闲bash化,更换的过程中function funcname()有funcname()。 对于我的shell文件存储库,我已经配置了一个预提交钩子,该存储库中的每个文件都运行checkbashismsDebian的devscripts包中的实用程序,sh以确保我不会无意中引入Bash特定的语法。但是,这给我带来了一个错误.profile: possible bashism in .profile line 51 ($BASH_SOMETHING): if [ "${BASH_VERSION:-}" ]; then 我想知道是否有一种方法可以检查正在运行的shell,而不会触发checkbashisms。 我检查了POSIX列出的与外壳相关的变量的列表,希望它们中的一个可以用来显示当前的外壳。我还查看了在交互式Dash shell中设置的变量,但是,再次找不到合适的候选对象。 目前,我已经排除.profile因被处理checkbashisms; …
有人可以按可移植性顺序放置这些工具吗?即使在最小的* nix系统上,肯定可以找到其中的哪一个?是否肯定有100%存在?我的猜测是顺序如下: awk sed SH 佩尔 虽然我想象有些系统没有默认使用bourne shell,但是某些 shell将作为默认存在,会一直在/bin/sh吗?如果不是bourne型shell,大概不会。双方awk并sed有解释他们对POSIX规范的页面所以想必他们将始终存在。是这样吗?我可以确定两者都将安装在任何* nix上吗?包括嵌入式系统?