引言

在 Linux 操作系统的世界里,命令行是强大的工具,而 Shell 脚本编程则赋予了我们自动化执行复杂任务的能力。无论是系统管理、软件开发还是日常运维,掌握常用的 Linux 命令和 Shell 脚本编程基础都是至关重要的。本文将详细介绍常用的 Linux 命令,并逐步引导你入门 Shell 脚本编程。

常用 Linux 命令

文件与目录操作命令

  1. ls
    • 功能:列出目录内容。这是最常用的命令之一,用于查看指定目录下的文件和子目录。
    • 常用选项
      • -l:以长格式显示文件和目录的详细信息,包括文件权限、所有者、大小、修改时间等。例如,ls -l 会显示类似 drwxr - xr - x 2 user group 4096 Jan 1 12:00 mydir 的信息,其中 drwxr - xr - x 表示目录权限,user 是所有者,group 是所属组,4096 是大小(字节),Jan 1 12:00 是修改时间,mydir 是目录名。
      • -a:显示所有文件和目录,包括隐藏文件(以点 . 开头的文件)。在 Linux 中,隐藏文件通常用于存储配置信息等重要数据,使用 ls -a 可以查看它们。
      • -h:与 -l 选项结合使用时,以更易读的方式显示文件大小,例如将字节数转换为 KBMBGB 等单位。如 ls -lh 可能显示 1.2M 表示文件大小为 1.2 兆字节。
  2. cd
    • 功能:切换当前工作目录。通过该命令可以在文件系统的不同目录间移动。
    • 示例
      • cd /home/user:切换到 /home/user 目录。如果路径是绝对路径(以 / 开头),则直接切换到指定目录。
      • cd..:返回上级目录。在任何目录下执行此命令,都会向上移动一级目录。
      • cd ~:切换到当前用户的家目录。每个用户都有自己的家目录,通常位于 /home/用户名,使用 ~ 作为快捷方式可以快速回到家目录。
  3. mkdir
    • 功能:创建新的目录。
    • 常用选项
      • -p:用于创建嵌套目录。例如,要创建 parent/child 这样的目录结构,如果直接使用 mkdir parent/child ,当 parent 目录不存在时会报错。而使用 mkdir -p parent/child ,系统会自动先创建 parent 目录,再在其下创建 child 目录。
  4. rmdir
    • 功能:删除空目录。注意,此命令只能删除空目录,若目录中有文件或子目录,则无法删除。
    • 示例rmdir mydir 尝试删除 mydir 目录,前提是 mydir 为空。
  5. cp
    • 功能:复制文件或目录。
    • 常用选项
      • -r:用于复制目录及其所有内容。因为目录本身不能直接复制,需要使用 -r 选项递归复制目录下的所有文件和子目录。例如,cp -r source_dir target_dir 会将 source_dir 及其内部所有文件和子目录复制到 target_dir 。
      • -i:在覆盖目标文件前提示用户确认。如果目标文件已存在,使用 cp -i file1 file2 时,系统会询问是否覆盖 file2 ,避免误操作。
  6. mv
    • 功能:移动文件或目录,也可用于重命名文件或目录。
    • 示例
      • mv file1 /new/directory:将 file1 文件移动到 /new/directory 目录下。
      • mv old_name new_name:在同一目录下,将 old_name 文件或目录重命名为 new_name 。
  7. rm
    • 功能:删除文件或目录。
    • 常用选项
      • -r:用于删除目录及其所有内容。与 rmdir 不同,rm -r 可以删除非空目录,但使用时需谨慎,因为它会递归删除目录下的所有文件和子目录,无法恢复。例如,rm -r mydir 会删除 mydir 及其内部所有文件和子目录。
      • -f:强制删除,不提示确认。此选项应谨慎使用,特别是在与 -r 选项结合时,可能会导致重要数据丢失。如 rm -rf mydir 会直接删除 mydir 及其内容,不会询问是否确认。

文件查看与编辑命令

  1. cat
    • 功能:连接文件并打印到标准输出设备(通常是终端),常用于查看文件内容。
    • 示例cat myfile.txt 会在终端显示 myfile.txt 的内容。如果文件内容较多,可能会快速滚动显示完毕。可以通过管道 | 与 less 命令结合,如 cat myfile.txt | less ,这样可以分页查看文件内容。
  2. less
    • 功能:分页查看文件内容,支持向前、向后翻页,搜索等功能,适用于查看较大的文件。
    • 操作方法:使用 less 打开文件后,可以使用 Page Up 和 Page Down 键上下翻页,按 / 键后输入关键字可进行搜索,按 q 键退出查看。
  3. grep
    • 功能:在文件中查找指定的字符串。它会逐行搜索文件,输出包含指定字符串的行。
    • 常用选项
      • -r:递归搜索目录下的所有文件。例如,grep -r "error" /var/log 会在 /var/log 目录及其所有子目录中的文件里搜索包含 “error” 字符串的行。
      • -i:忽略大小写进行搜索。如果不确定字符串的大小写,使用 grep -i "keyword" myfile.txt 可同时匹配 “keyword”、“Keyword”、“KEYWORD” 等不同大小写形式。
  4. vim
    • 功能:强大的文本编辑器,在 Linux 系统中广泛使用。它有三种主要模式:命令模式、插入模式和末行模式。
    • 使用方法
      • 打开文件时进入命令模式,在命令模式下可以进行移动光标、删除字符、复制粘贴等操作。例如,按 dd 键可删除当前行,按 yy 键可复制当前行。
      • 按 i 键进入插入模式,此时可以输入文本内容。
      • 按 Esc 键回到命令模式,再按 : 键进入末行模式,可进行保存文件(:w )、退出编辑器(:q )、保存并退出(:wq )等操作。

系统管理命令

  1. ps
    • 功能:查看当前系统中的进程状态。
    • 常用选项
      • -aux:以用户为主的格式显示所有进程的详细信息,包括进程的所有者、CPU 使用率、内存使用率等。例如,ps -aux 会列出类似 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 的表头及对应的进程信息,其中 USER 是进程所有者,PID 是进程 ID,%CPU 和 %MEM 分别表示 CPU 和内存使用率。
      • -ef:以完整格式显示所有进程的信息,更适合查看进程间的父子关系。如 ps -ef 会显示 UID PID PPID C STIME TTY TIME CMD 等信息,PPID 表示父进程 ID 。
  2. top
    • 功能:实时动态地查看系统中各个进程的资源占用情况,如 CPU、内存等。它会不断更新显示内容,方便监控系统性能。
    • 操作方法:在终端输入 top 命令后,屏幕会显示当前系统的进程列表。可以通过按键进行各种操作,例如按 M 键按内存使用率排序,按 P 键按 CPU 使用率排序,按 q 键退出 top 界面。
  3. kill
    • 功能:向进程发送信号,通常用于终止进程。每个进程都有一个唯一的进程 ID(PID),通过 kill 命令加上 PID 可以向该进程发送信号。
    • 常用信号
      • 15(SIGTERM):默认信号,通常用于正常终止进程。大多数进程接收到该信号后会尝试正常关闭,释放资源。例如,kill 1234 (假设 1234 是要终止的进程的 PID )会向该进程发送 SIGTERM 信号。
      • 9(SIGKILL):强制终止进程,该信号不能被进程捕获或忽略,用于处理那些无法正常终止的进程。但使用此信号可能导致进程无法正常释放资源,应谨慎使用,如 kill -9 1234 。
  4. df
    • 功能:查看磁盘空间使用情况,显示文件系统的磁盘容量、已用空间、可用空间等信息。
    • 常用选项
      • -h:以更易读的方式显示磁盘空间大小,将字节数转换为 KBMBGB 等单位。例如,df -h 会显示类似 /dev/sda1 20G 15G 5G 75% / 的信息,其中 /dev/sda1 是设备名,20G 是总容量,15G 是已用空间,5G 是可用空间,75% 是已用百分比,/ 是挂载点。
  5. du
    • 功能:估计文件或目录的磁盘使用空间,常用于查看某个目录及其子目录占用的磁盘空间大小。
    • 常用选项
      • -h:与 df 命令类似,以易读方式显示大小。
      • -s:只显示总计,即整个目录的总大小,而不显示每个子目录的大小。例如,du -sh mydir 会显示 mydir 目录占用的总磁盘空间。

Shell 脚本编程技术基础

Shell 脚本简介

Shell 脚本是由一系列 Linux 命令组成的文本文件,通过执行这些命令,可以自动化完成复杂的任务。Shell 脚本以 .sh 为常见的文件扩展名,但这不是必须的。在 Linux 系统中,常见的 Shell 有 Bourne - Again Shell(bash)、C Shell(csh)、Korn Shell(ksh)等,其中 bash 是最常用的 Shell 。

编写第一个 Shell 脚本

  1. 创建脚本文件:使用文本编辑器(如 vim )创建一个新文件,例如 vim hello.sh 。
  2. 添加执行权限:在脚本开头添加 #!/bin/bash ,这被称为 shebang 行,它告诉系统使用 /bin/bash 来解释执行这个脚本。然后在文件中输入以下内容:

bash

#!/bin/bash
echo "Hello, World!"

  1. 保存并退出:在 vim 中按 Esc 键进入命令模式,输入 :wq 保存并退出。
  2. 赋予执行权限:在终端中执行 chmod +x hello.sh ,为脚本文件添加可执行权限。
  3. 执行脚本:在终端中输入 ./hello.sh ,即可看到输出 Hello, World! 。这里的 ./ 表示当前目录,因为当前目录可能不在系统的 PATH 环境变量中,所以需要明确指定脚本的路径。

变量

  1. 变量定义:在 Shell 脚本中,可以定义变量来存储数据。变量名通常由字母、数字和下划线组成,且不能以数字开头。例如:

bash

name="John"

  1. 变量使用:使用变量时,在变量名前加上 $ 符号。例如:

bash

echo "My name is $name"

  1. 环境变量:Linux 系统中有许多预定义的环境变量,如 PATH(用于指定系统查找可执行文件的路径)、HOME(当前用户的家目录路径)等。可以在脚本中使用这些环境变量,例如:

bash

echo "My home directory is $HOME"

条件语句

  1. if - then - else 语句:用于根据条件执行不同的代码块。基本语法如下:

bash

if [ condition ]; then
    commands1
else
    commands2
fi

例如,判断一个数是否大于 10 :

bash

num=15
if [ $num -gt 10 ]; then
    echo "$num is greater than 10"
else
    echo "$num is not greater than 10"
fi

这里的 [ condition ] 是条件判断部分,-gt 是比较运算符,表示大于。其他常用的比较运算符还有 -lt(小于)、-eq(等于)等。
2. if - elif - else 语句:用于多个条件的判断,语法如下:

bash

if [ condition1 ]; then
    commands1
elif [ condition2 ]; then
    commands2
else
    commands3
fi

例如,根据不同的分数给出不同的评价:

bash

score=85
if [ $score -ge 90 ]; then
    echo "Excellent"
elif [ $score -ge 80 ]; then
    echo "Good"
else
    echo "Need improvement"
fi

循环语句

  1. for 循环:用于重复执行一段代码,适用于已知循环次数的情况。基本语法如下:

bash

for variable in list; do
    commands
done

例如,遍历一个数字列表:

bash

for i in 1 2 3 4 5; do
    echo "Number: $i"
done

也可以使用 seq 命令生成数字序列,如 for i in $(seq 1 10); do echo $i; done 会输出 1 到 10 的数字。
2. while 循环:只要条件为真,就会重复执行代码块。语法如下:

bash

while [ condition ]; do
    commands
done

例如,当变量小于 5 时输出变量值:

bash

count=1
while [ $count -lt 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

这里的 $((count + 1)) 是 Shell 中的算术运算,用于增加 count 的值。

总结

常用的 Linux 命令和 Shell 脚本编程是 Linux 系统管理和自动化任务的重要技能。通过熟练掌握这些命令和编程基础,你可以更高效地操作 Linux 系统,实现各种复杂任务的自动化。随着学习的深入,你还可以进一步探索更高级的 Linux 命令选项和 Shell 脚本编程技巧,以满足不同的工作和学习需求。希望本文能为你在 Linux 世界的探索之旅打下坚实的基础。

 1. Linux 系统基础知识

深入理解 Linux 操作系统:概念、功能、组成与基本原理-CSDN博客

Linux 系统:特点、发展与应用全景解析-CSDN博客

2. Linux 系统使用基础

常见 Linux 系统的安装与启动全攻略-CSDN博客

常用 Linux 命令与 Shell 脚本编程技术基础-CSDN博客

常见 Linux 系统的软件安装、运行与卸载全解析-CSDN博客

3. Linux 系统管理技术

Linux 系统管理技术之用户管理:useradd、usermod、userdel 与 passwd 详解-CSDN博客

Linux 系统管理技术之文件管理:ls、cd、cp、mv、rm、chmod、chown 全解析-CSDN博客

Linux 系统管理技术之进程管理:ps、top、kill、pkill、systemctl 深度剖析-CSDN博客

Linux 系统管理技术之存储管理:df、du、mount、umount 与文件系统管理-CSDN博客

Linux 系统管理技术之设备管理:设备文件、lsblk 与 fdisk 深度解析-CSDN博客

Linux 系统管理技术之网络管理:ifconfig/ip、ping、netstat/ss、firewall - cmd 详解-CSDN博客

Linux 系统服务与日志管理:systemd、journalctl 与 /var/log 深度剖析-CSDN博客

4. Linux 系统的常用软件应用技术

Linux 系统下的编辑器王者之争:VI/Vim 与 Emacs-CSDN博客

Linux 系统下的远程通信与文件传输利器:OpenSSH 工具包-CSDN博客

5. Linux 系统的应用程序开发技术

Linux 系统下应用程序开发环境与工具:gcc、g++、make、CMake 深度解析-CSDN博客

Linux 系统下应用程序的调试与优化秘籍:GDB、Valgrind 与 Perf-CSDN博客

Linux 系统下 Web 服务器搭建与开发:Nginx/Apache、静态网站部署及 CGI 技术解析-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐