Linux 下常用命令和脚本总结
Linux 是一种类 UNIX 操作系统,广泛应用于服务器、桌面和嵌入式系统中。熟练掌握 Linux 下的常用命令和脚本编写,可以大大提高系统管理、任务自动化和开发效率。以下是对 Linux 下常用命令和 Shell 脚本的详细总结。
一、基础命令
- 文件和目录操作
ls:列出目录内容
Bash
ls -l # 详细信息
ls -a # 显示隐藏文件
ls -lh # 人类可读格式
cd:更改目录
Bash
cd /path/to/directory # 切换到指定目录
cd ~ # 切换到用户主目录
cd - # 切换到上一个目录
pwd:显示当前工作目录
Bash
pwd
mkdir:创建目录
Bash
mkdir newdir # 创建新目录
mkdir -p parent/child # 递归创建目录
rmdir:删除空目录
Bash
rmdir emptydir # 删除空目录
rm:删除文件和目录
Bash
rm file.txt # 删除文件
rm -r directory # 递归删除目录及其内容
rm -f file.txt # 强制删除文件
cp:复制文件和目录
Bash
cp source.txt dest.txt # 复制文件
cp -r sourcedir destdir # 递归复制目录
mv:移动或重命名文件和目录
Bash
mv oldname.txt newname.txt # 重命名文件
mv file.txt /path/to/directory # 移动文件
touch:创建空文件或更新文件时间戳
Bash
touch newfile.txt # 创建空文件
2. 文件内容操作
cat:显示文件内容
Bash
cat file.txt # 显示文件内容
cat file1.txt file2.txt # 显示多个文件内容
more:分页显示文件内容
Bash
more file.txt # 分页显示文件内容
less:分页显示文件内容(支持向前翻页)
Bash
less file.txt # 分页显示文件内容
head:显示文件开头部分
Bash
head -n 10 file.txt # 显示文件的前10行
tail:显示文件结尾部分
Bash
tail -n 10 file.txt # 显示文件的后10行
tail -f logfile.txt # 实时显示文件新增内容
grep:搜索文本中的模式
Bash
grep “pattern” file.txt # 搜索文件中的模式
grep -r “pattern” directory # 递归搜索目录中的模式
grep -i “pattern” file.txt # 忽略大小写
grep -n “pattern” file.txt # 显示行号
awk:文本处理工具
Bash
awk ‘{print $1}’ file.txt # 打印文件的第一列
awk -F: ‘{print $1}’ file.txt # 使用冒号作为字段分隔符
sed:流编辑器
Bash
sed ‘s/old/new/g’ file.txt # 替换文本中的模式
sed -n ‘2,4p’ file.txt # 显示文件的第2到第4行
3. 系统和进程管理
ps:显示当前进程
Bash
ps -e # 显示所有进程
ps -ef # 显示详细信息
ps -u username # 显示指定用户的进程
top:实时显示系统资源使用情况
Bash
top # 实时显示系统资源使用情况
kill:终止进程
Bash
kill pid # 终止指定进程ID的进程
kill -9 pid # 强制终止进程
killall:终止所有匹配名称的进程
Bash
killall processname # 终止所有匹配名称的进程
df:显示文件系统磁盘空间使用情况
Bash
df -h # 以人类可读格式显示磁盘空间使用情况
du:显示目录磁盘使用情况
Bash
du -sh directory # 以人类可读格式显示目录的磁盘使用情况
du -sh * # 显示当前目录下各文件和子目录的磁盘使用情况
free:显示内存使用情况
Bash
free -h # 以人类可读格式显示内存使用情况
uptime:显示系统运行时间和负载
Bash
uptime # 显示系统运行时间和负载
uname:显示系统信息
Bash
uname -a # 显示所有系统信息
uname -r # 显示内核版本
hostname:显示或设置系统主机名
Bash
hostname # 显示系统主机名
hostname newhostname # 设置系统主机名
4. 网络管理
ifconfig:配置网络接口(通常需要 root 权限)
Bash
ifconfig # 显示网络接口配置
ifconfig eth0 up # 启用网络接口
ifconfig eth0 down # 禁用网络接口
ping:测试网络连通性
Bash
ping www.example.com # 测试与主机的连通性
netstat:显示网络连接、路由表和接口统计信息
Bash
netstat -tuln # 显示所有监听端口
netstat -p # 显示每个连接的程序
traceroute:跟踪数据包的路由路径
Bash
traceroute www.example.com # 跟踪数据包的路由路径
wget:下载文件
Bash
wget http://www.example.com/file.zip # 下载文件
curl:传输数据
Bash
curl -O http://www.example.com/file.zip # 下载文件
curl -I http://www.example.com # 显示 HTTP 响应头
scp:通过 SSH 复制文件
Bash
scp file.txt user@remote:/path/to/destination # 复制文件到远程主机
scp user@remote:/path/to/source file.txt # 从远程主机复制文件
ssh:远程登录
Bash
ssh user@remote # 远程登录到主机
5. 压缩和解压缩
tar:创建和解压缩 tar 压缩包
Bash
tar -cvf archive.tar file1 file2 # 创建 tar 压缩包
tar -xvf archive.tar # 解压 tar 压缩包
tar -czvf archive.tar.gz file1 file2 # 创建 gzip 压缩的 tar 包
tar -xzvf archive.tar.gz # 解压 gzip 压缩的 tar 包
tar -cjvf archive.tar.bz2 file1 file2 # 创建 bzip2 压缩的 tar 包
tar -xjvf archive.tar.bz2 # 解压 bzip2 压缩的 tar 包
gzip:压缩和解压缩文件
Bash
gzip file.txt # 压缩文件
gunzip file.txt.gz # 解压文件
bzip2:压缩和解压缩文件
Bash
bzip2 file.txt # 压缩文件
bunzip2 file.txt.bz2 # 解压文件
zip:创建和解压缩 zip 压缩包
Bash
zip archive.zip file1 file2 # 创建 zip 压缩包
unzip archive.zip # 解压 zip 压缩包
6. 包管理
apt-get:Debian 和 Ubuntu 系统的包管理工具
Bash
sudo apt-get update # 更新软件包列表
sudo apt-get upgrade # 升级已安装的软件包
sudo apt-get install package # 安装软件包
sudo apt-get remove package # 删除软件包
sudo apt-get search package # 搜索软件包
yum:CentOS 和 RHEL 系统的包管理工具
Bash
sudo yum update # 更新软件包列表
sudo yum upgrade # 升级已安装的软件包
sudo yum install package # 安装软件包
sudo yum remove package # 删除软件包
sudo yum search package # 搜索软件包
dnf:Fedora 和 RHEL 系统的包管理工具
Bash
sudo dnf update # 更新软件包列表
sudo dnf upgrade # 升级已安装的软件包
sudo dnf install package # 安装软件包
sudo dnf remove package # 删除软件包
sudo dnf search package # 搜索软件包
pacman:Arch Linux 系统的包管理工具
Bash
sudo pacman -Syu # 更新和升级软件包
sudo pacman -S package # 安装软件包
sudo pacman -R package # 删除软件包
sudo pacman -Ss package # 搜索软件包
二、Shell 脚本编程
Shell 脚本是一种用于在 UNIX 和 Linux 操作系统中执行一系列命令的编程语言。它被广泛应用于系统管理、任务自动化、数据处理和应用程序部署等领域。通过编写和执行脚本文件,用户可以自动化执行繁琐的命令和任务,从而提高工作效率和减少人为错误。
- 编写和执行 Shell 脚本
创建脚本文件:
使用文本编辑器创建一个新的脚本文件,并添加脚本代码。
Bash
#!/bin/bash
echo “Hello, World!”
赋予执行权限:
使用 chmod 命令赋予脚本文件执行权限。
Bash
chmod +x script.sh
执行脚本文件:
使用 ./ 语法执行脚本文件。
Bash
./script.sh
2. 变量和参数
定义和使用变量:
使用 = 符号定义变量,使用 $ 符号引用变量。
Bash
#!/bin/bash
name=“John”
echo “Hello, $name!”
位置参数:
使用 $1、$2 等位置参数从命令行传递数据到脚本中。
Bash
#!/bin/bash
echo “First parameter: $1”
echo “Second parameter: $2”
3. 流程控制
条件判断:
使用 if、else、elif 等条件判断语句。
Bash
#!/bin/bash
if [ $1 -gt 10 ]; then
echo “The number is greater than 10.”
elif [ $1 -eq 10 ]; then
echo “The number is equal to 10.”
else
echo “The number is less than 10.”
fi
循环结构:
使用 for、while、until 等循环结构。
Bash
#!/bin/bash
for i in {1…5}; do
echo “Number: $i”
done
count=1
while [ $count -le 5 ]; do
echo "Count:
c
o
u
n
t
"
c
o
u
n
t
=
count" count=
count"count=((count + 1))
done
count=10
until [ $count -lt 5 ]; do
echo "Count:
c
o
u
n
t
"
c
o
u
n
t
=
count" count=
count"count=((count - 1))
done
4. 函数定义
定义和调用函数:
使用 function 关键字定义函数,使用函数名调用函数。
Bash
#!/bin/bash
function greet {
echo “Hello, $1!”
}
greet “Alice”
greet “Bob”
5. 输入和输出
读取用户输入:
使用 read 命令从标准输入读取数据。
Bash
#!/bin/bash
echo “Enter your name:”
read name
echo “Hello, $name!”
输出重定向:
使用 > 和 >> 重定向输出到文件。
Bash
#!/bin/bash
echo “This is a test.” > output.txt
echo “Appending text.” >> output.txt
输入重定向:
使用 < 重定向输入到命令。
Bash
#!/bin/bash
while read line; do
echo “Line: $line”
done < input.txt
三、综合示例
以下是一些综合示例,展示如何结合使用常用命令和 Shell 脚本编写复杂的任务:
示例1:备份文件夹
编写一个 Shell 脚本,将指定文件夹压缩为 tar.gz 文件,并将备份文件存储在指定位置。
Bash
#!/bin/bash
检查参数
if [ $# -ne 2 ]; then
echo “Usage: $0 source_directory backup_directory”
exit 1
fi
获取参数
SOURCE_DIR=$1
BACKUP_DIR=
2
T
I
M
E
S
T
A
M
P
=
2 TIMESTAMP=
2TIMESTAMP=(date +“%Y%m%d_%H%M%S”)
BACKUP_FILE=“KaTeX parse error: Expected group after '_' at position 18: …CKUP_DIR/backup_̲TIMESTAMP.tar.gz”
创建备份目录(如果不存在)
mkdir -p “$BACKUP_DIR”
压缩文件夹
tar -czvf “ B A C K U P F I L E " " BACKUP_FILE" " BACKUPFILE""SOURCE_DIR”
检查压缩结果
if [ $? -eq 0 ]; then
echo “Backup successful: $BACKUP_FILE”
else
echo “Backup failed”
exit 1
fi
示例2:监控系统资源
编写一个 Shell 脚本,定时监控系统的 CPU、内存和磁盘使用情况,并将结果写入日志文件。
Bash
#!/bin/bash
日志文件
LOG_FILE=“/var/log/system_monitor.log”
间隔时间(秒)
INTERVAL=60
监控系统资源
while true; do
TIMESTAMP=
(
d
a
t
e
+
"
C
P
U
U
S
A
G
E
=
(date +"%Y-%m-%d %H:%M:%S") CPU_USAGE=
(date+"CPUUSAGE=(top -bn1 | grep “Cpu(s)” | awk '{print $2 + KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲') MEM_USAG…(free -m | awk ‘NR2{printf “%.2f”, $3*100/KaTeX parse error: Expected 'EOF', got '}' at position 3: 2 }̲') DISK_USA…(df -h | awk '$NF"/"{printf “%s”, $5}’)
echo "$TIMESTAMP CPU: $CPU_USAGE% MEM: $MEM_USAGE% DISK: $DISK_USAGE" >> "$LOG_FILE"
sleep "$INTERVAL"
done
示例3:自动化部署
编写一个 Shell 脚本,自动化部署应用程序,包括拉取最新代码、安装依赖、构建项目和重启服务。
Bash
#!/bin/bash
项目目录
PROJECT_DIR=“/path/to/project”
进入项目目录
cd “$PROJECT_DIR”
拉取最新代码
git pull origin main
检查拉取结果
if [ $? -ne 0 ]; then
echo “Failed to pull latest code”
exit 1
fi
安装依赖
npm install
检查安装结果
if [ $? -ne 0 ]; then
echo “Failed to install dependencies”
exit 1
fi
构建项目
npm run build
检查构建结果
if [ $? -ne 0 ]; then
echo “Failed to build project”
exit 1
fi
重启服务
sudo systemctl restart myapp
检查重启结果
if [ $? -ne 0 ]; then
echo “Failed to restart service”
exit 1
fi
echo “Deployment successful”
总结
Linux 下的常用命令和 Shell 脚本是系统管理、任务自动化和开发的重要工具。通过熟练掌握这些命令和脚本编写技巧,开发人员和系统管理员可以高效地执行各种操作,提高工作效率和减少人为错误。希望这些信息能帮助你更好地理解和使用 Linux 命令和 Shell 脚本。如果你有任何疑问或需要进一步的帮助