Title: osx101 Subject: little notes on using osx ------------------------------------------------------ Get Gatekeeper off you back about un-notarized stuff REF: stolen from https://www.elastic.co/guide/en/logstash/current/running-logstash-command-line.html xattr -d -r com.apple.quarantine =10.8, such that it is not in the default path. The default /etc/sshd_config on osx has these lines: X11Forwarding no #XauthLocation xauth # Default is to search $PATH (set by launchd(8)). It is recommended that a full path be provided. Well, Apple geniuses, since xauth ain't in the path, why make that a default? When you ssh to the system, you will get errors like this: ssh -Y -v my_user@my_mac No xauth program; cannot forward with spoofing debug1: Remote: No xauth program; cannot forward with spoofing. X11 forwarding request failed on channel 0 Trying to forward a X applicaiton fails (I installed mac ports xeyes) xeyes debug1: client_input_channel_open: ctype x11 rchan 3 win 65536 max 16384 debug1: client_request_x11: request from 192.168.60.39 49153 debug1: channel 1: new [x11] debug1: confirm x11 X11 connection rejected because of wrong authentication. debug1: channel 1: free: x11, nchannels 2 Error: Can't open display: buildmac4.eng.msli.com:10.0 Make the following chnages: sudo vi /etc/sshd_config X11Forwarding yes XauthLocation /opt/local/bin/xauth sudo reboot Research REF: http://lists.apple.com/archives/x11-users/2012/Jul/msg00027.html ------------------------------------------------------ Configure subversion to us a gui diff tool REF: http://smokingapples.com/software/reviews/filemerge-review/ Osx has FilemMerge A wrapper shell scirpt is needed to make this work. cd ${HOME}/ svn co http://soft.vub.ac.be/svn-gen/bdefrain/fmscripts "${HOME}/fmscripts" I had to change the FM variable in fmdiff: vi ${HOME}/fmscripts/fmdiff FM="/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge" sed -i '' -e 's|^FM=.*|FM="/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge"|' \ ${HOME}/fmscripts/fmdiff \ ${HOME}/fmscripts/fmdiff3 \ ${HOME}/fmscripts/fmmerge \ ${HOME}/fmscripts/fmresolve # # This is my subverison client configuation # egrep -v '^#|^$' ~/.subversion/config [auth] [helpers] editor-cmd = /opt/local/bin/vim diff-cmd = /Users/admin/fmscripts/fmdiff diff3-cmd = /Users/admin/fmscripts/fmdiff3 merge-tool-cmd = /Users/admin/fmscripts/fmmerge [tunnels] [miscellany] [auto-props] now "svn diff", "svn merge", etc, will use the FileMerge program. You have to quit FileMerge to advance to the next file. You are presented with one doc on the left, one on the right, and composit on the bottom drawr (you may have to lift up) . command + down_arrow : jump to next difference command + left_arrow : add left doc to composit command + right_arrow: add right doc to composit ------------------------------------------------------ Update list of packages: sudo port -d selfupdate Update installed packages: sudo port upgrade outdated Find a package port search meld port search tmux Install a package sudo port install meld Show dependencies of one packge on others sudo port deps meld Uninstall a package sudo port uninstall meld Uninstall older versions of packages (say you have 2 versions, this removes the older) sudo port -f uninstall inactive Delete downloaded pakcage installer sudo port clean –all installed Delete all downloaded package installers sudo port clean –all all ------------------------------------------------------ Type Or Edit Path In Finder CMD + SHIFT + G ------------------------------------------------------ I had a situation where a dead program had created a shared memory area, a new instance of the program would not start Until I cleared the previous shared memory area. This is the incantation ipcs -ma | awk '/^m / { if ($9 == 0) { print $2 }}' | xargs -n 1 ipcrm -m ------------------------------------------------------ osx sed is different: http://stackoverflow.com/questions/2320564/variations-of-sed-between-osx-and-gnu-linux if you want an in place sed... sed -i "" -e 's|x|y|' test ------------------------------------------------------ Where is java installed on osx For a specific release, you can see what the system is using: JAVA_HOME="$(/usr/libexec/java_home -v 1.7)" Paths I have found so far: /Library//Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /Library//Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java /Library//Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/bin/java /Library//Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java /Library//Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java /Library//Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/java /Library//Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/bin/java ------------------------------------------------------ Text: komodo-edit or textwranger Diff: opendiff (in xcode), or Kaleidoscope ------------------------------------------------------ Java is all messed up The transition from Apple to Oracle is not smooth, nor complete. Java Preferences does not set the right verison of java if Apples verison of java is still sticking around. Java7 - Oracles' java: /Library/Internet Plug-Ins/JavaApplePlugin.plugin/Contents/Home/bin/java /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java java6 - Apple's java: /System/Library/Frameworks/JavaVM.framework/Version/A/Commands/java which java /usr/bin/java ls -alF /usr/bin/java /usr/bin/java@ -> /System/Library/Frameworks/JavaVM.framework/Version/A/Commands/java java -version Java HotSpot(TM) 64-Bit Server VM (build 20.51-b-1-457-11M4509) echo "$JAVA_HOME" /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home readlink /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJD /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK@ -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents #----------------------------------------------------- # BEGIN ~/.bash_profile #----------------------------------------------------- # For an autobuild systen, I would probably mess with the path and set JAVA_HOME # cat >> ~/.bash_profile <<'EOF' export JAVA_HOME="$( /usr/libexec/java_home -v 1.7)" export PATH="${JAVA_HOME}/bin":$PATH # MacPorts Installer addition on 2012-05-08_at_15:06:51: adding an appropriate PATH variable for use with MacPorts. export PATH=$PATH:/opt/local/bin:/opt/local/sbin # --------------------------------------------------------------------------- # # Description: This file holds all my BASH configurations and aliases # # Sections: # 1. Environment Configuration # 2. Make Terminal Better (remapping defaults and adding functionality) # 3. File and Folder Management # 4. Searching # 5. Process Management # 6. Networking # 7. System Operations & Information # 8. Web Development # 9. Reminders & Notes # # --------------------------------------------------------------------------- # ------------------------------- # 1. ENVIRONMENT CONFIGURATION # ------------------------------- # Change Prompt # ------------------------------------------------------------ export PS1="________________________________________________________________________________\n| \w @ \h (\u) \n| => " export PS2="| => " # Set Paths # ------------------------------------------------------------ export PATH="$PATH:/usr/local/bin/" export PATH="/usr/local/git/bin:/sw/bin/:/usr/local/bin:/usr/local/:/usr/local/sbin:/usr/local/mysql/bin:$PATH" # Set Default Editor (change 'Nano' to the editor of your choice) # ------------------------------------------------------------ export EDITOR=/usr/bin/nano # Set default blocksize for ls, df, du # from this: http://hints.macworld.com/comment.php?mode=view&cid=24491 # ------------------------------------------------------------ export BLOCKSIZE=1k # Add color to terminal # (this is all commented out as I use Mac Terminal Profiles) # from http://osxdaily.com/2012/02/21/add-color-to-the-terminal-in-mac-os-x/ # ------------------------------------------------------------ # export CLICOLOR=1 # export LSCOLORS=ExFxBxDxCxegedabagacad # ----------------------------- # 2. MAKE TERMINAL BETTER # ----------------------------- alias cp='cp -iv' # Preferred 'cp' implementation alias mv='mv -iv' # Preferred 'mv' implementation alias mkdir='mkdir -pv' # Preferred 'mkdir' implementation alias ll='ls -FGlAhp' # Preferred 'ls' implementation alias less='less -FSRXc' # Preferred 'less' implementation cd() { builtin cd "$@"; ll; } # Always list directory contents upon 'cd' alias cd..='cd ../' # Go back 1 directory level (for fast typers) alias ..='cd ../' # Go back 1 directory level alias ...='cd ../../' # Go back 2 directory levels alias .3='cd ../../../' # Go back 3 directory levels alias .4='cd ../../../../' # Go back 4 directory levels alias .5='cd ../../../../../' # Go back 5 directory levels alias .6='cd ../../../../../../' # Go back 6 directory levels alias edit='subl' # edit: Opens any file in sublime editor alias f='open -a Finder ./' # f: Opens current directory in MacOS Finder alias ~="cd ~" # ~: Go Home alias c='clear' # c: Clear terminal display alias which='type -all' # which: Find executables alias path='echo -e ${PATH//:/\\n}' # path: Echo all executable Paths alias show_options='shopt' # Show_options: display bash options settings alias fix_stty='stty sane' # fix_stty: Restore terminal settings when screwed up alias cic='set completion-ignore-case On' # cic: Make tab-completion case-insensitive mcd () { mkdir -p "$1" && cd "$1"; } # mcd: Makes new Dir and jumps inside trash () { command mv "$@" ~/.Trash ; } # trash: Moves a file to the MacOS trash ql () { qlmanage -p "$*" >& /dev/null; } # ql: Opens any file in MacOS Quicklook Preview alias DT='tee ~/Desktop/terminalOut.txt' # DT: Pipe content to file on MacOS Desktop # lr: Full Recursive Directory Listing # ------------------------------------------ alias lr='ls -R | grep ":$" | sed -e '\''s/:$//'\'' -e '\''s/[^-][^\/]*\//--/g'\'' -e '\''s/^/ /'\'' -e '\''s/-/|/'\'' | less' # mans: Search manpage given in agument '1' for term given in argument '2' (case insensitive) # displays paginated result with colored search terms and two lines surrounding each hit. Example: mans mplayer codec # -------------------------------------------------------------------- mans () { man $1 | grep -iC2 --color=always $2 | less } # showa: to remind yourself of an alias (given some part of it) # ------------------------------------------------------------ showa () { /usr/bin/grep --color=always -i -a1 $@ ~/Library/init/bash/aliases.bash | grep -v '^\s*$' | less -FSRXc ; } # ------------------------------- # 3. FILE AND FOLDER MANAGEMENT # ------------------------------- zipf () { zip -r "$1".zip "$1" ; } # zipf: To create a ZIP archive of a folder alias numFiles='echo $(ls -1 | wc -l)' # numFiles: Count of non-hidden files in current dir alias make1mb='mkfile 1m ./1MB.dat' # make1mb: Creates a file of 1mb size (all zeros) alias make5mb='mkfile 5m ./5MB.dat' # make5mb: Creates a file of 5mb size (all zeros) alias make10mb='mkfile 10m ./10MB.dat' # make10mb: Creates a file of 10mb size (all zeros) # cdf: 'Cd's to frontmost window of MacOS Finder # ------------------------------------------------------ cdf () { currFolderPath=$( /usr/bin/osascript <