Linux(bash)中容易被忽略但又超好用的命令【持续更新】
1 文件更新自动显示
最常用的应该是cat,more,less,但是如果文件超过40行就可以用tail来截取尾部的内容。当我们部署的服务器在运行的时候(特别是在处理请求的时候)会不断产生日志,当日志有更新时想让系统自动显示该怎么办呢? 使用下面的命令可以显示:
tail -n 50 -f [server.log]
这里-n 50 表示只截取最后50行,-f 表示有新内容的时候自动显示。 该命令会让你进入日志显示页面,按下ctrl+c 可退出。
2 纯文本文件的多窗口功能
借助vim来同时打开多个文件,多个文件窗口同时显示在屏幕上,在一般命令模式中:
: sp /etc/xx.log #每执行一次就可以打开一个窗口,存在多个窗口时每个窗口大小相同
可以使用【ctrl】+w放开之后↑或者↓来切换窗口。
3 按文件大小排序列出
按照文件大小从小到大排序:
ls -ldSr /etc/*
-l: 使用长列表格式 -d: 仅列出目录,不列出内容 -S: 按照文件大小排序 -r: 逆序 去掉r就是从大到小排序
4 打包时排除掉某些文件
tar -zcvf /opt/app.tar.gz --exclude=/opt/app/media/* /app
上面这条命令就排除掉了media文件夹及里面的文件。
5 借助alias,bash变量完成快捷操作
5.1 使用alias设置命令别名
比如每次启动uwsgi,daphne的时候会觉得命令很繁琐,可以使用alias设置命令别名:
$ alias inituwsgi='uwsgi --ini uwsgi.ini'
$ alias stopuwsgi='uwsgi --stop uwsgi.pid'
$ alias restartuwsgi='uwsgi --restart uwsgi.pid'
$ alias initdaphne='daphne appserver.asgi:application -b 127.0.0.1 -p 9000'
$ alias
之后在相应的目录下直接使用inituwsgi,initdaphne就可以快速启动了。(取消是unalias ) 当然,按照上面这样写好的alias都是临时的,断开连接或者reboot之后就消失了。 可以将这些变量写到~/.bashrc 文件中,这样重新启动也依然存在,可以一直使用。
vim ~/.bashrc
alias inituwsgi='uwsgi --ini uwsgi.ini'
alias stopuwsgi='uwsgi --stop uwsgi.pid'
alias restartuwsgi='uwsgi --restart uwsgi.pid'
alias initdaphne='daphne appserver.asgi:application -b 127.0.0.1 -p 9000'
写入之后重启或者source ~/.bashrc 才会生效。
5.2 使用bash变量自定义变量
假设我的python虚拟环境在py37中,可以这样快速激活虚拟环境:
$ venv="/opt/py37/bin/activate"
$ source ${venv}
假设我的工作目录在多层目录下,也可以快速进入:
$ workplace="/opt/work/app/001/"
$ cd ${workplace}
和上面一样将这些变量写到~/.bashrc 文件中:
vim ~/.bashrc
venv="/opt/py37/bin/activate"
workplace="/opt/work/app/001/"
...
...
写入之后重启或者source ~/.bashrc 才会生效。
5.3 使用shell script完成复杂操作
其他更多比较复杂的快捷操作可以使用shell脚本去完成,借助alias和变量的话就是完成一些比较简单常用的操作。此处略。
注: 以上修改~/.bashrc 来自定义alias和变量都是在单个用户下定义的,如果想要设置所有用户共享的alias和变量,可以在/etc/profile.d/这个目录下自己写一个.sh文件。实际上在login shell中我们登陆后,系统先读/etc/profile/ ,然后是/etc/profile.d/ 里的文件,其中读到一个~/.bashrc_profile或者~/.bash_login或者/.profile(三者之一) 里面会再去读我们的~/.bashrc 。
6
|