Mac


1. 权限问题

如果有过linux基础的人,就会明白这个权限问题。其实Unix的系统,都是一个root用户,然后自己创建其他用户使用。用户和用户之前通过权限互相独立。

对一般的用户而言,不需要太关注这个权限问题,但是对程序员来说,这一点应该是必知必会的。不然我们常常会被npm install -g xx出现的报错而不知所措。

1.1. root:“超级用户”

在 Mac OS X 中,在安装系统时将会创建一个名为 root 的超级用户。 root 用户对计算机上的所有文件和文件夹都有完全的访问权限,并且还具有一般用户没有的其他管理访问权限。在计算机的正常使用中,您并不需要以 root 用户的身份登录。事实上,默认情况下, root 用户是被禁用的。

1.2. 普通用户

mac系统创建的用户,会和root在一个group中,一般叫做staff或者admin。root用户的权限高于其他用户。

1.3. 定义的权限

  • 读取 (r--)
  • 写入 (-w-)
  • 执行 (--x)

当您可以做到所有三种操作时,您就拥有了“rwx”权限。文件夹的权限与此类似。具有内含文档的文件夹的只读权限,您可以打开和读取其中的文档,但不能保存对该文件夹所做的更改,也不能为该文件夹添加新的文档。只读 (r--) 权限是常用于客户访问的文件共享。

1.4. 所有者、组、其他

像“rwx”和“r-x”这样的简写描述了一个用户或一个实体的权限。每个文件或文件夹的权限设置都定义了三个实体的访问能力:所有者、组和其他。

  • 所有者: 所有者通常是创建该文件的用户。在您的 root 目录下的几乎所有文件和文件夹都将您的用户名列作所有者。
  • 组: Admin 用户就是一些被称为“staff”和“admin”的组的成员。超级用户“root”是这些及其他一些组的成员。通常情况下,所有文件和文件夹都被分配到“staff”、“admin”或“wheel”等组中。
  • 其他: 其他是指某个文件或文件夹的所有者或组成员之外的其他所有用户。

因为每个实体都有其自己的权限,如一个完整的权限组可能为“-rwxrw-r--”。前面的连字符指定该项目是一个文件而不是文件夹。文件夹的权限以“d”开头,如“drwxrw-r--”。“d”代表 directory(目录),表示文件夹。

1.5. 使用 Terminal 查看权限

在终端中输入list -l,你会得到类似如下的信息:

total 0
drwx------   6 leohxj  staff   204B Jan 27 21:50 Applications
drwx------+  3 leohxj  staff   102B Mar 11 14:54 Desktop
drwx------+  7 leohxj  staff   238B Jan 18 22:11 Documents
drwx------+  5 leohxj  staff   170B Mar 10 23:39 Downloads
drwx------@ 16 leohxj  staff   544B Mar 11 14:54 Dropbox
drwx------@ 62 leohxj  staff   2.1K Jan 17 23:22 Library
drwx------+  4 leohxj  staff   136B Jan  3 21:37 Movies
drwx------+  7 leohxj  staff   238B Jan  6 09:45 Music
drwx------+  8 leohxj  staff   272B Feb  7 15:23 Pictures
drwxr-xr-x+  6 leohxj  staff   204B Jan  6 10:28 Public
  • drwx------:这一段是对文件或者目录的用户权限描述,d代表目录,后面九个字符,每三个为一组,代表所有者,组成员和其他用户。
  • leohxj:这一栏表示所有者。
  • staff: 这一栏表示所在组。

1.6. 系统相关

  • **Startupizer 2: 管理自启动项工具,可根据日期或标签设置不同启动。MAS购入,68RMB。
  • MacUpdate Desktop 6: app安装更新工具。我觉得可以替换brew cask了吧,起码能看什么软件有更新。下载资源包括了MAS和直接下载。
  • AppCleaner: app卸载工具。
  • DaisyDisk: 显示磁盘状态的工具。
  • OptimApps: 系统优化工具,包含三个功能。
  • F.lux: 根据日出日落调整屏幕色温,保护视力。个人喜欢设置4000-5500。
  • caffeine: App Store下载,免费。取消自动休眠的功能。
  • Yolink: 临时存储文件或内容的工具,感觉不是很必要。
  • Timing: 付费软件,统计 Mac 使用习惯,每天做了什么。
  • fliqlo: 时钟屏保。
  • BOOM 2: 音效增强工具。 - CheatSheet: 显示快捷键操作。

1.7. 提高效率的工具

  • Hider 2: 隐藏系统文件的工具。
  • xtraFinder:Finder的插件。
  • alfred 2: 效率神器/快速启动。一定要购买powerpack配合使用哦!
  • 1Password: 最佳密码管理工具。
  • TextExpander: 最佳输入辅助工具。
  • Manico: 付费软件,通过option快速切换应用程序。
  • Karabiner: 修改按键映射。
  • Seil: 配合karabiner,修改CapsLock映射。
  • AutoKeyboard: MAS免费购入。
  • BetterTouchTool: 自定义手势操作,以及鼠标,按键等。最明显的帮助是让我的鼠标中间左右切换起作用了。
  • ShortCat: 快速移动鼠标软件, 默认shift+command+space查找,按住control+对应字母进行快速切换。
  • [Moom]: 付费软件,68元,其实sizeup也是付费的。但我更看好moom的拖放,和自定义窗口大小。
  • Bartender: 官网下载,付费软件。管理右上角menu bar图标的软件。
  • SynergyKM: 可以使多台设备共用一套键鼠。
  • popClip:付费软件,30元,文本选择辅助工具,高效。
  • ClipMenu: 付费软件,6元,剪切板历史管理工具。不如windows下的ditto好用。
  • XMind: 思维导图软件,先用这个免费版本,熟悉熟悉。
  • jitouch2: 触控板辅助工具。删除的原因是全屏的手势比较容易误操作,且不一定所有程序都支持。
  • sizeup: 窗口管理工具,类似的还有moom, divvy。这软件开发的公司其他作品也都很高效。

1.8. 设计相关

  • Skitch: Evernote出品,截屏、标注工具。
  • LilyView: 图片查看工具。
  • 1000 Open Type Fonts: 字体相关软件。
  • [SnapRuler]: MAS购入,68RMB,标尺以及截图工具。

1.9. 开发工具

  • xCode: mac下开发必备吧。
  • iTerm2: 据说是最好的终端。
  • SublimeText3: 最好的文本编辑器。
  • Dash: 超全文档查看工具。
  • SourceTree: git GUI工具。
  • cotnerstone: SVN客户端。
  • Abode系列: 其实也就是用用Photoshop。
  • MAMP: 本地服务器。
  • CodeRunner 2: 代码直接编辑预览工具。
  • FoobarPlus: 运行代码的工具。
  • Genymotion: 安卓模拟器。
  • Textual 5: MAS购入,免费时获取。IRC聊天工具。
  • OhMyStar: MAS购入,68RMB,分类github star项目。
  • Robomongo: MongoDB GUI工具。
  • WebStorm: web开发IDE.
  • Vim

2. 快捷键

  • 屏幕切换,command+数字键。
  • 截图: shift+command+4。
  • aflred2: alt+s, 已换成CapsLock.

Mac与PC上手最大的不同,肯定就是按键问题了。我喜欢将普通键盘上的win与alt映射为mac下的option和command键。这样键盘的布局与标准的苹果键盘相似。

通常PC下很多ctrl的组合操作,都能对于为command的组合操作。

通过一段时间的使用,我发现我切换程序多使用的是alfred2+Manico+快捷键方式.

option按键主要用于切换程序,shift+command+其他主要用于程序的功能。

2.1. 全局快捷键

先提一点,我喜欢把Mac键盘最上方的那一排保持F1~F12的功能,快捷功能通过fn的组合键形式实现,实现这一点请勾选:System Perference -> Keyboard -> Use all f1, f2, etc keys as standard function keys.

修改快捷键在:System Perference -> Keyboard -> Shortcuts中。

我的主要修改如下:

Lunchpad & Dock:

  • Turn Dock Hiding On/Off: 取消设置。
  • Show Launchpad: F4.

Display:

默认。

Mission Control

  • Mission Control: Ctrl+top.
  • Show Desktop: F11.
  • Move left a space: Ctrl+left.
  • Move right a space: Ctrl+right.
  • Switch to Desktop: Command+num. 我个人是创建了四个桌面。

Keyboard:

默认。

Input Sources:

  • Select the previous input source: Command+Space.
  • Select next source in Input menu: 取消设置。

Screen Shots:

默认。

Services:

默认。

Spotlight:

  • Show Spotlight search field: 取消设置。
  • Show Spotlight window: 取消设置。

Accessibility:

默认。

App Shortcuts:

这里的内容,是设置全局的快捷键,也可以指定某个软件内的快捷键,但是需要设置对应的菜单项名称才OK。比如我设置Finder中的New Terminal Here, (此功能是通过Extra Finder插件实现的)。则添加:

  • Finder.app: New Terminal Here, 设置ctrl+command+t.

2.2. 参考资料

3. 终端

3.1. 常用终端命令

先插一句,说一个好玩的,可以查看最近经常使用的命令,在终端执行:

history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]" " CMD[ a ]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t |sort -nr | nl | head -n10
  • clear: 清除屏幕。
  • pwd: 查看当前路径。
  • cd: 进入目录,常常配合一些字符使用。比如:
    • ..: 返回上级目录。
    • ~: 返回用户主目录。
    • -: 返回上次操作目录。
    • /: 返回系统根目录。
  • ls: 列出目录信息。
  • mkdir: 创建目录。
  • touch: 创建文件。
  • cp: 拷贝文件。
  • mv: 移动文件,或者重命名文件。
  • rm:删除文件。
  • cat: 查看文件内容。
  • grep: 查找文本信息。
  • man: 手册命名,查看各个命名的帮助。

3.2. 系统操作

  • open: 可以打开文件,目录和程序。通过man open查看具体内容,我常用来在终端下打开Finder, 比如open .。Windows下对应的使用explorer命令。或者打开Applications下的程序,使用open "/Applications/Sublime Text.app" test.md

3.3. zsh

shell是终端与系统交互的一种语言,默认的是bash,但是最好的是zsh。安装方式我使用:brew install zsh

替换bash的方式:chsh -s /bin/zsh。关闭终端,再次打开即为zsh。

注意:之前我们使用bash,我们为了使用brew安装的软件,修改了~/.bash_prorile文件,新的zsh自己也有配置文件,是~/.zshrc,需要将配置拷贝到~/.zshrc中。

或者在安装完oh-my-zsh后,执行echo export PATH='/usr/local/bin:$PATH' >> ~/.zshrc

oh-my-zsh

由于zsh的配置是很复杂的,所以有这个一个开源项目oh-my-zsh,帮助我们简化zsh的配置。

官网有自动安装的方法,我选择的是: curl -L http://install.ohmyz.sh | sh

安装完成后,重启终端就能看到界面的变化了。zsh的配置文件是~/.zshrc,配色对应的是ZSH_THEME.

oh-my-zsh插件

oh-my-zsh的强大之处还在于提供了完善的插件系统。相关的文件存储在~/.oh-my-zsh/plugins中,默认提供了100多种。。。

默认提供的插件是git,需要添加的话,修改~/.zshrcplugins=(git autojump)即可。

自动跳转

zautojump。是两个可以实现自动跳转的插件,都是可以通过brew下载的。

我目前使用的是autojump,通过brew install autojump下载,并且在~/.zshrc中修改plugins=(git autojump)。重启终端。

使用就可以使用j来代替cd命令了,并可以添加自定义目录,具体使用说明参考autojump的文档或者autojump --help

alias设置

alias是一个shell命令,可以理解为别名,就是可以让我们对一些命名重新命名,这样在终端中,我们就可以输入更少的字符完成同样的事情。

系统自带(或者是oh-my-zsh添加的)在终端中输入alias,会得到:

...=../..
....=../../..
.....=../../../..
......=../../../../..
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd -9'
_=sudo
a='fasd -a'
afind='ack-grep -il'
d='fasd -d'
f='fasd -f'
g=git
ga='git add'
gaa='git add --all'
gap='git add --patch'
gb='git branch'
gba='git branch -a'
gbr='git branch --remote'
gc='git commit -v'
'gc!'='git commit -v --amend'
gca='git commit -v -a'
'gca!'='git commit -v -a --amend'
gcl='git config --list'
gclean='git reset --hard && git clean -dfx'
gcm='git checkout master'
gcmsg='git commit -m'
gco='git checkout'
gcount='git shortlog -sn'
gcp='git cherry-pick'
gcs='git commit -S'
gd='git diff'
gdc='git diff --cached'
gdt='git difftool'
gg='git gui citool'
gga='git gui citool --amend'
ggpnp='git pull origin $(current_branch) && git push origin $(current_branch)'
ggpull='git pull origin $(current_branch)'
ggpur='git pull --rebase origin $(current_branch)'
ggpush='git push origin $(current_branch)'
gignore='git update-index --assume-unchanged'
gignored='git ls-files -v | grep "^[[:lower:]]"'
git-svn-dcommit-push='git svn dcommit && git push github master:svntrunk'
gk='gitk --all --branches'
gl='git pull'
glg='git log --stat --max-count=10'
glgg='git log --graph --max-count=10'
glgga='git log --graph --decorate --all'
glo='git log --oneline --decorate --color'
globurl='noglob urlglobber '
glog='git log --oneline --decorate --color --graph'
glp=_git_log_prettily
gm='git merge'
gmt='git mergetool --no-prompt'
gp='git push'
gpoat='git push origin --all && git push origin --tags'
gr='git remote'
grba='git rebase --abort'
grbc='git rebase --continue'
grbi='git rebase -i'
grep='grep  --color=auto --exclude-dir={.bzr,.cvs,.git,.hg,.svn}'
grh='git reset HEAD'
grhh='git reset HEAD --hard'
grmv='git remote rename'
grrm='git remote remove'
grset='git remote set-url'
grt='cd $(git rev-parse --show-toplevel || echo ".")'
grup='git remote update'
grv='git remote -v'
gsd='git svn dcommit'
gsps='git show --pretty=short --show-signature'
gsr='git svn rebase'
gss='git status -s'
gst='git status'
gsta='git stash'
gstd='git stash drop'
gstp='git stash pop'
gsts='git stash show --text'
gts='git tag -s'
gunignore='git update-index --no-assume-unchanged'
gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
gup='git pull --rebase'
gvt='git verify-tag'
gwc='git whatchanged -p --abbrev-commit --pretty=medium'
gwip='git add -A; git ls-files --deleted -z | xargs -r0 git rm; git commit -m "--wip--"'
history='fc -l 1'
l='ls -lah'
la='ls -lAh'
ll='ls -lh'
ls='ls -G'
lsa='ls -lah'
md='mkdir -p'
o='a -e open'
please=sudo
po=popd
pu=pushd
rd=rmdir
run-help=man
s='fasd -si'
sd='fasd -sid'
sf='fasd -sif'
st='open -a "Sublime Text"'
v='f -e vim'
which-command=whence
z='fasd_cd -d'
zz='fasd_cd -d -i'

这表明mac的终端其实自带了一些alias。当然,我们也可以手动添加。

手动添加

自定义的alias应该在终端的配置文件中添加,比如我使用的是zsh,就在.zshrc文件中添加。

常用的操作有:

  • alias st='open -a "Sublime Text"': 打开sublimeText

3.4. 参考资料

results matching ""

    No results matching ""