【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
相关推荐
XiaoCCCcCCccCcccC12 分钟前
Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb
linux·c语言·gdb
小袁搬码31 分钟前
Ubuntu24.04LTS设置root用户可远程登录
linux·ubuntu24.04
很楠不爱32 分钟前
Linux网络——传输层协议
linux·网络·udp
xxjkkjjkj1 小时前
udp_socket
linux·网络
钰爱&1 小时前
【操作系统】Linux之网络编程(UDP)(头歌作业)
linux·操作系统
最后一个bug1 小时前
如何理解Lua 使用虚拟堆栈
linux·c语言·开发语言·嵌入式硬件·lua
Wang's Blog1 小时前
Linux: 任务的定时与延期
linux·服务器
熬了夜的程序员1 小时前
Linux 下的 AWK 命令详细指南与示例
linux·运维·服务器
Java 第一深情2 小时前
Linux上安装单机版ElasticSearch6.8.1
linux·elasticsearch·全文检索
xiaozhiwise2 小时前
Makefile 之 wordlist
linux