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

【Linux】Linux基础命令

一些常用的Linux命令,还有一些驱动开发会用到的命令。

部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。

 专栏目录:记录自己的嵌入式学习之路-CSDN博客


目录

1    su及sudo

2    文件及目录的基础操作

2.1    列出文件

2.2    创建目录

2.3    删除文件或目录

2.4    重命名文件

3    修改文件的权限

3.1    数字表示法:

3.2    符号表示法:

3.3    递归设置子目录:

4    修改文件所有者

4.1    命令

4.2    参数

5    文件信息输出

5.1    文件类型显示

5.2    文件详细信息显示

6    查看设备的硬盘及其详情

6.1    df命令(就是disk free的缩写)

6.2    lsblk命令(就是list block的缩写)

6.3    fdisk命令

7    软件查询及安装

7.1    已安装软件查询

7.2    软件所有版本查询

7.3    软件详情查询

7.4    软件安装

7.5    软件卸载

7.6    清理不再使用的依赖包

7.7    忽略特定软件包更新

7.8    使包不会被autoremove清理

8    echo

8.1    作用

8.2    基础

8.3    输出字符串到终端

8.4    输出字符串到文件

8.5    输出shell命令结果

8.6    echo前面加@

8.7    引用变量

8.8    开启转义(可以使用颜色)

9    Linux的软连接和硬链接

9.1    硬链接(Hard Link)

9.2    软链接(Symbolic Link)

10    查看系统的设备、设备树

10.1    查看当前设备

10.2    查看当前设备树

11    查看当前运行的所有程序及其PID


1    su及sudo

        请参考这位大佬的文章:

su、sudo、sudo su、sudo -i sudo -l的用法和区别-CSDN博客文章浏览阅读4.9w次,点赞42次,收藏164次。sudo -l 查看sudo的权限;su是申请切换root用户,需要申请root用户密码。有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。而sudo su是当前用户暂时申请root权限,所以输入的不是root用户密码,而是当前用户的密码。sudo是用户申请管理员权限执行一个操作,而此处的操作就是变成管理员。在sudo于1980年前后被写出之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺_sudo -l https://blog.csdn.net/mutou990/article/details/107724302


2    文件及目录的基础操作

2.1    列出文件

        ls [options]

常用命令:

        ls -l:列出当前目录非隐藏文件的详细信息;

        ls -a:列出当前目录所有文件,包括隐藏文件。

2.2    创建目录

        mkdir [options] [dir]

其中,options:

        -m:设置创建的目录的文件模式(权限)。

        -p:创建必要的父目录,如果这些目录不存在的话。

        -v:在每次创建新目录时显示消息。

2.3    删除文件或目录

        rm [options] <name>

其中,options:

        -i:删除前逐一询问确认。

        -f:即使原文件属性设为只读,也直接删除,无需逐一确认。

        -r:递归删除,用于删除目录及其子目录和文件。

示例:

        rm -rf *:删除当前工作目录下的所有文件和目录。

注意:

        要使用rm加上通配符删除隐藏文件的话,文件名前的.一定要留下,例如:

        要删除.123.cmd和.abc.cmd,光使用rm *.cmd是无效的,需要使用rm .*.cmd才行。

2.4    重命名文件

        mv -i <old_name> <new_name>

        加-i是为了避免有别的文件就叫new_name,若有,加了-i就会提示是否覆盖。


3    修改文件的权限

3.1    数字表示法:

        chmod 755 <file_path>

        其中,755表示所有者有读、写、执行权限(7=4+2+1),组用户和其他用户有读、执行权限(5=4+1)。因此,只需要记住4是读、2是写、1是执行,就可以畅通无阻地设置权限了,只需要将单个的不同数字加起来就是需要设置的最终单数字了。例如,需要设置所有者读写执行(4+2+1=7),同组用户读执行(4+1=5),其他用户只读(4),那么最终设置的权限就是754。

        至于上述方法的由来也很简单,就是实际上权限由一个9位的二进制数组成,而每个独立权限(所有者/同组/其他)占3位,对于单独一个来说,所有的枚举就是读100(4)、写010(2)、执行001(1),所以单独一个权限就是这三个数的组合相加的和,而完整的一个权限就是三个和的拼接。

3.2    符号表示法:

        chmod u+rwx,g+rx,o+rx <file_path>

3.3    递归设置子目录:

        chmod -R 755 <file_path>

若需要同时设置子目录的权限,就要使用-R参数进行递归设置。


4    修改文件所有者

4.1    命令

        chown [OPTION]... [OWNER] [: [GROUP]] FILE...

4.2    参数


5    文件信息输出

5.1    文件类型显示

        file <filename>

5.2    文件详细信息显示

        stat <filename>


6    查看设备的硬盘及其详情

6.1    df命令(就是disk free的缩写)

        显示目前在 Linux 系统上的文件系统磁盘使用情况统计。

        最常用的命令:sudo df -Th

6.2    lsblk命令(就是list block的缩写)

        较为直观地将硬盘的大小、从属关系、挂载情况等都列出来了。

        其中,如下图从RM(可移动设备)列就能发现sdb为U盘,从MOUNTPOINT就能看出其没有挂载在任何路径上。

        

用法:

        lsblk [选项] [<设备> ...]

作用:

        列出块设备的信息。

选项:

         -a, --all                       打印所有设备
         -b, --bytes                  以字节为单位而非易读的格式来打印 SIZE
         -d, --nodeps               不打印从属设备(slave)或占位设备(holder)
         -D, --discard              打印时丢弃能力
         -z, --zoned                 print zone model
         -e, --exclude              <列表> 根据主设备号排除设备(默认:内存盘)
         -f, --fs                        输出文件系统信息
         -i, --ascii                    只使用 ascii 字符
         -I, --include <列表>   只显示有指定主设备号的设备
         -J, --json                   使用 JSON 输出格式
         -l, --list                      使用列表格式的输出
         -T, --tree                   use tree format output
         -m, --perms              输出权限信息
         -n, --noheadings      不打印标题
         -o, --output <列表>  输出列
         -O, --output-all         输出所有列
         -p, --paths                打印完整设备路径
         -P, --pairs                 使用 key=“value” 输出格式
         -r, --raw                    使用原生输出格式
         -s, --inverse             反向依赖
         -S, --scsi                  输出有关 SCSI 设备的信息
         -t, --topology            输出拓扑信息
         -x, --sort <列>          按<列>对输出排序
        -h, --help                   display this help
         -V, --version             display version

输出数据的列含义:

        NAME  设备名
        KNAME  内部内核设备名称
        MAJ:MIN  主:次 设备号
        FSTYPE  文件系统类型
        MOUNTPOINT  设备挂载位置
        LABEL  文件系统标签
        UUID  文件系统 UUID
        PARTTYPE  分区类型 UUID
        PARTLABEL  分区 LABEL
        PARTUUID  分区 UUID
        PARTFLAGS  分区标志
        RA  该设备的预读(read-ahead)
        RO  只读设备
        RM  可移动设备
        HOTPLUG  可移动或热插拔设备(usb, pcmcia, ...)
        MODEL  设备标识符
        SERIAL  磁盘序列号
        SIZE  磁盘容量
        STATE  设备的状态
        OWNER  用户名
        GROUP  组名
        MODE  设备节点权限
        ALIGNMENT  对齐偏移量
        MIN-IO  最小 I/O 大小
        OPT-IO  最优 I/O 大小
        PHY-SEC  物理扇区大小
        LOG-SEC  逻辑扇区大小
        ROTA  转动设备
        SCHED  I/O 调度器名称
        RQ-SIZE  请求队列大小
        TYPE  设备类型
        DISC-ALN  忽略对齐偏移量
        DISC-GRAN  忽略粒度
        DISC-MAX  忽略最大字节数
        DISC-ZERO  忽略零数据
        WSAME  写相同的最大字节数
        WWN  惟一存储标识符
        RAND  添加随机性
        PKNAME  内部上级内核设备名称
        HCTL  SCSI 的 Host:Channel:Target:Lun
        TRAN  设备传输类型
        SUBSYSTEMS  对成链的子系统去重
        REV  设备修订版本
        VENDOR  设备制造商
        ZONED  zone model

6.3    fdisk命令

        sudo fdisk -l

        相对来说,这个命令没有lsblk这么直观。


7    软件查询及安装

7.1    已安装软件查询

        apt list –installed <package_name>

7.2    软件所有版本查询

        apt list -a <package_name>

7.3    软件详情查询

        apt show <package_name>

        可查询软件的版本、依赖、开源协议等。

7.4    软件安装

        sudo apt install <package_name>

        sudo apt install <package_name>=<version_number>

        其中,后者为安装指定版本软件。

7.5    软件卸载

        sudo apt remove <package_name>

7.6    清理不再使用的依赖包

        sudo apt autoremove

7.7    忽略特定软件包更新

        sudo apt-mark hold <package_name>:将软件包标记为保留,更新时不更新该软件包。

        sudo apt-mark unhold <package_name>:解除软件包的保留标记,更新时同时更新该软件包。

        sudo apt-mark showhold:查看被保留的软件包。

7.8    使包不会被autoremove清理

        sudo apt-mark manual <package_name>:将软件包标记为手动安装;


8    echo

8.1    作用

        输出字符串,可输出到终端或输出到文件中。

8.2    基础

        echo [options] [input string]

其中,options:

        -n:不打印换行符,包括默认的尾部换行符。

        -e:开启转义,支持转义字符;

        -E:关闭转义(默认状态)。

8.3    输出字符串到终端

        echo <需要输出的文本>

        echo “<需要输出的文本>”

8.4    输出字符串到文件

(1)    覆盖写入

        echo <需要输出的文本> > file

        echo “<需要输出的文本>” > file

(2)    追加写入

        echo <需要输出的文本> >> file

        echo “<需要输出的文本>” >> file

8.5    输出shell命令结果

(1)    格式较乱的输出

        echo `<shell命令>`

        echo $(shell命令)

(2)    原格式输出

        echo “`<shell命令>`”

        echo “$(shell命令)”

8.6    echo前面加@

        表示不显示当前命令的执行过程到终端中,如果命令为echo hello,则终端事实上会输出echo hello以及hello。但如果前面加上@,则只会输出hello,echo的执行过程不会被输出。

8.7    引用变量

        在echo输出的文本中可以使用$(<变量名>)引用变量,自己在命令或Makefile中定义的变量以及系统变量都能引用。

8.8    开启转义(可以使用颜色)

        echo默认是关闭转义的,要打开就要加-e。

        echo -e <要输出的内容>

其中,在输出的内容中加入颜色相关的代码就可以实现对文字颜色和背景颜色的改变。
颜色相关转义字符的格式:

        \033[字背景颜色;文字颜色m

其中,字背景颜色;在不需要修改的时候可以省略。

        除颜色外还能做出闪烁、下划线等显示效果。具体的颜色代码及其他功能代码见这两位大佬的文章:

【Linux】echo命令用法详解-CSDN博客https://blog.csdn.net/NoBack7/article/details/128621182?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d99920863f1aec04b414c2610ea09ecd%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=d99920863f1aec04b414c2610ea09ecd&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-128621182-null-null.142^v100^pc_search_result_base3&utm_term=echo&spm=1018.2226.3001.4187#1_echo_10echo 命令显示带颜色的字-腾讯云开发者社区-腾讯云https://cloud.tencent.com/developer/article/1635321


9    Linux的软连接和硬链接

9.1    硬链接(Hard Link)

(1)    命令:

        ln [源文件(被链接那个)] [目标文件或目录]

(2)    特性

  • 硬链接直接指向文件内容的物理位置,即文件的inode(索引节点)。
  • 创建硬链接时,实际上是在文件系统中创建一个新的目录项,它指向原始文件的inode,而不是文件的路径或名称。
  • 硬链接不能链接到一个目录上。
  • 硬链接和原始文件共享同一个inode,因此它们具有相同的文件大小、权限、所有权等属性。
  • 硬链接不能跨越文件系统,即不能为不同文件系统中的文件创建硬链接。
  • 删除硬链接不会影响原始文件,只有当所有硬链接都被删除后,文件内容才会被删除。

(3)    辨识:

        要判断一个文件一共有多少个硬链接(包含其自身),可以用list -l命令查看文件详情,第2项的数字即为硬链接的总个数。需要注意的是,回收站的硬链接也会被算进去!

        

(4)    硬链接文件查找

        要是想知道一个文件的所有硬链接都在哪里(文件本身也是一个硬链接),可以先读出来文件的inode,再用inode去找,因为同一文件所有硬链接的inode都是一致的。具体方法如下:

        ls -il                                                // 获取文件的inode值

        find / -inum  <文件inode值>           // 根据inode值,在根目录下寻找所有的

9.2    软链接(Symbolic Link)

(1)    命令:

        ln -s [源文件或目录(被链接那个)] [目标文件或目录]

(2)    特性

  • 软链接类似于Windows中的快捷方式,它包含了对目标文件或目录的路径引用。
  • 创建软链接时,实际上是创建一个新的特殊文件,其中包含了对目标文件或目录的路径。
  • 软链接可以跨越文件系统,可以为不同文件系统中的文件创建软链接。
  • 软链接是一个独立的文件,有自己的inode,并且有自己的权限和所有权。
  • 如果目标文件被移动或删除,软链接会变成“死链接”(Dangling Link),此时软链接仍然存在,但它不再指向一个有效的目标。

(3)    辨识:

  • 要判断一个文件是否为软链接,可以用list -l命令查看文件详情,若文件详情第一位为l即为软链接,其次后面还能看到其指向的文件:

10    查看系统的设备、设备树

10.1    查看当前设备

        查看所有字符设备:cat /proc/devices | grep 'chr'

10.2    查看当前设备树

        ls /sys/firmware/devicetree/base

        或者

        ls /proc/device-tree


11    查看当前运行的所有程序及其PID

        使用命令:ps

http://www.xdnf.cn/news/3517.html

相关文章:

  • 27.电源和地的单点串并联接线隐患及对EMC的影响分析
  • 数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
  • HDLBIT-程序(Procedures)
  • 【原创开发】无印去水印[特殊字符]短视频去水印工具[特殊字符]支持一键批量解析
  • CloudCompare 中的 KDTree详解
  • 设计模式简述(十六)门面模式
  • DeepSeek构建非农预测模型:量化关税滞后效应与非线性经济冲击传导
  • cPanel 的 Let’s Encrypt™ 插件
  • 平台介绍-开放API接口-鉴权
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第五模块·生态征服篇 —— 第二十章 项目实战:从C系统到Java架构的蜕变
  • MATLAB滤波工具箱演示——自定义维度、滤波方法的例程演示与绘图、数据输出
  • 详细说明StandardCopyOption.REPLACE_EXISTING参数的作用和使用方法
  • 虚幻引擎 IK Retargeter 编辑器界面解析
  • 上位机知识篇---PSRAM和RAM
  • 从零开始讲DDR(9)——AXI 接口MIG 使用(2)
  • n8n 键盘快捷键和控制键
  • 基于YOLOV5的目标检测识别
  • Expected SARSA算法详解:python 从零实现
  • 输入输出(python)
  • BBR 之 ProbeRTT 新改
  • DeepSeek-R1模型蒸馏
  • SALOME源码分析: ParaVis
  • C++11新特性_标准库_线程库_std::thread
  • 【Bootstrap V4系列】学习入门教程之 表格(Tables)和画像(Figure)
  • STM32复盘总结——芯片简介
  • 动态规划算法精解(Java实现):从入门到精通
  • Zephyr RTOS架构下的固件升级
  • MySQL数据库上篇
  • CPU:AMD的线程撕裂者(Threadripper)系列
  • 高等数学-第七版-下册 选做记录 习题10-1