Mac 常用 shell

shell

常常有写 shell 平时用不到,参数记忆比较模糊。但是用到的时候又想找个地方查一下。这个时候就很蛋疼了,故作笔记记录下,方便翻阅。

端口占用

不知道大家有没有遇到过端口占用的情况。 解决方法分两步

  1. 找到是哪个进程占用了这个端口
  2. kill 掉这个进程

对应的命令

  1. lsof -i:4000 查找占用 4000 端口的进程
  2. kill 13219

如下为lsof -i:4000输出的结果,我们第二步根据 PID(进程 id)来 kill 掉进程.

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    13219 pphu   28u  IPv4 0xbca6de3c7141352d      0t0  TCP *:terabase (LISTEN)
1
2

alias

这个是常用的提高效率的方法,一般跟两个文件有关

  • ~/.bash_profile 每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该 文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc 文件.
  • ~/.bashrc 该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该 该文件被读取.

如果没有这两个文件可以自己新建一个

  • cd ~
  • touch .bashrc
  • touch .bash_profile

所以可以在两个文件随便一个设置 alias

  1. cd ~
  2. ll -a
  3. vi .bashrc
alias i="install"
alias wb="wbuild server"
alias st="status"
alias co="checkout"
alias ci="commit"
alias br="branch"
alias gst="git status"
alias gco="git checkout"
alias gbr="git branch"
alias gci="git commit"
1
2
3
4
5
6
7
8
9
10

ps: 有遇到过重启启不生效的情况,所以最好将

source ~/.bashrc
1

这句加在~/.bash_profile最后,这样每次都会执行.bashrc文件的 alias 最后,如果你用的是 zsh,比如 mac 标配 iterm2+zsh。那么 iterm2 生效的配置就不是.bash_profile而是~/.zshrc了。 所以要把

source ~/.bash_profile
1

这句加在~/.zshrc最后。

ls -alh

ls查看文件大家都知道了就不多说了; ls -a可以查看隐藏的一些以.开头的文件; ls -al可以以列表形式显示文件信息; 但是很蛋疼,这里显示的是字节,我们更直观的是显示多少 K,多少 M。 这个时候ls -alh就可以满足你的诉求了

权限问题

如何看一个文件的权限?

➜  .ssh ll
total 56
-rw-r--r--  1 manfredhu  *****   778B 10 22 15:04 config
-rw-------  1 manfredhu  *****   1.6K  3 11  2018 id_rsa
-rw-r--r--  1 manfredhu  *****   398B  3 11  2018 id_rsa.pub
-rw-r--r--  1 manfredhu  *****   5.6K 10 17 19:54 known_hosts
-rwxr-xr-x  1 manfredhu  *****   301B  7 25 15:58 login.exp
-rwxr-xr-x  1 manfredhu  *****   1.1K  3 16  2018 ssh.m2.expect
1
2
3
4
5
6
7
8

这里ssh.m2.expect前面的-rwxr-xr-x,第一位是 d(目录)或者-(文件)。 之后是三组 rwx,分别代表 read 读取,write 写入,exec 执行。

1-3 位数字代表文件所有者的权限 4-6 位数字代表同组用户的权限 7-9 数字代表其他用户的权限

所以这里 ssh.m2.expect 的权限是文件所有者可以读写执行,同组用户和其他用户可以读和执行。

权限计算的方式

读取的权限等于 4,用 r 表示 写入的权限等于 2,用 w 表示 执行的权限等于 1,用 x 表示

所以这里 ssh.m2.expect 的权限用数据表示就是 755。

授权

如果你想要让所有用户拥有这个文件的读写执行,那么就可以用

chmod 777 ssh.m2.expect
1

更改文件的授权

curl

很多时候要测试接口的调取可以命令行直接测试。

比如你想模拟 MacOS 的 UA 就可以用下面这个,类似的 iphone,ipad 巴拉巴拉的 UA

curl -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36' www.qq.com
1