Linux 难点攻克

1. VIM不使用ESC退出插入模式的方法

1
2
3
ctrl + [  # 可以退出插入模式
alt + z # 可以退出 插入模式 (windows版git可用)
ctrl + c # 也可以退出插入模式 (会中断当前命令)

2. Shell脚本自动查询并结束进程

1
2
pid=`ps -ef|grep ./agent |grep -v grep|awk '{print $2}'`
kill \$pid

3. TMUX 不开启鼠标实现,上下滚动历史

1
control +  b + 页面向上/向下滚动向上/向下滚动缓冲区的一页

4. Docker-compose 实现 docker run -itd

1
2
3
tty: true
stdin_open: true
entrypoint: /bin/sh

5. 查看目录文件大小时按大小排序

1
du -sh * | sort -hr

其中,-sh 表示以大小排序,* 表示当前目录下的所有文件和文件夹,sort -hr 表示按大小升序排序。

6. ll 命令修改时间格式

找到 ll 命令的别名设置,一般在 /etc/profile~/.profile~/.bashrc 等位置。然后添加 --time-style 选项。

1
2
3

alias ll = "ls -l --time-style='+%Y-%m-%d %H:%M:%S'"

效果展示

1
2
3
4
root@nas:~# ll
total 4.0K
lrwxrwxrwx+ 1 root root 26 2023-12-19 23:03:49 home -> /var/services/plex
drwx------ 4 root root 4.0K 2024-04-04 17:21:07 nginx

OpenWRT配置

由于 OpenWRT 上的版本差异,配置有所差别,修改配置文件: /etc/shinit

1
2
3

alias ll='ls -alF --color=auto --full-time'

效果展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BusyBox v1.36.0 (2023-03-19 03:31:49 UTC) built-in shell (ash)

_________
/ /\ _ ___ ___ ___
/ LE / \ | | | __| \| __|
/ DE / \ | |__| _|| |) | _|
/________/ LE \ |____|___|___/|___|
\ \ DE /
\ LE \ / -------------------------------------------
\ DE \ / OpenWrt SNAPSHOT, r5864-854ee73cb6
\________\/ -------------------------------------------

root@OpenWrt:~# ll
drwxr-xr-x 1 root root 3488 2023-11-07 22:33:02 +0800 ./
drwxr-xr-x 1 root root 3488 2023-04-17 13:04:49 +0800 ../
drwxr-xr-x 10 root root 3488 2023-05-13 00:51:58 +0800 .acme.sh/
-rw------- 1 root root 5 2023-06-06 23:49:23 +0800 .bash_history
drwx------ 2 root root 3488 2023-04-14 19:42:13 +0800 .ssh/

7. 查看 命令的别名定义

比如查看 ll 是怎么被定义的

1
2
3
4

root@OpenWrt:/etc/openclash# alias ll
ll='ls -alhF --color=auto --full-time'

8. 查看 Bash 加载了哪些配置文件

要查看当前Bash会话加载了哪些配置文件,可以采用以下几种方法:

查看启动日志

  • Bash在启动时会记录其加载的配置文件。这些信息通常会被写入到标准错误输出(stderr),但在交互式会话中可能被终端程序隐藏。你可以尝试在一个新的终端窗口中启动bash,并重定向其启动时的stderr输出到一个文件,以便查看:

    1
    bash -l 2> startup.log

    然后查看startup.log文件,其中应包含bash加载配置文件的相关消息。这些消息通常包括文件路径和加载时间。

**使用bash -x**:

  • 使用bash -x选项启动一个新的bash会话,它会启用详细调试模式,显示每一条命令及其执行结果。这将包括bash在启动过程中执行的配置文件中的命令:

    1
    bash -lx

    在启动的bash会话中,你会看到类似+ source /etc/profile这样的行,它们表明bash正在加载指定的配置文件。

9. 切换 root 账号 su 命令

su 命令可以切换用户如 su admin,需要验证目标用户的 admin 的密码,对于切换 root 账户 su root 可以简写为 su

重要参数

  • -, -l, –login make the shell a login shell

案例:

  • su root 只是切换用户身份,工作目录还停留在当前目录,并且与 root 相关的环境变量也没有加载
  • su - root 除了切换用户身份,还切换到 root 的 home 目录,并且相关的环境变量也加载,就像重写登录了 root 一样

SUDO权限

su 命令切换root用户需要输入 root 的密码,但是在有 SUDO 权限的时候,可以不用输入 root 的密码,仅仅验证自己的密码即可。

  • sudo su - root 验证自己密码后即可切换到 root 账号