平时多用Mac电脑办公,自己搭建网站也用的Linux系统,所以时不时需要用到Linux的一些命令,最高频的如cd、ls、rm、mkdir、touch等等很好记,事实上由于使用频率过高不用刻意记忆,用多了自然就能记住,然而其他频率稍低但也比较常用和重要的命令老是记不住,总记不清其参数和值的格式,记不清时需要上网查,虽然也很快就能解决,但网上查到的资料要么太简略没有实例示范、要么详细讲解每个参数每种情况场景,这时需要去甄别,然而很多命令的使用场景和最高频用到的写法就一两种,每次去查去甄别也会挺麻烦。所以将平时用Mac和Linux最常用到的一些命令及最高频最典型的写法,以最简单的举例形式总结一下,下次记不清时直接照这里总结过的去敲即可,简单省事。
查看系统信息:
$ uname -a
查看详细系统信息:
$ cat /etc/os-release
进入当前目录的上一级目录:
$ cd ..
查找当前目录下的所有txt文件:
$ find ./ -name *.txt
查找当前目录下的所有heap文件夹:
$ find ./ -name heap
创建指向target名为linkName的软链接:
$ link -s target linkName
将当前目录下的所有文件打包为all.tar文件:
$ tar -cvf all.tar *
将当前目录下的folder文件夹打包成folder.tar文件:
$ tar -cvf folder.tar folder/
将folder文件夹压缩打包成backup.tar.gz文件:
$ tar -zcvf backup.tar.gz folder/
将folder文件夹压缩打包成backup.tar.bz2文件:
$ tar -jcvf backup.tar.bz2 folder/
解压backup.tar文件
$ tar -xf backup.tar
解压backup.tar.bz2文件:
$ tar -jxf backup.tar.bz2
解压backup.tar.gz文件:
$ tar -zxf backup.tar.gz
将test.zip文件解压到 /temp文件夹下:
$ unzip -d /temp test.zip
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
$ zip -q -r html.zip /home/html
将文件或文件夹移动a移动到文件夹b中:
$ mv a b
将文件old.txt重命名为new.docx:
$ mv old.txt new.docx
使用rename将文件HelloWorld.java中的Hello改成Hi:
$ rename Hello Hi HelloWorld.java
使用rename将文件HelloShell.sh重命名为test.c:
$ rename HelloShell.sh test.c HelloShell.sh
批量将某个目录下所有文件的文件名中的Hi字符串改为Hello:
$ rename Hi Hello *
批量将当前目录下的所有文件的后缀名由.html改为.php:
$ rename .html .php *
要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行:
$ chmod -R 777 /upload
网络相关命令
使用telnet测试某台计算机的某个端口是否开放,如果返回Escape character is '^]'.就说明是开放的:
$ telnet 127.0.0.1 443 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
查看本机某个端口是被被哪个程序所占:
$ lsof -i:9123 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 25164 root 19u IPv4 363648678 0t0 TCP localhost:grcp (LISTEN)
或者:
$ netstat -tunpl | grep 9123 tcp 0 0 127.0.0.1:9123 0.0.0.0:* LISTEN 25164/node
列出TCP协议连接的端口号和对应占用的应用:
$ netstat -ntlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2213/mysqld tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 1205/memcached tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 827/redis-server 12 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 23373/nginx: master
软件管理
查询某个命令的位置:
$ whereis nginx
进程管理
实时显示计算资源的使用情况和所有进程的状态、所占用的资源:
$ top
显示所有用户进程,包括没有控制终端的进程,并给出用户和启动细节等信息:
$ ps -aux
按长格式显示进程详细信息:
$ ps -ef
查看nginx的进程详情:
$ ps -ef | grep nginx
直接杀死进程,但不能保证一定能杀死:
$ kill pid
强制杀死进程:
$ kill -9 pid
查看某个进程的进程号
$ pidof node
按照进程名杀死进程:
$ pkill node
tee命令
从终端中输入文本 并保存在output1.txt和output2文件中:
$ tee output1.txt output2.txt
将命令的输出 展示到终端并保存到output.txt文件中:
$ ping google.com | tee output.txt
将命令的输出 展示到终端并追加到output.txt文件尾部:
$ ping google.com | tee -a output.txt
命令执行错误输出同时打印到屏幕和文件:
$ tnpm run ci 2>&1 | tee -a cilog01.log
[command] 2>&1 | tee -a cilog01.log
将命令的输出 展示到终端并保存到output1.txt、output2.txt、output3.txt三个文件中:
$ ping google.com | tee output1.txt output2.txt output3.txt
将tee命令的输出作为其他命令的输入:
$ ls file* | tee output.txt | wc -l
提高命令的权限:
$ :w !sudo tee %
Comments | NOTHING