龙岩网站建设方案,wordpress做微信推广,网站建设概念股,网站运营解决方案了解如何使用配置文件来改善你的工作环境。-- H.waldo Grunenwald(作者)不要问你可以为你的 shell 点文件(dotfile)做什么#xff0c;而是要问一个 shell 点文件可以为你做什么#xff01;我一直在操作系统领域里面打转#xff0c;但是在过去的几年中#xff0c;我的日常使…了解如何使用配置文件来改善你的工作环境。-- H.waldo Grunenwald(作者)不要问你可以为你的 shell 点文件(dotfile)做什么而是要问一个 shell 点文件可以为你做什么我一直在操作系统领域里面打转但是在过去的几年中我的日常使用的一直是 Mac。很长一段时间我都在使用 Bash但是当几个朋友开始把 zsh 当成宗教信仰时我也试试了它。我没用太长时间就喜欢上了它几年后我越发喜欢它做的许多小事情。我一直在使用 zsh(通过 Homebrew 提供而不是由操作系统安装的)和 Oh My Zsh 增强功能 。本文中的示例是我的个人 .zshrc。大多数都可以直接用在 Bash 中我觉得不是每个人都依赖于 Oh My Zsh但是如果不用的话你的工作量可能会有所不同。曾经有一段时间我同时为 zsh 和 Bash 维护一个 shell 点文件但是最终我还是放弃了我的 .bashrc。不偏执不行如果你希望在各个操作系统上使用相同的点文件则需要让你的点文件聪明点。### Mac 专用if [[ $OSTYPE darwin* ]]; then # Mac 专用内容在此例如我希望 Alt 箭头键 将光标按单词移动而不是单个空格。为了在 iTerm2 (我的首选终端)中实现这一目标我将此代码段添加到了 .zshrc 的 Mac 专用部分### Mac 专用if [[ $OSTYPE darwin* ]]; then ### Mac 用于 iTerm2 的光标命令映射 ctrlarrows 或 altarrows 来快速移动 bindkey -e bindkey ^[[1;9C forward-word bindkey ^[[1;9D backward-word bindkey ee[D backward-word bindkey ee[C forward-wordfi(LCTT 译注标题 “We’re all mad here” 是电影《爱丽丝梦游仙境》中微笑猫对爱丽丝讲的一句话“我们这儿全都是疯的”。)在家不工作虽然我开始喜欢我的 Shell 点文件了但我并不总是想要家用计算机上的东西与工作的计算机上的东西一样。解决此问题的一种方法是让补充的点文件在家中使用而不是在工作中使用。以下是我的实现方式if [[ egrep dnssuffix1|dnssuffix2 /etc/resolv.conf ]]; then if [ -e $HOME/.work ] source $HOME/.work else echo This looks like a work machine, but I cant find the ~/.work file fifi在这种情况下我根据我的工作 dns 后缀(或多个后缀具体取决于你的情况)来提供(source)一个可以使我的工作环境更好的单独文件。(LCTT 译注标题 “What about Bob?” 是 1991 年的美国电影《天才也疯狂》。)你该这么做现在可能是放弃使用波浪号(~)表示编写脚本时的主目录的好时机。你会发现在某些上下文中无法识别它。养成使用环境变量 $HOME 的习惯这将为你节省大量的故障排除时间和以后的工作。如果你愿意合乎逻辑的扩展是应该包括特定于操作系统的点文件。(LCTT 译注标题 “That thing you do” 是 1996 年由汤姆·汉克斯执导的喜剧片《挡不住的奇迹》。)别指望记忆我写了那么多 shell 脚本我真的再也不想写脚本了。并不是说 shell 脚本不能满足我大部分时间的需求而是我发现写 shell 脚本可能只是拼凑了一个胶带式解决方案而不是永久地解决问题。同样我讨厌记住事情在我的整个职业生涯中我经常不得不在一天之中就彻彻底底地改换环境。实际的结果是这些年来我不得不一再重新学习很多东西。(“等等……这种语言使用哪种 for 循环结构”)因此每隔一段时间我就会觉得自己厌倦了再次寻找做某事的方法。我改善生活的一种方法是添加别名。对于任何一个使用操作系统的人来说一个常见的情况是找出占用了所有磁盘的内容。不幸的是我从来没有记住过这个咒语所以我做了一个 shell 别名创造性地叫做 bigdirsalias bigdirsdu --max-depth1 2 /dev/null | sort -n -r | head -n20虽然我可能不那么懒惰并实际记住了它但是那不太 Unix ……(LCTT 译注标题 “Memory, all alone in the moonlight” 是一手英文老歌。)输错的人们使用 shell 别名改善我的生活的另一种方法是使我免于输入错误。我不知道为什么但是我已经养成了这种讨厌的习惯在序列 ea 之后输入 w所以如果我想清除终端我经常会输入 cleawr。不幸的是这对我的 shell 没有任何意义。直到我添加了这个小东西alias cleawrclear在 Windows 中有一个等效但更好的命令 cls但我发现自己会在 Shell 也输入它。看到你的 shell 表示抗议真令人沮丧因此我添加alias clsclear是的我知道 ctrl l但是我从不使用它。(LCTT 译注标题 “Typos, and the people who love them” 可能来自某部电影。)要自娱自乐工作压力很大。有时你需要找点乐子。如果你的 shell 不知道它显然应该执行的命令则可能你想直接让它耸耸肩你可以使用以下功能执行此操作shrug() { echo ¯_(ツ)_/¯; }如果还不行也许你需要掀桌不干了fliptable() { echo (╯°□°)╯ ┻━┻; } # 掀桌用法示例: fsck -y /dev/sdb1 || fliptable想想看当我想掀桌子时而我不记得我给它起了个什么名字我会有多沮丧和失望所以我添加了更多的 shell 别名alias flipdeskfliptablealias deskflipfliptablealias tableflipfliptable而有时你需要庆祝一下disco() { echo (•_•) echo echo / echo echo (•_•) echo echo / }通常我会将这些命令的输出通过管道传递到 pbcopy并将其粘贴到我正在使用的相关聊天工具中。我从一个我关注的一个叫 “Command Line Magic” climagic 的 Twitter 帐户得到了下面这个有趣的函数。自从我现在住在佛罗里达州以来我很高兴看到我这一生中唯一的一次下雪snow() { clear;while :;do echo $LINES $COLUMNS $(($RANDOM%$COLUMNS));sleep 0.1;done|gawk {a[$3]0;for(x in a) {oa[x];a[x]a[x]1;printf 033[%s;%sH