Linux case 命令实战示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在 shell 脚本中使用 Linux 的 case 命令来处理不同的文件扩展名。实验内容涵盖了 case 命令的语法和用法,演示了如何为文件扩展名实现 case 语句,并展示了如何使用 case 命令自动化备份操作。本实验旨在帮助你在 Linux 环境中提升处理各种实用工具的技能。

实验首先解释了 case 命令的语法和用法,这是一个强大的工具,用于根据变量或表达式的值做出决策。你将学习如何构建 case 语句,并查看其实际应用的示例。

接下来,实验将指导你实现 case 语句来处理不同的文件扩展名。你将创建一个 shell 脚本,根据文件类型执行各种操作,例如识别文本文档、PDF 文件和图像。

最后,实验演示了如何使用 case 命令自动化备份操作。你将学习如何创建一个脚本,将具有特定扩展名的文件备份到不同的位置,从而更轻松地管理和组织数据。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/read("Input Reading") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") subgraph Lab Skills linux/echo -.-> lab-422588{{"Linux case 命令实战示例"}} linux/read -.-> lab-422588{{"Linux case 命令实战示例"}} linux/touch -.-> lab-422588{{"Linux case 命令实战示例"}} linux/cp -.-> lab-422588{{"Linux case 命令实战示例"}} end

理解 case 命令的语法和用法

在这一步中,你将学习 Linux 中 case 命令的语法和用法。case 命令是一个强大的工具,用于根据变量或表达式的值做出决策。

case 命令的基本语法如下:

case expression in
  pattern1)
    commands
    ;;
  pattern2)
    commands
    ;;
  ...
  *)
    default commands
    ;;
esac

以下是一个演示 case 命令用法的示例:

echo "Enter a file extension: "
read file_ext

case "$file_ext" in
  "txt")
    echo "The file is a text document."
    ;;
  "pdf")
    echo "The file is a PDF document."
    ;;
  "jpg" | "png" | "gif")
    echo "The file is an image."
    ;;
  *)
    echo "Unsupported file type."
    ;;
esac

示例输出:

Enter a file extension:
pdf
The file is a PDF document.

在上面的示例中,case 命令检查 file_ext 变量的值,并根据模式匹配执行相应的命令。* 模式用作默认情况,如果其他模式都不匹配,则会执行默认命令。

当你需要根据文件扩展名或其他输入值执行不同的操作时,case 命令特别有用。

实现针对文件扩展名的 case 语句

在这一步中,你将学习如何在 shell 脚本中使用 case 语句来处理不同的文件扩展名。

假设你有一个包含各种文件的目录,并且你希望根据文件扩展名执行不同的操作。你可以使用 case 语句来实现这一点。

首先,创建一个新目录并导航到该目录:

mkdir ~/project/files
cd ~/project/files

现在,让我们创建一些具有不同扩展名的示例文件:

touch file1.txt file2.pdf file3.jpg file4.png file5.gif file6.doc

接下来,在 ~/project/files 目录中创建一个名为 file_operations.sh 的新 shell 脚本:

nano file_operations.sh

将以下代码添加到脚本中:

#!/bin/bash

for file in *; do
  case "$file" in
    *.txt)
      echo "Text file: $file"
      ;;
    *.pdf)
      echo "PDF file: $file"
      ;;
    *.jpg | *.png | *.gif)
      echo "Image file: $file"
      ;;
    *.doc)
      echo "Document file: $file"
      ;;
    *)
      echo "Unsupported file type: $file"
      ;;
  esac
done

保存并退出文件。

使脚本可执行:

chmod +x file_operations.sh

现在,运行脚本:

./file_operations.sh

示例输出:

Text file: file1.txt
PDF file: file2.pdf
Image file: file3.jpg
Image file: file4.png
Image file: file5.gif
Document file: file6.doc

在脚本中,case 语句检查文件扩展名并执行相应的操作。*.txt*.pdf*.jpg | *.png | *.gif*.doc 模式匹配文件扩展名,并为每种文件类型打印相应的消息。* 模式是默认情况,用于处理任何不支持的文件类型。

此示例演示了如何使用 case 语句根据文件扩展名自动化文件管理任务。

使用 case 命令自动化备份操作

在这一步中,你将学习如何使用 case 命令为不同文件类型自动化备份操作。

假设你有一个包含各种文件的目录,并且你希望为每种文件类型创建备份。你可以使用 case 语句来实现这一点。

首先,创建一个新目录并导航到该目录:

mkdir ~/project/backup
cd ~/project/backup

现在,让我们创建一些具有不同扩展名的示例文件:

touch file1.txt file2.pdf file3.jpg file4.png file5.gif file6.doc

接下来,在 ~/project/backup 目录中创建一个名为 backup.sh 的新 shell 脚本:

nano backup.sh

将以下代码添加到脚本中:

#!/bin/bash

for file in *; do
  case "$file" in
    *.txt)
      echo "Backing up text file: $file"
      cp "$file" "${file%.txt}.txt.bak"
      ;;
    *.pdf)
      echo "Backing up PDF file: $file"
      cp "$file" "${file%.pdf}.pdf.bak"
      ;;
    *.jpg | *.png | *.gif)
      echo "Backing up image file: $file"
      cp "$file" "${file%.*}.bak"
      ;;
    *.doc)
      echo "Backing up document file: $file"
      cp "$file" "${file%.doc}.doc.bak"
      ;;
    *)
      echo "Skipping unsupported file type: $file"
      ;;
  esac
done

保存并退出文件。

使脚本可执行:

chmod +x backup.sh

现在,运行脚本:

./backup.sh

示例输出:

Backing up text file: file1.txt
Backing up PDF file: file2.pdf
Backing up image file: file3.jpg
Backing up image file: file4.png
Backing up image file: file5.gif
Backing up document file: file6.doc

在脚本中,case 语句检查文件扩展名并执行相应的备份操作。对于每种文件类型,脚本会创建一个具有相同名称但带有 .bak 扩展名的备份文件。*.jpg | *.png | *.gif 模式匹配所有图像文件,备份文件会以相同的基本名称创建,但不带扩展名。

此示例演示了如何使用 case 语句根据文件扩展名自动化备份操作。

总结

在本实验中,你首先学习了 Linux 中 case 命令的语法和用法。case 命令是一个强大的工具,用于根据变量或表达式的值做出决策。你探索了 case 命令的基本结构,并看到了一个示例,演示了如何使用它来检查文件扩展名并相应地执行不同的操作。在第二步中,你实现了 case 语句来处理 shell 脚本中的各种文件扩展名,根据文件类型自动化文件操作。

Linux 命令速查表