积累一些常用的mac技巧,侧重于shell的应用。
修改计算机名
有时候计算机名很长,在shell里面感觉有点累赘,我希望可以将名字改的短一点,不影响我的使用:
1 | sudo scutil --set HostName newName |
比如,我将我的计算机名设置为T
:
1 | sudo scutil --set HostName T |
让终端走代理
如果用的是ss代理,那么只需要:
1 | export ALL_PROXY=socks5://127.0.0.1:1086 |
加入bash:
1 | export http_proxy="socks5://127.0.0.1:1086" |
或者直接:
1 | export ALL_PROXY=socks5://127.0.0.1:1086 |
bash_profile
一些用户常用的配置可以将其放在.bash_profile
中,这样就可以不用每次都手动录入:
1 | eval "$(/opt/homebrew/bin/brew shellenv)" # brew的命令导出 |
这样在brew中install的命令都可以被导出。
那我们也不想在每次打开shell的时候都手动执行source .bash_profile
啊,那只需要将这个命令加入到当前shell的配置中,在.zshrc
中最后加入:
1 | source .bash_profile |
这样只要打开shell就自动执行了,我们可以直接访问到brew命令。
查看端口占用和杀死进程
比如,我想查看63343端口被那个小婊砸占用了?!
1 | lsof -i:63343 |
可以看到结果:
1 | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME |
然后可以知道占用端口的pid,这样就可以杀死这个进程来释放端口:
1 | kill 5291 |
lsof
命令是查看当前系统文件的工具(list open files)。在linux系统下,一切皆文件。通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议(TCP)和用户数据报协议(UDP)套接字等。
差用的命令有:
-a
列出打开文件存在的进程-i<条件>
列出符合条件的进程。(4、6、协议、:端口、@ip)-u
列出UID号进程详情
解压rar类型的压缩包
有时候会接收到win平台的压缩文件,结尾是rar
扩展标记,我们解压的时候如果是可视化的话,需要去安装一个独立的应用,比如Unarchiver是一个挺好的软件,可以解压缩多种类型的压缩包。
或者不用那么麻烦,我们可以在shell里面解压。需要安装unrar
包:
1 | brew install unrar |
安装成功后,进入我们的压缩文件所在目录,然后开始解压:
1 | unrar x test.rar |
看输出有解压出来的文件,然后可以在当前目录看到解压后的文件夹。
2022.5.8 更新
现在安装的时候好像没有unrar
这个独立的包了,我们来安装rar
:
1 | brew install rar |
安装成功后可以看到:
1 | ==> Linking Binary 'rar' to '/usr/local/bin/rar' |
当运行rar
或unrar
命令的时候会弹出:无法打开“unrar”,因为无法验证开发者。
需要去系统偏好设置 -> 安全与隐私 -> 通用
里面可以看到有个按钮“仍然允许”,点击即可。
然后再回到shell里面,就可以使用unrar
命令和rar
命令了。
配置vscode从terminal打开
可以在vscode中使用快捷键:cmd + shift + p
调出命令窗口,输入:shell command
,即可选取命令:Shell command: install 'code' command in PATH
,点击这个即可。
但是在我新电脑中,好像被权限拒绝了:EACCES: permission denied, unlink '/usr/local/bin/code'
, 是由于m1电脑的问题,可能在之前运行过这个命令,但是命令假死了。所以需要先运行下:Shell Command: uninstall 'code' command from PATH'
。然后重新运行下install就可以了。
现在就可以用code命令来从shell打开vscode。
配置webstorm从terminal打开
打开webstorm,然后按两次shift·,就可以调出搜索窗口。
然后输入create command line launcher
,然后就可以看到创建命令行启动器
。按下enter
,就可以看到一个弹出框,我们在输入框中输入我们需要的简写:
1 | /usr/local/bin/ws |
然后按下确定,现在我们就可以在shell中用ws
命令来打开webstorm。
并且可以ws ./myobj/testproject
来打开某个项目。
查看电脑的温度
安装istats
:
1 | $ sudo gem install iStats |
然后查看电脑的状态:
1 | $ istats |
很方便,CPU stats 是电脑cpu的温度,Fan Stats是风扇的转速(圈/每分钟),Battery Stats是电池的状态,我目前用的mini,所以是没有电池的。
使用curl下载文件
之前一直用curl来得到一个url的回应,但是这个curl命令是很强大的,强大到可以当postman使用,但是我们来最实际的一个用法:下载文件。
curl的-o
参数可以将服务器的回应保存成文件,等同于wget
命令。
也可以传递-O
参数将url的最后部分当成文件名来保存服务器的响应。
host 修改
有些特殊原因我们需要特殊设置域名的dns,将特殊的域名对应到响应的ip,这个解析规则我们可以在/etc/host
文件中修改。
比如我们访问树莓派中的网页服务,一直输入ip是个很麻烦的事情,那么我们可以设定一个名字,然后在host中定义即可。
比如我们定义tony.pi
来访问树莓派中的服务。树莓派的ip是192.166.31.18
。那么我们可以在/etc/host
中添加:
1 | 192.168.31.18 tony.pi |
然后重启dns缓存程序。
1 | sudo killall -HUP mDNSResponder |
我们可以在shell中ping以下看看:
1 | $ ping tony.pi |
能ping通基本就设置好了。
如果在浏览器中发现还是访问不了nginx的网页,那么可以在chrome dns中查询一下:chrome://net-internals/#dns
。
如果这里正确显示了ip,那么说明我们的设置和dns都没问题。
我这里被vpn坑了一下,一直无法刷出来网页,我以为是什么地方的设置,结果我尝试退出vpn就可以了。。。吐血。
最后在vpn的设置里面加上过滤的ip就好了,可以正常访问树莓派里面的网页了。
oh-my-zsh 更新
在terminal里我使用了on-my-zsh插件,但是经常会遇到需要更新。
手动更新oh-my-zsh:
1 | omz update |
mac 截图/录视频
截屏
shift + command + 3
截屏,多少个屏幕就截取多少个.
比如我当前链接了两个显示器,主电脑反而盖上盖子的,那么按下shift + command + 3
之后,会在桌面上生成两个屏幕的截图.
shift + command + 4
动态捕捉屏幕上的一部分截屏,以拖动十字线的形式捕捉一个方形区域,对这个区域会截图,然后放在桌面.要取消就按下ESC
键.
shift + command + 4 + space bar
捕捉窗口对窗口截图,按下shift/command/4/空格键,指针变成相机图标,会动态捕捉窗口单位进行截图.按下ESC
键取消截图.
录视频
shift + command + 5
可以唤起ScreenShot
app 来录视频.可以选择对整个屏幕/窗口/自定义大小来进行录屏.
截图或截屏的文件,会默认放在桌面上,我们可以修改ScreenShot.App
中的选项来修改存储的位置.