Linux常用命令(删除、关机、解压、复制(详解cp命令)、移动.......)

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

输出信息解析:

  1. 文件类型和权限 (crw-------):

    • c:表示这是一个字符设备文件(character device),通常用于表示设备驱动程序接口,如终端、串口等。
    • rw-------:文件权限部分,共分为三组,每组三位,表示所有者、所属组和其他用户的权限:
      • rw-(所有者):表示所有者有读(r)和写(w)权限,但无执行(x)权限。
      • ---(所属组):表示所属组用户没有任何权限。
      • ---(其他用户):表示其他用户没有任何权限。
  2. 硬链接数 (1):

    • 表示有多少个硬链接指向这个文件。对于设备文件来说,通常是 1
  3. 所有者 (root):

    • 这个文件的所有者是用户 root
  4. 所属组 (root):

    • 这个文件的所属组是用户组 root
  5. 设备号 (245, 0):

    • 设备号分为两个部分,用逗号分隔:
      • 主设备号(245:标识设备的类型或驱动程序。主设备号由内核分配,用于指向设备的驱动程序。
      • 次设备号(0:标识具体的设备实例,用于区分同一驱动程序下的不同设备。
  6. 最后修改时间 (Jan 1 04:46):

    • 表示文件的最后修改时间,包括月、日、时间。
    • 在这里是 1 月 1 日,04:46
  7. 文件名 (/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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊虹AI笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值