[TOC]
1. 介绍
macos的很多用户都是做it相关的人,类unix系统带来了很多方面,尤其是经常和Linux打交道的人。 但是作为经常使用linux 命令行的人发现macos中的命令行工具很多都是bsd工具,跟linux下得使用方式开始差距挺大的
Max OS X使用的是 BSD版本的命令行工具,这些命令跟 Linux版本是有些不同的,然而它们都遵循 POSIX 标准。
资料: http://blog.csdn.net/orangleliu/article/details/47357339
2. 终端设置
2.1 修改mac终端命令行前缀的显示
/etc/bashrc 中的PS1变量就是用来设置前缀显示的。
终端打开/etc/bashrc文件:
sudo vim /etc/bashrc
修改PS1变量,例如修改为如下形式(把原来的注释掉:
# PS1='\h:\W \u\$ ' PS1='\u\$ '
wq!保存并退出,将终端退出重新打开生效。
变量代表的含义
\h表示本地主机名
\W表示符号~
\u表示用户名
\$表示符号$
2.2 修复终端hostname被篡改为bogon
终端显示bogon原因:
terminal显示hostname之前会先根据本机IP做一次rDNS反向查询,就是通过ip地址查询hostname,如果没有查询到,那么使用本机设置的hostname。本机IP通常是局域网IP地址(保留IP地址),一般是查不到的,所以terminal一般显示的本机设置的hostname,比如
laowang's-macbook
。上面提到,局域网IP地址一般是查不到hostname,是因为ISP提供商或者用户防火窗的屏蔽保留IP地址,因为保留IP地址在公网中没啥用,即便是没有被屏蔽掉,rDNS服务器一般也会关闭响应保留IP地址的查询请求。凡事都有例外,rDNS服务器对这种保留IP地址对查询一律返回bogon。在ipv4对地址划分中,除了公网分配在用对IP地址外,其余保留IP地址统一叫做bogon space
解决方法:
将DNS设置为Google的DNS服务器地址 8.8.8.8
终端输入如下命令:
sudo hostname MBP sudo scutil --set LocalHostName $(hostname) sudo scutil --set HostName $(hostname)
注:上面MBP就是你想要修改的新名字。
2.3 终端shell与zsh之间的切换
# 切换默认Shell为Zsh, 成功后需要重启终端
~ chsh -s /bin/zsh
# 切换Zsh为Shell, 成功后需要重启终端
~ chsh -s /bin/bash
# 查看zsh配置的环境变量:
~ cat ~/.zshrc
2.4 设置终端使用命令打开vscode软件打开当前目录
1、找到打开软件的路径:
打开finder -> Applications(应用程序) -> 找到 vscode,右键,选择Show Package Contents
(显示包内容) ….,一级一级的找下去,最终的文件类似于如下:
/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
2、打开终端,进入用户根目录:
cd
# 或者
cd ~
# 找到.zshrc文件
la -al
3、打开.zshrc
文件,在文件的末尾添加如下命令:
# 终端使用 code . 命令使用vscode打开当前目录
alias code='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code'
4、从新应用配置或重启终端后,终端打开一个项目文件,使用code .
即可使用vscode打开项目。
source .zshrc
3. 快捷键
control + L # 终端清屏,相当于 clear命令
open 文件名 # 使用默认程序打开文件 如 open . 使用finder打开该目录
3.1 终端光标做操快捷键
Mac Terminal终端和Linux上终端光标的快捷键操作是一样的,都是来自Emacs这个神级的编辑器,跟VIM不一样。
Ctrl + a 光标移动到行首(Ahead of line),相当于通常的Home键
Ctrl + e 光标移动到行尾(End of line)
Alt+← 或 ESC+B:左移一个单词;
Alt+→ 或 ESC+F:右移一个单词;
Ctrl + d 删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit;处理多行标准输入时也表示eof)
Ctrl + h 退格删除一个字符,相当于通常的Backspace键
Ctrl + u 删除光标之前到行首的字符
Ctrl + k 删除光标之前到行尾的字符
Ctrl + c 取消当前行输入的命令,相当于Ctrl + Break
Ctrl + f 光标向前(Forward)移动一个字符位置
Ctrl + b 光标往回(Backward)移动一个字符位置
Ctrl + l 清屏,相当于执行clear命令
Ctrl + p 调出命令历史中的前一条(Previous)命令,相当于通常的上箭头
Ctrl + n 调出命令历史中的下一条(Next)命令,相当于通常的上箭头
Ctrl + r 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)
次常用快捷键:
Alt + f 光标向前(Forward)移动到下一个单词
Alt + b 光标往回(Backward)移动到前一个单词
Ctrl + w 删除从光标位置前到当前所处单词(Word)的开头
Alt + d 删除从光标位置到当前所处单词的末尾
Ctrl + y 粘贴最后一次被删除的单词
3.2 处理窗口和标签页快捷键
操作 | 快捷键 |
---|---|
新建窗口 | Command-N |
使用相同命令新建窗口 | Control-Command-N |
新建标签页 | Command-T |
使用相同命令新建标签页 | Control-Command-T |
显示或隐藏标签页栏 | Shift-Command-T |
显示所有标签页或退出标签页概览 | Shift-Command-反斜杠 () |
新建命令 | Shift-Command-N |
新建远程连接 | Shift-Command-K |
显示或隐藏检查器 | Command-I |
编辑标题 | Shift-Command-I |
编辑背景颜色 | Option-Command-I |
放大字体 | Command-加号键 (+) |
缩小字体 | Command-减号键 (–) |
下一个窗口 | Command-重音符键 (`) |
上一个窗口 | Command-Shift-波浪符号 (~) |
下一个标签页 | Control-Tab |
上一个标签页 | Control-Shift-Tab |
将窗口拆分为两个面板 | Command-D |
关闭拆分面板 | Shift-Command-D |
关闭标签页 | Command-W |
关闭窗口 | Shift-Command-W |
关闭其他标签页 | Option-Command-W |
全部关闭 | Option-Shift-Command-W |
滚动到顶部 | Command-Home |
滚动到底部 | Command-End |
上一页 | Command-Page Up |
下一页 | Command-Page Down |
上一行 | Option-Command-Page Up |
下一行 | Option-Command-Page Down |
4. 终端常用操作
4.1 查看进程
# 搜索特定进程,
~ ps aux|grep 进程名字
# 动态显示进程
~ top
4.2 查看端口号
# 搜索端口号为8080, 可以看见进程名字与ID
lsof -i:8080
# 查看IPv4端口:(最好加 sudo)
~ lsof -Pnl +M -i4
# 查看IPv6协议下的端口
lsof -Pnl +M -i6
~ sudo netstat antup
参考链接:
http://blog.csdn.net/u011619283/article/details/53116291
http://blog.csdn.net/winkenjiang/article/details/7588658
4.3 终端使用代理
4.3.1 终端临时使用代理,只对这个终端有效,关闭后失效:
export http_proxy=http://proxyAddress:port
export http_proxy="http://127.0.0.1:1080"
export https_proxy="http://127.0.0.1:1080"
这个办法的好处是简单直接,并且影响面很小(只对当前终端有效)。
4.3.2 终端永久使用代理: 把代理服务器地址写入shell配置文件.bashrc或者.zshrc
直接在.bashrc或者.zshrc添加下面内容:
# vi ~/.ashrc
export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"
# 以使用shadowsocks代理为例,ss的代理端口为1080,那么应该设置为:
export http_proxy="http://127.0.0.1:1080"
export https_proxy="http://127.0.0.1:1080"
localhost就是一个域名,域名默认指向 127.0.0.1,两者是一样的。
然后ESC后:wq保存文件,接着在终端中执行source ~/.bashrc
或者退出当前终端再起一个终端。 这个办法的好处是把代理服务器永久保存了,下次就可以直接用了。
4.4 终端进入名称带空格的目录
可使用\
' '
" "
将空格转义就可以了。
1. cd Appications/Android\ Studio.app/sdk
2. cd Appications/Android' 'Studio.app/sdk
3. cd Appications/Android" "Studio.app/sdk
4.5 终端刷新DNS缓存
sudo killall -HUP mDNSResponder
5. 终端一些命令安装
5.1 wget安装
wget是unix上一个发送网络请求的命令工具,不过mac本身并没有,mac自带的是curl,都是发送网络请求,但是两者之间肯定存在一些差异。一般来说,wget主要专注于下载文件,curl长项在于web交互、调试网页等。
需要使用homebrew进行安装,如果没安装请先安装这个
终端安装wget命令:
brew install wget --with-libressl
==> Installing dependencies for wget: libunistring, libidn2 and openssl
==> Installing wget dependency: libunistring
==> Downloading https://homebrew.bintray.com/bottles/libunistring-0.9.10.high_si
######################################################################## 100.0%
==> Pouring libunistring-0.9.10.high_sierra.bottle.tar.gz
🍺 /usr/local/Cellar/libunistring/0.9.10: 54 files, 4.4MB
==> Installing wget dependency: libidn2
==> Downloading https://homebrew.bintray.com/bottles/libidn2-2.0.5.high_sierra.b
######################################################################## 100.0%
==> Pouring libidn2-2.0.5.high_sierra.bottle.tar.gz
🍺 /usr/local/Cellar/libidn2/2.0.5: 68 files, 668.6KB
==> Installing wget dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2q.high_sierra.
######################################################################## 100.0%
==> Pouring openssl-1.0.2q.high_sierra.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
If you need to have openssl first in your PATH run:
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
For compilers to find openssl you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
==> Summary
🍺 /usr/local/Cellar/openssl/1.0.2q: 1,794 files, 12.1MB
Warning: wget: this formula has no --with-libressl option so it will be ignored!
==> Installing wget
==> Downloading https://homebrew.bintray.com/bottles/wget-1.20.high_sierra.bottl
######################################################################## 100.0%
==> Pouring wget-1.20.high_sierra.bottle.tar.gz
🍺 /usr/local/Cellar/wget/1.20: 50 files, 3.9MB
==> Caveats
==> openssl
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
If you need to have openssl first in your PATH run:
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
For compilers to find openssl you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
➜ ~
~ wget --version
GNU Wget 1.20 built on darwin17.7.0.
参考资料:https://www.jianshu.com/p/f6b290710262
5.2 tree命令安装
tree命令用来在终端下显示目录树结构,在Mac下默认是没有安装该命令的。
需要使用终端使用brew命令来安装tree:
brew install tree
==> Downloading http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
Already downloaded: /Library/Caches/Homebrew/tree-1.7.0.tgz
==> make prefix=/usr/local/Cellar/tree/1.7.0 MANDIR=/usr/local/Cellar/tree/1.7.0/share/man/man1 CC=c
🍺 /usr/local/Cellar/tree/1.7.0: 7 files, 140K, built in 2 seconds
安装后可使用tree --help
来查看使用帮助。
在使用过程中,如果目录中有中文文件,会显示乱码,可使用tree -N
命令来解决。
6. 删除终端history历史命令记录
由于长时间没有清除history历史命令,导致历史命令记录很多,需要删除终端历史命令记录
默认登录 shell 是 zsh的话,用以下命令:
~ history
~ rm ~/.zsh_history
默认登录 shell 是 bash ,用以下命令:
~ history
~ rm ~/.bash_history
删除结束后,重启终端生效