网站首页 包含标签 Linux教程 的所有文章

  • Linux系统使用cp命令用法教程详解

    熟悉在 Linux 命令行中复制文件和目录的 cp 命令。 cp 命令是 Linux 中一个重要的命令,你可能经常会用到它。 正如名称所示,cp 代表 复制copy,它被用于 在 Linux 命令行中复制文件和目录。 这是一个相对简单的命令,只有几个选项,但你仍有必要深入了解它。 在展示 cp 命令的实际示例之前,我更建议你先熟悉绝对路径和相对路径的概念,将文件从一个位置复制到另一个位置时,你需要用到它们。 Linux 中的绝对路径和相对路径的不同之处 复制单个文件 cp 命令最简单和最常见的用途是复制文件,只需指定源文件和要“粘贴”文件的目标目录即可。 cp 源文件 目标目录 在复制文件的同时重命名它 你将文件复制到另一个位置时可以同时进行 重命名。这有点类似于文本编辑器中的“另存为”选项。 为此,你必须在路径中给出新的文件名。 cp 源文件 目标目录/新文件名 复制多个文件 你还可以将多个文件复制到另一个位置。 cp 文件1 文件2 文件3 目标目录 在这种情况下,你无法重命名文件。 你还可以使用通配符扩展,将特定后缀的文件复制到另一个位置: cp *.txt 目标目录 复制文件时避免覆盖现有文件 如果你将 file1.txt 复制到一个已经存在名为 file1.txt 文件的目录中,它会将原有的文件覆盖掉。 如果你不希望这样,cp 命令还提供了几个选项来处理文件覆盖的情况。 首先是使用选项 -i 的交互模式。在交互模式下,它会询问是否确认或放弃覆盖目标文件。 cp -i 源文件 目标目录 cp:覆盖 '目标目录/源文件' ? 按 Y 覆盖文件,按 N 跳过复制该文件。 选项 -n 代表完全取消覆盖。使用此选项时目标文件不会被覆盖。 cp -n 源文件 目标目录 还有一个选项 -b,在目标目录的文件将被覆盖时自动为其创建备份。我猜这里 b 代表 备份backup。 cp -b 源文件 目标目录 最后,还有一个“更新update”选项 -u,如果目标文件比源文件旧,或者目标文件不存在,就会被覆盖掉。 cp -u 源文件 目标目录 复制目录(文件夹) cp 命令也用来在 Linux 命令行中复制目录。 在复制目录时,你需要使用递归选项 -r。 cp -r 源目录 目标目录 你还可以将多个目录复制到另一个位置: cp -r 目录1 目录2 目录3 目标目录 在复制时保留属性 当你将文件复制到另一个位置时,它的 时间戳、文件权限 甚至所有权都会发生变化。 这是正常的行为。但在某些情况下,你可能希望在复制文件时保留其原始属性。 要保留属性,请使用选项 -p: cp -p 源文件 目标目录 ? 还有一个 -a 选项用于存档模式。它将连 ACL 也保留下来。 ...

    2023-08-12 212
  • Bash基础知识:If Else语句详解

    如果这样,那就那样,否则就……。还不明白吗?了解了 Bash Shell 脚本中的 if-else 语句后就明白了。 Bash 支持 if-else 语句,以便你可以在 shell 脚本中使用逻辑推理。 通用的 if-else 语法如下: if [ expression ]; then ## 如果条件为真则执行此块,否则转到下一个 elif [ expression ]; then ## 如果条件为真则执行此块,否则转到下一个 else ## 如果以上条件都不成立,则执行此块 fi 正如你所注意到的: elif 用于 “否则如果” 类型的条件。 if-else 条件始终以 fi 结尾。 使用分号 ; 和 then 关键字 在展示 if 和 else-if 的示例之前,我先分享一下常见的比较表达式(也称为测试条件)。 测试条件 以下是可用于数字比较的测试条件运算符: 条件 当满足以下条件时为真 $a -lt $b $a < $b($a 小于 $b) $a -gt $b $a > $b($a 大于 $b) $a -le $b $a <= $b($a 小于等于 $b ) $a -ge $b $a >= $b ($a 大于等于 $b) $a -eq $b $a == $b $a -ne $b $a != $b 如果你要比较字符串,可以使用以下测试条件: 条件 当满足以下条件时为真 "$a" = "$b" $a 与 $b 相同 "$a" == "$b" $a 与 $b 相同 "$a" != "$b" $a 与 $b 不同 -z "$a" $a 为空字符串 文件类型检查也有条件: 条件 当满足以下条件时为真 -f $a $a 是一个文件 -d $a $a 是一个目录 -L $a $a 是一个链接 现在你已经了解了各种比较表达式,让我们在各种示例中看看它们的实际应用。 在 Bash 中使用 if 语句 让我们创建一个脚本来告诉你给定的数字是否为偶数。 这是我的脚本,名为 even.sh: #!/bin/bash read -p "Enter the number: " num mod=$(($num%2)) if [ $mod -eq 0 ]; then echo "Number $num is even" fi 当模数运算(%)整除给定数字(本例中为 2)时,它返回零。 ? 特别注意空格。左括号和右括号与条件之间必须有空格。同样,条件运算符(-le、== 等)前后必须有空格。 这是我运行脚本时显示的内容: 你是否注意到,当数字为偶数时,脚本会告诉你,但当数字为奇数时,脚本不会显示任何内容? 让我们使用 else 来改进这个脚本。 使用 if else 语句 现在我在前面的脚本中添加了一条 else 语句。 这样,当你得到一个非零模数(因为奇数不能除以 2)时,它将进入 else 块。 #!/bin/bash read -p "Enter the number: " num mod=$(($num%2)) if [ $mod -eq 0 ]; then echo "Number $num is even" else echo "Number $num is odd" fi 让我们用相同的数字再次运行它: 正如你所看到的,该脚本更好,因为它还告诉你该数字是否为奇数。 使用 elif(否则如果)语句 这是一个检查给定数字是正数还是负数的脚本。在数学中,0 既不是正数也不是负数。 该脚本也检查了这一事实。 #!/bin/bash read -p "Enter the number: " num if [ $num -lt 0 ]; then echo "Number $num is negative" elif [ $num -gt 0 ]; then echo "Number $num is positive" else echo "Number $num is zero" fi 让我运行它来涵盖这里的所有三种情况: 用逻辑运算符组合多个条件 到目前为止,一切都很好。但是你是否知道通过使用与(&&)、或(||)等逻辑运算符可以在一个条件中包含多个条件? 它使你能够编写复杂的条件。 让我们编写一个脚本来告诉你给定的年份是否是闰年。 你还记得闰年的条件吗? 它应该被 4 整除,但如果它能被 100 整除,那么它就不是闰年。 但是,如果能被 400 整除,则为闰年。 这是我的脚本。 #!/bin/bash read -p "Enter the year: " year if [[ ($(($year%4)) -eq 0 && $(($year%100)) != 0) || ($(($year%400)) -eq 0) ]]; then echo "Year $year is leap year" else echo "Year $year is normal year" fi ? 注意上面双括号 [[ ]] 的使用。如果你使用逻辑运算符,则这是强制性的。 通过使用不同的数据运行脚本来验证脚本: ?️ 练习时间 让我们做一些练习吧 ? 练习 1:编写一个 Bash Shell 脚本,检查作为参数提供给它的字符串的长度。如果未提供参数,它将打印 “empty string”。 练习 2:编写一个 Shell 脚本来检查给定文件是否存在。你可以提供完整的文件路径作为参数或直接在脚本中使用它。 提示:文件使用 -f 选项 练习 3:通过检查给定文件是否是常规文件、目录或链接或者是否不存在来增强之前的脚本。 提示:使用 -f、-d 和 -L ...

    2023-08-12 167

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:9:00-23:00,节假日休息

扫码关注