00. 目录
01. 命令概述
ls 命令是Linux下最常用的指令之一。ls命令为英文单词 list 的缩写,正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。通过 ls 命令,不仅可以查看 Linux 文件夹包含的文件,而且可以查看文件的权限(包括:目录、文件权限)、查看目录信息等。
02. 命令格式
ls [选项]… [文件]…
03. 常用选项
选项 说明
-a 列出目录下所有文件,包括以 . 开头的隐藏文件
-b 把文件名中不可输出的字符用反斜杠加字符编号(就像 C 语言一样)的形式列出
-c 输出文件的 i 节点的修改时间,并以此排序
-d 将目录像文件一样显示,而不是显示其下的文件
-e 输出时间的全部信息,而不是输出简略信息
-f -U 对输出的文件不排序
-i 输出文件的 i 节点的索引信息
-k 以 k 字节的形式表示文件的大小
-l 列出文件的详细信息
-m 横向输出文件名,并以 , 作为分隔符
-n 用数字 UID、GID 代替名称
-o 显示文件除组信息外的详细信息
-r 对目录反向排序
-s 对每个文件名后输出该文件的大小
-t 以时间排序
-u 以文件上次被访问的时间排序
-v 根据版本进行排序
-x 按列排序,横向排序
-A 显示除 . 和 .. 外的所有文件
-B 不输出以 ~ 结尾的备份文件
-C 按列输出,纵向排序
-G 列出文件的组的信息
-L 列出链接文件名,而不是链接到的文件
-N 不限制文件长度
-Q 把输出的文件名用双引号扩起来
-R 列出所有子目录下的文件
-S 以文件大小排序
-X 以文件的扩展名(最后一个 . 后的字符)排序
-1 一行只输出一个文件
-color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息并退出
--version 在标准输出上显示版本信息并退出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
04. 参考示例
4.1 查看当前目录下内容
[itcast@localhost ~]$ ls
公共 模板 视频 图片 文档 下载 音乐 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
只列出当前目录下文件或者目录,看不到其他详细信息,例如:文件类型、大小、修改日期和时间、权限以及链接等。
4.2 查看当前目录下文件以及其属性信息
使用 -l
选项(小写 L
字符),可以列出文件类型、大小、修改日期和时间、权限以及硬链接等详细信息。
[itcast@localhost ~]$ ls -l
总用量 0
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 公共
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 模板
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 视频
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 图片
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 文档
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 下载
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 音乐
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.3 以易于阅读的格式输出文件大小
将文件大小转变为可阅读的方式,例如:1G、20M、60K 等。(如果要以 K 为单位,可以使用 ls -lk
)
[deng@localhost ~]$ ls -lh
总用量 55M
drwxrwxr-x 7 deng deng 61 1月 22 09:47 bak
drwxrwxr-x 8 deng deng 73 3月 28 11:14 bj34
drwxr-xr-x 4 deng deng 4.0K 2月 25 09:21 instantclient_11_2
-rwxrwxr-x 1 deng deng 55M 1月 22 15:55 oracle_client_11gR2.tar.gz
drwxrwxr-x 3 deng deng 18 1月 22 16:27 oradiag_deng
drwxrwxr-x 7 deng deng 109 7月 10 17:08 projects
-rwxrwxr-x 1 deng deng 2.1K 6月 30 15:14 scott_data.sql
drwxrwxr-x 4 deng deng 28 7月 11 09:47 share
drwxrwxr-x 8 deng deng 73 3月 10 09:16 sz12
drwxrwxr-x 3 deng deng 15 7月 12 11:39 test
-rwxrwxr-x 1 deng deng 599 6月 17 16:22 test.c
-rwxrwxr-x 1 deng deng 1.7K 6月 28 17:16 test.cpp
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
**注意:**也可以使用选项 --si
,和 -h
类似,但是 --si
以 1000 字节为单位,而 -h
以 1024 字节为单位(命令:ls -l --si
)。
4.4 列出目录下所有文件,包括隐藏文件
[itcast@localhost ~]$ ls -a
. .bash_profile .dbus .local 视频 音乐
.. .bashrc .esd_auth .mozilla 图片 桌面
.bash_history .cache .ICEauthority 公共 文档
.bash_logout .config .kshrc 模板 下载
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.5 显示每个文件的inode 号
[itcast@localhost ~]$ ls -i
134524561 公共 134524568 视频 204126153 文档 3153173 音乐
69071508 模板 69071517 图片 3153172 下载 204126152 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
4.6 显示完整的时间
[itcast@localhost ~]$ ls --full-time
总用量 0
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 公共
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 模板
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 视频
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 图片
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 文档
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 下载
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 音乐
drwxr-xr-x 2 itcast itcast 6 2019-07-12 17:34:24.229992803 +0800 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.7 递归显示子目录
[itcast@localhost ~]$ ls -R
.:
公共 模板 视频 图片 文档 下载 音乐 桌面
./公共:
./模板:
./视频:
./图片:
./文档:
./下载:
./音乐:
./桌面:
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4.8 列出文件并标记颜色分类
[itcast@localhost ~]$ ls --color=auto
公共 模板 视频 图片 文档 下载 音乐 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
4.9 按照特殊字符对文件进行分类
[deng@localhost ~]$ ls -F
bak/ oradiag_deng/ sz12/ 公共/ 文档/
bj34/ projects/ test/ 模板/ 下载/
instantclient_11_2/ scott_data.sql* test.c* 视频/ 音乐/
oracle_client_11gR2.tar.gz* share/ test.cpp* 图片/ 桌面/
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.10 按修改时间列出文件和文件夹详细信息
[itcast@localhost ~]$ ls -ltr
总用量 0
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 桌面
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 音乐
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 下载
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 文档
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 图片
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 视频
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 模板
drwxr-xr-x 2 itcast itcast 6 7月 12 17:34 公共
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.11 根据修改时间排序
[deng@localhost ~]$ ls -lt
总用量 56296
drwxrwxr-x 3 deng deng 15 7月 12 11:39 test
drwxrwxr-x 4 deng deng 28 7月 11 09:47 share
drwxrwxr-x 7 deng deng 109 7月 10 17:08 projects
-rwxrwxr-x 1 deng deng 2052 6月 30 15:14 scott_data.sql
-rwxrwxr-x 1 deng deng 1671 6月 28 17:16 test.cpp
-rwxrwxr-x 1 deng deng 599 6月 17 16:22 test.c
drwxrwxr-x 8 deng deng 73 3月 28 11:14 bj34
drwxrwxr-x 8 deng deng 73 3月 10 09:16 sz12
drwxr-xr-x 4 deng deng 4096 2月 25 09:21 instantclient_11_2
drwxr-xr-x. 2 deng deng 6 2月 21 09:27 桌面
drwxrwxr-x 3 deng deng 18 1月 22 16:27 oradiag_deng
-rwxrwxr-x 1 deng deng 57628889 1月 22 15:55 oracle_client_11gR2.tar.gz
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
4.12 显示目录详细信息
[deng@localhost ~]$ ls -ld /etc
drwxr-xr-x. 141 root root 8192 7月 12 20:03 /etc
[deng@localhost ~]$
- 1
- 2
- 3
4.13 打印文件的UID和GID
[itcast@localhost ~]$ ls -n
总用量 0
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 公共
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 模板
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 视频
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 图片
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 文档
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 下载
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 音乐
drwxr-xr-x 2 1002 1003 6 7月 12 17:34 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4.14 所有项目以逗号分隔,并填满整行行宽
[itcast@localhost ~]$ ls -m
公共, 模板, 视频, 图片, 文档, 下载, 音乐, 桌面
[itcast@localhost ~]$
- 1
- 2
- 3
4.15 显示指定文件的详细信息
[deng@localhost ~]$ ls -l test.c
-rwxrwxr-x 1 deng deng 599 6月 17 16:22 test.c
[deng@localhost ~]$
- 1
- 2
- 3
4.16 对目录加上表示符号"/"
[deng@localhost ~]$ ls -p
bak/ oradiag_deng/ sz12/ 公共/ 文档/
bj34/ projects/ test/ 模板/ 下载/
instantclient_11_2/ scott_data.sql test.c 视频/ 音乐/
oracle_client_11gR2.tar.gz share/ test.cpp 图片/ 桌面/
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
4.17 逆序排列
[deng@localhost ~]$ ls -lr
总用量 56296
-rwxrwxr-x 1 deng deng 1671 6月 28 17:16 test.cpp
-rwxrwxr-x 1 deng deng 599 6月 17 16:22 test.c
drwxrwxr-x 3 deng deng 15 7月 12 11:39 test
drwxrwxr-x 8 deng deng 73 3月 10 09:16 sz12
drwxrwxr-x 4 deng deng 28 7月 11 09:47 share
-rwxrwxr-x 1 deng deng 2052 6月 30 15:14 scott_data.sql
drwxrwxr-x 7 deng deng 109 7月 10 17:08 projects
drwxrwxr-x 3 deng deng 18 1月 22 16:27 oradiag_deng
-rwxrwxr-x 1 deng deng 57628889 1月 22 15:55 oracle_client_11gR2.tar.gz
drwxr-xr-x 4 deng deng 4096 2月 25 09:21 instantclient_11_2
drwxrwxr-x 8 deng deng 73 3月 28 11:14 bj34
drwxrwxr-x 7 deng deng 61 1月 22 09:47 bak
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
4.18 根据文件大小排序
[deng@localhost ~]$ ls -lS
总用量 56296
-rwxrwxr-x 1 deng deng 57628889 1月 22 15:55 oracle_client_11gR2.tar.gz
drwxr-xr-x 4 deng deng 4096 2月 25 09:21 instantclient_11_2
-rwxrwxr-x 1 deng deng 2052 6月 30 15:14 scott_data.sql
-rwxrwxr-x 1 deng deng 1671 6月 28 17:16 test.cpp
-rwxrwxr-x 1 deng deng 599 6月 17 16:22 test.c
drwxrwxr-x 7 deng deng 109 7月 10 17:08 projects
drwxrwxr-x 8 deng deng 73 3月 28 11:14 bj34
drwxrwxr-x 8 deng deng 73 3月 10 09:16 sz12
drwxrwxr-x 7 deng deng 61 1月 22 09:47 bak
drwxrwxr-x 4 deng deng 28 7月 11 09:47 share
drwxrwxr-x 3 deng deng 18 1月 22 16:27 oradiag_deng
drwxrwxr-x 3 deng deng 15 7月 12 11:39 test
[deng@localhost ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
05. 附录
LiteOS-A内核
移植概述
移植场景
LiteOS-A当前支持ARMv7-a指令集架构,如果三方芯片为ARMv7-a架构,可以进行内核基础适配;否则还需要先根据芯片的架构来新增内核对该芯片架构的支持,这个工作较为复杂,不在这篇文章范围内。
目录规范
LiteOS-A目录规范参考 LiteOS-A 简介。
基础适配
LiteOS-A提供系统运行所需的系统初始化流程和定制化配置选项。移植过程中,需要关注初始化流程中跟硬件配置相关的函数。
如下图所示,LiteOS-A的初始化流程主要包含以下七步:
-
新增target_config.h文件,并且编写单板内存相关的配置宏DDR_MEM_ADDR和DDR_MEM_SIZE,分别表示内存起始地址和内存的长度,预链接脚本board.ld.S会根据这两个宏进行展开生成链接脚本board.ld。
-
新增定义MMU映射全局数组(g_archMmuInitMapping),指定各个内存段属性及虚实映射关系,内核启动阶段根据该表建立内存映射关系。
-
如果是多核,需要新增定义从核操作函数句柄(struct SmpOps),其中SmpOps->SmpCpuOn函数需要实现唤醒从核的功能;接着定义SmpRegFunc函数,调用LOS_SmpOpsSet接口进行句柄注册;最后通过启动框架完成注册过程,即LOS_MODULE_INIT(SmpRegFunc, LOS_INIT_LEVEL_EARLIEST)。
-
链接阶段根据链接脚本board.ld生成内核镜像。
-
单核CPU镜像运行入口为汇编文件reset_vector_up.S,多核CPU的入口为reset_vector_mp.S,在汇编文件中进行中断向量表初始化、MMU页表初始化等操作。
-
reset_vector.S汇编代码最终会跳转到C语言的main函数,进行硬件时钟、软件定时器、内存和任务等初始化,这个过程会依赖target_config.h的特性宏配置,最后会创建SystemInit任务,并且开启任务调度OsSchedStart()。
-
SystemInit任务在单板代码中实现,其中调用DeviceManagerStart函数进行HDF驱动初始化,这个过程会调用单板代码中的驱动配置文件hdf.hcs以及drivers源码实现
整体启动流程如下图所示:
图1 整体启动流程
从图1中可以看到,内核基础适配需要单板进行适配的代码包含三部分:
- 新增target_config.h文件,其中新增单板硬件配置参数和特性开关的配置参数,具体说明如下:
表1 target_config.h配置项说明
class="table-box">配置项 | 说明 |
---|---|
OS_SYS_CLOCK | 系统cycle的频率 |
DDR_MEM_ADDR | 系统内存的起始地址 |
DDR_MEM_SIZE | 系统内存的大小 |
PERIPH_PMM_BASE | 外设寄存器的起始地址 |
PERIPH_PMM_SIZE | 外设寄存器的长度大小 |
OS_HWI_MIN | 系统中断最小值 |
OS_HWI_MAX | 系统中断最大值 |
NUM_HAL_INTERRUPT_UART0 | UART0中断号 |
UART0_REG_BASE | UART0寄存器基址 |
GIC_BASE_ADDR | GIC中断寄存器基址 |
GICD_OFFSET | GICD相对GIC基址的偏移地址 |
GICC_OFFSET | GICC相对GIC基址的偏移地址 |
评论记录:
回复评论: