15 ms·
Useful built-in macOS command-line utilities
- vbezhenar 2y agoFew additions. open -n file.pdf : opens new instance of Preview application which is useful if you want to open the same file twice (for example to look at different pages at once). caffeinate -d : prevents display turning off, useful if you want to look at display without moving mouse.
- wwader 2y agoopen -a is nice, i use it with alias, ex: alias qt='open -a "quicktime player"' alias vlc='open -a "vlc"'
- mjs 2y agoDoes `open` give focus? It used to, but since a few releases ago the app opens in the background, which is pretty annoying. My poor workaround is to use osascript: `tell application "System Events" to set frontmost of process "Finder" to true`
- masswerk 2y agoApparently, it does. There is a -g flag (background) to prevent focus.
- justletmein 2y agoIsn’t open opening apps in the background a consequence of having “secure keyboard entry” enabled in Terminal.app?
- troupo 2y ago`caffeinate -disu` is the best combination (that is, enable all options): your laptop won't go to sleep, won't dim the screem etc.
- 1ncorrect 2y agoI use this all the time: open -a <GUI Application> <File> Handy for distinguishing between editing and consuming media.
- alsetmusic 2y agoAlso, `cd .` to open the current directory in a Finder window. Not mine (found online years ago), but here's the opposite. `cd` into the frontmost Finder window: cd "$(osascript -e 'tell app "Finder" to POSIX path of (insertion location as alias)')";
- kps 2y agoYou mean `open .`
- alsetmusic 2y agoYeah, I had just woke up. Drat.
- sneak 2y agoYou can also just drag the proxy icon onto the terminal window for its path, ie “cd “ <drop>, enter.
- kstrauser 2y agoI use that all the time. You can also cmd-c copy a file in Finder then paste into the terminal to get its path.
- alsetmusic 2y agoI genuinely didn't know this. I would have thought I had to do the "copy as pathname" trick with a right-click while holding Option. I already knew the drag and drop feature, so this doesn't really save me time, but it's good to know another nice feature.
- hk1337 2y agoopen -a "Finder" . - open Finder in the current directory. Standard apps usually just need the name, like Finder and Safari but you can also specify the path "/Applications/DifferentFinder.app"
- ssttoo 2y ago`open .` works for me too
- hk1337 2y agoYeah, I scrolled a bit and noticed that. Never thought about using just that.
- 1-more 2y agoAlso `open -R path/to/file` opens Finder in the containing directory with the file highlighted (and thus scrolled into view). I use this with a script that takes a screen recording and trims some specified seconds off the end and converts it to mp4 to be smaller when I upload into a Github PR description. Easiest to drag and drop the converted file, y'see.
- nextos 2y agoFinder is pretty good, and it's handy to be able to open it from the terminal. But I find it super annoying it litters everything with .DS_Store files and there is no way to turn that off, except for external and network drives. Aside from, obviously, using a different file manager. Very un-Apple.
- nutrie 2y agoActually, .DS_Store is very Apple indeed (not that I care much).
- dwaite 2y agoThe .DS_Store files are not Finder specific; Apple treats everything as a file (including folders), and it exists to supply folders and the files within them with metadata. It is just the first time the .DS_Store file is needed is often when the folder is touched by Finder.
- impalallama 2y agocaffeinate -d is incredibly useful for work... uh reasons
- JasserInicide 2y agoJiggler is better for that at least from a set-it-and-forget-it perspective vs. caffeinate where you have to manually set it.
- seec 2y agoThat's one of macOS pitfalls: the inability to open 2 instances of the same app, simply using the default GUI is annoying sometimes. I think Windows is right in that matter...
- beancookies 2y agoAnother useful caffeinate tip is the `-w` option. You can use it to pass a pid to keep the computer awake until that process completes. I use it for longer-running scripts that I don't want interrupted
- justinsaccount 2y agoThat's mostly what `caffeinate your-script` is for.
- pantulis 2y agoafconvert is pretty nifty for audio format conversion.
- subarctic 2y agois it better than ffmpeg in any way?
- jammmety 2y agoApple's AAC encoders are often touted as being the 'best', quality-wise: https://hydrogenaud.io/index.php/topic,119876.0.html https://hydrogenaud.io/index.php/topic,119876.0.html
- lozf 2y agoAs jammmety said; for AAC encoding yes, but don't worry - you can have ffmpeg use that encoder to get the best of both.
- FabHK 2y agoafconvert is the only way I've managed to turn mp3s into something that Books would accept as an audiobook. afconvert -v -s 3 -f m4bf ....mp3
- urbandw311er 2y agoGreat tip about the `security` command, a new one for me.
- trynumber9 2y agosips https://ss64.com/mac/sips.html https://ss64.com/mac/sips.html
- janandonly 2y agoI have thousands of old photos that preview can open, but I can’t upload them into the photo.app because the file format is wrong. I’m going to try and use SIPS to convert them all into png first and then add to photo.app. Thanks for this pointer.
- FabHK 2y agoSimilarly, I've had trouble getting audio files into a format that the Books app understands (for ebooks), until I found afconvert -v -s 3 -f m4bf filename.mp3
- yen223 2y agosips looks really cool, thanks for pointing this out. Not gonna lie, I missed this because I thought it was related to macOS SIP, System Integrity Protection. Which is something I am deeply uninterested in.
- jftuga 2y agoNice. After reading the man page, I see that it can be used to convert image file formats: sips -s format png photo.HEIC --out photo.png or resizing: sips -z 300 600 original.jpg --out new.jpg
- hk1337 2y agoThat's cool. I wish it could convert webp images.
- latexr 2y agoIt can, but only from webp, not to.
- selectnull 2y agoTIL: caffeinate Very useful.
- vallode 2y agoIndeed, many applications I would expect to prevent sleeping (some audio playback ones, games, etc.) don't implement this. I assume it's a case of Apple's APIs changing over the years and not everyone catching up/caring. At one point I had downloaded Amphetamine[^1] but it is much nicer to just use the terminal here. [^1]: https://apps.apple.com/us/app/amphetamine/id937984704 https://apps.apple.com/us/app/amphetamine/id937984704
- m1keil 2y agoAlso https://github.com/newmarcel/KeepingYouAwake https://github.com/newmarcel/KeepingYouAwake
- galad87 2y agoThe "newest" and still supported low level API is almost 14 years old: https://developer.apple.com/documentation/iokit/kiopmassertiontypepreventuseridlesystemsleep/ https://developer.apple.com/documentation/iokit/kiopmasserti... https://developer.apple.com/documentation/iokit/kiopmassertiontypepreventuseridledisplaysleep https://developer.apple.com/documentation/iokit/kiopmasserti...
- keybored 2y agoI was able to install a `caffeine` package with Apt on Linux. In that one the `caffeinate` command is supposed to be run with another command. While the `caffeine` command does what macOs `caffeinate` does.
- huskyr 2y agoFor a GUI version, Amphetamine is quite nice (and free). https://apps.apple.com/us/app/amphetamine/id937984704?mt=12 https://apps.apple.com/us/app/amphetamine/id937984704?mt=12
- 2y ago
- semanticist 2y agoWant to scan the local wifi networks from the command line, and get useful information like signal strength? /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s I set a shell alias so I can just do `airport -s`. I've no idea why this is hidden away inside some framework and not in a directory which is in the normal path, but there you go.
- stunthamsterio 2y agoFWIW that appears to be soon deprecated according to MacOS 15.2: WARNING: The airport command line tool is deprecated and will be removed in a future release. For diagnosing Wi-Fi related issues, use the Wireless Diagnostics app or wdutil command line tool.
- semanticist 2y agoOh, that's a pity. I'm pretty bad at keeping up to date on MacOS releases, but I should probably start figuring out `wdutil` so that my muscle memory is adapted before I've got no choice!
- WorldPeas 2y agois there a way to do monitor mode scanning with wdutil like the `airport -s` command? asking for a friend...
- nxobject 2y agoIf you want the least useful macOS commandline utility, 'pdisk' is: "...a menu driven program which partitions disks using the standard Apple disk partitioning scheme described in "Inside Macintosh: Devices". It does not support the Intel/DOS partitioning scheme[.]"
- mcc1ane 2y agoRelated - https://news.ycombinator.com/item?id=36491704 https://news.ycombinator.com/item?id=36491704 "macOS command-line tools you might not know about"
- deleted 2y ago[deleted]
- tzs 2y agoHere's a handy use I've found for mdfind. Say you've got a directory that has scripts or data files related to some thing you do. For example I've got several scripts that I use when I scan books with my book scanner. I only need these when doing book scanning stuff so don't want to put them somewhere in $PATH. I want to be able to easily run them from scripts that aren't in that directory, but I don't want to hard code the path to that directory. Solution: in the directory with the book scanning scripts I make a file named ID that contains a unique string. I currently use 16 byte random hex strings [1]. I have this script, named find-dir-by-ID, somewhere in $PATH: #!/bin/zsh ID=${1:?Must specific ID} IDSHA=`echo $ID | shasum | cut -d ' ' -f 1` mdfind $ID 2>/dev/null | grep /ID | while read F; do FSHA=`shasum $F | cut -d ' ' -f 1` if [ $IDSHA = $FSHA ]; then dirname $F exit 0 fi done exit 1 If some script wants to use scripts from my book scanning script directory, it can do this: SCRIPT_DIR=`find-dir-by-ID 54f757919a5ede5961291bec27b15827` if [ ! -d $SCRIPT_DIR ]; then >&2 echo Cannot find book scanning scripts exit 1 fi and then SCRIPT_DIR has the full path to the scanning script directory. The IDs do not have to be hex strings. If I'd thought about it more I probably would have made IDs look like this "book-scanning:54f757919a5ede59" or "arduino-tools:3b6b4f47bf803663". [1] here's a script for that: #!/bin/sh N=${1:-8} # number of bytes xxd -g $N -c $N -p -l $N < /dev/urandom
- jeffhuys 2y agoWhy not just a directory with subdirectories by ID? No mdfind needed, no problems with just-created directories, no wait, etc
- tzs 2y agoYou mean something like having ~/well-known-stuff and under that having a 54f757919a5ede5961291bec27b15827 directory with the book scanning scripts and so on? That could work fine, but generally the directories I've used this on are directories that I want to have somewhere else, and with a reasonable name. Usually the directories came first and various other things in fixed relative positions were using them, and then later I wanted to use them from elsewhere and added the ID. I suppose ~/well-known/stuff/54f757919a5ede5961291bec27b15827 could by a symbolic link to the original. The mdfind approach does have the advantage that if I reorganize things and move the directory it keeps working.
- huskyr 2y agoI've never heard of networkQuality, that's seems like quite a useful tool.
- latexr 2y agoFor reference, it’s been there since macOS 12. You may also like to know that this year (macOS 15) they added jq.
- huskyr 2y agoI didn't know that, thanks!
- dmd 2y agoUnfortunately, it's not actually very useful, as whatever server they're using on the other end is severely constrained. networkQuality gives me: Downlink: 884.856 Mbps, 198 RPM - Uplink: 13.238 Mbps, 198 RPM whereas speedtest (whether to the official speedtest server OR a friend's home server in their basement!) gives ~700 Mbps uplink.
- Doctor_Fegg 2y agofs_usage is my favourite - find out what's thrashing the disk. (Usually Spotlight or Spark...)
- lagrange77 2y agoNot a command, but a little known feature of the Terminal app: (shift+command+K) or Menu 'Shell' -> 'New Remote Connection...' opens a SSH, S(FTP), TELNET connection manager window!
- e40 2y agoSort of like command+k in the Finder, connects to a server. You can type in vnc://host or vnc://localhost:port... the latter is for VNC to hosts via an SSH tunnel. It's quite a good VNC client, too.
- FabHK 2y agoAnd sometimes handy: shift+cmd+. to toggle showing hidden (dot) files in Finder.
- msanlop 2y agoIt's too bad this doesn't use .ssh/config
- l33tman 2y agoAs they seem to have removed Bluetooth Explorer and all ways to get diagnostic info about the bluetooth system and/or change codecs and settings, does anybody know any good cmdline ways in later mac osxes to do the same? For example I'm having a problem that comes and goes now and then where Bluetooth audio is 300 ms delayed compared to the video playback everywhere except in Youtube on Safari, very strange. It's good for a few months then suddenly it becomes unusable, then back to zero sync delay after a few months. I was thinking this might be related to CODEC selections etc or some hidden setting that might get changed which we normally aren't allowed to determine :) (btw I know there is a difference between latency and synchronization - latency might be unavoidable but video sync should always be able to compensate - I got curious on how exactly that works, where in the app / SDK / OS pipeline does the a/v sync happen on a Mac?)
- leecoursey 2y agoSee: https://chatgpt.com/share/672b94e1-4c20-8001-aea9-9371b4e9d9b9 https://chatgpt.com/share/672b94e1-4c20-8001-aea9-9371b4e9d9... Also: https://github.com/toy/blueutil https://github.com/toy/blueutil
- l33tman 2y agoThanks.. but that github program only lists the same info you get if you command-click on the BT icon in the menu bar. It basically only shows the device name. I guess filtering the streaming log entries in the Console app gives some info.
- 10729287 2y agoIt misses the most important of them all, if you are used to copy content to usb drive for reading on a multimedia player : dot_clean -m
- __m 2y ago$ say Hello To scare your teammates when you are logged in remotely optionally with $ osascript -e "set volume output volume 100"
- pseufaux 2y agoI'll add `plutil` to the list. It's great for reading plist files, but did you know it can parse json too? /usr/bin/plutil -extract your.key.path raw -o - - <<< "$jsoninput" (obviously, less useful now that `jq`is built in)
- jonpalmisc 2y ago; which jq /usr/bin/jq ; jq jq - commandline JSON processor [version 1.6-159-apple-gcff5336-dirty] Wow. When did `jq` start shipping by default? TIL
- pseufaux 2y agoStarting in macOS 15, it was quietly included. Glad to spread the good word ;)
- hk1337 2y ago> obviously, less useful now that `jq`is built in Hold up, what?
- Bengalilol 2y agoThere is also pmset which is very useful (since macOS doesn't give a UI counterpart) https://support.apple.com/en-am/guide/mac-help/mchl40376151/mac https://support.apple.com/en-am/guide/mac-help/mchl40376151/...
- yen223 2y agoOh this is pretty neat, thanks for sharing! https://ss64.com/mac/pmset.html https://ss64.com/mac/pmset.html
- jftuga 2y agoI have this .zshrc function to track the battery and charging, which uses pmset: function batt-info() { echo system_profiler SPPowerDataType | grep Wattage | cut -c 7- echo pmset -g batt }
- redman25 2y agoI've found reliably "turning on" with pmset to be hit or miss. I can't remember the gotcha I ran into if it was that you had to have your laptop lid open or something else...
- Bengalilol 2y agoYes. If macOS is asleep or idle, pmset won't get triggered. It is best used with caffeinate. I used it for a museum installation where every night I'd turn it off before they cut the electricity and turn it on in the morning just after electricity is switched back on: it was a way for me to be in peace with my conscience (though after some tests, the mac didn't bother getting switched off by cutting out the electricity).
- gkfasdfasdf 2y agopbcopy and pbpaste are handy, for a version that works over ssh connections there is osc: https://github.com/theimpostor/osc https://github.com/theimpostor/osc
- pmarreck 2y agosince I switch between linux and macos a lot I wrote a dotfile function called "clip" that will work the same on both. nice thing is it will automatically paste if nothing is piped to it to copy so there's no need to use separate commands... although I just realized it might be nice to have a "passthrough" mode that both copies and pastes if you add this to a pipeline in order to capture some intermediate part to the clipboard if [[ "$(uname)" == "Darwin" ]]; then clip() { [ -t 0 ] && pbpaste || pbcopy } else # assume linux if not macos clip() { [ -t 0 ] && xclip -o -selection clipboard || xclip -selection clipboard } fi
- gkfasdfasdf 2y agoThat's handy, thanks! `osc copy` may also take args for files to copy to the clipboard, but in the absence of that and no data on stdin it maybe should switch to paste.
- hk1337 2y agoI went the route of managing a different set of dotfiles for linux and macOS. Same repository, just different branches. Also, falling back to using oh-my-zsh functionality.
- hk1337 2y agoI copied this functionality to linux it's been so useful.
- pak9rabid 2y agoAt my job I have to work with a lot of JSON that's usually minimized. This command has single-handedly saved my sanity: $ pbpaste | jq | pbcopy Then I can paste it into whatever text editor I want and it's all nice & pretty-printed for me. Bonus is that I don't have to change the command at all, just copy the minimized JSON to the clipboard (say from DBeaver, for example), then hit the 'up' arrow and enter.
- reaperducer 2y agomdls shows a file's metadata. I use it most often for pulling lat lon data from photos.
- extraduder_ire 2y agoLooks like a lot of these have linux equivalents that could be aliased. I wonder if anyone's made a set of those for regular macos users who occasionally use something else.
- westurner 2y agoupgrade_mac.sh: https://github.com/westurner/dotfiles/blob/develop/scripts/upgrade_mac.sh https://github.com/westurner/dotfiles/blob/develop/scripts/u... : upgrade_macos() { softwareupdate --list softwareupdate --download softwareupdate --install --all --restart }
- zazaulola 2y agoTo find what causes your laptop drains its battery, you can use sudo powermetrics
- unsupp0rted 2y agoThanks Spotify: coreaudiod is using very high CPU at 111.90 ms/s I'm on a 16" M1 Macbook Pro 16 gig.
- seec 2y agoIf spotify use the coreaudio daemon for the decoding it can be spotify's fault for this CPU usage, don't you think ? Maybe they are using it "wrong" but Apple Music isn't exactly light on ressource either...
- zitterbewegung 2y agoThe terminal version of Disk Utility is actually much better than the GUI (it doesn't hang and the app is glitchy. Docs are at https://ss64.com/mac/diskutil.html https://ss64.com/mac/diskutil.html
- zazaulola 2y ago`pdisk` might be more convenient if you've worked with `gdisk` on ArchLinux https://manpagez.com/man/8/pdisk/ https://manpagez.com/man/8/pdisk/
- e40 2y agodiskutil does more than edit partitions, though.
- Tsiklon 2y agoIf you have a modern Mac you have very little business using `pdisk`. It is only for editing disks mapped with an “Apple Partion Map”. This is obsolete replaced in practice by GPT on modern apple machines.
- zazaulola 2y ago`gdisk` supports GPT, but to partition system SSD you need to deactivate System Integrity Protection: gdisk /dev/disk0
- e40 2y agoOr "man diskutil"
- seec 2y agoDisk Utility used to be excellent, a model of how an app should be. But then they rewrote it in Swift and now it's just bad. Apple promotes Swift heavily but the results are not really encouraging. I don't think the "so-so" results are entirely because of Swift (probably due to newer, less battle tested software and also newer/younger devs) but still the fact is, all the not-so-great new software from Apple came with Swift rewrites, hard to not make a connection...
- antononcube 2y agoI would like to also recommend the app: hear (macOS speech recognition and dictation via the command line) See: https://sveinbjorn.org/hear https://sveinbjorn.org/hear (Uses built-in macOS capabilities for transcription from audio to text.)
- xpe 2y agoIts open source GitHub repo at https://github.com/sveinbjornt/hear https://github.com/sveinbjornt/hear Man page at https://sveinbjorn.org/files/manpages/hear.1.html https://sveinbjorn.org/files/manpages/hear.1.html > (Uses built-in macOS capabilities for transcription from audio to text.) Question (to self, currently researching)... Which capabilities? Released when? I ask because Apple Intelligence has expanded the use of audio transcription features. Answer: `hear` uses SFSpeechRecognizer [1] which has been available since macOS 10.15. I'm not yet sure how it relates to Apple Intelligence transcription services. Note: "speech recognition is a network-based service" which perhaps suggests Apple Intelligence (the marketing term, not an Apple Developer term, I don't think) uses it as well [1][ https://developer.apple.com/documentation/speech/sfspeechrecognizer https://developer.apple.com/documentation/speech/sfspeechrec...
- e40 2y agoI thought I recognized the name of the developer! The person that brought us Platypus! Nice.
- alsetmusic 2y agoI used Platypus to make my simple command line tools accessible to coworkers who considered the command line to be "too much" to learn. I've loved that app for close to two decades.
- hk1337 2y ago> which hear > hear not found macOS 15.1
- dmix 2y ago
- llimllib 2y agoI maintain a more comprehensive list here: https://notes.billmill.org/computer_usage/mac_os/mac_os_command_line_programs.html https://notes.billmill.org/computer_usage/mac_os/mac_os_comm... But I don’t have uuidgen!
- simonw 2y agoI'm fascinated by "sips" which has a full JavaScript interpreter built into it for rendering images using an entirely undocumented (as far as I can tell) Canvas-like API: https://til.simonwillison.net/macos/sips https://til.simonwillison.net/macos/sips
- cantSpellSober 2y agoTinkerTool provides a GUI that runs some useful commands under the hood https://www.bresink.com/osx/0TinkerTool/download.php https://www.bresink.com/osx/0TinkerTool/download.php
- adolph 2y ago> If you store your secrets in the Keychain (and you should!) As part of the OS, Keychain suffers from the same sorts of sharp edges as using a built-in interpreter. An alternative is to use a password manager. Below is an example of the tools available in one. https://developer.1password.com/docs/cli/get-started/#step-1-install-1password-cli https://developer.1password.com/docs/cli/get-started/#step-1...
- joemi 2y agoWould you mind expanding on what these "sharp edges" are that you're warning about? I'm not really sure what you mean by this. Keychain has served me (and I imagine many others) really well for a while.
- xpe 2y agoMy non-built-in CLI utility recommendations, none of which are macOS specific: * atuin - TUI for shell history, backed by SQLite - https://github.com/atuinsh/atuin https://github.com/atuinsh/atuin * LSD (LSDeluxe) - rewrite of `ls` - https://github.com/lsd-rs/lsd https://github.com/lsd-rs/lsd * ripgrep - https://github.com/BurntSushi/ripgrep https://github.com/BurntSushi/ripgrep * fzf - command-line fuzzy finder that enhances file search, command history search, and more - https://github.com/junegunn/fzf https://github.com/junegunn/fzf Notes: - To get pretty extra file/folder symbols with LSD, you'll probably need to install some special fonts. - You can use `fzf` and `ripgrep` together.
- doodpants 2y agoThis article contains links to https://ss64.com/ https://ss64.com/ , which is an amazing resource that I wish I'd known about sooner!
- yen223 2y ago100% That's why I made it a point to share that page. I still get a ton of mileage from reading the macOS How-to page https://ss64.com/mac/syntax.html https://ss64.com/mac/syntax.html
- ss64 2y agoThanks for the kind words, I'll be scanning this thread to see if there's anything new that I've missed.
- onnimonni 2y agoWhat I'm really missing still is a cli to iCloud stored passwords. AFAIK 'security' cli can't access the credentials stored in the cloud. This would be helpful to store secrets outside of git but would still allow scriptable access to them similarly as 1password cli 'op' has.
- zikduruqe 2y agolocate https://ss64.com/mac/locate.html https://ss64.com/mac/locate.html locate searches a database for all pathnames which match the specified pattern. The database is recomputed periodically, (about once a week) and contains the path-names of all files which are publicly accessible.
- chasil 2y agoSince Apple spent so much effort in getting certified: https://www.opengroup.org/openbrand/register/ https://www.opengroup.org/openbrand/register/ These are all guaranteed to work: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ (I may not have linked to the precisely correct version.)
- 123sereusername 2y ago[dead]
- jlv2 2y ago"I like to look at the list of macOS Bash commands." Sigh. These are shell commands, not "Bash commands".
- alexvitkov 2y agoThese are programs, not shell commands.
- awkward 2y agoEven calling them "zsh commands" would have been more accurate.
- bowsamic 2y agoIf you're going to correct someone snarkily, don't make a similar mistake...
- noja 2y agoDoes anyone remember the shortcut that brings up a list of currently available keyboard shortcuts for the current app? It may not be built-in, in which case it was a free utility.
- leecoursey 2y agoCheatsheet? I've used it for years. Just hold down Command for a few seconds to see a list of all available shortcut keys in the current app. https://www.mediaatelier.com/CheatSheet/feedNotes.php https://www.mediaatelier.com/CheatSheet/feedNotes.php https://formulae.brew.sh/cask/cheatsheet https://formulae.brew.sh/cask/cheatsheet
- hk1337 2y agoplutil. Maybe not that useful to a lot of people but I have been going through and collecting bookmarks and Safari bookmarks are binary files. plutil is a means of converting the binary property file to a json or xml file. https://keith.github.io/xcode-man-pages/plutil.1.html https://keith.github.io/xcode-man-pages/plutil.1.html
- zazaulola 2y agoIt's probably been written about a lot of places already. For me, increasing the number of icons in the launcher grid was very useful. After running these three commands, the size of the Launcher will be set to 13x8 apps: defaults write com.apple.dock springboard-columns -int 13 defaults write com.apple.dock springboard-rows -int 8 defaults write com.apple.dock ResetLaunchPad -bool TRUE; killall Dock In general, a lot of parameters of different applications can be changed via command `defaults` https://macos-defaults.com/ https://macos-defaults.com/ To get a complete list of parameters, you can execute defaults read
- BasilPH 2y agoI got this trick from someone on the Internet: $> long_running_command && say "Witness me, for I am done"
- jfb 2y agoYep, I do this in a tmux session. But sometimes I'm on a call and forget and the ROBOT VOICE says "DATABASE DUMP IS COMPLETE" and I jump out of my skin.
- jasomill 2y agocliclick[1] is useful for gap-filling the AppleScript accessibility APIs when automating poorly-behaved applications. [1] https://github.com/BlueM/cliclick https://github.com/BlueM/cliclick
- daneel_w 2y agoA couple more: afconvert(1) - an audio file format converter, which includes Apple's superior AAC codec from the Core Audio framework diskutil(8) - tons of tools for fixed and removable storage Examples: afconvert in.wav -o out.m4a -q 127 -s 2 -b 160000 -f m4af -d 'aac ' mb=300; diskutil eraseVolume APFS myramdisk `hdiutil attach -nomount ram://$((mb*2048))`
- jghn 2y ago> afconvert Oh wow! A while back I ripped some concert audio from Youtube, but it was too large for me to sync using my `iTunes Match`. I've been too lazy to figure out how to downsample it juuuuust enough. But it looks like this works right out of the box
- hk1337 2y agoHow does that compare with ffmpeg? The arguments seem about the same.
- krackers 2y agoafcovert uses the superior inbuilt AAC converter. FFmpeg can do this as well with the right arguments but you have to dig them up and the quality is capped to a lower value than you can get with afconvert.
- anthk 2y agoThere's no reason to use AAC when we have both OPUS and FLAC.
- daneel_w 2y agoI have three reasons: when using a good encoder (Core Audio, FDK or Nero) it's a quality-wise better lossy format than MP3, it's smaller than FLAC which matters for storage footprint, and unlike Opus and FLAC it's supported pretty much everywhere. At some point Opus will reach the same level of adoption and that's the point where I'll make the switch from AAC, because Opus is evidently a better lossy encoder per same bitrate.
- cglong 2y agoOne-liner for previewing a file with Quick Look. I aliased this to `ql` :) qlmanage -p $argv >/dev/null 2>&1
- hk1337 2y agoI'm curious if there's a way to do this with standard input instead of having to supply a filename? I do this with man pages but it opens up in a full Preview window, not QuickLook.
- archargelod 2y agoYou can use process substitution[0] to have a command output act as a file: qlmanage -p <(man man) >/dev/null 2>&1 0 - https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html https://www.gnu.org/software/bash/manual/html_node/Process-S... (it works in zsh too, but bash manual explains this feature more clearly)
- RandallBrown 2y agoA fun easter egg in the "say" command is that "OS X" is said as "Oh Ess Ten". You can also change voices with -v. My favorite is "cellos" since it sings to you.
- robertoandred 2y agoNot sure that's an easter egg? That's been the pronunciation for 25 years.
- mholm 2y agoIt's at least manually programmed in. Otherwise it would have said 'Ecks'
- staplung 2y agoIt actually understands roman numerals, to a certain extent. E.g. `say LVIII` will say "58". However, `say MCMLXXIX` speaks some gibberish that ends in the word "six", for some reason. It also knows how to say numbers up into the trillions but not more than that (although I feel like it used to).
- ramses0 2y agoOther cute `say` tricks: muck around with OSX Default Speech Voice (to a siri-ish voice) and you can invoke that from the CLI. I hacked together a little script for demo recording like: START_FROM="$1" STARTED=0 function transcript() { ID="$1" TO_SAY="$2" if [[ ...STARTED || START_FROM && ID... ]]; then STARTED=1 say "$TO_SAY" fi } transcript "STEP001" "This is a test" transcript "STEP001b" "of the emergency broadcast system" transcript "STEP002" "This is only a test, if this was ..." transcript "STEP003" "...etc..." ...and then I have a hardcoded `--output` which will then change the invocation to `say -o "$ID.wav" "$TO_SAY"` and output audio files. That way I can iterate on voiceover scripts, eg: `./demo-script "STEP002"` => `./demo-script --output` It's really helpful for iterating on pronunciations, eg: `transcript "STEP005" "In case of Four Hundred and Four errors..."`, I can just "skip to" and iterate against that line (and subsequent ones), or "skip back" and hear it in more of a flowing context. ...even if I don't end up using the `say`-generated audio, having a transcript (and even pacing) that I can just read through with my own voice is super helpful.
- deleted 2y ago[deleted]
- beeandapenguin 2y agoLooks like the site's down. https://archive.is/kGmn6 https://archive.is/kGmn6
- yen223 2y agoThanks for the heads up! It should be back up now
- terminaltrove 2y agoAlthough not built in, we have a list of easy to install command-line utilities for macOS. https://terminaltrove.com/categories/macos/ https://terminaltrove.com/categories/macos/ You might find one you've never heard of that is useful! :)
- dhruvkb 2y agoI found a tool of mine submitted by someone else on the site (pleasant surprise!) and I want to update the description and add a more recent/better image. How would I do that?
- terminaltrove 2y ago[dead]
- sureIy 2y agoKinda related: does anyone else regularly finds CLI tools, installs them and never ever even call them once?
- blacksmith_tb 2y agoHa, when I search through my history I usually find I ran them exactly once, right after installing, and then forgot all about them. But there are some exceptions, I often use httpie instead of curl, MTR is great, I am liking doggo instead of dig...
- downrightmike 2y agoThat's the difference between recall memory and recognition memory. The GUI took off because we can recognize a menu and easily figure out where we need to go, versus having to memorize obscure and cryptic commands. Honestly having a LLM spit out command line arguments is probably the best way forward if things don't have a GUI.
- deleted 2y ago[deleted]
- JohnMakin 2y agopbcopy is my favorite. Almost enough to prefer a mac over my usual linux stations, but you can get that on linux easy enough.
- deleted 2y ago[deleted]
- WorldPeas 2y agoshameless plug for my mac lsblk port https://github.com/JakeTrock/gosblk https://github.com/JakeTrock/gosblk
- noname120 2y agohttps://ss64.com/mac/ https://ss64.com/mac/
- BossingAround 2y agoI'm sure everyone knows this, but `open` has an equivalent on Linux: `xdg-open`.
- Affric 2y agoExcept xdg mime types are easily heist-able by programs and there is no universal truth for it. Install vscode on Linux and have fun with it hijacking opening directories. Which is easy enough to fix (with a bit of know how) or work around but annoying. MacOS is far from perfect but open always doing what I expect is a good example of what Apple did well.
- runjake 2y agoMore: nc(1) - netcat, arbitrary TCP and UDP connections and listens networkQuality - Speed test + network stress tool. system_profiler(8) - Useful way to grab extensive system information in shell scripts. wdutil(8) - wdutil provides functionality of the Wireless Diagnostics application in command line form.
- throwaway314155 2y agonetworkQuality is in the article.
- cwales95 2y agoI actual wrote a similar post a while back: https://www.chriswales.uk/blog/my-favourite-macos-terminal-commands-and-tools/ https://www.chriswales.uk/blog/my-favourite-macos-terminal-c... networksetup was one of my favourites as well as du and caffeinate. The 'security' command is new to me so thanks!
- dozzman 2y agoThere is also 'say' which is great if you need to step away from a long running command, in a similar fashion to ringing the terminal bell but with more context.
- throwaway314155 2y agoThat's in there.
- jasoneckert 2y agoAnd for those of us who have to support macOS users: sw_vers (to display the version/build of macOS), dsenableroot (to enable the root user), and say "phrase" (useful for freaking out users over a remote SSH connection)
- wapxmas 2y ago"what other operating systems might call the "clipboard"" might
- bobthedino 2y agoOther operating systems… including what was running on the Mac in 1984?
- amai 2y agoTime Machine utility, examine and manipulate Time Machine backups, restore data from backups, add or remove exclusions, and compare backups https://ss64.com/mac/tmutil.html https://ss64.com/mac/tmutil.html
- wodenokoto 2y agopbcopy and pbpaste are among my top commandline utilities. If you are running linux in WSL, you can add the following to you path to recreate their functionality: # pbpaste #!/bin/bash # Adapted from https://www.techtronic.us/pbcopy-pbpaste-for-wsl/ powershell.exe Get-Clipboard | sed 's/\r$//' | sed -z '$ s/\n$//' exit 0 and # pbcopy #!/bin/bash #Adapted from https://www.techtronic.us/pbcopy-pbpaste-for-wsl/ <&0 clip.exe exit 0
- dhosek 2y agoI just remembered at a previous job where we were always paired and used team rather than individual iMacs for development that as a prank I ssh’d into the other iMac from my team and periodically would run open on a random URL which caused a Safari window to mysteriously pop up their system.
- M04R_PYL0N5 2y agostoked they baked in caffeine to macos, such a useful utility.
- kid1412621 2y agoHow about launchctl