OS X终端“必须具备”实用程序


109

我刚刚很高兴地阅读了本书,并从这些问题中学到了很多东西:

但是我没有在我每天喜欢的一些最喜欢的工具中找到这些,我认为这是因为这些是OSX / Terminal专用的工具,无法很好地解决上述问题。

我的最爱是按优先顺序排列的:oh-my-zsh自制软件(还有macports),janus ...

这些工具的共同点是:

  • 终端:安装和使用
  • OSX目的brew是,git不是!
  • 易于安装:一个衬里,即。git clone; wget ...等等
  • 可扩展的:可能具有扩展名或简单的API(例如,带有插件的oh-my-zsh,带有公式的brew,带有捆绑的vim插件的janus ...)
  • 通常是开源的,免费的,托管在github上,脚本化的,主要(但不仅限于!)与ruby ...

您知道其他类似的必备工具吗?我很想发现新的!

每个答案仅包含一个实用程序。另外,请不要添加重复项。发布前先检查。如果您看到重复的内容,请对答案投反对票,并在评论中告知作者。


homebrew和macports一起可能会出现问题,因为macports会读取homebrew安装的文件,而它们不一定是正确的版本
user151019 2011年

真实的,但95%的时间是没有大问题,而对于剩下的5%的情况下,只是改变暂时$ PATH是常有的解决方案...我喜欢为方便和轻巧冲泡,但MacPorts的有很多更多的包我们可能会从来没有在自制酒中见过……
Vincent

@Vincent-自酿的重点是您可以轻松地构建自己的公式,因此“自酿啤酒中从未见过”似乎完全错过了这一点。MacPorts十分方便,因为您实际上不需要做很多事情,因此可以有效地为您提供BSD port或Debian apt-get风格的安装程序。
ocodo 2011年

可以回答您自己的问题-为什么不分开“答案”而只留下问题。
bmike

@slojomo,看看一些非常复杂的macports“端口”,其中有大量依赖项,例如洪水,您将了解...再加上自制软件的策略不覆盖系统组件...(例如mysql ...)
文森特

Answers:


92

家酿

OS X缺少的软件包管理器。

这是一个了不起的软件包管理器,非常轻巧且易于使用。KIS原则,这让我想到了archlinux。它的社区很大,非常活跃。

(另请参阅未完全替换brew的macports,我更喜欢使用brew安装软件包,但某些复杂的软件包仅在macports上使用)

另请参阅brew tap命令,该命令提供了一些缺少的公式,这些公式可能很有用,例如当您需要最新的php版本>时brew tap josegonzalez/php

(Homebrew的政策是不更换系统组件,但是,有时候,您必须这样做)


您的FormulaAlt链接已关闭。(404)
ottel142

编辑提到brew tap,这是现在处理外部“公式”的内置解决方案。
文森特

请注意,您还可以通过URL直接指定“外部”的公式是formula.rb
ocodo

更新:Homebrew现在愿意替换系统组件,例如make,curl,bash,zsh...。您只需要一个额外的步骤:brew link --force <package>覆盖系统副本。另外,一些非必需的重复软件包存储在仓库中,homebrew-dupes而不是规范的软件包。
Caleb Xu

62

iTerm2(免费)

在评论中提及,但这是必不可少的,因此为了强调...


7
严重的是,忘记了OSX Terminal + Visor,iTerm2更好了,我整天用热键à遮阳板全屏拆分窗格……还有许多其他很棒的功能……
Vincent,

1
奇怪的是,自2011年7月以来就没有更新过稳定版,2012年7月发布了Beta版,但从未得到过推广。这个项目死了吗?
Dan Rosenstark 2012年

1
@Yar仍在开发中。作者在此处维护官方仓库
MH。

37

阿克(免费)

非常适合搜索文本文件,您无需再使用查找/ grep组合。


Ack为主要的OSX文本编辑器提供了两个不错的集成插件:


3
+1 Ack真是棒极了的grep替代品,如果不是因为grep我的肌肉记忆中的事实,我绝对不会使用它。
ocodo 2011年

Ack是必不可少的工具,它使grep开发人员更加友好,但是由于与OSX不相关,因此该主题有些偏离主题,请编辑此答案以添加Vim / AckMate信息。
文森特

1
grin也是一个不错的选择。
gak 2012年

grin很棒,这里是链接:pypi.python.org/pypi/grin
Lorin Hochstein 2012年

2
这些天,一切都与The Silver Searcher有关
Zev Eisenberg

33

oh-my-zsh(免费)

少数功能,自动完成的助手以及使您大喊大叫的东西……

“哦,我的ZSHELL!”

当我不得不使用外壳时,让我爱上了它……Zsh是“对类固醇的打击”,带有oh-my-zsh及其所有插件,许多OSX细节,外壳对用户更加友好且功能强大...哦,主题也很酷。


也值得一看,一些替代/补充基于zsh的东西:

  • prezto是oh-my-zsh的完整重写,干净并且更加活跃,现在使用它:)
  • zsh-users(免费)一些非常好的zsh东西(喜欢语法突出显示)
  • zcm(免费)zsh配置管理器(灵感来自oh-my-zsh)

1
zshoh-my-zsh确实是真棒,它甚至会做路径完成了一个scp/ ssh命令,如果您启用了公钥认证到你要找的服务器,它的岩石。(功能强大的完成... /v/m/s/TAB'扩展为/Volumes/MyDrive/Src
ocodo

为prezto +1。我喜欢使用git子模块的方法。
橡子


Prezto比oh-my-zsh快得多。你应该试试看。
Rnhmjoj 2014年


24

外壳功能

我不能没有这个。

  • 一条命令将它们全部更新。

    update() {
        local brew="brew update; brew upgrade;"
        local gisty="gisty pull_all; gisty sync_delete"
        local gem="gem update;"
        local pip="pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs pip install -U -q"
        sh -c $brew$gisty; sudo sh -c $gem$pip
    }

    显然,您可以根据所使用的软件包管理器添加更多命令。这是我做的

  • 将目录更改为当前Finder目录

    cdf() {
        target=`osascript -e 'tell application "Finder" to if (count of Finder windows) > 0 then get POSIX path of (target of front Finder window as text)'`
        if [ "$target" != "" ]; then
            cd "$target"; pwd
        else
            echo 'No Finder window found' >&2
        fi
    }

    cdf在终端中打开Finder目录并open .在Finder中打开目录终端目录。

    资源

  • 在手册页中获取颜色

    man() {
        env \
        LESS_TERMCAP_mb=$(printf "\e[1;31m") \
        LESS_TERMCAP_md=$(printf "\e[1;31m") \
        LESS_TERMCAP_me=$(printf "\e[0m") \
        LESS_TERMCAP_se=$(printf "\e[0m") \
        LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
        LESS_TERMCAP_ue=$(printf "\e[0m") \
        LESS_TERMCAP_us=$(printf "\e[1;32m") \
        man "$@"
    }

    资源

  • 在git中使用RSA私钥

    git(){
        trap 'rm -f /tmp/.git_ssh.$$' 0
        SSH_KEY="~/.ssh/id_rsa"
        echo "ssh -i $SSH_KEY \$@" > /tmp/.git_ssh.$$
        chmod +x /tmp/.git_ssh.$$
        export GIT_SSH=/tmp/.git_ssh.$$
        [ "$1" = "git" ] && shift
        git "$@"
    }

    我注意到将其放入您的.rc文件会降低git的速度。如果要避免这种情况,则应解压缩函数并将其另存为Shell脚本。$PATH

    来源 (我做了一些修改。原始文件每次都会询问关键路径。)

  • Cat中的语法突出显示

    cat() {
        local out colored
        out=$(/bin/cat $@)
        colored=$(echo $out | pygmentize -f console -g 2>/dev/null)
        [[ -n $colored ]] && echo "$colored" || echo "$out"
    }

    这可能会很慢,因为它需要在打印之前解析整个文件。切勿在二进制文件上使用它!

    pip install Pygments 安装pygments。


通过〜/ .ssh / config配置SSH可以更好地在git中使用RSA私钥。
Eir Nym 2014年

21

Inconsolata-dz(免费)

这是对原始Inconsolata的略微修改。这是一种出色的等宽字体,可与Terminal.app,TextMate,MacVim以及您需要的其他任何地方一起使用。必须有任何编码器。 在此处输入图片说明


+1我比ProfontX更喜欢这个-EmmEff
2011年

1
不幸的是,在您的屏幕截图上,它对我来说看起来不太好。
PeterŠtibraný2011年

似乎它遭受了一些压缩伪影-用(希望)更好的替代了它!
Ingmar Hupp

谢谢。现在,这是几乎所有文本编写应用程序中的默认字体。
Rnhmjoj


16

BitWizard的MTR(免费)-结合pingtraceroute

安装: brew install mtr --no-gtk

                                            Packets               Pings
 Host                                     Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 217.70.191.253                         0.0%    32    0.5   1.7   0.3  17.6   3.8
 2. p252-core4-d.paris.gandi.net           0.0%    32    0.5   1.1   0.3  17.8   3.1
 3. xe2-1-24-vcore1-dc1.balt.gandi.net     0.0%    32   97.4 105.7  96.9 187.7  22.0
 4. eqixva-google-gige.google.com         80.0%    31  100.8 100.2  99.6 100.8   0.4
 5. 209.85.252.80                          0.0%    31  100.3 108.0 100.0 210.4  24.3
 6. 209.85.243.114                         0.0%    31  111.9 112.6 111.7 118.6   1.2
 7. 64.233.174.87                          0.0%    31  119.8 112.7 111.6 119.8   1.9
    64.233.174.117
 8. 209.85.242.181                        16.1%    31  112.0 117.0 111.8 125.2   5.1
    209.85.253.185
    209.85.242.177
    209.85.253.181
 9. vx-in-f105.1e100.net                   0.0%    31  112.0 112.3 111.6 116.4   0.8

Laffey Computer Imaging提供的whatmask(免费)-IPv4子网计算器

下载 OS X二进制文件。也在线

$ whatmask 192.168.5.6/22

------------------------------------------------
           TCP/IP NETWORK INFORMATION
------------------------------------------------
IP Entered = ..................: 192.168.5.6
CIDR = ........................: /22
Netmask = .....................: 255.255.252.0
Netmask (hex) = ...............: 0xfffffc00
Wildcard Bits = ...............: 0.0.3.255
------------------------------------------------
Network Address = .............: 192.168.4.0
Broadcast Address = ...........: 192.168.7.255
Usable IP Addresses = .........: 1,022
First Usable IP Address = .....: 192.168.4.1
Last Usable IP Address = ......: 192.168.7.254

不错,但有点题外话,与OSX无关:)
Vincent

哇,那东西真神奇。分享的thx
jupp0r 2012年

您如何运行地铁?无论我运行什么,即使我想查找帮助或版本,也无法获得原始套接字
AntK 2015年

您可以使用来运行它,也可以使用来sudo mtr example.com设置二进制文件chown root:admin /usr/local/sbin/mtr && chmod +s /usr/local/sbin/mtr
Ingmar Hupp 2015年

16

自动跳转(免费)

出色的命令行实用程序,用于存储cd命令并自动创建访问次数最多的目录的自动完成快捷方式。

更好的是,如果几个目录具有相似的名称(以相同的字符开头),则“自动跳转”将仅选择您最常访问的目录。您无需键入全名。

例:

cd project1

j p现在,您将直接进入完整的project1路径。

现在,如果您创建一个经常访问(但小于project1)的相似文件夹project2,则Autojump会为project2分配较小的权重,然后直接转到project1

例如,如果TAB在键入后单击"pro",则外壳将显示project__,提示存在多个匹配目录。另一个TAB匹配项将显示匹配目录的列表,并允许您选择想要的目录。

注意:我最近安装了ZSH,并注意到由于自动完成功能而造成的一些干扰。Autojump可以在香草终端上完美运行。


使用zsh时,只需尝试cd -[TAB]即可了解您的情况。
ocodo

@Slomojo有所不同;跳跃进入没有中间步骤的层次结构。除非有zsh功能,否则我不会这样做(很可能我会丢失某些东西)。
戴夫·牛顿

15

太阳能(免费)

终端的配色方案。

Lion支持ANSI颜色,因此不再需要像SIMBL这样的骇客工具。

对于Snow Leopard和更早版本,由于Terminal.app中的颜色支持有限,因此您需要安装SIMBL才能充分利用它。


fyi,其vim版本附带janus;)
Vincent

Lion Terminal的Solarized不太适合我-与Vim和iTerm相比,颜色不正确。有人遇到过这个吗?
yjsoon 2011年

3
@yjsoon忘记了Lion Terminal,使用iTerm2 ...
文森特

1
@Vincent我喜欢iTerm2 ...,直到Lion Terminal出现,并且可以在与当前选项卡相同的目录中打开新选项卡,并且使历史记录灰显。等待iTerm获得这些。
yjsoon 2011年

@yjsoon如果您可以通过某些oh-my-zsh插件...或通过一些脚本实现此功能,我也不会感到惊讶,)omz ftw!
文森特

14

MacPorts

MacPorts项目是一个开源社区计划,旨在设计一个易于使用的系统,以在Mac OS X操作系统上编译,安装和升级基于命令行的X11或Aqua开源软件。

许多人会告诉您不要使用macport,而应使用自制软件。多数情况下是这样,自制软件更轻巧,更易于使用。但是macports提供了更多的软件包,由于它们的不同理念,其中一些永远不会自制。(我同时使用,以满足不同的需求)

例如,我建议在石英(本机OSX)变体中使用GTK:

sudo port install gtk2 +no_x11+quartz

然后,当您安装一个可以从中受益的软件包时,例如Wireshark ...,您将获得本机OSX UI,速度更快,外观比X11更好。


13

DTerm(免费),由Decimus Software提供

与Visor相似,但具有一些额外的友好功能(似乎也在积极开发中)


12

白银搜寻者(免费)

一个类似于ack的代码搜索工具,但是速度更快。

brew一起安装

brew install the_silver_searcher

8

午餐(免费)

Launchctl的友好包装器。开始您的经纪人,共进午餐!

一个方便的工具来管理(启动/停止/重新启动)OSX服务/守护程序...

那是一颗红宝石: gem install lunchy


8

爆发次数

bro页面是手册页面的高度可读的补充。Bro页面显示了Unix命令的简洁,常见情况示例。

例:

$ bro find
14 entries for find -- submit your own example with "bro add find"

# Executes a command on the files and folders matching a given pattern, in this case, output the last lines of each .foo file in the current folder and subfolders.
find . -name "*.foo" -exec tail {} \;

        bro thanks      to upvote (24)
        bro ...no       to downvote (0)

.......................................................................................................................................

# Outputs all the file names/paths that start with the name "Casey".  Searches recursively starting from my current directory (.)
# Throws out any error output by sending it to /dev/null
find . -name "Casey*" 2>/dev/null

        bro thanks 2    to upvote (16)
        bro ...no 2     to downvote (0)

.......................................................................................................................................

# Finds all files in and under the current directory that contain 'foo' in their name
find . -iname '*foo*'

        bro thanks 3    to upvote (13)
        bro ...no 3     to downvote (1)

7

Janus + Macvim

Janus是vim插件和工具的基本发行版,旨在在最新的MacVIM快照之上运行

使用自制软件安装macvim brew install macvim 并按照(简单)的janus说明进行操作,然后您设置了功能强大的文本编辑器,该文本编辑器已经为精明的人预先配置。乍一看,vim的学习曲线令人恐惧,但是一旦感到满意,就永远不会回头(或者回到emacs ...) (仅供参考,TextMate已被许多编码人员抛弃以牟取暴利)

这听起来可能很奇怪,但是我更喜欢在iTerm2中使用vim而不是macvim ...(vim捆绑在macvim中,只需使用brew install macvim --override-system-vim


5

ProfontX(免费)

我最喜欢的MacOS编程和终端字体。(ProfontX是Profont的纠正版本,其中某些字符存在问题)


好的字体,谢谢,不知道要尝试那种字体,即使我猜我最终还是会退回到那个好的老摩纳哥(在iTerm2中渲染效果很好)
Vincent

摩纳哥获胜,我的眼睛具有更好的可读性:),很想改用现代Menlo字体,但是它的特殊UTF-8字符(例如✭)太小了,无法满足外壳的乐趣。
文森特

绝对是个口味问题;),摩纳哥有一些我无法忍受的东西,我猜它太脆了
apouche 2011年

1
哦,是的,绝对是个人选择。Dunno,如果还没有,那么一个专门关于OSX固定大小的开发字体的社区Wiki会很好...;)
Vincent

4

Boxen-自动化的Mac OS配置以及构建,安装/更新软件。当您想要在开发团队中使用完全相同的设置(软件,版本)时,它可以帮助节省大量时间,并且还允许每个人安装其他工具以提高生产率。


3

遮阳板

是一个有趣的实用程序。它描述为:

热键上的系统级终端

挺酷的。按下组合键后,它将在一个终端上落下。

编辑

遮阳板已重命名为TotalTerminal ...(请参阅其他答案,可以/应该将其删除)


4
仅供参考,我从终端机切换到了iTerm2,后者具有像本机遮阳板一样的功能,并且更像是分割面板!:)
文森特

3

bash-it(免费)

oh-my-zsh的替代品(请参见上文)。真正有用的脚本,别名和函数的集合bash。还提供了一个不错的插件系统来添加您自己的添加项。


3

Go2Shell(免费)

不是终端实用程序,而是使用终端的实用程序。它在Finder工具栏上放置一个按钮,并在按下该按钮时会创建一个新的终端窗口,并已安装到该目录。

编辑: 开发人员说,直接从他们那里可获得的应用程序版本具有比App Store上的版本更多的功能。我已经更新了链接,可以转到他们的页面,但是App Store版本仍在此处提供


如今,在优胜美地上无法使用。
jherran 2014年

@jherran我自己还没有尝试过,但是开发人员声称它可以在优胜美地上使用。如果您不满意,请尝试与他们联系。
ThomasW 2014年

是的 并对我说的相同,他们正在努力,但从现在开始,在优胜美地上不起作用。
jherran 2014年

他们在网站上发布了声称与优胜美地兼容的2.2版。
ThomasW,2015年

2

布瓦纳(免费)

从技术上讲,这不是终端命令,但通过允许以下网址的“ man:ls”网址在浏览器中显示手册页的html页面,非常便于快速查找手册页。


1

乔迪斯 ipcalc

 🍺  /usr/local/Cellar/ipcalc/0.41: 4 files, 40K, built in 2 seconds
 bash-3.2$ ipcalc 10.20.30.40/8
 Address:   10.20.30.40          00001010. 00010100.00011110.00101000
 Netmask:   255.0.0.0 = 8        11111111. 00000000.00000000.00000000
 Wildcard:  0.255.255.255        00000000. 11111111.11111111.11111111
 =>
 Network:   10.0.0.0/8           00001010. 00000000.00000000.00000000
 HostMin:   10.0.0.1             00001010. 00000000.00000000.00000001
 HostMax:   10.255.255.254       00001010. 11111111.11111111.11111110
 Broadcast: 10.255.255.255       00001010. 11111111.11111111.11111111
 Hosts/Net: 16777214              Class A, Private Internet

也可以在HomeBrew中使用:

 bash-3.2$ brew install ipcalc
 ==> Downloading http://jodies.de/ipcalc-archive/ipcalc-0.41.tar.gz

0

我喜欢Color Maven

alias maven="command mvn"
color_maven() {
  maven $* | sed -e "s/\(\[INFO\]\ \-.*\)/[36;01m\1[m/g" \
               -e "s/\(\[INFO\]\ >>> .*\)/[32;01m\1[m/g" \
               -e "s/\(\[INFO\]\ <<< .*\)/[32;01m\1[m/g" \
               -e "s/\(\[INFO\]\ Building .*\)/[36;01m\1[m/g" \
               -e "s/\(\[INFO\]\ \[.*\)/01m\1[m/g" \
               -e "s/\(\[INFO\]\ BUILD SUCCESS\)/[01;32m\1[m/g" \
               -e "s/\(\[INFO\]\ BUILD FAILURE\)/[01;31m\1[m/g" \
               -e "s/\(\[WARNING\].*\)/[01;33m\1[m/g" \
               -e "s/\(WARN.*\)/[01;33m\1[m/g" \
               -e "s/\(DEBUG.*\)/[01;33m\1[m/g" \
               -e "s/\(\[ERROR\].*\)/[01;31m\1[m/g" \
               -e "s/Tests run: \([^,]*\), Failures: \([^,]*\), Errors: \([^,]*\), Skipped: \([^,]*\)/[32mTests run: \1[m, Failures: [01;31m\2[m, Errors: [01;31m\3[m, Skipped: [01;33m\4[m/g"
}
alias mvn=color_maven

颜色LS

alias ls='ls -FG'
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
-or-
echo export CLICOLOR >> ~/.bashrc
echo export CLICOLOR >> ~/.bash_profile
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.