项目目标
这是一个连小型都算不上的迷你项目,项目的目标是你将创建一个简单的文件夹结构,处理文件,并使用通配符有针对性地复制和清理文件。借此来了解Linux的导航与文件管理功能- 文件管理(ls, cp, mv, rm,mkdir,touch,file)
任务描述
在主目录中创建一个名为 bash_project 的文件夹bash_project├── data├── text└── logs
预期结果
编写脚本前的知识重温
在我们编写我们的脚本来管理文件和文件夹实现上面项目的效果之前,有必要大致了解一下 Linux 系统的文件系统。Linux使用单个目录树,从所谓的根目录(/)开始,所有内容(文件、文件夹、驱动器)都挂载在这个单一根目录下。/home – 用户的个人文件/etc – 系统和配置文件/bin 和 /usr/bin – 程序/var – 可变数据,如日志/tmp – 临时文件
👉记住:Linux没有像Windows那样的盘符(C:、D:)。了解了Linux的文件系统后,还有两个很重要的概念需要了解,这就是绝对路径与相对路径。绝对路径:始终以 / 开头,给出完整路径。可以理解为从文件系统的根目录这个位置开始写文件、文件夹的路径。假设你现在再 /home/devops/Documents 这个目录下面,要切换到该目录下的 Documents 目录# 查看当前工作路径pwd# 使用绝对路径的方法cd /home/devops/Documents# 使用相对路径的方法cd Documents
上面的例子中,使用 pwd 查看你当前所在的位置,pwd 代表print working directory(打印工作目录),它会显示当前目录的完整路径。使用 cd(change directory,切换目录)来改变当前目录。cd命令还有下面的用法:# 进入子目录cd Documents# 进入上级目录cd ..# 直接回到主目录cd# 或cd ~# 进入任意目录cd /etc
想要显示文件和文件夹可以使用ls 命令列出目录内容。# 基本用法ls# 详细视图ls -l# 显示隐藏文件ls -a# 组合选项ls -la
创建文件使用命令touch 而文件夹的命令是mkdir,下面我们来看看这两个命令的例子# 创建文件夹(mkdir)mkdir project# 一次创建多个文件夹mkdir project1 project2# 一次创建多个文件夹的另外一种写法mkdir project{3..4}# 嵌套文件夹mkdir -p project/bash/resource# 创建文件(touch)touch data.txt
# 复制文件cp data.txt logs.txt# 复制文件到目录cp data.txt project1/# 递归复制文件夹cp -r project backup/
删除文件和文件夹使用mv命令,这个命令既可用于移动文件和文件夹,也用于重命名文件和文件夹。而且在重命名的时候,可以连同文件的后缀名也一起进行修改(除文本文件外,不建议这么做)。# 移动文件mv logs.txt project2/# 重命名文件mv project2/logs.txt project2/data.log
删除文件和文件夹的命令是rm。操作的方法和cp、mv等命令的差不多,但是删除属于危险操作,最好是添加询问的安全选项。# 删除文件rm data.txt# 递归删除文件夹rm -r backup# 安全选项rm -ri project4
👉警告:被删除的文件不会进入回收站。就算你使用的linux发行版本是有桌面的版本,在命令行中使用删除命令的操作,文件都不会进入到回收站,所以删除操作需要谨慎再三确认,建议添加安全选项-i参数。通配符可以帮助你一次性操作多个文件。常用的通配符有下面的几种- [] – 匹配字符集合,通常用来匹配多个条件,如:[1-9]、[a-z]、[A-Z]
ls *.txtrm *.logls project[2-3]
file 命令根据内容识别文件类型——而不是扩展名。如下面截图中的例子最终代码
在bash中,使用nano FileManage.sh命令创建项目的脚本文件,然后输入下面的内容:cd ~mkdir-p bash_project/{data,text,logs}cd bash_project/datatouch data{1..3}.txt data{4..5}.log info.mdcp *.txt ../text/mv *.log ../logs/echo"data 目录当前的内容"lsecho"text 目录当前的内容"ls ../textecho"logs 目录当前的内容"ls ../logs
输入完成后,按【 Ctrl + X 】的组合键,再输入 【 Y 】→ 【 Enter 】。保存并退出。再在命令行中输入下面的命令:一切顺利没用报错的话,可以得到下图中的结果,文件夹和文件都被创建,并放到了预期的位置。总结
这些基础知识是你在日后使用Bash编写运维自动化脚本的后续操作中最基础的命令知识。
系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。
