一、背景
你刚入职一家互联网公司,担任 Linux 运维实习生。公司要求你在服务器中整理项目目录、创建测试文件、备份配置文件、查看磁盘占用、设置常用别名,并掌握软链接、硬链接和文件查找命令的基本使用。
请根据以下场景完成操作练习。
场景一:熟悉当前目录环境
## 任务要求
1. 查看当前所在目录。
2. 切换到 `/home` 目录。
3. 查看 `/home` 目录下有哪些用户目录。
4. 查看 `/home` 目录本身的信息,而不是目录里面的内容。
5. 切换回上一次所在目录。
6. 切换到当前用户的家目录。
1. pwd
2. cd /home
3. ls
4. ls -ld
5. cd -
6. cd ~
场景二:查看隐藏文件和目录信息
## 任务要求
在当前用户家目录下完成以下操作:
1. 查看所有文件,包括隐藏文件。
2. 查看所有文件,但不显示 `.` 和 `..`。
3. 以长列表形式显示文件详细信息。
4. 以人类可读方式显示文件大小。
5. 查看文件的 inode 值。
1. ls -a
2. ls -A
3. ls -l
4. ls -lh
5. ls -i
场景三:创建项目目录结构
## 任务要求
公司需要你为一个新项目创建目录结构,项目名称为 `linux_practice`。
在当前用户家目录下创建如下目录:
```text
linux_practice/
├── code/
├── conf/
├── log/
├── backup/
└── data/
```
要求:
1. 一条命令创建所有目录。
2. 进入 `linux_practice` 目录。
3. 查看该目录结构。
1. mkdir -p linux_practice/{code,conf,log,nackup,data}
2. cd ./linux_practice
3. tree
场景四:创建测试文件
## 任务要求
在 `linux_practice` 目录中完成以下操作:
1. 在 `conf` 目录中创建 `nginx.conf` 文件。
2. 在 `log` 目录中批量创建 `app1.log` 到 `app5.log`。
3. 在 `data` 目录中批量创建 `1.txt` 到 `8.txt`。
4. 查看创建结果。
1. touch conf/nginx.conf
2. touch log/app{1..5}.log
3. touch data/{1..8}.txt
4. tree
场景五:复制文件并备份
## 任务要求
现在需要备份配置文件 `nginx.conf`。
1. 将 `conf/nginx.conf` 复制到 `backup` 目录。
2. 在原目录下生成一个备份文件 `nginx.conf.bak`。
3. 使用显示复制过程的方式完成备份。
4. 查看备份结果。
1. cp -v conf/nginx.conf backup/
2. cp -v conf/nginx.conf conf/nginx.conf.bak
3. ls conf backup
场景六:复制整个目录
## 任务要求
公司要求你将整个 `conf` 目录完整备份到 `backup` 目录下。
1. 使用递归方式复制 `conf` 目录。
2. 使用尽量保留原属性的方式复制 `conf` 目录。
3. 查看 `backup` 目录内容。
1-2. cp -rp conf backup/
3. ls backup
场景七:移动文件和重命名
## 任务要求
1. 将 `data/1.txt` 移动到 `code` 目录。
2. 将 `code/1.txt` 重命名为 `main.txt`。
3. 将 `log/app1.log` 重命名为 `system.log`。
4. 查看操作结果。
1. mv data/1.txt code
2. mv code/1.txt code/main.txt
3. mv log/app1.log log/system.log
4. ls data code log
场景八:查看磁盘和目录占用
## 任务要求
服务器磁盘空间不足,需要你排查目录大小。
1. 查看整个文件系统磁盘使用率。
2. 查看当前项目目录下每个文件和目录的大小。
3. 只查看 `linux_practice` 目录总大小。
4. 使用人类可读方式显示大小。
1. df -h
2. du -h
3. du -sh
4. du -sh ~/linux_practice
场景九:创建软链接和硬链接
## 任务要求
在 `linux_practice` 目录中完成以下操作:
1. 为 `conf/nginx.conf` 创建一个软链接,命名为 `nginx_soft.conf`。
2. 为 `conf/nginx.conf` 创建一个硬链接,命名为 `nginx_hard.conf`。
3. 查看三个文件的 inode 值。
4. 删除原文件 `conf/nginx.conf`。
5. 分别查看软链接和硬链接是否还能使用。
1. ln -s conf/nginx.conf nginx_soft.conf
2. ln conf/nginx.conf nginx_hard.conf
3. ls -i conf/nginx.conf nginx_soft.conf nginx_hard.conf
4. rm conf/nginx.conf
5. tree
场景十:设置命令别名
## 任务要求
为了提高效率,你需要设置常用命令别名。
1. 查看当前系统已有别名。
2. 临时设置 `ll`,让它等价于 `ls -l --color=auto`。
3. 使用 `ll` 查看当前目录。
4. 取消 `ll` 别名。
5. 思考如何让别名永久生效。
1. alias
2. alias ll='ls -l --color=auto'
3. ll
4. unalias ll
5. 临时设置的 alias 别名只在当前终端会话生效,关闭终端就会失效。想要别名永久生效,分两种情况:①仅对当前用户生效:在家目录的‘~/.bashrc’文件末尾添加alias配置,保存后执行‘source ~/.bashrc’重新加载配置,不用重启终端。②对系统所有用户全局生效:需要修改‘/etc/bashrc’(部分系统是‘/etc/profile’),写入别名,所有用户登录后都可以使用。
场景十一:查找命令所在位置
## 任务要求
你需要确认常用命令程序的位置。
1. 查看 `ls` 命令所在路径。
2. 查看 `cp` 命令所在路径。
3. 查看 `bash` 命令所在路径。
4. 查看当前 PATH 环境变量。
1. which ls
2. which cp
3. which bash
4. echo $PATH
场景十二:安全删除练习
## 任务要求
在 `linux_practice` 目录中完成以下操作:
1. 创建一个空目录 `temp`。
2. 使用 `rmdir` 删除空目录。
3. 创建一个非空目录 `test_rm`,里面创建一个文件 `a.txt`。
4. 尝试使用 `rmdir` 删除 `test_rm`,观察结果。
5. 使用交互方式删除 `a.txt`。
6. 使用递归方式删除 `test_rm`。
1. mkdir temp
2. rmdir temp
3. mkdir test_rm
touch test_rm/a.txt
4. rmdir test_rm
5. rm -i test_rm/a.txt
6. rm -r test_rm