常用 Linux 命令与 Shell 脚本编程技术基础
引言
在 Linux 操作系统的世界里,命令行是强大的工具,而 Shell 脚本编程则赋予了我们自动化执行复杂任务的能力。无论是系统管理、软件开发还是日常运维,掌握常用的 Linux 命令和 Shell 脚本编程基础都是至关重要的。本文将详细介绍常用的 Linux 命令,并逐步引导你入门 Shell 脚本编程。
常用 Linux 命令
文件与目录操作命令
- 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选项结合使用时,以更易读的方式显示文件大小,例如将字节数转换为KB、MB、GB等单位。如ls -lh可能显示1.2M表示文件大小为 1.2 兆字节。
- -l:以长格式显示文件和目录的详细信息,包括文件权限、所有者、大小、修改时间等。例如,
- cd
- 功能:切换当前工作目录。通过该命令可以在文件系统的不同目录间移动。
- 示例:
cd /home/user:切换到/home/user目录。如果路径是绝对路径(以/开头),则直接切换到指定目录。cd..:返回上级目录。在任何目录下执行此命令,都会向上移动一级目录。cd ~:切换到当前用户的家目录。每个用户都有自己的家目录,通常位于/home/用户名,使用~作为快捷方式可以快速回到家目录。
- mkdir
- 功能:创建新的目录。
- 常用选项:
- -p:用于创建嵌套目录。例如,要创建
parent/child这样的目录结构,如果直接使用mkdir parent/child,当parent目录不存在时会报错。而使用mkdir -p parent/child,系统会自动先创建parent目录,再在其下创建child目录。
- -p:用于创建嵌套目录。例如,要创建
- rmdir
- 功能:删除空目录。注意,此命令只能删除空目录,若目录中有文件或子目录,则无法删除。
- 示例:
rmdir mydir尝试删除mydir目录,前提是mydir为空。
- cp
- 功能:复制文件或目录。
- 常用选项:
- -r:用于复制目录及其所有内容。因为目录本身不能直接复制,需要使用
-r选项递归复制目录下的所有文件和子目录。例如,cp -r source_dir target_dir会将source_dir及其内部所有文件和子目录复制到target_dir。 - -i:在覆盖目标文件前提示用户确认。如果目标文件已存在,使用
cp -i file1 file2时,系统会询问是否覆盖file2,避免误操作。
- -r:用于复制目录及其所有内容。因为目录本身不能直接复制,需要使用
- mv
- 功能:移动文件或目录,也可用于重命名文件或目录。
- 示例:
mv file1 /new/directory:将file1文件移动到/new/directory目录下。mv old_name new_name:在同一目录下,将old_name文件或目录重命名为new_name。
- rm
- 功能:删除文件或目录。
- 常用选项:
- -r:用于删除目录及其所有内容。与
rmdir不同,rm -r可以删除非空目录,但使用时需谨慎,因为它会递归删除目录下的所有文件和子目录,无法恢复。例如,rm -r mydir会删除mydir及其内部所有文件和子目录。 - -f:强制删除,不提示确认。此选项应谨慎使用,特别是在与
-r选项结合时,可能会导致重要数据丢失。如rm -rf mydir会直接删除mydir及其内容,不会询问是否确认。
- -r:用于删除目录及其所有内容。与
文件查看与编辑命令
- cat
- 功能:连接文件并打印到标准输出设备(通常是终端),常用于查看文件内容。
- 示例:
cat myfile.txt会在终端显示myfile.txt的内容。如果文件内容较多,可能会快速滚动显示完毕。可以通过管道|与less命令结合,如cat myfile.txt | less,这样可以分页查看文件内容。
- less
- 功能:分页查看文件内容,支持向前、向后翻页,搜索等功能,适用于查看较大的文件。
- 操作方法:使用
less打开文件后,可以使用Page Up和Page Down键上下翻页,按/键后输入关键字可进行搜索,按q键退出查看。
- grep
- 功能:在文件中查找指定的字符串。它会逐行搜索文件,输出包含指定字符串的行。
- 常用选项:
- -r:递归搜索目录下的所有文件。例如,
grep -r "error" /var/log会在/var/log目录及其所有子目录中的文件里搜索包含 “error” 字符串的行。 - -i:忽略大小写进行搜索。如果不确定字符串的大小写,使用
grep -i "keyword" myfile.txt可同时匹配 “keyword”、“Keyword”、“KEYWORD” 等不同大小写形式。
- -r:递归搜索目录下的所有文件。例如,
- vim
- 功能:强大的文本编辑器,在 Linux 系统中广泛使用。它有三种主要模式:命令模式、插入模式和末行模式。
- 使用方法:
- 打开文件时进入命令模式,在命令模式下可以进行移动光标、删除字符、复制粘贴等操作。例如,按
dd键可删除当前行,按yy键可复制当前行。 - 按
i键进入插入模式,此时可以输入文本内容。 - 按
Esc键回到命令模式,再按:键进入末行模式,可进行保存文件(:w)、退出编辑器(:q)、保存并退出(:wq)等操作。
- 打开文件时进入命令模式,在命令模式下可以进行移动光标、删除字符、复制粘贴等操作。例如,按
系统管理命令
- 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 。
- -aux:以用户为主的格式显示所有进程的详细信息,包括进程的所有者、CPU 使用率、内存使用率等。例如,
- top
- 功能:实时动态地查看系统中各个进程的资源占用情况,如 CPU、内存等。它会不断更新显示内容,方便监控系统性能。
- 操作方法:在终端输入
top命令后,屏幕会显示当前系统的进程列表。可以通过按键进行各种操作,例如按M键按内存使用率排序,按P键按 CPU 使用率排序,按q键退出top界面。
- kill
- 功能:向进程发送信号,通常用于终止进程。每个进程都有一个唯一的进程 ID(PID),通过
kill命令加上 PID 可以向该进程发送信号。 - 常用信号:
- 15(SIGTERM):默认信号,通常用于正常终止进程。大多数进程接收到该信号后会尝试正常关闭,释放资源。例如,
kill 1234(假设1234是要终止的进程的 PID )会向该进程发送SIGTERM信号。 - 9(SIGKILL):强制终止进程,该信号不能被进程捕获或忽略,用于处理那些无法正常终止的进程。但使用此信号可能导致进程无法正常释放资源,应谨慎使用,如
kill -9 1234。
- 15(SIGTERM):默认信号,通常用于正常终止进程。大多数进程接收到该信号后会尝试正常关闭,释放资源。例如,
- 功能:向进程发送信号,通常用于终止进程。每个进程都有一个唯一的进程 ID(PID),通过
- df
- 功能:查看磁盘空间使用情况,显示文件系统的磁盘容量、已用空间、可用空间等信息。
- 常用选项:
- -h:以更易读的方式显示磁盘空间大小,将字节数转换为
KB、MB、GB等单位。例如,df -h会显示类似/dev/sda1 20G 15G 5G 75% /的信息,其中/dev/sda1是设备名,20G是总容量,15G是已用空间,5G是可用空间,75%是已用百分比,/是挂载点。
- -h:以更易读的方式显示磁盘空间大小,将字节数转换为
- du
- 功能:估计文件或目录的磁盘使用空间,常用于查看某个目录及其子目录占用的磁盘空间大小。
- 常用选项:
- -h:与
df命令类似,以易读方式显示大小。 - -s:只显示总计,即整个目录的总大小,而不显示每个子目录的大小。例如,
du -sh mydir会显示mydir目录占用的总磁盘空间。
- -h:与
Shell 脚本编程技术基础
Shell 脚本简介
Shell 脚本是由一系列 Linux 命令组成的文本文件,通过执行这些命令,可以自动化完成复杂的任务。Shell 脚本以 .sh 为常见的文件扩展名,但这不是必须的。在 Linux 系统中,常见的 Shell 有 Bourne - Again Shell(bash)、C Shell(csh)、Korn Shell(ksh)等,其中 bash 是最常用的 Shell 。
编写第一个 Shell 脚本
- 创建脚本文件:使用文本编辑器(如
vim)创建一个新文件,例如vim hello.sh。 - 添加执行权限:在脚本开头添加
#!/bin/bash,这被称为 shebang 行,它告诉系统使用/bin/bash来解释执行这个脚本。然后在文件中输入以下内容:
bash
#!/bin/bash
echo "Hello, World!"
- 保存并退出:在
vim中按Esc键进入命令模式,输入:wq保存并退出。 - 赋予执行权限:在终端中执行
chmod +x hello.sh,为脚本文件添加可执行权限。 - 执行脚本:在终端中输入
./hello.sh,即可看到输出Hello, World!。这里的./表示当前目录,因为当前目录可能不在系统的PATH环境变量中,所以需要明确指定脚本的路径。
变量
- 变量定义:在 Shell 脚本中,可以定义变量来存储数据。变量名通常由字母、数字和下划线组成,且不能以数字开头。例如:
bash
name="John"
- 变量使用:使用变量时,在变量名前加上
$符号。例如:
bash
echo "My name is $name"
- 环境变量:Linux 系统中有许多预定义的环境变量,如
PATH(用于指定系统查找可执行文件的路径)、HOME(当前用户的家目录路径)等。可以在脚本中使用这些环境变量,例如:
bash
echo "My home directory is $HOME"
条件语句
- 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
循环语句
- 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博客
2. Linux 系统使用基础
常用 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博客
更多推荐


所有评论(0)