【Linux(bash)】中容易被忽略但又超好用的命令【持续更新】

news/2024/7/24 3:21:44 标签: linux, shell

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找到刚刚出错的进程并杀死

8


http://www.niftyadmin.cn/n/1026751.html

相关文章

基于CentOS7+Nginx+Daphne+uWSGI+Django3.2+supervisor+mysql8的单体架构服务器生产环境部署(二)

CentOS7NginxDaphneuWSGIDjango3.2supervisormysql8的服务器生产环境部署(二) 第一篇:基于CentOS7NginxDaphneuWSGIDjango3.2supervisormysql8的服务器生产环境部署(一)已经完成了基本使用http连接请求处理的部署&…

【Matlab】不是二进制 MAT 文件。请尝试执行 load -ASCII 以便以文本形式读取。

今天在用matlab打开matlab’s v7.3 mat file的时候,遇到了这个问题: 【Matlab】不是二进制 MAT 文件。请尝试执行 load -ASCII 以便以文本形式读取。 重新打开matlab 或者 更换mat存放的目录即可打开。 另外还可以用python打开,使用hdf5stora…

【Linux】将占据屏幕正常输出的服务移至后台

ALTF1234567切换终端 (可能会被ulimit和limit.conf限制连接数,此时应该采取别的方式) 无法脱机执行任务(连接断了任务就终止)使用screen 可以脱机执行任务数据流重定向supervisor 可以脱机执行任务& 、 [crtl]z 、…

【Linux】中root就是万能的吗?

不是 例子: bash只能管理自己的任务而不能管理其他bash的任务,所以即使是root也不能够将别人bash下面的任务拿来执行。

【Linux(vim)】下编辑却显示readonly的解决方法 E325: ATTENTION E45: ‘readonly‘ option is set (add ! to override)

自查一下是不是按了[crtl]z导致vim窗口关闭,当再次打开时出现了这个错误。 如果是这样导致出现的错误,应当意识到开启vim之后[crtl]z实际上把vim暂停并扔到了后台(任务管理的命令)。此时可以使用 jobs -l查看后台状态&#xff0c…

【Linux】init服务脚本和systemd服务管理机制的区别

区别 Centos6以前用的都是init来启动服务; Centos7开始默认使用了systemd管理服务; init串行启动所有服务; systemd并行启动所有服务,充分利用多内核架构。 init启动的服务分两类:独立启动模式(stand alo…

【算法】前缀、中缀、后缀表达式(逆波兰表达式)

转载自https://www.cnblogs.com/chensongxian/p/7059802.html 1介绍 前缀表达式、中缀表达式、后缀表达式都是四则运算的表达方式,用以四则运算表达式求值 ,即数学表达式的求值。 2为什么要用前缀或者后缀表达式? 对于人类来说中缀表达式最简单明了,但对于计算…

【C++---const引用】数组进行指针引用传递给函数error: non-const lvalue reference of type ‘int*‘ to an rvalue

目录原因类型转换手动转换自动转换关于临时量关于常量引用(const的引用)const引用的对象不是不能被修改了吗,这里为什么被修改了?不是说是const引用吗?为什么又变成了引用所绑定的指针的【顶层const】?最后…