推荐序
距离Linux 常用命令 文章分类下最后一次更新已经过去了 2 年,特此拾起,进行系统性的学习。在这里将最近阅读的相关读物分享给大家,从入门到入门,书籍内容开源、免费、可在线阅读;适合所有即将折腾 Linux 服务器的用户,如搭建博客、部署面板等等。当然,对于 Mac/Windows用户而言,学习命令行也有很多好处,通过熟悉基础命令的功能特性,再自己写脚本来实现一些想要的效果,如按时间自动创建文件夹,并把当天下载的图片文件分别放入相应的文件夹下,清理7天内没有归档的图片,删除小于1MB的图片等等...。
一个例子:因为经常需要批量下载图片,偶尔会出现重复下载的情况,于是写了如下名叫 x.sh 的Shell脚本,将重复下载的图片删除;其中涉及到的命令有 md5/cp/mv/rm/cat/echo/find/while do/sed/grep/awk/sort/uniq...
脚本命名为 x.sh,在脚本的 while 循环中会重复调用;图片下载后放在 /Users/Julia/Downloads/Photos/,Photos 文件夹下按当天日期创建子文件夹;x.sh 脚本完整内容如下:
文件去重
#!/bin/bash
path="/Users/Julia/Downloads/";
datex=$(date +%Y%m%d);
cd $path
mkdir ./Photos ./Photos/$datex > /dev/null 2>&1
#将当天下载的图片移至 ./Photos/$datex 下;
find . -type f -mtime -1 -print \( -iname "*.jpeg" -o -iname "*.jpg" -o -iname "*.png" \) -exec mv '{}' ./Photos/$datex ';';
## 根据 MD5 删除重复文件
cd $path
# 汇聚全部JPG/JPEG/PNG 文件的MD5值及其所在路径
find ./*/$datex/ -type f \( -iname "*.jpeg" -o -iname "*.jpg" -o -iname "*.png" \) -exec md5 {} ';' >> md5.txt;
cat md5.txt | awk '{print $NF}' | sort | uniq -d > md5_repeat.txt # 提取重复的MD5
while read line; do
grep -E $line ./md5.txt | grep -Eo "./Photos.*\.(jpg|JPG|png|PNG|jpeg|JPEG)" >> md5_repeat_filter.txt #根据重复的MD5提取它们的路径
done < md5_repeat.txt
sed -n 'n;p' md5_repeat_filter.txt > md5_repeat_filter_rm.txt # 偶数行删除
while [ $(ls -l md5_repeat_filter_rm.txt | awk {'print $5'}) -gt 0 ]; do
while read line; do
rm "$line"
rm $line
echo DELETE $line ...
done <md5_repeat_filter_rm.txt
cd $path
./x.sh # 当前循环介绍再调用一次 直至 awk {'print $5'}) -gt 0 结果为 false;
done
cd $path
find ./ -name "md5*.txt" -exec rm -rf {} ';'; #删除产生的 txt 文件
当然,也可以优雅一点,像 JavaScript 函数那样;将需多次(循环)执行的脚本放入名为 x repeat 的自定义函数(Shell 函数)内;
#!/bin/bash
path="/Users/Julia/Downloads/";
datex=$(date +%Y%m%d);
cd $path
mkdir ./Photos ./Photos/$datex > /dev/null 2>&1
#将当天下载的图片移至 ./Photos/$datex 下;
find . -type f -mtime -1 -print \( -iname "*.jpeg" -o -iname "*.jpg" -o -iname "*.png" \) -exec mv '{}' ./Photos/$datex ';';
xrepeat(){ ## 或 function xrepeat()
## 根据 MD5 删除重复文件
cd $path
# 汇聚全部JPG/JPEG/PNG 文件的MD5值及其所在路径
find ./*/$datex/ -type f \( -iname "*.jpeg" -o -iname "*.jpg" -o -iname "*.png" \) -exec md5 {} ';' >> md5.txt;
cat md5.txt | awk '{print $NF}' | sort | uniq -d > md5_repeat.txt # 提取重复的MD5
while read line; do
grep -E $line ./md5.txt | grep -Eo "./Photos.*\.(jpg|JPG|png|PNG|jpeg|JPEG)" >> md5_repeat_filter.txt #根据重复的MD5提取它们的路径
done < md5_repeat.txt
sed -n 'n;p' md5_repeat_filter.txt > md5_repeat_filter_rm.txt # 偶数行删除
while [ $(ls -l md5_repeat_filter_rm.txt | awk {'print $5'}) -gt 0 ]; do
while read line; do
rm "$line"
rm $line
echo DELETE $line ...
done <md5_repeat_filter_rm.txt
cd $path
xrepeat # 当前循环介绍再调用一次 shell 函数 xrepeat 直至 awk {'print $5'}) -gt 0 结果为 false;
done
}
xrepeat
cd $path
find ./ -name "md5*.txt" -exec rm -rf {} ';'; #删除产生的 txt 文件
TLCL - 《快乐的命令行》
在线阅读:https://billie66.github.io/TLCL/
TLCL - 《快乐的命令行》目录
引言 (Introduction)
第一章 引言
学习 shell
第二章 : 什么是 shell
第三章:文件系统中跳转
第四章:探究操作系统
第五章:操作文件和目录
第六章:使用命令
第七章:重定向
第八章:从 shell 眼中看世界
第九章:键盘高级操作技巧
第十章:权限
第十一章:进程
配置文件和 shell 环境
第十二章 : shell 环境
第十三章 : vi 简介
第十四章 : 自定制 shell 提示符
常见任务和基本工具
第十五章 : 软件包管理
第十六章 : 存储媒介
第十七章 : 网络系统
第十八章 : 查找文件
第十九章 : 归档和备份
第二十章 : 正则表达式
第二十一章 : 文本处理
第二十二章 : 格式化输出
第二十三章 : 打印
第二十四章 : 编译程序
编写 Shell 脚本
第二十五章 : 编写第一个 Shell 脚本
第二十六章 : 启动一个项目
第二十七章 : 自顶向下设计
第二十八章 : 流程控制:if 分支结构
第二十九章 : 读取键盘输入
第三十章 : 流程控制:while/until 循环
第三十一章 : 疑难排解
第三十二章 : 流程控制:case 分支
第三十三章 : 位置参数
第三十四章 : 流程控制:for 循环
第三十五章 : 字符串和数字
第三十六章 : 数组
第三十七章 : 奇珍异宝
TLCL - 《Bash 脚本教程》
本教程介绍 Linux 命令行 Bash 的基本用法和脚本编程。 Via Ruanyifeng;
在线阅读:https://wangdoc.com/bash/
TLCL - 《Bash 脚本教程》目录
简介
基本语法
模式扩展
引号和转义
变量
字符串操作
算术运算
行操作
目录堆栈
脚本入门
read命令
条件判断
循环
函数
数组
set命令,shopt命令
脚本除错
mktemp命令,trap命令
启动环境
命令提示符
TLCL - 《shell编程》
在线阅读:https://shellscript.readthedocs.io/zh_CN/latest/index.html
语法基础
脚本结构
数据类型
变量
操作符
控制流程语句
函数
知识碎片
常用类库
常用环境变量
常用命令
常用函数
脚本示例
示例脚本
实用脚本
TLCL - 《命令行的艺术》
the art of command line
https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
目录
前言
基础
日常使用
文件及数据处理
系统调试
单行脚本
冷门但有用
仅限 OS X 系统
仅限 Windows 系统
更多资源
免责声明
附注
Linux 常用命令学习:https://www.runoob.com/w3cnote/linux-common-command-2.html
面向初学者的命令行教程——如何像专业人士一样使用终端:https://www.freecodecamp.org/chinese/news/command-line-for-beginners/#a-bit-of-history-posix
版权属于:毒奶
联系我们:https://limbopro.com/6.html
毒奶搜索:https://limbopro.com/search.html
机场推荐:https://limbopro.com/865.html IEPL专线/100Gb/¥15/月起
毒奶导航:https://limbopro.com/daohang/index.html本文链接:https://limbopro.com/archives/TLCL.html
本文采用 CC BY-NC-SA 4.0 许可协议,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!