大部分前端应用都部署在linux上,若想全局hold住一个项目,linux命令是一项必不可少的技能。许多前端对linux命令并不重视,其实这是一个学习性价比很是高的知识点,没有太多须要理解的地方,大部分靠“记忆+使用”便可掌握,掌握后可解决许多问题,也能提升平常效率,还能成为面试的加分项。
linux命令很是多,有时参数也挺复杂,所有学习挺枯燥,本文主要从实际的场景和问题出发,总结几条经常使用的命令,但愿能对你们学习linux有所帮助。css
# 首先要学会查看文件属性 ls -l # 目录递归的查询 ls -Rl
显示结果如上图。第一列十个字符,第一个表示文件类型(-为文件,d为目录,l为软链),后九位分三组,分别表明用户、用户组、其余用户对文件的的读(r)写(w)执行(x)权限;第二列表示文件数;第三列表示所属用户;第四列表示所属用户组;第五列表示文件大小;第六七八列分别表示文件最后修改的月、日、时间;最后一列为文件名。html
查看文件内容有许多命令,以下:前端
# 查看一个文件的内容 cat a.txt # cat支持多个文件链接显示,并可输出到文件 cat a.txt b.txt > c.txt # tac就是cat反过来写,做用和cat相反,是从末尾开始向前显示 tac a.txt # tail只显示文件的最后若干行,-n 指定显示的行数 tail test.log -n 100 # 实时显示内容,看日志时很是有用 tail test.log -f
# 同时修改用户和用户组 chown zhangsan:app # 只修改用户 chown zhangsan # 只修改用户组 chown :app
# 权限主体有三种,用户(u)、用户组(g)、其余(o),权限有读(r)、写(w)、执行(x)三种 # +表示赋予权限,-表示回收权限 chmod ug+rw test.js # 给用户、用户组赋予读写权限 # 递归改变目录需加-R chmod -R go-wx ./src # 回收用户组和其它的写和执行权限 # 数字表示法也比较经常使用。4:读,2:写,1:执行,其和可组合出全部权限。数字是三位数,对应三个主体,用户、用户组、其余。 chmod 751 test.js # 用户具有读写执行权限、用户组具有读和执行权限、其余用户具有执行权限
linux下修改文件主要用vi或vim,vim是vi发展过来的,最基本的命令是同样的。vim编辑器命令很是强大,掌握最最基本的就能够解决问题了。node
# 在编辑器里打开文件 vim test.txt
学习vim最重要的是掌握三种模式
普通模式:刚进入编辑器时为普通模式,普通模式下全部的输入都看成命令,当即执行且不在终端显示。通常esc可回到普通模式。
编辑模式:普通模式下按i进入编辑模式。编辑模式下可对内容进行修改。
命令模式:普通模式下输入“shift” + “:” 进入命令模式。命令模式下接受命令输入且显示在终端,回车生效。常见的命令有,q退出,q!强制退出,w保存,wq保存并退出。linux
# 第一个参数是一个正则表达式,第二个参数是一个文件 grep "html" src/index.html # 在目录中搜索时须要加-R参数 grep -R "var" ./src # 其余命令能够管道链接到grep命令进行结果筛选 ls -R ./src | grep ".test"
# 列出src目录下的全部文件 find ./src # 列出src目录下文件名为index.js的文件 find ./src -name index.js # 经过正则过滤 find ./src | grep 'scss'
# 基本的文件复制 cp a.txt ./test/a.txt # 复制目录时需加-R参数 cp -R ./src ../test/src # 大多时候不须要文件copy,软链也是一种选择,能用软链就用软链,开销小 ln -s ./bin/run.js ~/.bin/run.js # 移动一个文件 mv abc.txt ~/test/abc.txt
# 将本地文件同步到远程机器,相对于cp命令,就多了一个ip而已 scp ./conf/nginx.conf 10.9.188.2:/opt/nginx/conf # 反之从远程向本地同步亦可 10.9.188.2:/opt/nginx/conf/nginx.conf ./conf # 须要ssh登陆时,请加上用户名 scp ./conf/nginx.conf user@10.9.188.2:/opt/nginx/conf # scp只能同步普通文件,rsync能同步文件夹,并且是增量同步 # -a表示保持文件的属性不变,-v显示进度信息,-z传输中进行压缩 rsync -avz logs/ 10.9.166.19:/data/users/liwei/logs # rsync一样支持方向同步 rsync -avz 10.9.166.19:/data/users/liwei/logs ./logs
# 查出全部在内存中的进程,结果显示可看到到pid,用户,启动命令等信息,grep用做筛选 ps aux | grep node # 杀进程 kill pid # 强杀进程 kill -9 pid
# -a显示全部选项,-p显示创建相关连接的程序名 # 显示出程序名以后就可以使用前面的方法找到pid netstat -ap | grep 9000
# -X 可设置请求方法,GET POST PUT DELTE ...,-i能打印返回头 curl 'http://cn.bing.com' -X GET -i # -H 可设置请求头 curl 'http://cn.bing.com/' -H 'Customer-Header: helo' # -d 可设置请求body curl 'http://cn.bing.com/' -d 'a=1&b=2'
# -c代表抓多少个包就中止,能够缺省 # -i指定网络设备 # host 指定ip地址 # port 指定端口 # src|dst 限定host、port是源地址仍是目标地址 # 能够经过逻辑运算符连接 and or not # -w 能够把抓包结果写到文件 sudo tcpdump -c100 -i eth0 dst host 10.9.96.32 -w test.cap
对于http请求,tcpdump的可读性比较差。能够将抓包结果写到文件后,下载到本地用wireshark查看,一目了然。nginx