Linux软件编程: Linux 操作系统基础与shell脚本

📘 Linux 操作系统基础

一、操作系统概念

  • 作用:屏蔽底层硬件差异,为上层应用提供统一的运行环境和接口。

  • Linux 组成

    1. 内核(Kernel)

    2. Shell(命令行解释器)

    3. 库函数(系统调用接口)


🖥️ 常用 Shell 命令总结

1. 基本文件与目录操作

命令 说明 示例
ls 列出目录内容 ls -l
cd 切换目录 cd /home
mkdir 创建目录 mkdir test
rmdir 删除空目录 rmdir test
touch 创建空文件 touch file.txt
rm 删除文件或目录 rm -rf dir/
pwd 显示当前目录 pwd
cp 复制文件或目录 cp source dest
mv 移动或重命名文件 mv old new

2. 文件查看与搜索

命令 说明 示例
cat 查看文件内容 cat file.txt
head/tail 查看文件开头/结尾 head -n 5 file.txt
grep 搜索文本 grep "error" log.txt
find 查找文件 find /home -name "*.txt"

3. 管道与重定向

bash

复制代码
# 管道示例
ps -ef | grep bash

# 输出重定向
ls > list.txt
ls >> list.txt  # 追加

# 错误重定向
command 2> error.log

4. 权限管理

bash

复制代码
# 修改权限
chmod 755 script.sh
chmod +x script.sh

# 修改所属组
chgrp groupname file

# 修改所有者
chown username file

5. 压缩与解压

bash

复制代码
# tar.bz2
tar -jcvf archive.tar.bz2 dir/
tar -jxvf archive.tar.bz2

# tar.gz
tar -zcvf archive.tar.gz dir/
tar -zxvf archive.tar.gz

6. 系统与网络命令

命令 说明 示例
ps 查看进程 ps -ef
top 动态查看进程 top
ifconfig 查看网络配置 ifconfig
ping 测试网络连通性 ping 8.8.8.8
sudo 提权执行命令 sudo apt update
date 显示日期时间 date
whoami 当前用户 whoami

📦 软件包管理

1. dpkg(Debian 系)

bash

复制代码
sudo dpkg -i package.deb
sudo dpkg -l | grep package
sudo dpkg -P package

2. apt-get(高级包管理)

bash

复制代码
sudo apt update
sudo apt install package
sudo apt remove package --purge

🐚 Shell 编程基础

1. 脚本开发流程

bash

复制代码
# 1. 创建脚本
vim hello.sh

# 2. 添加内容
#!/bin/bash
echo "Hello World"

# 3. 赋予执行权限
chmod +x hello.sh

# 4. 执行
./hello.sh

2. 变量

bash

复制代码
# 环境变量
echo $HOME
echo $PATH

# 位置变量
echo $0  # 脚本名
echo $1  # 第一个参数

# 自定义变量
name="Linux"
echo $name

3. 分支结构

bash

复制代码
# if 语句
if [ $1 -eq 10 ]; then
    echo "参数是10"
elif [ $1 -lt 10 ]; then
    echo "参数小于10"
else
    echo "参数大于10"
fi

# case 语句
case $1 in
    start)
        echo "启动服务"
        ;;
    stop)
        echo "停止服务"
        ;;
    *)
        echo "用法: $0 {start|stop}"
        ;;
esac

4. 循环结构

bash

复制代码
# for 循环
for i in {1..5}; do
    echo "数字: $i"
done

# while 循环
count=1
while [ $count -le 5 ]; do
    echo "计数: $count"
    ((count++))
done

5. 数组

bash

复制代码
arr=("a" "b" "c")
echo ${arr[1]}  # 输出 b
echo ${arr[@]}  # 输出所有元素

🔗 补充说明

1. 解释型 vs 编译型语言

  • 解释型:如 Shell、Python,边解释边执行,适合系统管理。

  • 编译型:如 C、C++、Java,先编译后执行,适合高性能计算。

2. Shell 脚本中的引号

  • 双引号:变量替换

  • 单引号:原样输出

  • 反引号:执行命令

bash

复制代码
name="World"
echo "Hello $name"   # Hello World
echo 'Hello $name'   # Hello $name
echo `date`          # 输出当前时间

✅ 总结建议

  1. 多练习基础命令,理解每个命令的常用选项。

  2. 掌握 Shell 编程基础,能编写自动化脚本。

  3. 理解权限、进程、网络配置,这是系统管理的核心。

  4. 善用管道、重定向、查找工具,提高工作效率。

相关推荐
乾元7 小时前
身份与访问:行为生物识别(按键习惯、移动轨迹)的 AI 建模
运维·网络·人工智能·深度学习·安全·自动化·安全架构
ghostwritten7 小时前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
予枫的编程笔记7 小时前
【Linux进阶篇】Linux后台运行避坑指南:nohup、& 用法及Systemd守护进程实操
linux·进程管理·linux运维·nohup·systemctl·ps命令·kill命令
code monkey.8 小时前
【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
linux·c++·ipc
匆匆那年9678 小时前
llamafactory推理消除模型的随机性
linux·服务器·学习·ubuntu
好好学习天天向上~~8 小时前
5_Linux学习总结_vim
linux·学习·vim
馨谙8 小时前
Ansible模块化Playbook管理:静态导入与动态包含详解
运维·ansible
聆风吟º13 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Coder个人博客13 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统