写在前面的话
shell的魅力在于简单而有效,也许简单的组合就可以实现复杂的功能。我希望把他们记录下来,用于备忘,以及和大家分享。如果你觉得有简单而实用的命令或者命令的组合也可以在博客下面留言。
持续更新。。。
统计文件行数
$ find -name "*.h" | xargs wc -l
shell 神器
- ag:比grep、ack更快的递归搜索文件内容
- tig:字符模式下交互查看git项目,可以替代git命令。
- shellcheck:shell脚本静态检查工具,能够识别语法错误以及不规范的写法。
- mosh:基于UDP的终端连接,可以替代ssh,连接更稳定,即使IP变了,也能自动重连。
- htop: 提供更美观、更方便的进程监控工具,替代top命令。
- axel:多线程下载工具,下载文件时可以替代curl、wget。
- cloc:代码统计工具,能够统计代码的空行数、注释行、编程语言
- you-get: 非常强大的媒体下载工具,支持youtube、google+、优酷、芒果TV、腾讯视频、秒拍等视频下载。
df命令
参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 8.0K 7.9G 1% /dev
tmpfs 1.6G 1.2M 1.6G 1% /run
/dev/nvme0n1p1 235G 14G 210G 6% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 7.9G 110M 7.8G 2% /run/shm
none 100M 40K 100M 1% /run/user
/dev/sda5 917G 99G 772G 12% /home
上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/nvme0n1p1 这个分割区被挂在根目录下
du命令
如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:–max-depth=,这是个极为有用的参数!注意使用“*”,可以得到文件的使用空间大小.
[root@bsso yayu]# du -h --max-depth=1 work/testing
27M work/testing/logs
35M work/testing
[root@bsso yayu]# du -h --max-depth=1 work/testing/*
8.0K work/testing/func.php
27M work/testing/logs
8.1M work/testing/nohup.out
8.0K work/testing/testing_c.php
12K work/testing/testing_func_reg.php
8.0K work/testing/testing_get.php
8.0K work/testing/testing_g.php
8.0K work/testing/var.php
参考链接
文件重命名
有时候需要将文件批量重命名,比如一般下载的图片数据集都是以时间戳作为图片的名字,但是有时候用起来不方便,就需要将文件名简单的升序重命名。最后文件名类似这样:1.png, 2.png ….
#!/bin/bash
i=0
for file in `ls | grep png`
do
mv $file "$i.png"
echo "rename $file --> $i.png"
i=`expr $i + 1`
done