1. grep 文本过滤命令

grep 命令用于在文本中搜索匹配指定字符串的行,并将匹配的行输出到屏幕。

[root@c a]# env | grep PATH
DEBUGINFOD_IMA_CERT_PATH=/etc/keys/ima
PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

2. 常用文件与路径命令

2.1 查看文件内容

cat:查看文件内容。

2.2 查看命令路径

  • whichwhereis:查看二进制文件(命令)的绝对路径。
[root@c ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz
[root@c ~]# which bash
/usr/bin/bash

2.3 查找文件

find:查找普通文件或文件夹。

find / -name hello
  • /:查找的起始路径。
  • -name:根据文件名精确查找。
  • hello:要查找的具体文件名。

3. Shell 变量基础

3.1 PATH 环境变量

PATH 是一个环境变量,定义了系统查找可执行命令的目录路径。路径之间用冒号 : 分隔。

[root@c ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

3.2 自定义变量

Shell 编程本质上是 Linux 命令的编程。定义变量:

root@c:~/hunantv# shuaige="qiqiqi"

引用变量值需要加 $echo 相当于 printf

root@c:~/hunantv# echo $shuaige
qiqiqi

3.3 预定义变量

操作系统中已经定义好的变量。

  • $?:代表上一条命令的返回值。
    • 0:执行成功。
    • 0:执行失败(范围 1~255)。

4. PATH 变量的重要性

破坏 PATH 变量会导致命令查找失败。

[root@c ~]# PATH=qqq
[root@c ~]# echo $PATH
qqq
[root@c ~]# which bash
/usr/bin/which: no bash in (qqq)
[root@c ~]# whereis bash
-bash: whereis: command not found

恢复 PATH:

[root@c ~]# PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@c ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz /usr/share/info/bash.info.gz

5. 语言类型与 PATH 实战

5.1 编译型与解释型语言

  • 编译型语言:C、Go(类比“预制菜”)。
  • 解释型语言:Java、Python、Shell(类比“现作现炒”)。

5.2 实战:让 Linux 找到自定义程序

目标:编写一个新软件,让 Linux 系统能找到它(模拟安装软件)。

步骤 1:编写 C 语言程序
[root@c shell]# mkdir /myapp
[root@c shell]# cd /myapp/
[root@c myapp]# vim hello.c

编写 hello.c 程序:

#include <stdio.h>
int main() {
    printf("hello,world\n");
    printf("I am qqq\n");
    return 0;
}
步骤 2:编译程序

需要安装 gcc 编译器,将 hello.c 编译成二进制程序。

[root@c myapp]# gcc -o hello hello.c

编译后生成 hello 二进制文件。

步骤 3:让系统找到程序(两种方法)

方法一:适应世界(复制到 PATH 目录)

PATH 变量里的目录存放着系统命令。将编译好的 hello 程序复制到 PATH 中的任意一个目录,例如 /usr/bin

[root@c myapp]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@c myapp]# pwd
/myapp
[root@c myapp]# ls
hello hello.c
[root@c myapp]# hello
-bash: hello: 未找到命令
[root@c myapp]# cp hello /usr/bin/
[root@c myapp]# hello
hello,world
I am qqq
[root@c myapp]# which hello
/usr/bin/hello

方法二:改变世界(修改 PATH 变量)

将程序所在目录 /myapp 添加到 PATH 变量中。

[root@c myapp]# PATH=/myapp/:$PATH    # 临时修改
[root@c myapp]# echo $PATH
/myapp/:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@c myapp]# which hello
/myapp/hello
[root@c myapp]# hello
hello,world
I am qqq
步骤 4:永久修改 PATH 变量

编辑用户配置文件 ~/.bashrc(只影响当前用户)或 /etc/bashrc(影响所有用户)。

[root@c shell]# vim /root/.bashrc

在文件末尾添加:

PATH=/myapp:$PATH
export PATH

保存后执行 source ~/.bashrc 使配置生效。

6. 其他常用命令与概念

6.1 用户管理

userdel -r changsha    # 删除用户 changsha(同时删除 home 和 var 目录)

6.2 命令别名

alias 别名="原命令 [参数]"    # 创建别名
alias                          # 查看所有已定义的别名
alias 别名                     # 查看单个别名的定义
unalias 别名                   # 取消别名(临时生效,终端关闭后失效)

6.3 环境变量与变量作用域

  • env:查看 Linux 系统中的环境变量(全局变量)。
  • set:查看所有变量,包括环境变量和自定义变量。

变量作用域:

  • 全局变量:所有程序都可使用。
  • 局部变量:仅在当前 Shell 中有效。
[root@c ~]# city=changsha    # 定义变量
[root@c ~]# echo $city       # 输出变量值
changsha
[root@c ~]# mkdir $city      # 使用变量创建文件夹
[root@c ~]# ls
anaconda-ks.cfg changsha hello hello.c test

6.4 链接文件

ln 用来创建链接文件。

[root@c ~]# ln -s hunan changsha    # 创建软链接 changsha 指向 hunan
[root@c ~]# ll
lrwxrwxrwx. 1 root root     5  1月10日 10:26 xiang -> hunan    # xiang 指向 hunan(类似快捷方式)

文件类型:

  • -:普通文件。
  • d:目录(directory)。
  • l:链接文件(link file)。

权限:

  • r:读权限(read)。
  • w:写权限(write)。
  • x:执行权限(execute)。

7. 操作系统组成

  • 内核(Kernel):操作系统内部最核心的软件,管理硬件(CPU、内存、磁盘、网卡、显卡等)。
  • 系统调用:接口,外部应用程序可调用内部功能。
  • Shell:解释器,命令行界面(bash 是最常用的 Shell 解释器)。
  • 函数库:第三方公共函数。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐