当前位置: 首页 > news >正文

嵌入式学习

共享文件夹的路径 forlinx@ubuntu:/mnt/hgfs/share$

查找文件路径sudo find / -type d -name "OK113i-linux-sdk" 2>/dev/null

源码路径 /home/forlinx/work/OK113i-linux-sdk

cp /home/forlinx/work/OK113i-linux-sdk/out/t113_i_linux_ok113i_uart0.img /mnt/hgfs/share/

scp /home/forlinx/work/OK113i-linux-sdk/out/t113_i/ok113i/longan/boot.img

root@192.168.0.232:/home/

嵌入式学习

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f 主机连了 Wi-Fi,同时通过网线连接开发板,虚拟机需要通过主机访问开发板。

查看当前启动服务

ls /etc/init.d/ ls /etc/rcS.d/

Linux 常用命令说明

touch

功能:创建大小为0的一个空文件参数:touch 文件名

mv

英文全拼:move功能:可以将一个目录移到另一个目录或者对文件进行改名参数:mi 源文件/目录 目的文件/目录 移动文件不要加/

echo

功能:将内容回显到输出设备,echo命令加上重定向可以创建带内容的文件。参数:echo 内容 或者“内容”>文件

cp 命令

  • 英文全拼‌:copy

  • 功能‌:实现文件的复制操作

  • 参数

    ‌:

    • -r:递归复制目录下的文件和目录

    • -a:复制目录时,保留链接、文件属性并递归复制目录下的内容

    • -d:复制时保留链接

    • -p:将访问权限以及修改时间也复制到新文件中

    • -i:若存在目标文件需要用户确认操作

    • -f:强制复制,如果目标文件已存在则删除不提示

    • -v:显示文件复制过程

file 命令

  • 功能‌:读取文件头并识别文件

  • 参数

    ‌:

    • -b:列出辨识结果时,不显示文件名称

    • -f:指定名称文件

    • -v:显示版本信息

cat 命令

  • 英文全拼‌:concatenate

  • 功能‌:用于连接文件或将文件打印到标准输出设备上

  • 参数‌:直接跟文件名即可

more 命令

功能‌:用于分页查看文件内容,适用于中等大小的文件。

常用操作‌:

  • 空格(或 Ctrl+f)‌:向下翻一页。

  • b(或 Ctrl+b)‌:往回翻一页,但仅对文件有效,对管道输出无效。

  • Enter‌:向下滚动一行。

  • ‌‌:显示文件名以及当前显示的行数。

  • =‌:输出当前的行号。

  • q‌:退出 more,不再显示文件内容。

参数‌:more [选项] 文件名

less 命令

功能‌:less 命令是 more 命令的升级版,功能更强大,支持前后翻页,适用于大文件或日志文件。

常用操作‌:

  • 空格‌:向下翻一页(或 PageDown)。

  • PageUp‌:向上翻一页。

  • Enter(或 ↓)‌:向下滚动一行。

  • ‌:向上滚动一行。

  • /字符串‌:向下搜索指定的字符串。

  • ?字符串‌:向上搜索指定的字符串。

  • n‌:重复前一个搜索,方向向下。

  • N‌:重复前一个搜索,方向向上。

  • q‌:退出 less,不再显示文件内容。

额外功能‌:

  • less‌ 支持更多快捷键,如 ‌g‌ 跳转到文件开头,‌G‌ 跳转到文件末尾。

  • 可以使用 ‌-N‌ 参数显示行号,使用 ‌-S‌ 参数禁用折行。

whereis 命令

用于定位文件位置,参数格式:whereis [选项] 文件名。常用选项:

  • -b‌:只查找二进制文件。

  • -m‌:只查找帮助文件。

  • -s‌:只查找源代码文件。

  • -B

  • -M

find 命令

在指定目录下查找文件,参数格式:find 目录 [选项] 查找条件。常用选项:

  • -name‌:文件名称符合。

  • -iname‌:文件名称符合,‌忽略大小写‌。

grep 命令

用于查找文件里符合条件的字符串,参数格式:grep [选项]。常用选项:

  • -r‌:递归查找符合条件的文件。

  • -n‌:显示匹配行的行号。

  • -i‌:忽略大小写进行匹配。

Linux中常见的压缩文件扩展名及说明

  • .gz‌:‌gzip压缩生成的文件‌。gzip是由GNU计划开发出的压缩命令,应用广泛。

  • .bz2‌:‌bzip2压缩生成的文件‌。bzip2提供了比gzip更好的压缩比。

  • .tar‌:‌tar打包的数据,没有进行压缩‌。tar命令可以将多个文件打包成一个文件,但本身不具备压缩功能。

  • .tar.gz‌:‌tar打包的数据,经过了gzip压缩‌。结合了tar的打包功能和gzip的压缩功能。

  • .tar.bz2‌:‌tar打包的数据,经过了bzip2压缩‌。结合了tar的打包功能和bzip2的压缩功能。

gzip 命令

功能

  • 压缩‌:将文件压缩为gz格式。

  • 解压缩‌:对gz格式的文件进行解压缩。

  • 限制‌:仅能针对单个文件进行压缩和解压缩。

参数

  • gzip [选项] 文件名

选项说明
-c在标准输出上写入,保持源文件不变
-k保持源文件不变
-d解压缩
-r对目录进行递归操作(但仅压缩目录下的文件)

bzip2 命令

功能

  • 压缩‌:将文件压缩为bz2格式。

  • 解压缩‌:对bz2格式的文件进行解压缩。

  • 限制‌:仅能针对单个文件进行压缩和解压缩。

参数

  • bzip2 [选项] 文件名

选项说明
-c输出到标准输出
-k保持源文件不变
-d解压缩

zcat 命令

功能

  • 解压并输出‌:将gz格式的文件解压缩到标准输出。

参数

  • zcat gz格式文件

bzcat 命令

功能

  • 解压并输出‌:将bz2格式的文件解压缩到标准输出。

参数

  • bzcat bz2格式文件

tar 命令

英文全拼

tape archive

功能

  • 文件打包工具‌:用于将多个文件和目录打包成一个归档文件(称为 "tarball"),通常带有 .tar 扩展名。tar 本身不压缩文件,但可以与压缩工具结合使用,创建压缩的归档文件(如 .tar.gz.tar.bz2)。

常用参数

选项说明
-c创建一个新的归档文件
-x解压归档文件
-t列出归档文件的内容
-f指定归档文件的名称,与其他选项同时使用时必须放在最后
-v显示详细处理信息
-C转到指定目录进行操作,一般用于解压文档
-j调用 bzip2 程序进行压缩或解压
-z调用 gzip 程序进行压缩或解压
--exclude=PATH排除指定目录或文件,用于打包时排除不需要的文件

其他重要选项

  • -r:向现有归档文件中追加文件。

  • -u:仅追加比归档文件中已有文件更新的文件。

  • --transform=<expression>:重命名归档中的文件。

  • --strip-components=<number>:解压时剥离指定数量的路径组件。

示例

  • 创建归档文件‌:tar -cvf archive.tar file1 file2 directory

  • 解压归档文件‌:tar -xvf archive.tar

  • 压缩归档文件‌:tar -zcvf archive.tar.gz directory(使用 gzip 压缩)

用户组配置文件说明

/etc/passwd 文件内容

  • 用户名‌:elf

  • UID‌:1000

  • 密码标志‌:x(表示密码被加密并存储在 /etc/shadow 文件中)

  • GID‌:1000

  • 用户说明‌:elf,,(通常包含用户的全名或其他描述信息,此处为空)

  • 家目录‌:/home/elf

  • shell‌:/bin/bash

/etc/shadow 文件内容

  • 用户名‌:elf

  • 加密密码‌:$6$XqMqLXNw$89WhQcYC15HgjyU(经过加密的密码)

  • 最后一次密码修改时间‌:19487(通常是一个时间戳)

  • 密码最小修改间隔‌:0(表示密码可以随时更改)

  • 密码最大有效期‌:99999(表示密码在很长时间内有效)

  • 密码到期前警告天数‌:7(在密码到期前7天开始警告)

  • 密码到期后宽限天数‌:无(:: 表示没有设置宽限天数)

  • 账户失效时间‌:无(:: 表示账户不会失效)

注意事项‌:/etc/shadow 文件存储了用户的加密密码和其他密码相关信息,是系统中非常敏感的文件,通常只有 root 用户才有权限读取和修改。

/etc/group 文件

  • 格式‌:组名:密码:GID:附加用户

  • 示例:

    sambashare:x:126:elf
    • 组名‌:sambashare

    • 密码‌:x(表示加密后的密码)

    • GID‌:126

    • 附加用户‌:elf

/etc/gshadow 文件

  • 格式‌:组名:密码:组管理员:附加用户

  • 示例:

    elf:!::
    • 组名‌:elf

    • 密码‌:!(表示密码被禁用或未设置)

    • 组管理员‌:无

    • 附加用户‌:无

注意‌:/etc/group 存储用户组的基本信息,而 /etc/gshadow 存储用户组的密码及管理员信息,用于增强安全性。

useradd

功能‌:用于创建新用户

基本语法‌:useradd [选项] 用户名

常用选项‌:

  • -m‌:若主目录不存在则自动创建用户家目录。

  • -d 目录‌:指定用户家目录的具体路径。

  • -u UID‌:手动为用户设置唯一的用户ID(UID)。

  • -g 组名‌:指定用户的主要组,且该组必须已存在。

  • -G 组名‌:指定用户的附加组,附加组必须已存在,可指定多个,用空格隔开。

  • -s‌:指定用户的登录Shell,如/bin/bash

passwd

功能‌:设置或修改用户密码

基本语法‌:passwd [选项] 用户名

常用选项‌:

  • 无选项:普通用户修改自己的密码,root用户可修改任意用户的密码。

  • -S‌:查询用户的密码状态。

  • -l‌:锁定用户账户。

  • -u‌:解锁用户账户。

  • --stdin‌:允许从标准输入读取密码,用于脚本自动化。

adduser

功能‌:在某些系统中,adduseruseradd的友好前端,用于添加用户

基本语法‌:adduser [选项] 用户名

常用选项‌(注意,这些选项可能因系统不同而有所差异):

  • --group 组名‌:在创建用户时同时创建用户组(某些系统中可能不适用)。

  • --home 目录‌:指定用户家目录。

  • --uid UID‌:指定用户ID。

  • --gid GID‌:指定用户的主要组ID或附加组ID(具体行为可能因系统而异)。

注意‌:adduser命令在交互性更强的系统中(如Debian系)会提示设置密码等额外信息,而useradd则更侧重于命令行操作。

符号类型
-普通文件
d目录文件
l软连接文件
b块设备文件
c字符设备文件
p管道文件
ssocket文件

Linux 文件权限详解

一、权限分类

Linux一般将文件的所属身份分为三类:

  • owner(所有者)

  • group(所属组)

  • others(其他用户)

二、权限类型

文件或目录具有的权限主要包括:

  • 只读(read, r)

  • 可写(write, w)

  • 可执行(execute, x)

三、非目录文件权限

对于非目录文件,权限的具体含义如下:

  • r‌: 允许用户读取文件的实际内容。

  • w‌: 允许用户编辑、新增或修改文件内容。

  • x‌: 允许用户执行该文件(如果它是一个可执行程序)。

四、目录文件权限

对于目录文件,权限的具体含义有所不同:

  • r‌: 允许用户读取目录结构列表,即查看目录下的文件和子目录。

  • w‌: 允许用户修改目录结构列表,包括新建、删除、转移或重命名目录下的文件及子目录。

  • x‌: 允许用户进入该目录,使其成为当前工作目录。

五、权限查看与更改

  • 查看权限‌:使用ls -l命令可以查看文件和目录的详细权限信息。

  • 更改权限‌:使用chmod命令可以更改文件或目录的权限。权限可以通过符号表示法(如u+x给文件所有者添加执行权限)或数字表示法来指定。数字表示法基于权限的位运算特性,将读、写、执行分别赋予4、2、1的数值,从而组合出不同的权限设置。

通过以上内容,我们可以清晰地了解Linux系统中文件权限的管理机制,以及如何查看和更改这些权限。

chmod 命令详解

英文全拼

change mode

功能

设置用户对于文件的权限

参数格式

chmod [参数] 目录或文件

权限类型与字符表示

类型OwnerGroupOthers
权限执行
字符rwx

权限类型与数字表示

  • 读(r):‌4

  • 写(w):‌2

  • 执行(x):‌1

组合示例:

  • 7(rwx):4+2+1

  • 5(r-x):4+1

用户类型符号

符号含义
u表示文件的所有者
g表示文件的所属组
o表示其他用户
a表示所有用户(all)

操作符号

符号含义
+增加某种权限
-减少某种权限
=赋予给定权限并取消其他所有权限

示例

  • chmod u+x file.txt:为文件 file.txt 的所有者增加执行权限。

  • chmod 755 directory/:设置目录 directory/ 的权限为所有者(rwx),所属组(r-x),其他用户(r-x)。

使用 chmod 命令时,可以灵活组合用户类型符号、操作符号以及权限字符或数字,以实现精细的权限管理。

chgrp 与 chown 命令详解

chgrp 命令

英文全拼‌:change group

功能‌:用于设置文件或目录的所属用户组。

参数‌:chgrp [选项] 组名 文件或目录

常用选项‌:

  • -R‌:递归修改,即修改指定目录及其下所有文件和子目录的所属组。

示例‌:

chgrp -R mengxin /usr/meng/

此命令将递归地更改 /usr/meng/ 目录下所有文件和子目录的所属组为 mengxin

chown 命令

英文全拼‌:change owner

功能‌:用于设置文件或目录的所有者和所属组。只有超级用户或文件的所有者才能使用该命令。

参数‌:chown [选项] [用户]:[组] 文件或目录

  • 用户和组之间可以用冒号 : 分隔,也可以只指定用户(此时组不变)。

常用选项‌:

  • -R‌:递归修改,即修改指定目录及其下所有文件和子目录的所有者和组。

示例‌:

  1. 更改所有者:

    shCopy Code
    ​
    ​
    ​
    chown -R liu /usr/meng/

    此命令将递归地更改 /usr/meng/ 目录下所有文件和子目录的所有者为 liu

  2. 同时更改所有者和组:

    shCopy Code
    ​
    ​
    ​
    chown -R liu:mengxin /usr/meng/

    此命令将递归地更改 /usr/meng/ 目录下所有文件和子目录的所有者为 liu,所属组为 mengxin

注意事项‌:

  • 在使用 chown 命令时,确保指定的用户和组在系统中存在(分别检查 /etc/passwd/etc/group 文件)。

  • 使用冒号 : 连接所有者和组时,避免用户名或组名中包含小数点 .,以免造成系统误判。

挂载与卸载命令详解(md格式)

mount 命令

功能‌:挂载文件系统到指定目录。

基本语法‌:mount [参数] <设备名> <挂载点>

常用参数‌:

  • -t:指定文件系统类型,如 ext4ntfsvfat 等。

  • -o:指定挂载选项,如 rw(读写)、ro(只读)、user(允许普通用户挂载)等。

  • -l:显示当前系统中所有已挂载的文件系统列表。

  • -v:在挂载时显示详细信息。

  • -V:显示 mount 命令的版本信息。

常见挂载选项‌:

  • rw:以读写模式挂载文件系统。

  • ro:以只读模式挂载文件系统。

  • user:允许普通用户挂载文件系统。

  • noexec:禁止在文件系统中执行可执行文件。

umount 命令

功能‌:卸载已挂载的文件系统。

基本语法‌:umount [参数] <设备名/挂载点>

常用参数‌:

  • -a:卸载 /etc/fstab 中定义的所有文件系统。

  • -r:懒惰卸载,标记文件系统为卸载状态,随后在文件系统不再使用时真正卸载。

  • -f:强制卸载,即使设备正在被使用。

  • -n:不更新 /etc/mnttab 文件。

  • -v:显示卸载过程的详细信息。

  • -V:显示 umount 命令的版本信息。

注意事项‌:

  • 在卸载文件系统之前,确保没有进程正在使用该文件系统,否则卸载可能失败。

  • 使用 lsoffuser 命令可以查看哪些进程在使用某个挂载点,便于及时处理。

文件系统特性详解

inode

  • 定义‌:inode(索引节点)是文件系统中用于记录文件属性的数据结构。

  • 功能‌:每个文件占用一个inode,描述文件的属性,如‌权限‌、‌所有者‌、‌大小‌、‌创建/访问/修改时间‌以及指向数据块(block)的‌指针‌等。

  • 特性‌:通过inode号唯一标识文件,即使文件名改变,inode号仍保持不变。

block

  • 定义‌:block(数据块)是文件系统中用于存储文件内容的固定大小的数据单元。

  • 功能‌:存储文件的实际数据。若文件较大,可占用多个block。

  • 特性‌:

    • 普通文件的block存储文件数据。

    • 目录文件的block存储目录项信息,包括文件的inode号、文件名、文件类型等。

super block

  • 定义‌:super block(超级块)是文件系统的核心元数据结构。

  • 功能‌:包含文件系统的关键信息,如block和inode的‌总量‌、‌使用量‌、‌剩余量‌以及‌文件系统状态‌等。

  • 特性‌:是文件系统的“目录索引”,确保文件系统的一致性和完整性,在文件系统挂载和访问时起到关键作用。

硬连接详解

硬连接(Hard Link)‌是通过文件系统的inode连接来产生新文件名,而不是产生新文件。以下是硬连接的详细解释:

  • 基本概念‌:

    • 硬连接是指多个文件名指向同一个inode(索引节点)。

    • 在Linux文件系统中,每个文件都会被分配一个唯一的inode编号。

  • 结构说明‌:

    • 目录文件inode‌:存储了文件或目录的元数据,包括文件名、权限、所有者等,并指向对应的inode。

      • 例如,/home/elf/work1/file1/home/elf/work2/file2 可能指向同一个inode。

    • 文件inode‌:存储了文件的实际数据块信息。

    • 目录block‌:指向inode的指针,用于在目录中查找文件。

    • 文件block‌:存储文件的实际内容。

  • 硬连接特点‌:

    • 多个入口‌:一个文件可以有多个硬连接,即多个文件名指向同一个inode。

    • 数据共享‌:所有硬连接共享同一份数据,修改任何一个硬连接的内容,其他硬连接都会看到变化。

    • 防止误删‌:即使删除了其中一个硬连接,只要还有其他硬连接存在,文件数据就不会被删除。只有当最后一个硬连接被删除时,文件数据才会被释放。

  • 创建与删除‌:

    • 创建硬连接:使用ln命令,如ln 源文件 硬链接文件

    • 删除硬连接:使用rm命令,如rm 硬链接文件。但注意,这只会删除硬连接,不会删除文件数据。

  • 注意事项‌:

    • 目录不能创建硬连接,但可以创建软连接(符号链接)。

    • 硬链接不能跨越文件系统。

符号连接/软连接详解‌:

  • 定义‌:符号连接(软连接)是创建一个独立的文件,该文件的数据部分仅包含要连接的文件的路径名。

  • inode关系‌:

    • 连接文件拥有自己的inode(如No.3)。

    • 它不直接指向文件内容,而是指向目标文件的路径。

  • block内容‌:

    • 连接文件block‌:存储了目标文件的路径,如/home/elf/work1/file1

    • 目录block‌:包含连接文件的目录信息。

    • 目标文件block‌:存储实际文件内容。

连接文件命令——ln(转为md格式)

ln命令简介

英文全拼‌:link files

功能‌:ln命令用于为某一个文件在另外一个位置建立一个同步的链接,分为硬链接和软链接(符号链接)两种。

命令格式

ln [选项] 源文件 目标文件

选项说明

选项说明
-s创建软链接(符号链接)‌。软链接类似于Windows的快捷方式,可以跨文件系统,删除软链接不会影响原始文件。
-v显示详细的处理过程‌。在执行链接操作时,会显示详细的操作信息。

硬链接与软链接的区别

  • 硬链接‌:指向文件数据的指针,不是文件名。多个硬链接可以指向同一份文件数据,删除其中一个硬链接不会影响其他硬链接或原始文件。硬链接不能跨文件系统,且不能为目录创建硬链接。

  • 软链接‌:包含了指向另一个文件的路径的独立文件。软链接可以跨文件系统,删除软链接不会影响原始文件。但如果软链接指向的文件被删除,软链接会变成一个无效链接。

使用示例

  • 创建硬链接‌:ln file.txt hardlink.txt(在当前目录下为file.txt创建一个名为hardlink.txt的硬链接)

  • 创建软链接‌:ln -s /home/user/documents /home/user/links/docs_link(在/home/user/links目录下创建一个指向/home/user/documents目录的软链接docs_link

网络相关命令——ifconfig

ifconfig命令功能

显示或配置Linux系统中的网络接口参数‌。

ifconfig命令的基本语法

ifconfig [网络接口] [选项] 地址/参数

ifconfig命令的常用选项及说明

  • ifconfig -a‌:‌显示所有网络接口的信息,包括未激活的接口‌。

  • ifconfig ens33 172.16.0.151‌:‌为ens33网络接口设置IP地址为172.16.0.151‌。

  • ifconfig ens33 broadcast 172.16.0.255‌:‌设置ens33网络接口的广播地址为172.16.0.255‌。

  • ifconfig ens33 netmask 255.255.255.0‌:‌设置ens33网络接口的子网掩码为255.255.255.0‌。

  • ifconfig ens33 hw ether 22:22:22:22:22:22‌:‌为ens33网络接口设置MAC地址为22:22:22:22:22:22(需先关闭接口再设置,设置后重新启用)‌。

  • ifconfig ens33 up‌:‌激活ens33网络接口‌。

  • ifconfig ens33 down‌:‌关闭ens33网络接口‌。

网络相关命令 - ping

功能

ping‌ 命令用于检查网络的连接情况,通过发送 ICMP(Internet Control Message Protocol)回显请求和响应消息来判断目标主机是否可达,以及获取连接的丢包率和平均往返时间等状态信息。

参数

  • ping [选项] IP地址/域名

    选项说明
    -c设置完成要求回应的次数
    -i指定收发信息的间隔时间
    -n只输出数值,不显示主机名

详细说明

  • 工作原理‌:ping 命令通过发送 ICMP Echo 请求数据包到目标主机,并等待 ICMP Echo 回复数据包来判断网络连接状态。

  • 应用场景‌:常用于测试本地主机与远程主机之间的网络连接是否通畅,以及判断网络配置是否正确。

  • 注意事项‌:ping 成功并不一定代表 TCP/IP 配置完全正确,还需考虑其他网络配置因素。若 ping 成功但网络仍无法使用,可能是网络系统的软件配置问题。

网络相关命令

route 命令详解

功能

  • 添加、删除或查看网关参数,是网络配置中的重要工具。

参数说明

  • 基础参数:route,用于启动该命令。

操作示例

  • 添加默认网关‌:

    bashCopy Code
    ​
    ​
    ​
    sudo route add default gw 192.168.0.1

    此命令将默认网关设置为 192.168.0.1。

  • 删除默认网关‌:

    bashCopy Code
    ​
    ​
    ​
    sudo route del default gw 192.168.0.1

    此命令将删除当前的默认网关设置。

nameserver 配置说明

功能概述

  • 主要功能‌:使用域名访问 DNS 服务,需预先设置 DNS 参数。

参数设置

  • 关键参数‌:nameserver xx.xx.xx.xx(请将 xx.xx.xx.xx 替换为实际的 DNS 服务器 IP 地址)。

配置位置

  • 存放路径‌:该设置需存放在系统的 /etc/resolv.conf 文件中,以确保网络域名解析正常进行。

进程相关命令ps

  • 功能‌:显示当前操作系统中由该用户运行的进程列表。

  • 常见参数‌:

    • -a:显示所有与终端相关的进程。

    • -u:查看进程所有者及其详细信息。

    • -x:显示没有控制终端的进程。

    • -e:显示所有进程。

    • -l:‌显示详细信息‌,例如优先级、父进程等。

top 命令说明

功能

动态显示当前系统中由该用户运行的进程列表‌。top 命令是 Linux 系统管理员和开发人员常用的工具,用于实时监控系统的运行状态。

参数

  • ‌:运行 top 命令时不带任何参数,将显示默认的进程和系统信息界面。

使用说明

界面组成

  • 系统信息‌:显示系统的一般信息,包括运行时间、活跃用户数量、负载平均值和运行中的进程数量。

  • 任务摘要‌:显示总活动任务的摘要,包括进程数量及其状态。

  • 系统进程列表‌:详细列出每个进程的 PID、用户、CPU 使用率、内存使用率和命令信息等。

常用选项

  • -d:设置屏幕更新之间的时间间隔。

  • -p:监控特定的进程 ID。

  • -n:定义 top 退出前的迭代次数。

  • -b:批处理模式,将输出捕获到文件中。

  • -u:显示特定用户的进程。

  • -s:安全模式,隐藏或掩蔽某些信息。

  • -i:忽略空闲和僵尸进程。

  • -o:根据特定字段(如 CPU 使用率)对进程进行排序。

  • -H:显示单独的线程。

  • -c:显示命令名称而不是命令行参数。

交互式命令

  • h:显示帮助信息。

  • k:使用 PID 杀死进程。

  • q:退出 top 界面。

  • z:切换颜色/单色模式。

  • r:调整进程的优先级。

  • u:通过特定用户过滤进程。

  • P:按 CPU 使用率排序进程。

  • M:按内存使用率排序进程。

  • T:按运行时间排序进程。

  • c:切换显示命令行。

  • 1:切换显示单个 CPU 状态。

高级选项

  • 在安全模式下运行,隐藏或掩蔽某些信息。

  • 使用 V 键查看进程的树状结构。

  • 使用 Z 键(具体可能因 top 版本而异)进行其他高级操作。

kill 命令说明

功能‌: 强制终止进程

使用参数‌:

  • kill -signal pid 其中,signal 是要发送的信号(如 9 代表强制终止),pid 是要终止的进程 ID。

示例‌: 如果你想要强制终止进程 ID 为 1234 的进程,可以使用以下命令:

kill -9 1234

clear 命令说明

功能‌:清除屏幕 ‌参数‌:无

sync 命令说明

功能‌:将文件系统的缓冲区数据立即写入磁盘中,确保文件系统的数据与磁盘数据保持同步,防止数据丢失或损坏。

详细解释‌:

  • 数据同步机制‌:在Linux系统中,为了提高性能,数据写入磁盘并不是即时完成的,而是先缓存到内存中。sync命令的作用就是将内存中的这些数据强制写入磁盘。

  • 使用场景‌:在关机、重启或卸载文件系统前,建议多次执行sync命令,以确保数据完整性。此外,在备份数据或管理高负载服务器上的文件系统时,sync也是不可或缺的工具。

  • 基本语法‌:sync [选项] [文件...]。不带选项时,sync会同步所有文件系统的缓存;指定文件时,仅同步该文件的缓存数据和元数据。

  • 安装与环境‌:sync命令是coreutils软件包的一部分,默认包含在几乎所有Linux发行版中。如未安装,可通过包管理器进行安装。

man 命令使用说明

功能

显示Linux系统命令、函数、配置文件、系统调用的帮助信息

语法格式

man [选项] 命令/函数

选项说明

选项说明
无选项(直接跟命令)显示该命令的详细帮助信息
-a在所有手册页中搜索关键词
-k模糊搜索相关手册(相当于搜索标题)
-f快速查看该命令属于哪一类及其简要说明
-w显示手册页文件的路径但不显示其内容
-P [pager]指定用于显示手册页的分页程序
-s [num]仅在指定的手册章节内搜索
数字(如1, 2, 3等)指定章节查看,比如系统调用、库函数等

手册章节解释

  • 1‌:用户命令(如ls, cp)

  • 2‌:系统调用(如open, read)

  • 3‌:库函数(如printf, malloc)

  • 4‌:设备文件和驱动

  • 5‌:配置文件格式(如/etc/passwd)

  • 6‌:游戏和娱乐

  • 7‌:杂项(如协议、文件格式描述)

  • 8‌:系统管理命令(如mount, ifconfig)

  • 9‌:内核例程,面向Linux内核开发者

快捷键

  • 空格键‌:向下翻页

  • b‌:向上翻页

  • /关键字‌:搜索关键字

  • n‌:跳到下一个搜索结果

  • q‌:退出man页面

示例

  • 查看ls的官方文档:man ls

  • 查看系统调用open:man 2 open

  • 模糊搜索包含copy的命令:man -k copy

  • 快速查看ls命令类型:man -f ls

工作模式(转为md格式)

vim工作模式详解

三种核心工作模式

  • 一般模式(Normal Mode)

    • 功能‌:进行光标的移动、复制、粘贴、删除等基本操作。

    • 进入方式‌:Vim启动后默认进入此模式,或在其他模式下按Escape(Esc)键返回。

  • 编辑模式(Insert Mode)

    • 功能‌:进行文本编辑,如输入、修改文本内容。

    • 进入方式‌:在一般模式下按i键进入。

    • 退出方式‌:按Esc键返回一般模式。

  • 命令模式(Command Mode 或 Last Line Mode)

    • 功能‌:执行保存文件、退出编辑器、查找、替换等高级操作。

    • 进入方式‌:在一般模式下按:键进入。

    • 常用命令

      ‌:

      • :w:保存文件。

      • :q:退出编辑器。

      • :wq:保存并退出。

      • /pattern:搜索指定模式。

      • :s/old/new/g:全局替换。

模式切换总结

  • 一般模式到编辑模式‌:按i键。

  • 编辑模式到一般模式‌:按Esc键。

  • 一般模式到命令模式‌:按:键。

流程图说明

主要模式

  • 光标插入指令‌:

    • 使用ESC键退出至

      • 一般模式

      • 命令模式

      • 编辑模式

  • ESC键功能‌:

    • 从任意模式退出至

      • 一般模式

      • 直接进入‌命令模式‌或‌编辑模式

Vim 编辑器快捷键

移动光标

  • k 或 ↑‌:将光标‌上移一行

  • j 或 ↓‌:将光标‌下移一行

  • h 或 ←‌:将光标‌左移一个字符

  • l 或 →‌:将光标‌右移一个字符

屏幕翻页

  • Ctrl+f 或 Page Down‌:向‌下翻页

  • Ctrl+b 或 Page Up‌:向‌上翻页

其他常用命令

  • zz‌:将当前行置于屏幕‌中央

  • zt‌:将当前行置于屏幕‌顶部

  • zb‌:将当前行置于屏幕‌底部

  • Ctrl+e‌:向上移动‌一行

  • Ctrl+y‌:向下移动‌一行

  • Ctrl+u‌:向文件首翻‌半屏

  • Ctrl+d‌:向文件尾翻‌半屏

  • gg‌:光标移动到文件‌顶部

  • G‌:光标移动到文件‌尾部

    Vim常用操作--一般模式

    删除文本

    • dd‌:删除光标所在的整行内容。若在dd前增加数字,如2dd,则可以删除从光标所在行开始的两行。

    • d$‌:删除本行光标所在位置及以后的所有字符。

    • d^‌:删除本行光标之前的所有字符。

    • dw‌:删除从光标所在位置直到下一个单词开始的所有内容。

    复制文本

    • yy‌:复制当前整行内容。

    • ynl‌:复制n个字符。

    • y^‌:复制当前行光标之前的内容。

    • y$‌:复制当前行光标之后的内容。

    • yw‌:复制光标所在的单词。

    粘贴文本

    • p‌:粘贴已复制或剪切的内容。若在前面加上数字,如3p,则粘贴三次。

    光标移动

    • h‌:光标左移。

    • j‌:光标下移。

    • k‌:光标上移。

    • l‌:光标右移。

    • w‌:光标移动到下一个单词的词头。

    • b‌:光标移动到上一个单词的词头。

    • gg‌:光标移动到文章开头。

    • G‌:光标移动到文章结尾。

    • 行数+shift+g‌:光标移动到指定的某一行。

    其他常用操作

    • u‌:撤销上一步操作。

    • Ctrl + r‌:恢复上一个被撤销的操作。

    • :w‌:保存文件。

    • :q‌:退出Vim。

    • :wq‌:保存并退出Vim。

    • :q!‌:不保存强制退出Vim。

    • :set nu‌:显示行号。

    • :set nonu‌:不显示行号。

    • /查找词+回车‌:进行查找,再按n向下遍历,N向上遍历。

指令作用
/p1查找 p1
:%s/p1/p2/g在文件中将所有的 p1 替换为 p2
:%s/p1/p2/gc在文件中将所有的 p1 替换为 p2,并在每次替换前进行确认

Shell脚本执行方法

执行要求

  • 文件需具备可读和可执行权限

执行方式

1. 当前目录执行

./myshell.sh

2. 绝对路径下执行

/home/elf/myshell.sh

2. 绝对路径下执行

bashCopy Code
​
​
​
/home/elf/myshell.sh

3. 使用shell应用程序执行

bashCopy Code
​
​
​
bash myshell.sh

4. 使用source.执行

  • source是bash的内置命令

bashCopy Codesource myshell.sh
# 或
. myshell.sh  # 注意:.后边有空格

Shell脚本执行方式

一、在子shell中执行
  • 父进程 shell‌:

    • 当在子shell中执行脚本时,父shell的环境与子shell是隔离的。

    • 变量‌:脚本中设置的变量在脚本执行完毕后不会保存,这些变量和环境设置在子shell中局部生效,不会影响当前(父)shell的环境。

  • 子进程 shell‌:

    • 子shell是由父shell派生出来的一个新的shell进程。

    • 在子shell中执行的命令和脚本对父shell的状态无影响。

二、在当前shell进程中执行
  • 父进程 shell‌:

    • 如果直接在当前shell进程中执行脚本(例如使用.source命令),则脚本中设置的变量在脚本执行完毕后会保存下来。

    • 变量‌:这些变量会保留在当前shell的环境中,方便与当前shell的环境进行交互,适用于修改环境变量、切换工作目录等情况。

  • 执行方式‌:

    • 使用.(点命令)或source命令来在当前shell中执行脚本,例如:. script.shsource script.sh

总结‌:

  • 子shell执行‌:适用于需要隔离环境的场景,变量和环境设置在子shell中局部生效。

  • 当前shell执行‌:适用于需要保留变量和修改当前shell环境的场景。

shell变量详解

什么是shell变量

变量‌是编程中用于存放数据的容器。在Shell脚本中,变量同样扮演着至关重要的角色,用于存储和引用数据。Shell变量无需事先声明类型,直接赋值即可使用,这符合Shell作为弱类型语言的特性。

shell变量的命名规则

  • 组成‌:变量名由字母、数字和下划线组成。

  • 开头‌:自定义变量必须以字母或下划线开头,不能是数字。

  • 限制‌:不能使用Shell中的保留关键字,如$#?等。

shell变量的定义与赋值

  • 赋值‌:使用=号进行赋值,如变量名=变量值

  • 引号‌:变量值可以加上单引号或双引号,特别是当值中包含空格或特殊字符时。

  • 空格‌:=两侧不能有空白符号,如空格或tab。

shell变量的类型与操作

  • 类型‌:虽然Shell不强制要求变量类型,但根据用途可分为字符串变量、数值变量、环境变量等。

  • 操作‌:包括变量替换、变量修改(如搜索和替换)、获取变量长度等。

shell变量的特殊用法

  • 环境变量‌:由操作系统提供,用于配置程序环境,如PATHHOME等。

  • 位置参数‌:执行脚本时传递给脚本的参数,可通过$1$2等访问。

  • 局部变量与全局变量‌:局部变量仅在函数或当前shell会话中有效,全局变量在整个脚本中有效。

示例

# 定义变量
my_var="Hello, World!"
num1=5
num2=3
​
# 变量替换与输出
echo $my_var  # 输出: Hello, World!
sum=$((num1 + num2))
echo "The sum is $sum"  # 输出: The sum is 8
​
# 环境变量
echo "Your home directory is: $HOME"
echo "Current PATH is: $PATH"

shell脚本在vim写完然后用echo $变量名 查看

变量使用详解及Markdown格式示例

不同情况下的变量应用

将命令执行结果赋值给变量

  • 方法一:反引号‌(不推荐,易混淆)

    bashCopy Code
    ​
    ​
    ​
    `date`  # 执行date命令,结果赋值给变量(示例,实际需赋值给具体变量)

    示例‌:current_date=date`,然后echo $current_date`显示当前日期。

  • 方法二:$()‌(推荐)

    bashCopy Codefile_list=$(ls -l)  # 列出文件并赋值给变量
    echo "$file_list"  # 打印文件列表

变量中引用变量或命令

  • 单引号‌:直接当字符串输出,不解析变量。

    bashCopy Codename="John"
    echo 'Hello $name'  # 输出:Hello $name
  • 双引号‌:解析变量。

    bashCopy Codename="John"
    greeting="Hello"
    echo "$greeting $name"  # 输出:Hello John

删除变量

  • 使用

    unset

    命令。

    bashCopy Codename="John"
    unset name
    echo $name  # 无输出,变量已删除

只读变量

  • 使用

    readonly

    命令,变量不可修改或删除。

    bashCopy Codename="John"
    readonly name
    unset name  # 报错:bash: unset: readonly variable 'name' cannot be unset

Shell变量种类详解

本地变量

  • 定义‌:仅在当前Shell会话中可见,对于其他的Shell和Shell执行的程序是不可见的。

  • 特点‌:用户自定义,用于临时存储数据,脚本执行完毕后失效。

环境变量

  • 定义‌:在操作系统中用来指定操作系统运行环境的一些参数,有些程序需要环境变量来保证其正常运行。

  • 查看‌:可以使用env命令查看当前Shell环境中的所有环境变量。

  • 配置文件‌:

    • 用户级别‌:~/.profile~/.bashrc

    • 系统级别‌:/etc/environment/etc/profile/etc/bash.bashrc

其他变量类型

  • 位置变量‌:Shell脚本中通过位置引用的命令行参数,例如$1$2等代表第一个、第二个参数。

  • 预定义特殊变量‌:如$0(脚本名)、$#(参数个数)、$*(所有参数)、$?(上一条命令的退出状态)等。

  • 局部变量‌:在函数内使用local声明的变量,作用域限于函数内部。

总结‌:Shell变量种类繁多,每种变量都有其特定的用途和作用范围。理解并掌握这些变量的使用,对于编写高效、灵活的Shell脚本至关重要。

Shell特殊变量详解

在Shell脚本编程中,特殊变量扮演着至关重要的角色。以下是Shell中常见特殊变量的详细解释,以Markdown格式呈现:

位置参数变量

  • $0‌:‌Shell脚本本身的文件名‌。若脚本通过相对或绝对路径执行,则显示对应路径。

  • $1, $2, ..., $n‌:传递给Shell脚本的第1, 第2, ..., 第n个参数。例如,$1代表第一个参数。

参数相关变量

  • $#‌:传递给Shell脚本的参数个数。

  • $‌:所有参数列表,作为一个整体字符串输出。例如,"$*"会输出"$1 $2 ... $n"

  • $@‌:所有参数列表,但每个参数被视为独立的字符串。例如,"$@"会输出"$1" "$2" ... "$n"。在双引号中使用时,$*$@的区别尤为明显。

进程相关变量

  • $$‌:当前Shell进程的PID(Process ID,进程标识符)。

  • $!‌:最后一个在后台运行的进程的PID。

状态变量

  • $?‌:最后运行的命令的退出状态。0通常表示成功,非0值表示失败或错误。

以下是一些示例,展示了如何在脚本中使用这些特殊变量:

#!/bin/bash
echo "脚本名称: $0"
echo "第一个参数: $1"
echo "参数总数: $#"
echo "所有参数(作为一个字符串): $*"
echo "所有参数(每个参数独立): $@"
echo "当前进程ID: $$"
# 运行一个后台进程并获取其PID
sleep 10 &
echo "后台进程ID: $!"
# 运行一个命令并检查其退出状态
ls /nonexistent
echo "上条命令退出状态: $?"

相关文章:

  • 德国马克斯·普朗克数学研究所:几何朗兰兹猜想
  • JS进阶 Day03
  • 深度理解 CLIP:连接图像与语言的桥梁
  • 人工智能学习26-BP梯度下降
  • 【C语言】计算机组成、计算机语言介绍
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的Dify一键部署
  • 遥控电风扇
  • OAC: Output-adaptive Calibration for Accurate Post-training Quantization
  • Python爬虫实战:研究simpleq相关技术
  • HTML+CSS 动态背景框动态登录注册框
  • C语言环形数组(循环队列)详解:原理、实现与应用
  • 山东大学软件学院创新项目实训开发日志——第十七周
  • 同步与异步编程范式全景研究——从CPU时钟周期到云原生架构的范式演进
  • 2025-06-14[避坑]解决不支持中文路径读取图像的方法
  • 6月14日day53打卡
  • openeuler系统每日生成系统运行报告并发送至指定邮箱
  • AVL树的实现
  • 人工智能基础知识笔记九:数据规范化技巧
  • 解决文明6 内存相关内容报错EXCEPTION_ACCESS_VIOLATION
  • 吃透 Golang 基础:方法
  • 响应适网站开发/aso优化推广公司
  • 惠州附近公司做网站建设多少钱/百度移动端模拟点击排名
  • 自建团队网站开发要多少钱/中国数据网
  • 外贸英文网站建设/下列哪些店铺适合交换友情链接
  • 公安部/宁波seo营销平台
  • cf租号网站怎么做的/搜索网站哪个好