linux常用命令 编辑
2026/7/22 16:23:00 网站建设 项目流程

TMOUT=0

HISTSIZE=100

timedatectl

查看系统时间

timedatectl list-timezones

列出可用时区

stat查看文件详情

访问时间

文件修改时间

文件属性修改时间

lsblk显示存储设备信息

vi

注意,vi有个可怕的地方,如果文件很大,会把所有内容加载到内存中,导致服务器瘫痪,因此查看文件,推荐使用less tail more命令。

:set nu 显示行号

:set ignorecase 忽略大小写 :set ic

:set showmatch 设置匹配模式

:set hlsearch 高亮显示搜索结果

/ 向后搜索

?向前搜索

i 当前光标插入

a 当前光标下一个字开始插入

o 插入新的行

ZZ 连按2次Z键 将当前正在编辑的文件保存并退出

u 取消前一次的操作

ctrl+r 恢复撤销的操作

dd 删除光标所在行

ndd 删除光标所在的向下n行

d1G 删除光标所在到第一行的所有内容

dG删除光标所在到最后一行的所有数据

cat

用于查看,合并文件内容

cat file1.txt file2.txt >combined.txt 合并文件

head-10 file

打印文件的开头10行

tail文件名

默认打印文件的最后10行

-f 循环读取

-n 20 显示最后20行

-n +5 从第五行开始显示

查看前100行

cat test.log |head -n 100

查看后100行

cat test.log |tail -n 100

more

显示文件内容,每次显示一屏

按space键,显示下一屏

按enter键,显示下一行

按B键,显示上一屏

+/pattern 从匹配到的内容前两行开始显示

按H键,显示帮助

less

分页显示文件,支持滚动翻页,搜索,标记

与more类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,

-N 显示行号

搜索,在less命令中可以使用/正向搜索,?反向搜索,按n跳转到下一个匹配项

标记,在less命令中可以使用m命令来标记某一行,如m 10,标记之后,可以使用'命令来跳转到标记的行,如' a,a是标记的名称。

ls

-h human readable

-l long list format

-r reverse order

-S sort by size

-t sort by time

-R list subdirectories recursively

常用 ls-lrt

find

find 目录 -选项 动作[-print -exec]

-L 注意:find遇到软连接不会递归进入,加上-L 选下即可(不能跟type混用)

-i 忽略大小

-size 根据文件大小搜索

-atime 访问时间 -7查找7天内访问的文件

-mtime 修改时间 +7查找7天前被修改的

-type 文件类型: l 软连接

-a 且

-o 或

-exec 对匹配的文件执行命令,格式

-exec command {} \; 为每个找到的结果执行命令。

注意{} 和 \ 之间的空格

注意, {} 是占位符,代表find找到的每个文件, \;代表结束-exec命令,告知find命令参数已结束,这里的分号不能少,反斜杠类似于转义字符。

还有一种语法,格式如下,

-exec command {} + 表示对所有结果参数执行命令一次,注意command只执行一次

例 find /tmp -mtime +30 -exec rm -rf {} \;

这种方式文件名有空格等特殊字符也可以处理。

find . -name '*.gz' -exec zgrep -H 'test' {} \;

说明,-H 显示每个匹配的文件名

find . -name '*.gz'|xargs zgrep 'test'

find 的-print0选项

告诉find 命令在输出文件名时不要用传统的换行符作为分隔符,而使用空字符(NULL character \0)来分割

xargs

用于处理大量输入数据并将之传递给其他命令

-n 控制单次参数数量,默认xargs会尽可能多的将参数塞进一次命令调用中,直到达到系统限制,但有时下游命令本身限制了能接受的参数数量。

-I 指定替换字符串,指定参数的占位符,默认占位符是{},默认xargs会将所有参数附加在命令的末尾。但如果我们需要将参数插入到命令的中间位置,就需要-I选项,它允许我们定义一个占位符,(默认占位符是{},但可以是任何字符),xargs就会用标准输入读取的每一项来替换这个占位符。

举例,ls *.bak|xargs -I {} mv {} /tmp/{}

重要提示

当使用-I时,xargs的执行模式会发生变化,它不再进行参数批处理,而是对输入的每一行执行一次命令。这会降低性能,类似于 find -exec

注意:

要删除带有空格的文件名,必须要指定 -I {}

find -mtime -1 |xargs -I {} rm -rf {}

因为xargs它默认使用空格,制表符和换行符来分割输入,所以文件名本身有空格就要特别注意。

还有一个终极解决方案,find 的-print0选项和xargs的-0选项。

find 的-print0选项告诉find 命令在输出文件名时不要用传统的换行符作为分隔符,而使用空字符(NULL character \0)来分割

xargs的-0选项告诉xargs不要使用空格或换行符来解析输入,而是以空字符(\0)作为唯一的分隔符。

grep

-i 忽略大小写

-r 递归目录

-H 显示文件名

-v 反转匹配

-n 显示行号

-F 精确匹配,不使用正则,避免[] . *这些符号被误认为正则表达式

-E 正则表达式

例如 grep -E "word1|word2|word3" file.txt

-A # 显示匹配结果之后的#行
-B # 显示匹配结果之前的#行
-C # 显示匹配结果前#行和后#行

sort

-t 分隔符

-r 反向排序

-u 去重

-k 以哪个字段排序,默认第一个字段,

-n 排序类型数字

举例

sort -k3nr k3按第三个字段倒序排序

uniq经常和sort合用,为了uniq起作用,必须先排序。

cp

-f force

-p 保留原文件的属性(作者,权限,时间)

-r 递归复制

scp

scp 文件名 用户名@目标IP:目标路径

touch

修改指定文件的时间标签,如果文件不存在,则建立一个空的新文件

lu软连接

lu -s /dev/test /app/testdir 创建软连接

tar -zcvf压缩包名 待压缩文件目录

du

du -sh *

du -sh .

-a 显示全部目录和子目录下的每个档案占用的磁盘空间

-h human readable

-s 只显示各档案大小的综合

--exclude= 略过制定文件夹或目录

示例

du -ahx /home |awk '$1 ~/(^.G|..G)/'

说明 ^ 匹配输入字符串的开始位置

. 匹配除换行符之外的任意单个字符

选择,用圆括号将所有选择项括起来,相邻选项用 | 分割

df -h 目录 显示目录对应的文件系统及大小

crontab

格式: min hour day month week command

通配符

* 代表所有可能的值,如果min 是星号,表示满足其他字段条件后每分钟都执行

- 指定一个范围,如5-9 表示5,6,7,8,9

/ 指定时间的间隔频率,如分钟是 */10 ,表示每10分钟执行一次

crontab -l 查看

crontab -e 编辑

sed非交互式编辑器

sed选项

-i 直接修改,不在屏幕上输出

-n 使用安静模式,

sed定位

sed /REGEXP/ 通过//之间的正则来匹配

\cREGEXPc 当匹配的内容力有/时,通过 \c 和 c之间的正则来匹配,c可以是任意字符

操作命令

p 打印匹配行

sed -n '/aaa/p' test.txt

sed -n '1,3p' 文件名 打印指定行

d 删除匹配行

sed -i '/yao/d'

sed -i '/3d' 删除第三行

s 替换匹配内容

sed -i 's/aaa/xxx/g'

c 替换整行

a 在当前行后添加一行

sed -i '/yao/a tired'

i 在当前刚之前插入

sed -i '/yao/i tired'

n 指的是从匹配的下一行开始处理,n 2 从匹配的第二行

sed -i '/aaa/{n;s/bbb/ccc/}' test.txt

sed单引号和双引号的区别

双引号可以使用shell变量,单引号不行

awk

主要用来格式化

是一个强大的文本分析工具,把文件逐行读入,默认以空格切片并处理

awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file

awk '/pattern/ {action}' filename

pattern 表示正则,用//括起来,action 用{} 括起来

省略pattern表示对所有行执行action,省略action表示对符合条件的行执行默认print动作

action 可以有多个语句,以;号隔开

-F 分隔符,默认空格

内置变量

$0 当前记录

$1 ~ $n 当前记录的第n个字段

NF 统计总字段数

/pattern/ 匹配代码块

/pattern/ 纯字符匹配

awk '/mysql/{print $0}' /etc/passwd

!/pattern/ 纯字符不匹配

awk '!/mysql/{print $0}' /etc/passwd //输出不匹配mysql的行

~/pattern/ 字段值匹配

awk -F: '$1~/mail/{print $1}' /etc/passwd //第一个字段$1匹配指定内容才显示

!~/pattern/ 字段值不匹配

awk -F: '$1!~/mail/{print $1}' /etc/passwd //不匹配

cat /etc/passwd |awk -F ':' '{print $1}'

cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'

cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

tr命令

transform 用于字符转换 替换和删除,其功能类似于sed命令,但只能对stdin操作,不能直接对文件操作

tr set1 set2 用set2中的字符替换set1中字符

tr _d set1 删除字符串

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询