【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
相关推荐
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言