目录
01-删除文件命令
01-1-删除某个文件的命令
rm /etc/network/100.txt
01-2-删除某个目录及其下面的文件
rm -rf /path/to/directory
01-03-删除某个目录下的所有文件
rm -r /path/to/directory/*
03-关机命令
PC上的关机命令
sudo shutdown now
IMX6ULL开发板的关机命令
shutdown -h now
在 Linux 系统中,-h 是 shutdown 命令的一个选项,表示 halt(停止)操作。具体来说,它会停止所有正在运行的进程并关闭系统,但不会完全断电(除非硬件支持并配置了断电功能)。

然后再运行下面的命令:
poweroff

这样就OK了~
04-解压命令
tar xf 压缩文件名(带后缀) --auto-compress
如:
tar xf tslib-1.21.tar --auto-compress
解释如下:
x:解压缩(extract)。f:指定文件名。--auto-compress:根据文件扩展名自动选择压缩格式:.gz或.tgz:使用 gzip 解压。.bz2或.tbz2:使用 bzip2 解压。.xz或.txz:使用 xz 解压。- 如果没有任何压缩,则直接解归档,比如tar后缀的就有可能是没有经过任何压缩。
05-挂载网络文件系统
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
06-复制命令cp详解
cp命令的格式和介绍下
cp 命令格式
cp [OPTION] SOURCE DEST
SOURCE:要复制的源文件或目录路径。DEST:目标文件或目录路径。
常用选项
-r或--recursive:递归复制目录及其内容。-a或--archive:归档模式,复制目录及文件时,保留文件的属性(如权限、时间戳等)。-i或--interactive:在覆盖文件之前,提示用户确认。-u或--update:仅当源文件较新或目标文件不存在时,才进行复制。-v或--verbose:显示复制过程,列出复制的文件。-f或--force:强制复制,覆盖目标文件时不会提示。-p:保留文件的原始属性(如时间戳、权限等)。-d:这会将符号链接复制到目标目录,而不是复制符号链接指向的文件。
cp命令看起来简单,但若不注意,容易造成易想不到的问题
这个命令表面上看起来简单, 实际上如果不注意,容易造成易想不到的问题,这里关键是要区分目标路径的最末部分是否存在。
假设modules是一个目录,那么有:
情况 1:目标路径的最末部分存在并为目录
示例:
cp -r /mnt/lib/modules /lib/newlib
/lib/newlib存在,且为目录。- 结果:
modules目录会被复制到/lib/newlib下,路径为/lib/newlib/modules。同样的,如果这里modules是一个文件而不是一个目录,那么它会被复制到目录/lib/newlib下,这样目录/lib/newlib下会有一个名为modules的文件。
情况 2:目标路径的最末部分不存在
示例:
cp -r /mnt/lib/modules /lib/newlib
/lib/newlib不存在。- 结果:
modules目录被复制并重命名为/lib/newlib,同样的,如果这里modules是一个文件而不是一个目录,那么它会被复制到目录/lib/下并重命为newlib。
好的使用cp命令的习惯
对于上面的情况2,如果我本意是要把modules放到目录newlib下,但是目录newlib又不存在,我则要像下面这样书写命令:
cp -r /mnt/lib/modules /lib/newlib/
即在目标路径的最末部分加上一个/,这里如果 /lib/newlib 目录不存在,cp 会自动创建它。
所以一个好的使用cp命令的习惯应该是:假如目标路径的最末部分是一个目录,并且你是想把源目录或文件放到这个目录中,那么建议在目标路径的最后加一个符号/,这样会避免目标目录不存在时出现的意外情况。
一些使用cp命令的例子
复制文件到当前目录
cp /mnt/hello ./
复制文件到指定目录
cp /mnt/hello /etc/
根据上面叙述的良好习惯,目标目录的最后建议加下符号/,否则如果etc目录不存在,则会把文件hello复制到根目录下并重命为名字为etc的文件。如果加上了符号/,即使etc目录不存在,也会自动创建目录etc。
复制目录及目录中所有文件和子目录到指定目录
sudo cp -rfd /home/book/usedlib/tslib-1.21/tmp/lib /usr/local/lib/
注意:这里要加参数r,表示递归复制,f表示强制覆盖,d表示保留符号链接,而不是复制链接指向的文件,这里由于/usr/local/lib是系统目录,所以需要超级用户,所以要加sudo。
目标目录最后建议加上符号/,原因上面已经叙述得很清楚了。
07-移动相关
移动目录到目录
mv /home/book/nfs_rootfs/init /home/book/nfs_rootfs/backup/
08-如何确认一个文件是否存在?
用ls命令即可
ls /etc/hello

09-1-为文件添加执行权限
chmod +x show_pixel
09-2-将某个目录及其子目录的权限改为777
sudo chmod -R 777 /home/book/mybuild/nfs_linux_rootfs
10-驱动程序相关的查看命令
01-查看系统中加载的驱动程序和其主设备号
cat /proc/devices
devices文件中就记录着系统中有哪些驱动程序和其对应的主设备号。

02-查看系统中的设备文件
ls /dev/
03-查看设备文件的详细信息
ls /dev/hello_01 -l

这个命令的输出信息提供了文件 /dev/hello_01 的详细属性。以下是逐项解释:
crw------- 1 root root 245, 0 Jan 1 04:46 /dev/hello_01
输出信息解析:
-
文件类型和权限 (
crw-------):c:表示这是一个字符设备文件(character device),通常用于表示设备驱动程序接口,如终端、串口等。rw-------:文件权限部分,共分为三组,每组三位,表示所有者、所属组和其他用户的权限:rw-(所有者):表示所有者有读(r)和写(w)权限,但无执行(x)权限。---(所属组):表示所属组用户没有任何权限。---(其他用户):表示其他用户没有任何权限。
-
硬链接数 (
1):- 表示有多少个硬链接指向这个文件。对于设备文件来说,通常是
1。
- 表示有多少个硬链接指向这个文件。对于设备文件来说,通常是
-
所有者 (
root):- 这个文件的所有者是用户
root。
- 这个文件的所有者是用户
-
所属组 (
root):- 这个文件的所属组是用户组
root。
- 这个文件的所属组是用户组
-
设备号 (
245, 0):- 设备号分为两个部分,用逗号分隔:
- 主设备号(
245):标识设备的类型或驱动程序。主设备号由内核分配,用于指向设备的驱动程序。 - 次设备号(
0):标识具体的设备实例,用于区分同一驱动程序下的不同设备。
- 主设备号(
- 设备号分为两个部分,用逗号分隔:
-
最后修改时间 (
Jan 1 04:46):- 表示文件的最后修改时间,包括月、日、时间。
- 在这里是 1 月 1 日,04:46。
-
文件名 (
/dev/hello_01):- 表示设备文件的名称和路径。
04-查看系统中的设备类目录
ls /sys/class/
05-查看系统中对应于platform_device结构体的目录
再看下相应的platform_device结构体有没有:
cd /sys/bus/platform/devices/设备树节点中的名称
注意:用下面这条命令是看不到的:
ls /sys/bus/platform/devices/
具体的原因我也不清楚,可能与/sys/bus/platform/devices/大部分都是软链接有关吧。所以用cd 直接进入相关的目录。
运行结果如下:
[root@imx6ull:/sys/bus/platform/devices/swhled]# ls -l /sys/bus/platform/devices/swhled
lrwxrwxrwx 1 root root 0 Jan 1 05:34 /sys/bus/platform/devices/swhled -> ../../../devices/soc0/swhled
从上面的运行结果还可以看出,其绝对路径是../../../devices/soc0/swhled,可以在这个路径下运行下面这条命令进入其真正的目录:
cd ../../../devices/soc0/swhled

可见,其真正的位置在:/sys/devices/soc0。
如果是用设备树节点生成的platform_device结构体,那么其名字来源示例如下:

06-查看系统中对应于platform_driver结构体的目录
platform_device结构体的文件目录中的driver就是指向platform_driver结构体的目录的。

所以承接上面对platform_device结构体对应文件的查看结果,我们运行下面的几条命令得到其真正的路径:
cd /sys/devices/soc0/swhled
ls -l driver
结果如下:
lrwxrwxrwx 1 root root 0 Jan 1 05:45 driver -> ../../../bus/platform/drivers/swh_led_drive
再运行:
cd ../../../bus/platform/drivers/swh_led_driver
查看下路径
pwd
结果如下:
/sys/bus/platform/drivers/swh_led_driver
所以目录/sys/bus/platform/drivers/swh_led_driver便是platform_driver结构体对应的目录。
名字来源示例如下:

11-1-查看系统中加载的模块文件
lsmod

上图中的hello_drv表示系统中加载了一个文件名为hello_drv.ko的模块文件,注意这个模块文件中对应的驱动程序的名字不一定为hello_drv,具体的驱动程序的名字由上面这句代码指定:
rc = alloc_chrdev_region(&devid, 0, 1, "hello");
11-2-加载模块的命令
insmod suwenhao_module.ko
11-3-卸载模块的命令
rmmod suwenhao_module
执行该命令不需要当前目录为模块文件所在目录,并且要把模块文件末尾的文件类型后缀名.ko去掉,因为你是从内核中把某个模块卸载掉嘛。
12-结束进程命令
参考 https://blog.youkuaiyun.com/wenhao_ir/article/details/134763551
在开发板上常用的如下:
先用ps命令查到进程号:
ps
然后用kill命令终止掉进程
kill [进程号]
比如
kill 18635
13-利用source命令在当前shell中加载脚本
详情见下面这篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/145589497
14-软链接相关
为文件创建软链接
如果软链接指向同目录中的文件,看下面这篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/146368695 【搜索“现在我用下面的命令在目录AAA下创建软链接”】
如果软链接指向不同目录中的文件,看下面这篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/146368695 【搜索“比如像下面这样建立一个指向别的目录中文件的软链接”】
查看软链接的目标指向文件的路径
看下面这篇博文:
https://blog.youkuaiyun.com/wenhao_ir/article/details/146368695 【搜索“查看一个软链接指向的两种方法”】
15-查看文件内容(cat命令和xxd命令)
详见 https://blog.youkuaiyun.com/wenhao_ir/article/details/146455604 【搜索“看下内核中有没有相关的设备树节点”】
16-搜索内核日志
https://blog.youkuaiyun.com/wenhao_ir/article/details/146638417
1万+

被折叠的 条评论
为什么被折叠?



