x95u1 icon

Eight Terminal Utilities Every OS X Command Line User Should

x95u1 | PRO | 01/20/17 07:58:18 AM UTC | 0 ⭐ | 518 👁️ | Never ⏰ | []
text |

12.07 KB

|

None

|

0 👍

/

0 👎

Eight Terminal Utilities Every OS X Command Line User Should Know
=================================================================
    May 14, 2014  o  Mitchell Cohen
    The OS X Terminal opens up a world of powerful UNIX utilities and
   scripts. If you're migrating from Linux, you'll find many familiar
   commands work the way you expect. But power users often aren't aware
   that OS X comes with a number of its own text-based utilities not found
   on any other operating system. Learning about these Mac-only programs
   can make you more productive on the command line and help you bridge
   the gap between UNIX and your Mac.
    Update: Thanks to reader feedback, I've written about a few more
   commands in a follow-up post: [7](And eight hundred more).
 1. open
    open opens files, directories and applications. Exciting, right? But it
   really does come in handy as a command-line double-click. For instance,
   typing:
$ open /Applications/Safari.app/
    ...will launch Safari as if you had double-clicked its icon in the
   Finder.^[8]1
    If you point open at a file instead, it will try to load the file with
   its associated GUI application. open screenshot.png on an image will
   open that image in Preview. You can set the -a flag to choose the app
   yourself, or -e to open the file for editing in TextEdit.
    Running open on a directory will take you straight to that directory in
   a Finder window. This is especially useful for bringing up the current
   directory by typing open .
    Remember that the integration between Finder and Terminal goes both
   ways - if you drag a file from Finder into a Terminal window, its full
   path gets pasted into the command line.
 2. pbcopy and pbpaste
    These two commands let you copy and paste text from the command line.
   Of course, you could also just use your mouse--but the real power of
   pbcopy and pbpaste comes from the fact that they're UNIX commands, and
   that means they benefit from piping, redirection, and the ability to be
   in scripts in conjunction with other commands. Typing:
$ ls ~ | pbcopy
    ...will copy a list of files in your home directory to the OS X
   clipboard. You can easily capture the contents of a file:
$ pbcopy < blogpost.txt
    ..or do something crazier. This hacked-up script will grab the link of
   the latest Google doodle and copy it to your clipboard.
$ curl http://www.google.com/doodles#oodles/archive | grep -A5 'latest-doodle on
' | grep 'img src' | sed s/.*'<img src="\/\/'/''/ | sed s/'" alt=".*'/''/ | pbco
py
    Using pbcopy with pipes is a great way to capture the output of a
   command without having to scroll up and carefully select it. This makes
   it easy to share diagnostic information. pbcopy and pbpaste can also be
   used to automate or speed up certain kinds of tasks. For instance, if
   you want to save email subject lines to a task list, you could copy the
   subjects from Mail.app and run:
$ pbpaste >> tasklist.txt
 3. mdfind
    Many a Linux power user has tried to use locate to search for files on
   a Mac and then quickly discovered that it didn't work. There's always
   the venerable UNIX find command, but OS X comes with its own killer
   search tool: Spotlight. So why not tap into its power from the command
   line?
    That's exactly what mdfind does. Anything Spotlight can find, mdfind
   can find too. That includes the ability to search inside files and
   metadata.
    mdfind comes with a few conveniences that make it stand out from its
   big blue brother. For instance, the -onlyin flag can restrict the
   search to a single directory:
$ mdfind -onlyin ~/Documents essay
    The mdfind database should stay up to date in the background, but you
   can also troubleshoot it (as well as Spotlight) using mdutil. If
   Spotlight isn't working the way it should, mdutil -E will erase the
   index and rebuild it from scratch. You can also turn off indexing
   entirely with mdutil -i off.
 4. screencapture
    screencapture lets you take many different kinds of screenshots. It's
   similar to Grab.app and the keyboard shortcuts cmd + shift + 3 and cmd
   + shift + 4, except it's far more flexible. Here are just a few
   different ways you can use screencapture:
    Capture the contents of the screen, including the cursor, and attach
   the resulting image (named `image.png') to a new Mail message:
$ screencapture -C -M image.png
    Select a window using your mouse, then capture its contents without the
   window's drop shadow and copy the image to the clipboard:
$ screencapture -c -W
    Capture the screen after a delay of 10 seconds and then open the new
   image in Preview:
$ screencapture -T 10 -P image.png
    Select a portion of the screen with your mouse, capture its contents,
   and save the image as a pdf:
$ screencapture -s -t pdf image.pdf
    To see more options, type screencapture --help
 5. launchctl
    launchctl lets you interact with the OS X init script system, launchd.
   With launch daemons and launch agents, you can control the services
   that start up when you boot your computer. You can even set up scripts
   to run periodically or at timed intervals in the background, similar to
   cron jobs on Linux.
    For example, if you'd like to have the Apache web server start
   automatically when you turn on your Mac, simply type:
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
    Running launchctl list will show you what launch scripts are currently
   loaded. sudo launchctl unload [path/to/script] will stop and unload
   running scripts, and adding the -w flag will remove those scripts
   permanently from your boot sequence. I like to run this one on all the
   auto-update "helpers" created by Adobe apps and Microsoft Office.
    Launchd scripts are stored in the folllowing locations:
~/Library/LaunchAgents
/Library/LaunchAgents
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons
    To see what goes into a launch agent or daemon, there's a great blog
   post by [9]Paul Annesley that walks you through the file format. And if
   you'd like to learn how to write your own launchd scripts, Apple
   provides some helpful documentation on their [10]Developer site.
   There's also the fantastic [11]Lingon app if you'd prefer to avoid the
   command line entirely.
 6. say
    This is a fun one: say converts text to speech, using the same TTS
   engine OS X uses for [12]VoiceOver. Without any options, say will
   simply speak whatever text you give it out loud.:^[13]2
$ say "Never trust a computer you can't lift."
    You can also use say to speak the contents of a text file with the -f
   flag, and you can store the resulting audio clip with the -o flag:
$ say -f mynovel.txt -o myaudiobook.aiff
    The say command can be useful in place of console logging or alert
   sounds in scripts. For instance, you can set up an Automator or
   [14]Hazel script to do batch file processing and then announce the
   task's completion with say.
    But the most enjoyable use for say is rather more sinister: if you have
   ssh access to a friend or coworker's Mac, you can silently log into
   their machine and haunt them through the command line. Give `em a
   Siri-ous surprise.
    You can set the voice (and language!) used by say by changing the
   default setting in the Dictation & Speech panel in System Preferences.
 7. diskutil
    diskutil is a command line interface to the Disk Utility app that comes
   with OS X. It can do everything its graphical cousin can, but it also
   has some extra capabilities--such as filling a disk with zeroes or
   random data. Simply type diskutil list to see the path names of disks
   and removable media attached to your machine, and then point the
   command at the volume you want to operate on. Be careful: diskutil can
   permanently destroy data if it's used incorrectly.
 8. brew
    Alright-this isn't technically a native command. But no OS X power user
   should be without [15]Homebrew. The website calls it "The missing
   package manager for OS X," and that couldn't be truer. If you've ever
   used apt-get in Linux, you will feel right at home in Homebrew.^[16]3
    brew gives you easy access to thousands of free utilities and libraries
   from the open source community. For instance, brew install imagemagick
   will set you up with [17]ImageMagick, a powerful utility that makes it
   possible to do anything from whipping up animated gifs to converting
   images between dozens of different types. brew install node will
   introduce you to [18]NodeJS, the hot new tool for developing and
   running server-side JavaScript apps.
    You can have fun with Homebrew too: brew install archey will get you
   Archey, a cool little script for displaying your Mac's specs next to a
   colourful Apple logo. The selection in Homebrew is huge--and because
   it's so easy to create [19]formulas, new packages are being added all
   the time.
   [archey.png] Archey--My command line brings all the boys to the yard.
    But the best part about Homebrew? It keeps all its files in a single
   directory: /usr/local/. That means you can install newer versions of
   system software, such as python and mysql, without interfering with the
   built-in equivalents. And if you ever want to get rid of your Homebrew
   installation, it's easy to remove.
    Edit--May 15: Someone suggested to me that that you should not blindly
   delete the contents of /usr/local/. That's a fair precaution. To remove
   Homebrew safely, use the [20]uninstall script.
    For more fun with Terminal.app, here is an A-Z list of [21]all
   available console commands in OS X 10.9 Mavericks.
    1. Recall that OS X apps are not true executables, but actually
       special directories (bundles) with the extension .app. open is the
       only way to launch these programs from the command line. It can
       also launch other "files" that are truly bundles, such as Pages
       documents. [22]&#8617;
    2. https://www.youtube.com/watch?v=G0FtgZNOD44 [23]&#8617;
    3. In truth, Homebrew is more similar to FreeBSD's Ports system than
       Linux's apt. It uses a hybrid source/binary system: if no binary is
       available for a particular package it will simply download the
       source tarball and compile it--not a problem on today's multicore
       Macs. [24]&#8617;
    [25] [PERMALINK]
    [26]´ Coding for Journalists, Part 2: HTML -- Workflows, Nesting and
   Paragraphs
    [27](And eight hundred more) ª
 References
    1. http://mitchchn.me/feed.xml
   2. http://www.mitchchn.me/
   3. http://www.mitchchn.me/2014/os-x-terminal/
   4. https://twitter.com/share?text=Eight%20Terminal%20Utilities%20Every%20OS%20X%20Command%20Line%20User%20Should%20Know%20via%20@mitchchn&url=http://mitchchn.me/2014/os-x-terminal/
   5. http://www.mitchchn.me/feed.xml
   6. http://www.mitchchn.me/archive
   7. http://www.mitchchn.me/2014/and-eight-hundred-more/
   8. http://www.mitchchn.me/2014/os-x-terminal/#fn:bundles
   9. http://paul.annesley.cc/2012/09/mac-os-x-launchd-is-cool/
  10. https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html
  11. http://www.peterborgapps.com/lingon/
  12. http://www.apple.com/accessibility/osx/voiceover/
  13. http://www.mitchchn.me/2014/os-x-terminal/#fn:mac
  14. http://www.noodlesoft.com/hazel.php
  15. http://brew.sh/
  16. http://www.mitchchn.me/2014/os-x-terminal/#fn:compiling
  17. http://www.imagemagick.org/
  18. http://nodejs.org/
  19. https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook
  20. https://gist.github.com/mxcl/1173223
  21. http://ss64.com/osx/
  22. http://www.mitchchn.me/2014/os-x-terminal/#fnref:bundles
  23. http://www.mitchchn.me/2014/os-x-terminal/#fnref:mac
  24. http://www.mitchchn.me/2014/os-x-terminal/#fnref:compiling
  25. http://www.mitchchn.me/2014/os-x-terminal/
  26. http://www.mitchchn.me/2014/coding-for-journalists-p2/
  27. http://www.mitchchn.me/2014/and-eight-hundred-more/

Comments