Linux 实用 Shell 命令技巧

rm 安全增强

如果要谨慎使用 rm 命令,可以为它设置一个别名,在删除之前需要确认:

$ rm -i    # 请求确认

可以用 unalias 临时禁用别名,直到下次登录或重新设置:

$ unalias rm

如果 rm -i 已被设为默认别名但你希望删除时不确认,可以将 unalias rm 放入 ~/.bashrc。

快捷修正命令

快捷键 作用
Ctrl + U 删除从光标到行首的文本
Ctrl + K 删除从光标到行尾的文本
Ctrl + A 光标移到命令开头
Ctrl + E 光标移到命令结尾
Alt + F 光标向前移动一个单词
Alt + B 光标向后移动一个单词
Ctrl + W 删除一个词(以空格分隔)

快速创建目录并进入

在 ~/.bashrc 中定义以下函数,source ~/.bashrc 后即可使用 md temp 一键创建目录并进入:

md () { mkdir -p "$@" && cd "$1"; }

别名

$ alias update='sudo apt update'

别名能做的只有替换命令、增加参数以节省输入时间。如果需要更复杂的功能,可以编写脚本或向 ~/.bashrc 添加函数。

查看当前所有别名:

$ alias
alias butterfly='ssh -v -l jdoe 192.168.0.11'
alias c='clear'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'

查找进程

按名称查找进程 PID:

pgrep hello

或:

$ pidof hello
22692

按名称直接杀死进程:

$ killall hello

查看进程已运行时间:

$ ps -p 24525 -o lstart,etime
                 STARTED     ELAPSED
Sat Mar 23 20:52:08 2019       02:45

文件与日志

实时显示日志文件内容:

$ tail -f filename.log

也可用 less 查看文件,按 Shift + F 达到类似效果。

查看磁盘占用:

$ df -h
/dev/sda14      4.6G   10M  4.4G   1% /tmp
/dev/sda11      454M  366M   61M  86% /boot

查看内存占用:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7.7G        3.5G        452M        345M        3.7G        3.5G
Swap:          7.6G          0B        7.6G

清空文件内容而不删除文件:

>filename

不解压查看压缩日志:

$ zcat test.gz
$ zless test.gz

快速目录切换

cd -    # 回到上一个目录
cd      # 回到用户家目录

注意:用 ; 分隔多条命令时,前一条失败不会阻止后续执行——例如 cd /temp/log/;rm -rf * 如果 cd 失败,rm -rf * 会在当前目录执行,非常危险。应使用 && 确保前一条成功才执行后一条:

$ cd /temp/log/ && rm -rf *

日志同时输出到文件和控制台

$ ./test.sh | tee test.log

进程控制

Ctrl + Z 暂停进程,fg 恢复前台执行,bg 切到后台继续执行。

使用 time 计算程序运行时间:

$ time ./fibo 30
the 30 result is 832040
real    0m0.088s
user    0m0.084s
sys    0m0.004s

查看内存占用前 10 的进程:

$ ps -aux | sort -k4nr | head -n 10

搜索

按功能描述搜索相关命令:

$ man -k "copy files"
cp (1)               - copy files and directories
cpio (1)             - copy files to and from archives
install (1)          - copy files and set attributes

在当前目录下查找包含某字符串的文件:

$ grep -rn "test"
test2.txt:1:test

查看 ELF 文件头信息:

$ readelf -h filename

查看库中是否包含某个接口:

$ nm filename | grep interface

控制台实用技巧

终端日志太多时,Ctrl + S 冻结屏幕输出,Ctrl + Q 恢复。

没有 vi 编辑器时,可以用 cat 临时编辑文件:

$ cat > file.txt
some words

编辑完成后按 Ctrl + D 保存。

命令行下的复制粘贴:

Ctrl + Insert    # 复制
Shift + Insert   # 粘贴

   转载规则


《Linux 实用 Shell 命令技巧》 由 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Linux 命令行神器推荐 Linux 命令行神器推荐
以下是一些实用的命令行工具推荐。 ag比 grep、ack 更快的递归搜索文件内容。 jqjson 文件处理及格式化显示,支持高亮,可替代 python -m json.tool。 ncdu可视化的空间分析程序(基于 ncurses)。当发
2018-08-09
下一篇 
Linux Shell 特殊变量 Linux Shell 特殊变量
变量 含义 $$ Shell 本身的 PID $! Shell 最后运行的后台进程的 PID $? 最后运行的命令的结束代码(返回值) $- 使用 Set 命令设定的 Flag 一览 $* 所有参数列表。加引号
2018-07-12
  目录