【Linux】常用命令总结(updating)

  • 1.date
  • [2.du(disk use)](#2.du(disk use))
  • [3.df(disk free)](#3.df(disk free))
  • 4.find

shell命令可以使用man查看命令文档说明,说明界面中可通过b(backward)向上翻页,f(forward)向下翻页,g(go to)跳到说明首页,G跳到说明尾页。

官方文档:https://www.gnu.org/software/coreutils/manual/html_node/

1.date

处理日期时间相关的命令,主要用到的参数-d,根据-d的参数值获取指定的日期时间,省略该参数获取当前日期时间。

sh 复制代码
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date +%Y%m%d
20240703
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last day' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '-1 day' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '-1 days' +%Y%m%d
20240702
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d '+1 day' +%Y%m%d
20240704
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'sunday' +%Y%m%d
20240707
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last sunday' +%Y%m%d
20240630
map@gzdt-map-poi-yingxiang-offline04 coordinate$ date -d 'last sunday -1 week' +%Y%m%d
20240623

格式化字符串中常用:

%Y:year

%m:month (01...12)

%d:day of month (01...31)

%H:hour (00...23)

%M:minute (00...59)

%S:second (00...60)

2.du(disk use)

查看目录的磁盘占用大小。
du -h --max-depth=1 ./ 或者 du -h -d 1 ./:查看当前路径下各目录及文件的大小,对于目录是递归累计大小的。不指定路径默认为当前所在目录。--max-depth=1 & -d 1 ,一个长参数形式一个短参数形式,都是用来指定控制台输出时只输出顶层目录文件,不递归输出。

3.df(disk free)

也是用来查看磁盘使用情况的,和du不同的是,关注的是磁盘和挂载点目录的使用情况(包括总大小和已使用),而非某个具体目录。

所以df -h 无论在哪个路径执行默认都是输出所有磁盘或磁盘分区及对应挂载点&挂载点目录的使用情况,如果指定目录路径,则会输出该目录路径所在挂载点的磁盘使用情况。

sh 复制代码
map@gzdt-map-poi-yingxiang-offline04 disk1$ df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        126G     0  126G    0% /dev
tmpfs           126G   11M  126G    1% /dev/shm
tmpfs           126G  1.1G  125G    1% /run
tmpfs           126G     0  126G    0% /sys/fs/cgroup
/dev/sda2        19G   11G  6.6G   63% /
/dev/nvme1n1    917G  512M  917G    1% /ssd2
/dev/nvme0n1    917G   26G  892G    3% /ssd1
/dev/sda1       952M  9.9M  942M    2% /boot/efi
/dev/sda6       1.9G  425M  1.4G   24% /has
/dev/sda5       4.6G  765M  3.7G   18% /matrix
/dev/sda3        14G  1.4G   12G   11% /var
/dev/sda4        14G  1.7G   12G   13% /noah
/dev/sda8       3.6T  3.1T  518G   86% /home
/dev/sdc1       3.6T  3.2T  480G   87% /home/disk2
/dev/sdb1       3.6T  1.1T  2.6T   30% /home/disk1
/dev/sdd1       3.6T  3.4T  215G   95% /home/disk3
/dev/sde1       3.6T  3.4T  267G   93% /home/disk4
/dev/sda7       6.5G  4.6G  1.5G   76% /tmp
none            800M  152M  649M   19% /noah/download
none            800M  597M  204M   75% /noah/modules
none            400M  128K  400M    1% /noah/tmp
none            100M     0  100M    0% /noah/bin
tmpfs            26G     0   26G    0% /run/user/1006
tmpfs            26G     0   26G    0% /run/user/0
afs_mount        96P   68P   28P   71% /home/dfs/map_data_aoi
map@gzdt-map-poi-yingxiang-offline04 disk1$ df -h /home/disk1/map/
文件系统        容量  已用  可用 已用% 挂载点
/dev/sdb1       3.6T  1.1T  2.6T   30% /home/disk1

挂载点:可以理解为物理磁盘或物理磁盘的某个分区在文件系统中的入口,通过挂载点入口目录管理物理磁盘或分区中的内容。

4.find

find命令可以用来查找机器上的文件,一种比较常用的查找方式为find / -name "*filename* 2>/dev/null",表示从根路径下查找文件名包含filename的文件,后面的 2>/dev/null 表示忽略权限错误输出。

这个命令特别需要注意下传递给-name参数的值*filename*,加引号和不加引号的区别:

  • 加引号:则*filename*这个字符串会作为整体传递给name参数,由find命令来解释特殊字符*的含义,表示从指定路径下搜索所有包含filename的文件或文件夹,和搜索预期一致。
  • 不加引号:会先对*filename*中特殊含义的字符如*在命令执行路径下(非查找路径) 下进行拓展,查找该路径下是否存在可以匹配*filename*的文件,存在时就将第一个可以匹配的文件名传递给name,此时相当于按照第一个可以匹配的文件名精确查找了。不存在匹配结果时会和不加引号时一样将原字符串作为整体传递给name,此时加不加引号对于结果没影响。

引号测试:

sh 复制代码
map@gzdt-map-poi-yingxiang-offline04 test$ tree dir1
dir1
├── dir2
│   └── file2
└── file1

1 directory, 2 files

# dir1下模糊查找所有包含 file 的文件文件夹
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -name "*file*"
./dir2/file2
./file1

# dir1路径下file1匹配,所以实际查找效果相当于:find ./ -name file1
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -name *file*
./file1

# 当命令执行路径下不存在匹配文件时,效果等同于加引号
map@gzdt-map-poi-yingxiang-offline04 dir1$ ll .. | grep file
map@gzdt-map-poi-yingxiang-offline04 dir1$ cd .. && find ./ -name *file*
./dir1/dir2/file2
./dir1/file1

如果文件名较复杂,也可以通过-regex进行正则查找:

在find种正则查找时是全路径匹配,也就是当查找某个文件时,给出的正则必须要能满足对该文件的全路径进行匹配,而不是仅匹配文件名。

sh 复制代码
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -regex "file.*"
map@gzdt-map-poi-yingxiang-offline04 dir1$ find ./ -regex ".*file.*"
./dir2/file2
./file1
相关推荐
wdfk_prog3 小时前
嵌入式面试真题第 10 题:高优化等级下共享状态可见性、内存模型与系统级同步设计
java·linux·开发语言·面试·职场和发展·架构·c
x-cmd5 小时前
Mac 涨价后,本地 AI 还能千元入门吗?
linux·人工智能·macos·ai·agent·amd·本地ai入门
摇滚侠11 小时前
Linux 零基础教程 09、11、77
linux·运维·服务器
阿宇的技术日志12 小时前
Shell、Terminal、CLI 三者清晰区分
shell·cli·terminal
嵌入式学习和实践14 小时前
嵌入式 Linux 调闭源 SDK 怕崩?用 dlopen 把第三方动态库库“隔离“起来
linux·三方库
小樱花的樱花14 小时前
Linux 多线程编程:互斥锁(Mutex)详解
linux·c语言·开发语言
麦兜和小可的舅舅14 小时前
从原理到实战:Linux 系统性能诊断核心指标全解析及生产系统故障分析复盘
大数据·linux·运维
mounter62515 小时前
质检员与超能引擎的碰撞:KASAN 护航 eBPF JIT 的技术演进与安全抉择
linux·ebpf·linux kernel·kernel·kasan
风123456789~15 小时前
【Linux专栏】history常用命令
linux·运维·服务器
熬夜苦读学习15 小时前
基于websocket的多用户五子棋网页游戏
linux·服务器·网络·websocket·网络协议·游戏·五子棋