linux核心命令

1、查询帮助命令

man ls
help
info

2、文件和目录操作命令

ls            # 仅了列出当前目录可见文件
ls -l         # 列出当前目录可见文件详细信息
ls -hl       #  列出相信信息并以可读大小显示文件大小
ls -al       #  列出所有文件(包含隐藏)的详细信息
ls --human-readable --size -l -S --classify     # 按文件大小排序
du -sh * | sort -h  # 按文件大小排序(同上)

cd            # 进⼊⽤户主⽬录;
cd /         # 进⼊根⽬录
cd ~         # 进⼊⽤户主⽬录;
cd ..          # 返回上级⽬录(若当前⽬录为“/“,则执⾏完后还在“/";".."为上级⽬录的意思);
cd ../..      # 返回上两级⽬录;
cd !$        # 把上个命令的参数作为cd参数使⽤。
cd -        # 切换到上⼀个⼯作⽬录的说明
cd ${OLDPWD}
# 命令会直接切换到上⼀个⼯作⽬录。

cp -r dir desrdir
find
#语法
find(选项)(参数)
#选项
-amin<分钟>:查找在指定时间曾被存取过的⽂件或⽬录,单位以分钟计算;
-atime<24⼩时数>:查找在指定时间曾被存取过的⽂件或⽬录,单位以24⼩时计算;
-cmin<分钟>:查找在指定时间之时被更改过的⽂件或⽬录;
-ctime<24⼩时数>:查找在指定时间之时被更改的⽂件或⽬录,单位以24⼩时计算;
-depth:从指定⽬录下最深层的⼦⽬录开始查找;
-empty:寻找⽂件⼤⼩为0 Byte的⽂件,或⽬录下没有任何⼦⽬录或⽂件的空⽬录;
-exec<执⾏指令>:假设find指令的回传值为True,就执⾏该指令;
-maxdepth<⽬录层级>:设置最⼤⽬录层级;
-mmin<分钟>:查找在指定时间曾被更改过的⽂件或⽬录,单位以分钟计算;
-mtime<24⼩时数>:查找在指定时间曾被更改过的⽂件或⽬录,单位以24⼩时计算;
-perm<权限数值>:查找符合指定的权限数值的⽂件或⽬录;
-size<⽂件⼤⼩>:查找符合指定的⽂件⼤⼩的⽂件;
-type<⽂件类型>:只寻找符合指定的⽂件类型的⽂件;

# 当前⽬录搜索所有⽂件,⽂件内容 包含 “140.206.111.111” 的内容
find . -type f -name "*" | xargs grep "140.206.111.111"
find ./ |xargs egrep "123"

# 查找最后修改时间在 7 天之前的文件,文件名以.log结尾
find ./ -type f -mtime +7 -name "*.log"

# 查找一分钟之内的文件
find ./ -type f -mmin -1 | xargs ls -al

#在/home⽬录下查找以.txt结尾的⽂件名
find /home -name "*.txt"
find . -maxdepth 3 -type f

#查看权限是644⽂件
find ./ -type f -perm 644

# 通过inode号删除文件
ll -I   #查看文件的inode号
find ./ -inum 4859055 | xargs -i rm -rf {}     # xargs的意思就是前边的作为参数   -I的意思就是前边文件作为参数 {}的意思就是-i传的参数
find ./ -inum 4859060 | xargs rm -rf    # 同上都可以删除

UNIX/Linux⽂件系统每个⽂件都有三种时间戳:
访问时间 (-atime/天,-amin/分钟):⽤户最近⼀次访问时间。
修改时间 (-mtime/天,-mmin/分钟):⽂件最后⼀次修改时间。
变化时间 (-ctime/天,-cmin/分钟):⽂件数据元(例如权限等)最后⼀次修改时间。

# 查找7天以前的日志
find . type f -mtime -7 -name "*.log"

# 统计代码行数
seq 100 > test.java    # 生成个100行文件
find ./ -type f -name "*.java" | xargs cat |grep -v ^$|wc -l     # 统计代码行数, ^$用来排除空行

#创建文件夹
mkdir -p dir

#改文件名称
mv old new

#删除
rm file
rm -rf file   #强制删除

#创建文件
touch file
touch test_{1..100}   #批量创建文件

ls > filename   # 把查出来的所有文件名放到filename里边
cat filename |xargs touch    # 创建filename里边所有文件名的文件

file install.log  # 查看文件类型
install.log: UTF-8 Unicode text
file -b install.log <== 不显示⽂件名称
UTF-8 Unicode text
file -i install.log <== 显示MIME类别。
install.log: text/plain; charset=utf-8
file -b -i install.log
text/plain; charset=utf-8

#列出⽬录/private/ 第⼀级⽂件名
tree /private/ -L 1
/private/
├── etc
├── tftpboot
├── tmp
└── var

fstab目录
是硬盘挂载目录
#⽤chattr命令防⽌系统中某个关键⽂件被修改:
chattr +i /etc/fstab    # 加锁防止被修改
chattr -i /etc/fstab    # 解除锁
#让某个⽂件只能往⾥⾯追加内容,不能删除,⼀些⽇志⽂件适⽤于这种操作:
chattr +a /data1/user_act.log

lsattr filename   #用来查看文件件的第⼆扩展⽂件系统属性

#⽣成⼀个⽂件insert.sql的md5值:
md5sum insert.sql
d41d8cd98f00b204e9800998ecf8427e insert.sql
# md5多用于文件校验安全检查

vi命令 是UNIX操作系统和类UNIX操作系统中最通⽤的全屏幕纯⽂本编辑器。Linux中的vi编辑器叫vim,它是vi的
增强版(vi Improved),与vi编辑器完全兼容,⽽且实现了很多增强功能。
vi编辑器⽀持编辑模式和命令模式,编辑模式下可以完成⽂本的编辑功能,命令模式下可以完成对⽂件的操作命
令,要正确使⽤vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后⾃动进⼊命令模式。从
编辑模式切换到命令模式使⽤“esc”键,从命令模式切换到编辑模式使⽤“A”、“a”、“O”、“o”、“I”、“i”键。
vi编辑器提供了丰富的内置命令,有些内置命令使⽤键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输
⼊。常⽤内置命令如下:

Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前⽂件所做的修改后退出vi;
:⾏号:光标跳转到指定⾏的⾏⾸;
:$:光标跳转到最后⼀⾏的⾏⾸;
x或X:删除⼀个字符,x删除光标后的,⽽X删除光标前的;
D:删除从当前光标到光标所在⾏尾的全部字符;
dd:删除光标⾏正⾏内容;
ndd:删除当前⾏及其后n-1⾏;
nyy:将当前⾏及其下n⾏的内容保存到寄存器?中,其中?为⼀个字⺟,n为⼀个数字;
p:粘贴⽂本操作,⽤于将缓存区的内容粘贴到当前光标所在位置的下⽅;
P:粘贴⽂本操作,⽤于将缓存区的内容粘贴到当前光标所在位置的上⽅;
/字符串:⽂本查找操作,⽤于从当前光标所在位置开始向⽂件尾部查找指定字符串的内容,查找的字符串会被加亮显
示;
?字符串:⽂本查找操作,⽤于从当前光标所在位置开始向⽂件头部查找指定字符串的内容,查找的字符串会被加亮显
示;
a,bs/F/T:替换⽂本操作,⽤于在第a⾏到第b⾏之间,将F字符串换成T字符串。其中,“s/”表示进⾏替换操作;
a:在当前字符后添加⽂本;
A:在⾏末添加⽂本;
i:在当前字符前插⼊⽂本;
I:在⾏⾸插⼊⽂本;
o:在当前⾏后⾯插⼊⼀空⾏;
O:在当前⾏前⾯插⼊⼀空⾏;
gg: 跳转到第⼀⾏
Shift+G: 跳转到最后⼀⾏
:wq:在命令模式下,执⾏存盘退出操作;
:w:在命令模式下,执⾏存盘操作;
:w!:在命令模式下,执⾏强制存盘操作;
:q:在命令模式下,执⾏退出vi操作;
:q!:在命令模式下,执⾏强制退出vi操作;
:e⽂件名:在命令模式下,打开并编辑指定名称的⽂件;
:n:在命令模式下,如果同时打开多个⽂件,则继续编辑下⼀个⽂件;
:f:在命令模式下,⽤于显示当前的⽂件名、光标所在⾏的⾏号以及显示⽐例;
:set number:在命令模式下,⽤于在最左端显示⾏号;
:set nonumber:在命令模式下,⽤于在最左端不显示⾏号;
#多⾏⽂本追加
cat > 1.text <<EOF
> 1
> 2
> 3EOF
> EOF

more filename   # 显示文件内容每次显示一屏

cat /etc/passwd | head -n 2   # 查看文件前两行
# tail命令
tail file #(显示⽂件file的最后10⾏)
tail -n +20 file #(显示⽂件file的内容,从第20⾏⾄⽂件末尾)
tail -c 10 file #(显示⽂件file的最后10个字节)
tail -25 mail.log # 显示 mail.log 最后的 25 ⾏
tail -f mail.log # 等同于--follow=descriptor,根据⽂件描述符进⾏追踪,当⽂件改名或被删除,追踪停
⽌
tail -F mail.log # 等同于--follow=name --retry,根据⽂件名进⾏追踪,并保持重试,即该⽂件被删除或
改名后,如果再次创建相同的⽂件名,会继续追踪
cut 命令
#语法
cut(选项)(参数)
#选项
-b:仅显示⾏中指定直接范围的内容;
-c:仅显示⾏中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连⽤,不分割多字节字符;
--complement:补⾜被选择的字节、字符或字段;
--out-delimiter= 字段分隔符:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。

cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98

cut -f 1 test.txt
No
01
02
03

cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68
sort命令

netstat -ant     # 查找所有tcp的网络连接
netstat -antup | egrep ssh  # 查询ssh链接(tcp和udp ) p的意思是以进程的形式

netstat -ant | awk 'NR>1{print $NF}' | sort | uniq -c  | sort -nrk 1  # awk用来取列 $NF取最后一列 NR>1 行号大于1 sort排序 uniq去重 -c统计 -nrk 1 -n以数字排序r是倒序k是第几列 1就是第一列

seq 100 | sort -nr | head -n 10   # 100个数以数字倒叙排序取前10行
uniq   # 显示或忽略重复的⾏
grep egrep  # 强⼤的⽂本搜索⼯具

grep (global search regular expression(RE) and print out the line,全⾯搜索正则表达式并把⾏打印出来)是
⼀种强⼤的⽂本搜索⼯具,它能使⽤正则表达式搜索⽂本,并把匹配的⾏打印出来。⽤于过滤/搜索的特定字符。
可使⽤正则表达式能配合多种命令使⽤,使⽤上⼗分灵活。

-A <显示⾏数> --after-context=<显示⾏数> # 除了显示符合范本样式的那⼀⾏之外,并显示该⾏之后的
内容。
-B<显示⾏数> --before-context=<显示⾏数> # 除了显示符合样式的那⼀⾏之外,并显示该⾏之前的内
容。
-o # 只输出⽂件中匹配到的部分。
-n --line-number # 在显示符合范本样式的那⼀列之前,标示出该列的编号。
-E --extended-regexp # 将范本样式为延伸的普通表示法来使⽤,意味着使⽤能使⽤扩展正则表
达式。
-i --ignore-case # 忽略字符⼤⼩写的差别。

# 正则表达式
^ # 锚定⾏的开始 如:'^grep'匹配所有以grep开头的⾏。
$ # 锚定⾏的结束 如:'grep$' 匹配所有以grep结尾的⾏。
. # 匹配⼀个⾮换⾏符的字符 如:'gr.p'匹配gr后接⼀个任意字符,然后是p。
* # 匹配零个或多个先前字符 如:'*grep'匹配所有⼀个或多个空格后紧跟grep的⾏。
.* # ⼀起⽤代表任意字符。
[] # 匹配⼀个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配⼀个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字⺟开头,紧跟 rep 的⾏
\(..\) # 标记匹配字符,如'\(love\)',love被标记为1。
\< # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的⾏。
\> # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的⾏。
x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的⾏。
x\{m,\} # 重复字符x,⾄少m次,如:'o\{5,\}'匹配⾄少有5个o的⾏。
x\{m,n\} # 重复字符x,⾄少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的⾏。
\w # 匹配⽂字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个⽂字或数字字符,然后
是p。
\W # \w的反置形式,匹配⼀个或多个⾮单词字符,如点号句号等。
\b # 单词锁定符,如: '\bgrep\b'只匹配grep。

egrep -r "^s.*nologin&" /etc/passwd   # 搜索文件以s开头以nologin结尾 .*是匹配所有 -r是递归的方式查找 -l 打印文件名

egrep -r "error"           # 只显示error的内容
egrep -r "\berror\b"     #只显示error的内容精确匹配

egrep -v "error" filename  # 过滤没有eorror内容
egrep "[1-9]" 1.txt    # 过滤1-9

#标记匹配颜⾊ --color=auto 选项:
grep "match_pattern" file_name --color=auto

#使⽤正则表达式 -E 选项:
grep -E "[1-9]+"
# 或
egrep "[1-9]+"

# 只输出⽂件中匹配到的部分 -o 选项:
echo this is a test line | grep -o -E "[a-z]+\."
line
echo this is a test line | egrep -o "[a-z]+\."
line

统计⽂件或者⽂本中包含匹配字符串的⾏数 -c 选项:
grep -c "text" file_name

history #历史命令
history -c  #清空所有列表
history -d # 清空指定行
tr # 将字符进⾏替换压缩和删除
-d或--delete:删除所有属于第⼀字符集的字符;

# 将输⼊字符由⼤写转换为⼩写:
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world

echo "hello 123 world 456" | tr -d '0-9'   # 使用tr删除字符
hello world

vimdiff

# 文件内容对比
vimdiff file1 file2

dos2unix

# 将DOS格式⽂本⽂件转换成Unix格式
dos2unix file
# 文件压缩
tar
 unzip gzip zip
# 信息显示命令
name -a   # 查看系统版本内核
hostname # 查看机器ip
hostname -I # 查看机器网卡ip

ifconfig eth0 | awk 'NR==2{print $2}'    # 取第二行 2个空格后

uptime # 查看系统运行时间
load average # 系统负载字段
stat filename  # 查看文件属性
du -sh ./*  # 查看当前目录下所有文件大小
df -h # 查看磁盘大小
df -I  # 查看inode

find ./ -type f -empty |xargs rm -rf  # 查找空文件并删除

find ./ -type f -size +1b   # 查找大于1b的文件

top  # 实时查看系统运行状态负载 内存 cpu 等
date # 看日期
free -h # 查看系统资源

网络命令

nslookup  # 用于dns解析

dig   # 用于dns解析

strace -e connect,socket nslookup www.baidu.com   # 如果dns解析不了用这个跟踪命令查看状态

tcpdump -I any port 53 -nn   #抓包分析所有流量53端口的 -nn 表示不将地址和端口号转换为名称

traceroute   # 跟踪路由

mtr   # 跟踪路由

tcpdump   #分析网络相关故障或者流量
tcpdump -I any not arp and not port 22 -w dns.capa   # any代表所有网卡接口 not arp过滤arp协议

mtr  # 探测的速率快

nmap   # 用于端扫描

netstat -r    #查看路由
netstat  -lntup     # 查看开放的端口

lsof   # 列出当前系统打开的文件

lsof |egrep nginx    # 查看nginx打开了那些文件

lsof -i:80   # 查看80端口的网络链接信息

lsof -i tcp  # 查看所有tcp链接

lsof  + 文件路径 # 查看谁打开了文件

磁盘文件系统命令

mount   # 挂载的命令
umount   #取消挂载

df -h     # 查看系统磁盘详细使用信息

used=$(df -h |awk '/sys/{print $5}' | sed -r 's#%##g')     # 监控sys目录的使用率 并且把%用空代替
[ $used -gt 50 ] && echo "Waring" || echo "normol"       # 如果超过50%就告警

du -sh ./* # 查看当前目录所有文件大小
du -sh ./* | sort -hr.     #查看当前目录文件大小并且倒叙排序 r是倒序排序 h是以人类看懂的方式

fdisk     #用于磁盘分区 
resize2fs    # 用于刷新磁盘分区

关机和查看系统信息命令

shutdown   #关机   
halt  #关机
init  + 数字
0: 关机
1: 单用户模式(维护模式)
2: 多用户模式(没有网络服务)
3: 多用户模式(有网络服务)
4: 用户自定义(通常未使用)
5: 图形用户界面模式(X11)
6: 重启

系统管理相关命令

uptime   #查看系统负载和运行时间
top        #查看运行时间 cpu 内存 负载 进程等信息
free       #查看内存
vmstat   #查看内存和进程数
lscpu |egrep CPU    #查看cpu

 mpstat -P ALL       #查看每个cpu的使用率

iostat       # 查看系统的读写速率

系统相关的安全命令

chmod    #修改权限的
R 4 W 2 X 1 

chown     #改变文件属主和属组

visudo     # 配置sudo权限

查看用户登录信息

whoami   #查看当前登录用户

w     #查看当前在线用户

last      #查看登录信息和关机或者重启信息

其他

echo # 打印
echo '123'  #单引号所见即所得
echo -e "\n" # -e启用转义字符

rpm    #包管理工具
rpm -qa |egrep nginx     #查找nginx相关的安装包
rpm -e     #删除相关的包
rpm -ivh    #安装rpm包
rpm -ql     #查看安装路径

date     # 查看时间
date +%F     #年月日
date +%F-%T     #年月日,时分秒
date +%F-%T +%s    #时间戳

clear    #清屏
history     #查看历史命令

nohup sh dates.sh &  #后台运行脚本
ps axu |egrep dates     #查看脚本进程

watch -d   #实时查看信息

cat /etc/passwd |awk -F: '{print $1}' | xargs -i mkdir -p {}    # -F: awk默认是以空格作为分隔符,-F:表示以:作为分隔符,取第一列的值 -i参数是把前边第一列取出来的值放到{}中

cat /etc/passwd |awk -F: '{print $1}' | xargs -n 4 | column -t   #-n 4以4列展示  column -t 格式对齐

echo 1+1 | bc    # bc用于计算
expr  #用于计算
time nslookup www.baidu.com     # 用于分析命令执行时间

killall #批量干掉进程
pkill     #批量干掉进程

ps axu |egrep ssh     #查看ssh进程

pstree      #方便查看父进程

crontab -e   # 配置定时任务     * * * * *  # 分   时   日    月    周

内存:top free vmstat mpstat iostat sar
CPU:top vmstat mpstat iostat sar
I/O:vmstat mpstat iostat sar
进程:ipcs ipcrm lsof strace lstrace
负载:uptime

bg:后台运⾏
fg:挂起程序
 jobs:显示后台程序
pgrep:查找匹配条件的进程
strace:跟踪⼀个进程的系统调⽤
vmstat:报告虚拟内存统计信息

 sed -ri "s#2023#2022#g" tmp    #tmp文件中2023替换成2022

cat tmp | sed -r 's#(now:Thu Mar  6)(.*)( CST 2025)#\2#g' | xargs touch    # tmp文件中字段分成3组取中间列并且创建文件

awk -F: '{print $1}' tmp   # awk默认分隔符是空格      -F用来修改分隔符
posted @ 2025-03-06 16:51  basickill  阅读(32)  评论(0)    收藏  举报