Shell 命令入门到精通

基础概念

Shell 是什么

Shell 是用户与 Linux 系统交互的接口

常见的 Shell:bash(默认)、zsh、fish 等

Shell 脚本是命令的集合

Shell 类型

查看当前系统支持的 Shell

cat /etc/shells

查看当前使用的 Shell

echo $SHELL

基本命令语法

命令格式

command [options] [arguments]

常用快捷键

Ctrl + C: 中断当前命令

Ctrl + L: 清屏

Ctrl + R: 搜索历史命令

Ctrl + A: 光标移到行首

Ctrl + E: 光标移到行尾

Ctrl + U: 删除光标前内容

Ctrl + K: 删除光标后内容

文件操作

基本操作

列出文件

ls -la # 详细信息

ls -R # 递归显示

创建目录

mkdir -p dir1/dir2 # 创建多级目录

复制文件

cp file1 file2

cp -r dir1 dir2 # 复制目录

移动/重命名

mv file1 file2

删除

rm file

rm -r dir # 删除目录

rm -f file # 强制删除

查看文件内容

cat file # 显示全部

head -n 10 # 显示前10行

tail -f file # 实时查看文件末尾

文件权限

修改权限

chmod 755 file

chmod u+x file # 给用户添加执行权限

修改所有者

chown user:group file

文本处理

文本搜索

grep 搜索

grep “pattern” file

grep -r “pattern” dir # 递归搜索

grep -i “pattern” file # 忽略大小写

find 查找文件

find /path -name “*.txt”

find /path -type f -size +100M # 查找大文件

文本编辑

sed 替换

sed ‘s/old/new/g’ file

sed -i ‘s/old/new/g’ file # 直接修改文件

awk 处理

awk ‘{print $1}’ file # 打印第一列

awk -F: ‘{print $1}’ file # 指定分隔符

系统管理

进程管理

查看进程

ps aux

top

htop # 更友好的界面

结束进程

kill PID

killall process_name

系统监控

系统资源

free -h # 内存使用

df -h # 磁盘使用

du -sh * # 目录大小

网络相关

netstat -tunlp # 查看端口

ifconfig # 网络接口

ip addr # 新版本网络配置

网络操作

远程连接

SSH

ssh user@host

scp file user@host:/path # 复制文件

下载

wget url

curl -O url

环境变量

变量操作

设置变量

export PATH=$PATH:/new/path

查看变量

echo $PATH

env # 显示所有环境变量

Shell 脚本编程

基本语法

#!/bin/bash

变量

name=“value”

echo $name

条件判断

if [ “$1” == “test” ]; then

echo “test”

else

echo “not test”

fi

循环

for i in {1…5}; do

echo $i

done

while [ $count -lt 5 ]; do

echo $count

((count++))

done

函数

定义函数

function_name() {

echo “参数1: $1”

return 0

}

调用函数

function_name “参数”

管道和重定向

管道

管道操作

command1 | command2 # 将command1输出传给command2

实例

ps aux | grep nginx

重定向

输出重定向

command > file # 覆盖

command >> file # 追加

错误重定向

command 2> error.log

command > output.log 2>&1 # 同时重定向

实用技巧

命令历史

查看历史命令

history

执行历史命令

!number # 执行第number条命令

!! # 执行上一条命令

别名设置

创建别名

alias ll=‘ls -la’

永久生效,添加到 ~/.bashrc

echo “alias ll=‘ls -la’” >> ~/.bashrc

source ~/.bashrc

作业控制

command & # 后台运行

Ctrl + Z # 暂停当前任务

bg # 后台继续运行

fg # 前台继续运行

jobs # 查看后台任务

调试技巧

脚本调试

调试模式运行

bash -x script.sh

在脚本中开启调试

set -x # 开启

set +x # 关闭