后缀为frm是什么文件_Shell 点文件可以为你做点什么
了解如何使用配置文件來改善你的工作環境。
-- 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 的光標命令;映射 ctrl+arrows 或 alt+arrows 來快速移動 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 can't find the ~/.work file" fifi在這種情況下,我根據我的工作 dns 后綴(或多個后綴,具體取決于你的情況)來提供(source)一個可以使我的工作環境更好的單獨文件。
(LCTT 譯注:標題 “What about Bob?” 是 1991 年的美國電影《天才也瘋狂》。)
你該這么做
現在可能是放棄使用波浪號(~)表示編寫腳本時的主目錄的好時機。你會發現在某些上下文中無法識別它。養成使用環境變量 $HOME 的習慣,這將為你節省大量的故障排除時間和以后的工作。
如果你愿意,合乎邏輯的擴展是應該包括特定于操作系統的點文件。
(LCTT 譯注:標題 “That thing you do” 是 1996 年由湯姆·漢克斯執導的喜劇片《擋不住的奇跡》。)
別指望記憶
我寫了那么多 shell 腳本,我真的再也不想寫腳本了。并不是說 shell 腳本不能滿足我大部分時間的需求,而是我發現寫 shell 腳本,可能只是拼湊了一個膠帶式解決方案,而不是永久地解決問題。
同樣,我討厭記住事情,在我的整個職業生涯中,我經常不得不在一天之中就徹徹底底地改換環境。實際的結果是這些年來,我不得不一再重新學習很多東西。(“等等……這種語言使用哪種 for 循環結構?”)
因此,每隔一段時間我就會覺得自己厭倦了再次尋找做某事的方法。我改善生活的一種方法是添加別名。
對于任何一個使用操作系統的人來說,一個常見的情況是找出占用了所有磁盤的內容。不幸的是,我從來沒有記住過這個咒語,所以我做了一個 shell 別名,創造性地叫做 bigdirs:
alias bigdirs='du --max-depth=1 2> /dev/null | sort -n -r | head -n20'雖然我可能不那么懶惰,并實際記住了它,但是,那不太 Unix ……
(LCTT 譯注:標題 “Memory, all alone in the moonlight” 是一手英文老歌。)
輸錯的人們
使用 shell 別名改善我的生活的另一種方法是使我免于輸入錯誤。我不知道為什么,但是我已經養成了這種討厭的習慣,在序列 ea 之后輸入 w,所以如果我想清除終端,我經常會輸入 cleawr。不幸的是,這對我的 shell 沒有任何意義。直到我添加了這個小東西:
alias cleawr='clear'在 Windows 中有一個等效但更好的命令 cls,但我發現自己會在 Shell 也輸入它。看到你的 shell 表示抗議真令人沮喪,因此我添加:
alias cls='clear'是的,我知道 ctrl + l,但是我從不使用它。
(LCTT 譯注:標題 “Typos, and the people who love them” 可能來自某部電影。)
要自娛自樂
工作壓力很大。有時你需要找點樂子。如果你的 shell 不知道它顯然應該執行的命令,則可能你想直接讓它聳聳肩!你可以使用以下功能執行此操作:
shrug() { echo "ˉ_(ツ)_/ˉ"; }如果還不行,也許你需要掀桌不干了:
fliptable() { echo "(╯°□°)╯ ┻━┻"; } # 掀桌,用法示例: fsck -y /dev/sdb1 || fliptable想想看,當我想掀桌子時而我不記得我給它起了個什么名字,我會有多沮喪和失望,所以我添加了更多的 shell 別名:
alias flipdesk='fliptable'alias deskflip='fliptable'alias tableflip='fliptable'而有時你需要慶祝一下:
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) {o=a[x];a[x]=a[x]+1;printf "033[%s;%sH總結
以上是生活随笔為你收集整理的后缀为frm是什么文件_Shell 点文件可以为你做点什么的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (g for linux)
- 下一篇: 性价比安卓手机(性价比安卓)