Linux(bash)中容易被忽略但又超好用的命令【持续更新】
目录
- Linux(bash)中容易被忽略但又超好用的命令【持续更新】
- 1 常用
- 2 文件更新自动显示
- 3 纯文本文件的多窗口功能
- 4 按文件大小排序列出
- 5 打包时排除掉某些文件
- 6 借助alias,bash变量完成快捷操作
- 6.1 使用alias设置命令别名
- 6.2 使用bash变量自定义变量
- 6.3 使用shell script完成复杂操作
- 7 某个进程挂掉后卡死,切换终端杀死进程
- 8
1 常用
cd -
:返回上一个目录- [tab][tab] :若是在输入第一个字段时使用,则会命令补全; 若是在输入第二个字段时使用,则会文件名补全;若是在命令中输入参数时使用,则会参数/选项补全。
su -
:使用su
切换用户时,最好加上-
,比如切换到root:su -
;切换到一般用户:su - user
。尽管不加-也可以切换,但是不加-切换时进入的是nonlogin shell,其相应的环境变量等很多变量都不会改变,切换并不完全。sudo su -
:一般用户使用自己的密码切换到root用户下。前提是/etc/sudoers里面允许该一般用户使用sudo。(修改/etc/sudoers最好使用visudo,可以检查语法,通过使用visudo修改该文件还可以限定某些用户使用sudo时使用的指令范围,防止一般用户使用sudo权限过大。)touch
新建文件夹
2 文件更新自动显示
最常用的应该是cat,more,less,但是如果文件超过40行就可以用tail来截取尾部的内容。当我们部署的服务器在运行的时候(特别是在处理请求的时候)会不断产生日志,当日志有更新时想让系统自动显示该怎么办呢?
使用下面的命令可以显示:
tail -n 50 -f [server.log]
这里-n 50
表示只截取最后50行,-f
表示有新内容的时候自动显示。
该命令会让你进入日志显示页面,按下ctrl+c
可退出。
3 纯文本文件的多窗口功能
借助vim来同时打开多个文件,多个文件窗口同时显示在屏幕上,在一般命令模式中:
: sp /etc/xx.log #每执行一次就可以打开一个窗口,存在多个窗口时每个窗口大小相同
: vsp /etc/xx.log #打开新窗口并垂直排列窗口
可以使用【ctrl】+ww放开之后↑或者↓来切换窗口。
4 按文件大小排序列出
按照文件大小从小到大排序:
ls -ldSr /etc/*
-l: 使用长列表格式
-d: 仅列出目录,不列出内容
-S: 按照文件大小排序
-r: 逆序
去掉r就是从大到小排序
5 打包时排除掉某些文件
例如:
打包app文件夹生成/opt/app.tar.gz压缩包,同时排除/opt/app/media里面的所有文件
tar -zcvf /opt/app.tar.gz /app --exclude=/opt/app/media/*
-z 打包后用gz压缩生成 .tar.gz
-j 打包后用bz2压缩生成 .tat.bz2
-c 建立一个压缩包文件
-x 解压一个压缩包文件
-v 压缩过程显示文件(visualization)
-f 使用文件名(使用-f之后要立即接文件名,不能再接其他参数)
6 借助alias,bash变量完成快捷操作
6.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 #可查看目前的所有alias
之后在相应的目录下直接使用inituwsgi,initdaphne就可以快速启动了。(取消是unalias
)
当然,按照上面这样写好的alias都是临时的,断开连接或者reboot之后就消失了。
可以将这些变量写到~/.bashrc
文件中,这样重新启动也依然存在,可以一直使用。
vim ~/.bashrc
# User specific aliases and functions
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
才会生效。
6.2 使用bash变量自定义变量
假设我的python虚拟环境在py37中,可以这样快速激活虚拟环境:
$ venv="/opt/py37/bin/activate"
$ source ${venv}
假设我的工作目录在多层目录下,也可以快速进入:
$ workplace="/opt/work/app/001/"
$ cd ${workplace}
和上面一样将这些变量写到~/.bashrc
文件中:
vim ~/.bashrc
# .bashrc
venv="/opt/py37/bin/activate"
workplace="/opt/work/app/001/"
...
...
写入之后重启或者source ~/.bashrc
才会生效。
shell_script_108">6.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
。
7 某个进程挂掉后卡死,切换终端杀死进程
先切换到别的终端(一般一共7个)
【ALT】+【F1】…【F7】
使用ps -aux
找到刚刚出错的进程并杀死