Linux核心命令及案例
2024-11-01 08:35:43 2 举报
AI智能生成
....
作者其他创作
大纲/内容
正则表达式
^
以XXX开头的行
例:grep '^my' a.txt #过滤以my开头的行
$
以XXX结尾的行
例:grep '8$' a.txt #过滤出以数字8结尾的行
^$
空行
例:grep -n '^$' a.txt #过滤出文件中的空行并显示行号
.(点)
任意一个字符
例:grep '.' a.txt #过滤任意一个字符
\
转义字符,脱掉马甲打回原形. 去掉特殊含义
例:grep '\.$' a.txt #过滤出文件中以.结尾的行
*
前一个字符,连续出现(重复)了0次或0次以上
例:grep -o '0*' a.txt #过滤出连续出现的0
.*
所有,任何内容
例:grep '^.*http' a.txt #过滤出文件以任何字符开头一直到http的行
[ ]
[abc] 匹配a或b或c,表示1个整体,相当于是1个字符
例:grep '[8.!]$' a.txt #过滤出以8或.或!结尾的行
[^ ]
[^abc] 过滤出不是a或不是b或不是c的内容. 一个整体相当于是1个字符
例:grep '[^a-z]' a.txt #不匹配文件中的小写字母
|
或者
例:egrep 'oldboy|blog' a.txt #取出文件中包含oldboy或blog的行
+
前一个字符,连续出现1次及1次以上
例:egrep -o '[0-9]+' a.txt #取出文件中连续出现的数字
( )
被括起来的内容是个整体;表示反向引用(后向引用),一般应用在sed中
例:egrep 'oldb[oe]y' a.txt #过滤出oldboy或oldbey的行
{ }
o{n,m} 前一个字符o连续出现至少n次,最多m次
o{n} 前一个字符o连续出现n次
例:egrep '0{3}' a.txt
o{n,m} 前一个字符o连续出现至少n次,最多m次
例:egrep '0{3,4}' a.txt
?
前一个字符出现0次或1次
例:egrep 'go?d' wenhao.txt
文件处理四剑客
find
查找文件
-type
指定类型
例:find /oldboy -type f -name '*.txt' #在/oldboy目录中查找以.txt结尾的文件
-name
指定名称
例:find /etc/ -type f -name 'hostname' #在/etc目录中查找文件名为hostname文件
-size
指定大小
例:find /etc/ -type f -name '*.conf' -size +20k #在/etc下查找文件,找出以.conf结尾,且大小大于20k的文件
-mtime
根据修改时间
例:find /etc/ -mtime +7 #查找/etc 目录下修改时间是7天之前的文件
-iname
忽略文件名字的大小写
例:find /etc/ -type f -iname ".conf" #查找/etc目录下以.conf结尾的文件且不区分大小写
-maxdepth
最大深度
例:find /etc/ -maxdepth 1 -type f -name "*.conf" #找出/etc 目录下,第1层中以.conf结尾的文件
-user
指定用户查找
-group
指定用户组查找
案例
find与ls,rm,sed,cat,touch
例:ls -lh `find -type f -name '*.txt'` #找出当前目录中以.txt结尾的文件并显示详细的信息
例:find /oldboy/find -type f -name '*.txt' |xargs ls -lh #找出/oldboy/find目录下以.txt结尾的文件并显示详细的信息
例:find /oldboy/find -type f -name '*.txt' -exec ls -lh {} \; #找出/oldboy/find目录下以.txt结尾的文件并显示详细信息
find与cp/mv
例:cp $( find /oldboy/find/ -type f -name '*.txt' ) /tmp #找出/oldboy/find目录中以.txt结尾的文件,复制到/tmp目录下
例:find /oldboy/find/ -type f -name '*.txt' |xargs cp {} /tmp/ #找出/oldboy/find目录中以.txt结尾的文件,复制到/tmp目录下
例:find /oldboy/find/ -type f -name '*.txt' -exec cp {} /tmp \; #找出/oldboy/find目录中以.txt结尾的文件,复制到/tmp目录下
find与tar
例:tar zcf /tmp/find-fan.tar.gz `find /oldboy/find/ -type f -name '*.txt'` #找出/oldboy/find目录中以.txt结尾的文件,打包压缩存放在/tmp/find.tar.gz
例:find /oldboy/find/ -type f -name '*.txt' |xargs tar zcf /tmp/find-xargs.tar.gz #找出/oldboy/find目录中以.txt结尾的文件,打包压缩存放在/tmp/find.tar.gz
例:find /oldboy/find/ -type f -name '*.txt' -exec tar zcf /tmp/find-exec.tar.gz {} \; #找出/oldboy/find目录中以.txt结尾的文件,打包压缩存放在/tmp/find.tar.gz
!取反
-a
-o
-exec
对匹配的文件执行该参数所给出的shell命令
grep/egrep
过滤
-n
行号
例:grep -n 'root' /etc/passwd #从passwd文件中过滤出root并显示行号
-v
排除,取反
例:grep -v 'bash' /etc/passwd/ #排除/etc/passwd文件中包含bash的行
-i
忽略大小写
例:grep -i 'a' a.txt #过滤出a.txt文件中的a,且不区分大小写
-A
显示grep过滤的内容及下面几行内容
-B
显示grep过滤的内容及上面几行内容
-C
显示grep过滤的内容及下面几行内容 上面几行内容
-E
extend 扩展的grep,即egrep
例:sed -n '/102/,/105/p' sed.txt #过滤出sed.txt文件中包含101的行到包含105的行. (范围)
sed
字符流编辑器
-p
取行
例: sed -n '2p' sed.txt #取出sed.txt文件的第2行
-n
例:sed -n '/oldboy/p' sed.txt #查找sed.txt文件中包含oldboy的行(类似于grep)
例:sed -rn '/oldboy|lidao/p' sed.txt #过滤出文件中包含oldboy或lidao的行
例:sed -n '2,5p' sed.txt #过滤出sed.txt文件从第2行到第5行的内容. (范围)
d
删除
例:sed '3d' sed.txt #删除文件的第3行
例:sed -r '/oldboy|lidao/d' sed.txt #删除oldboy或lidao的行
例:sed -r '/^$|^#/d' sshd_config #去掉/etc/ssh/sshd.config文件中的空行或注释行
s###g
替换
例:sed 's#oldboy#oldgir#g' sed.txt #把sed.txt文件中oldboy替换为oldgirl
分组(后向引用,反向引用)
例: ip a s ens33 |sed -n '3p' | sed -r 's#^.*et (.*)/.*$#\1#g' #通过反向引用取出ens33 网卡的IP地址
awk
取行或取列
-F
指定分隔符
例:awk -F: 'NR==1{print $1,$3}' /etc/passwd #以":"为分隔符,取出/etc/passwd 第1行的第1列和第3列
$0
整行
$1 $2 $3
第1列,第2列,第3列
NR
行号
例:awk 'NR>=2 && NR<=5' /etc/passwd #取出/etc/passwd文件第2行到第5行内容
$NF
最后一列
例:awk -F':' '{print $1,$3,$NF}' /etc/passwd #以":"为分隔符,取出/etc/passwd 第1列,第3列和最后一列
$(NF-1)
倒数第二列
'NR==1'
取出第一行
{print $1}
取出第一列
END{ }
END{}内容会在awk读取文件之后执行
案例
例: ll -h | awk '{print $1,$3}' #取出ls -lh命令中的第1列和第3列
例:awk '{print NR,$0}' /etc/passwd #取出/etc/passwd每一行内容,加上行号
例:awk -F':' '{print $1,$3}' /etc/passwd |column -t #以":"为分隔符,取出/etc/passwd 第1列和第3列
例:awk -F 'inet |/24' '{print $2}' ip.txt #取出ip.txt文件中ip(10.0.0.200)地址
例: awk -F '[ /]+' '{print $3}' ip.txt #取出ip.txt文件中ip(10.0.0.200)地址
例:awk -F: '$3~/[0-3]$/ {print $1,$3} ' passwd #以":"为分隔符,过滤出passwd中第3列以0到3结尾的,显示第1列和第3列内容
例:awk -F'=' 'NR==16 {print $2}' /etc/sysconfig/network-scripts/ifcfg-ens33 #以"="为分隔符,过滤出ens33网卡配置文件中的ip地址
例:awk '{i++} END{print i}' /etc/passwd #统计/etc/passwd的行数
例:awk '{sum=sum+$1} END{print sum}' liu.log #统计liu.log中一共用了多少流量
案例素材02:cat >/opt/liu.log<<EOF
>150.5
>10
>100
>200
>300
EOF
分支主题
系统管理命令
lscpu
显示CPU信息
hostname
显示或临时设置主机名
-I(大写的i)
显示主机所有网卡IP
hostnamectl
修改或查看主机名
例:hostnamectl set-hostname oldboy #修改主机名为oldboy
systemctl
管理Linux系统服务
例:systemctl stop/start/restart/status network
#停止/启动/重启/查看 网卡服务
systemctl halt
关机
systemctl poweroff
关机
systemctl reboot
重启
systemctl list-units
查看所有服务开机自启动
systemctl list-unit-files
查看所有服务运行情况
systemctl enable/disable crond
开机自启动/不启动
rpm
安装
rpm -ivh
安装
例:rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
rpm -Uvh
升级
例:rpm -Uvh zabbix-agent-5.0.21-1.el7.x86_64.rpm
查询
rpm -qa
查询系统中所有安装的软件包
例:rpm -qa |grep tree
rpm -ql
显示包中的所有文件
例:rpm -ql tree
删除
rpm -e
例:rpm -e tree
rpm --nodeps忽略依赖
例: rpm -ivh --nodeps zabbix-agent-6.0.0-1.el7.x86_64.rpm
yum
自动化RPM包管理工具
自己下载rpm包,让yum解决依赖
yum localinstall
安装
install
例:yum install -y tree wget lrzsz vim......
查询
查询命令属于的软件包
例:yum list | grep xxx
例:yum provides xxx
例:yum search all xxx
升级
例:yum update xxx
例:yum upgrade xxx
删除软件包以及依赖包
例:yum remove xxx极其危险
清理缓存
yum clean all
创建缓存
yum makecache
yum命令配置文件
/etc/yum.conf
yum源配置文件
/etc/yum.repo.d/xxxx.repo
安装常用工具
yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect
apt
安装包管理工具
dpkg
用来安装、创建和管理软件包的工具
bc
命令行科学计算器
uname
显示系统内核信息
-r
内核版本
-n
查看主机名
-a
查看所有
磁盘管理命令
df
查看磁盘使用情况
-h
以人类可读形式展示大小
-i
显示inode 使用情况
-T
显示文件系统的类型
du
显示目录所占空间
-sh
查看指定文件或目录的总大小,以"K"、"M"、或"G"等形式显示
-s
显示目录总大小
-h
以 Kb、Mb 、Gb 等易读的单位显示大小
lsblk
显示磁盘信息
blkid
显示磁盘分区信息
iotop
实时查看磁盘性能情况
-o
只显示进行读写的进程
1、磁盘分区工具
fdisk
mbr分区工具,适用于2TB以下磁盘分区
fdisk /dev/sdb 进入硬盘sdb分区模式
p
#当前磁盘分区情况
n
#创建磁盘分区
w
#保存退出
q
#退出不保存
d
#删除之前分区
parted
gpt分区工具,常用于2TB以上磁盘分区
parted /dev/sdb 进入硬盘sdb分区模式
parted -l
#01 查看所有硬盘信息
p
#02 进入磁盘中
mktable gpt
#03 创建磁盘分区表
mkpart primary 0 10
#04 创建磁盘分区
rm 6
#05 删除分区
q (quit)
#06 退出
gdisk
gpt分区工具,常用于2TB以上磁盘分区(与fdisk操作一致)
mkfs
创建文件系统(格式化)
-t xfs
例: mkfs.xfs /dev/sdb1 #格式化/dev/sdb1盘
mount
挂载
例:mount /dev/sdb1 /mnt #挂载sdb1盘到mnt目录中
-t xfs
指定文件系统类型
永久挂载
方法1:/etc/rc.local
# 第1次使用,需要给 /etc/rc.d/rc.local 加上执行权限 :chmod +x /etc/rc.d/rc.local
方法2:修改/etc/fstab
umount
卸载
-lf
强制卸载
例:umount /mnt #卸载(分区)挂载点
dd
创建块(创建指定大小的文件)
例:dd if=/dev/zero of=/tmp/500mb bs=1M count=500
fio
测试磁盘各种性能指标
stress
对系统进行压力测试
swap相关
mkswap
转换为swap分区格式,相当于mkfs格式化
swapon
启用交换分区,相当于挂载
-s
显示当前swap组成
加载swap
swapoff
关闭swap
案例
案例1 通过dd创建swap步骤:
#01 dd创建500mb文件
dd if=/dev/zero of=/tmp/500mb bs=1M count=500
#02 500mb文件成为swap (创建文件系统)
mkswap /tmp/500mb
#03 激活swap(让他加入到系统中) (挂载)
01)chmod 600 /tmp/500mb
02)swapon /tmp/500mb
03)free -h
#04 永久生效
01) 方法01 /etc/rc.local
02) 方法02 /etc/fstab
#05 关闭swap
swapoff /tmp/500m
案例2 通过创建磁盘分区创建swap步骤:
#01 fdisk/parted 进行分区
#02 mkswap /dev/sdb1
#03 free -h
04# swapon /dev/sdb1
05# free -h
06# swapon -s
进程管理命令
ps
查看进程
-ef
简易查看进程,过滤进程的命令
例:ps -ef |grep crond #检查系统进程状态与信息(crond)
aux
显示所有进程的用户信息
例:ps aux |grep Z #检查僵尸进程
axo
显示指定相关信息
例:ps -xo user,pid,%cpu,%mem,command
--no-header
例: ps --no-heading -xo user,pid,%cpu,%mem,command |grep crond # 取出某一个服务(crond)的进程信息(pid,%cpu,%mem,command)
--sort 内容
例:ps aux |sort -rnk4 |head -5 #取出所有进程中内存使用率最高的前5
top
实时显示系统中各个进程的资源占用状况
-d
刷新时间 例: top -d 3
-p
查看指定pid信息
例:top -p 1046 #查看1046进程信息
-b
批量处理模式,top显示结果输出到文件
例:top -b -n1 -p xxx(pid号)
-n
批量处理模式,显示几次
-H
显示线程信息
例: top -Hp xxx(pid号)
快捷键
1
显示每个CPU核心数详情
P
CPU使用率从高到底排序
M
内存使用率从高到底排序
q
退出
htop
一个互动的进程查看器,可以动态观察系统进程状况
pstree
显示进程状态树
-p
显示进程及pid信息
pgrep
查找匹配条件的进程pid
例:ps -ef | grep xxx
pidof
查询进程的pid
kill
终止进程
-1
终端挂断
-9
强制终止
-15
终止
killall
通过进程名终止进程
pkill
通过进程名终止进程
runlevel
输出当前运行级别(Centos)
init
初始化Linux进程,切换运行级别
service
管理系统服务
推荐使用:systemctl
stat大礼包
mpstat
显示各个可用CPU的状态
iostat
查看磁盘性能指标
pidstat
pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况
vmstat
显示虚拟内存状态
free
显示内存的使用情况
-m
以MB为单位显示内存使用情况
cron定时任务
定时任务配置文件:/var/spool/cron/
-l
查看定时任务列表
例:crontab -l
-e
编辑定时任务列表
例:crontab -e
-u user
查看特定用户user的定时任务
定时任务书写中特殊字符含义
*
*号,表示任意时间都,实际就是“每”的意思
-
减号,表示分隔符,表示一个时间范围,区间段
,
逗号,表示分隔时段的意思
/n
n代表数字,即"每隔n单位时间"
* * * * *
分 时 日 月 周
定向到空(&>/dev/null)或追加到文件
网络管理
ip
查看网络信息
ip a (ip address)
查看ip地址
ip r (ip route)
查看系统路由表
ip a(address) s(show) eth0
查看某一个网卡信息
ifconfig
例:yum install -y net-tools
ping
测试主机之间网络连通性
tracert/traceroute
路由追踪命令
例:tracert -d www.baidu.com
命令访问网站
wget
命令行下载工具
-O
大写字母O,下载到指定目录的指定文件中.(文件不存在则创建)
配置yum源(阿里源)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl
telnet
检查端口
telnet ip port
例:telnet 10.0.0.200 12306 #windows通过本地shell 连接12306端口
nc
-k
保持用户断开后还继续监听
例:nc -kl 12306 #创建12306端口
-l
指定监听某个端口
-u
使用udp协议
例:nc -lu 12306 #创建 udp 12306端口
nc ip port
nmap
网络扫描命令
-p
指定端口
例:nmap -p22 10.0.0.200 #扫描IP地址10.0.0.200的22端口
使用频率最高的扫描选项:nmap -sS 10.0.0.0/24
lsof
显示所有被打开的文件
例:lsof | grep delete
检查未被彻底删除的文件
-i
检查端口是否开启
例:lsof -i:22
-n
不要把ip解析域名
例:lsof -ni :22
-P
不要把端口解析服务名
例:lsof -nPi :22
ss/netstat
查看网络状态
ss -lntup
端口
例:ss -lntup |grep 12306 #过滤出12306端口
ss -ant
连接
例:netstat -ant #检查tcp连接状态
DNS解析
dig
查找DNS解析过程
例:dig +trace
host
查询DNS的命令
例:host jd.com #解析京东DNS
nslookup
交互式查询互联网DNS服务器的命令
route
显示和设置Linux系统的网关、路由
例:route -n #查询当前系统配置的路由信息
例:ip route #查询当前系统配置的网关信息
-host主机路由 -net网络路由 默认网关default gw
add 添加
del 删除
-n 查看网关 等同netstat -rn或ip route
流量带宽
iftop
监控网卡的实时流量
例:iftop -nNP -i eth0 #显示端口号,不要把ip解析为域名,不要把端口解析为服务, 监视指定网卡eth0
-n
不要把ip解析域名
-N
不要把端口解析服务名
-P
显示端口
-i
指定网卡
nethogs快捷键
用来按进程或程序实时统计网络带宽使用率
-a
监视所有网卡
m
修改单位
r
按流量排序
s
按发送流量排序
q
退出命令提示符
nmcli #管理NetworkManager命令工具
查看网卡信息
# nmcli connection
# nmcli con show
显示具体的网络接口信息
# nmcli connection show eth0
# nmcli c show eth0
显示所有设配状态 # nmcli device status
网络接口停用:# nmcli c down eth0
网络接口启用:# nmcli c up eth0
ifup
启动网卡
例:ifup eth0 #启动eth0网卡设备
ifdown
关闭网卡
例:ifdown eth0 #停止eth0网卡设备
防火墙命令
查看防火墙状态命令
systemctl status firewalld
firewall-cmd --state
systemctl stop firewalld
临时性关闭(重启后失效)
systemctl disable firewalld
永久性关闭(重启后生效)
systemctl start firewalld
临时性开启(重启后失效)
systemctl enable firewalld
永久性开启(重启后生效)
配置firewalld-cmd
firewall-cmd --state
显示状态
firewall-cmd --zone=public --list-ports
查看所有打开的端口
firewall-cmd --reload
更新防火墙规则
firewall-cmd --version
查看版本
firewall-cmd --panic-on
拒绝所有包
案例
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
安全模块SELinux
getenforce
查看SELinux安全模块状态
关闭SELinux
临时关闭(不用重启系统,重启后失效)
setenforce 0
临时开启(不用重启系统,重启后失效)
setenforce 1
永久关闭SELinux(必须重启系统才能生效)
改配置文件:vi /etc/selinux/config 修改:SELINUX=disabled
重启,关机命令
shutdown
用于重启或关闭
-h
关机 shutdown -h now
-r
重启 shutdown -r now
-c
取消 shutdown -c
halt
关机
poweroff
关闭电源
reboot
重启
帮助查询命令
man
命令--help
help
info
history
历史命令查询
-c
清除所有
-d
清除指定数字命令
cmd.oldboyedu.com
Linux快捷键
ctrl+l
clear清屏,清除屏幕的内容
ctrl+a
把光标移动到行首
ctrl+e
end把光标移动到行尾
ctrl+u
把光标到行首的内容剪切(删除)
ctrl+c
cancel取消当前操作
ctrl+y
粘贴
ctrl+k
把光标到行尾的内容剪切(删除)
ctrl+s
锁定屏幕
ctrl+q
解锁
ctrl+z
暂停当前进程
bg
把任务放入后台
例:# 运行sleep命令,然后按下ctrl+z。
sleep 60
^Z
[1]+ Stopped sleep 60
# 使用bg命令使得作业在后台运行。
bg %1
# 返回信息:
[1]+ sleep 60 &
fg
把任务拿回前台
例:# 运行sleep命令,然后按下ctrl+z。
sleep 60
^Z
[1]+ Stopped sleep 60
# 使用fg命令使得作业在前台运行。
fg %1
# 返回信息:
sleep 60
jobs
查看当前队列,含ID
-l
在作业信息中额外的列出PID
-p
只列出PID
-s
只输出处于停止状态的作业
-r
只输出处于运行状态的作业
文件和目录操作
cd
进入指定目录中
cd ~
回到家目录,~当前用户目录
cd
回到家目录
cd ..
进入当前目录的上级目录
cd .
进入当前目录(一般不用,一般.(点)与复制移动联合使用)
cd -
进入上一次所在目录
mkdir
创建目录
-p
递归创建目录(创建多级目录)
例:mkdir -p /a/b/c/d/e #创建多级目录
pwd
显示当前所在目录
ls
查看/显示目录内容
例:ls -lrth #以人类可读形式,按照时间顺序逆序排列当前目录下的文件
-l
long长格式(显示详细信息)
-h
human-readable 人类可读形式展示大小
一般与-l一起使用
-a
所有文件,包含隐藏文件
-d
显示目录本身信息,而不是显示目录内容(把目录当文件看待)
例:ls -ld /opt #查看opt目录详细信息,不看内容
-i
显示inode号码
-t
time按照文件修改时间排序
-r
逆序排序,一般与-lrt一起使用
-F
给每种类型的文件加上标记:目录/
touch
创建文件(修改文件的时间戳)
例:touch oldboy.txt #创建oldboy.txt文件
例:touch oldboy{1..10}.txt #创建oldboy1.txt-oldboy10.txt文件
cp
复制
例:cp -a /etc/passwd /opt/passwd.txt #复制并修改名称,保持属性不变
-r
recursive递归复制,复制目录及目录内容
-p
复制的时候属性不变
-a
相当于-r -p -d -pdr
-d
与复制符号连接(软连接,快捷方式)有关
mv
移动文件或改名
例:mv /etc/passwd /opt/oldboy.txt #移动并修改passwd文件名称为oldboy.txt
echo
输出信息到屏幕
配合{}一起使用
例:echo {1..10}或echo {a..z} #输出1-10数字到屏幕或者输出a-z到屏幕
直接输出信息
例:echo oldboy #输出oldboy到屏幕
rm
删除文件或目录
例:rm -rf /oldboy/* #强制删除oldboy目录下所有文件不提示
-f
强制删除不提示
-r
递归删除目录
head
显示文件头几行,默认显示10行
-n数字
显示前多少行
例:head -n 5 /etc/passwd #显示passwd文件的前5行
tail
显示文件后几行,默认显示10行
-n数字
显示后多少行
例:tail -n 5 /etc/passwd #显示passwd文件的后5行
-f
显示文件的实时更新内容
例:tail -f /var/log/messages #实时查看日志文件messages的内容变化
tailf
跟踪日志文件
less
按页查看文件内容
G
到达最后一行
g(gg vi/vim)
g到达文件第1行
f或空格
向下翻页
b
向上翻页
q
退出
more
按页查看文件内容,到最后一行会退出(不支持快捷键)
wc
统计文件行数、单词数或字节数
-l
显示行数(小写字母L)
例:ls -l / | wc -l #统计根下第1级目录跟文件数量
word count/cal
which
查询命令的绝对路径
例:which tail tailf #查询tail,tailf命令的绝对路径
whereis
查询命令的绝对路径,命令相关文件
例:whereis tail tailf #查询tail,tailf命令的绝对路径,命令相关文件
diff
比较两个文件的不同
例:diff /etc/sysconfig/network-scripts/ifcfg-ens33 /opt/ifcfg-ens33
vimdiff
查询两个文件的区别(可视化比较工具)
例:vimdiff /etc/sysconfig/network-scripts/ifcfg-ens33 /opt/ifcfg-ens33
sort
对内容进行排序
-n
按照数字进行排序
例:sort -n shun.txt #对shun.txt文件中的数字进行排序
-r
逆序排序
-k数字
对某列进行排序
例:sort -rnk2 shun.txt #对shun.txt文件中第2列数字进行逆序排序
-t
指定分隔符
例:sort -t'.' -rn -k3,3 -k4,4 /opt/ip.txt
#对ip.txt文件中以.为分隔符按照第3列,然后第4列进行从小到大排序
uniq
与相邻的行进行合并
一般与sort配合使用
例: sort shun.txt | uniq -c #统计文件shun.txt中,每个名字出现的次数(去重并显示次数)
-c
去重并统计次数
例:uniq -c shun.txt #统计文件shun.txt文件中,每个名字出现的次数(去重并显示次数)
column
把字符进行对齐显示
-t
用tab键对齐
例:sort -rnk4 shun.txt |column -t #对shun.txt文件第4列的数字进行逆序排序并对齐
date
+
以。。。形式显示时间日期
%F
年-月-日
例:date +%F 显示完整日期
%Y-%m-%d
%y年后两位
220101
%T %H:%M:%S
例:date +%T 显示时分秒
%W
一年中的第几周,周一作为一周的起始(00..53)
%w
一周中的一天(0..6),0代表星期天
-d
根据描述显示指定日期时间
例:date -d '-2day' +%F #显示2天前的日期,按照年-月-日
-s
修改时间
例:date -s '20231111 11:00:00' #修改系统时间为2021年11月11日11点
ntpdate
自动同步时间
互联网时间服务器
ntp1.aliyun.com
例:ntpdate ntp1.aliyun.com 自动同步阿里的时间服务器
time.nist.gov
time.windows.com
seq
生产数字序列
-w
等宽数字位数相等,不足补零
例:seq -w 10 #生成的数字01-10, 位数保持一致
dos2unix
把windows格式的文件转换为linux格式
cat
查看文件内容
-n
显示行号
例:cat -n /etc/passwd #显示passwd文件行号及内容
xargs
将标准输入转换成命令行参数
分组
-n 数字
分为几组
chattr
改变文件的扩展属性
+/-a
只能追加,不能删除
+/-i
不能修改、追加,不能删除
lsattr
查看文件扩展属性
例:lsattr /etc/passwd #查看/etc/passwd文件是否有特殊权限
tr
替换或删除字符
1对1替换
例:echo "HELLO WORLD" | tr 'A-Z' 'a-z' #将输入字符由大写转换为小写
-c
取反
例:tr -cd 'a-z' </dev/urandom | head -c 8
-d
删除
例:echo "hello 123 world 456" | tr -d '0-9' #删除字符数字0-9并输出到屏幕
tee
多重定向
例:ps -ef |tee info_a.log # 将进程信息通过管道输出到标准输出(终端)并覆盖写入到info_a.log文件中
-a
追加到文件中
例:ps -ef |tee -a info_a.log # 将进程信息通过管道输出到标准输出(终端)并追加写入到info_a.log文件中
alias
别名
永久生效放文件:/etc/profile 里面生效
命令行配置: alias 别名='命令或脚本'
1、alias rm='echo 请不要使用rm命令' #配置alias别名
2、source /etc/profile #断开连接即生效
unalias
取消系统别名
tree
以树形结构显示目录下的内容
-L
level 最多显示几层目录
-d
只显示目录
vim:编辑器
yy
复制当前行
p
粘贴
dd
剪切当前行,2dd:删除2行
u
撤销
:set nu
显示行号
:set nonu
取消显示行号
:noh
临时取消高亮显示
i
插入
o
在当前行下面插入一个空行并进入编辑模式
O
在当前行上面插入一个空行并进入编辑模式
n
继续向上搜索
N
继续向下搜索
$
把光标移动到行尾
0或者^
把光标移动到开头
G或者$
把光标移动到最后一行
100gg或100
把光标移动到指定行
C(大写字母C)
删除光标所在位置到行尾的内容并进入编辑模式
A
快捷到达行尾并进入编辑模式
用户管理及用户信息查询
useradd
创建用户
-u
指定用户id
例:useradd -u 1111 lidao007 #添加lidao007用户,指定uid为1111
-s
指定用户登入后所使用的shell
例:useradd -s /sbin/nologin -M mysql #添加虚拟用户mysql(命令解释器/sbin/nologin 不创建家目录)
-g
指定用户对应的用户组
-r
相当于-s/sbin/nologin -M
-G
定义此用户为多个不同组的成员
例:useradd -G root,lidao oldboy #创建用户oldboy的时候,让用户属于多个用户组(root组,lidao组)
-c
添加备注文字
例:useradd -c 'this is lidao,oldboy linux teacher' lidao996 #创建lidao996用户,并添加用户说明
-M
不要创建用户的家目录
usermod
修改用户信息
-G
例:usermod -G '' oldboy #修改oldboy用户的组为初始组
例:usermod -G 'root' oldboy #添加oldboy用户到root组中
userdel
删除用户
-r
删除用户的同时,删除用户的家目录
例:userdel -r oldboy #删除oldboy用户及相关文件,家目录,邮箱等
groupadd
创建新的用户组
-g
指定的gid
例:如果直接添加的时候uid,gid不一致。那么需要先添加用户组,然后创建用户。
1、groupadd -g 888 mysqlv2 #-g指定gid
2、useradd -u 888 -g mysqlv2 mysqlv2 #-g指定用户组
groupdel
删除用户组
例:groupdel oldboy #删除oldboy组
passwd
修改用户密码
--stdin非交互式设置密码
例:echo '123456' | passwd --stdin oldboy #非交互式设置oldboy账户密码为:123456
chpasswd
批量修改用户密码
#先创建用户密码对应文件,格式为username:password,如abc:abc123,必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令: chpasswd < user.txt
mkpasswd
生成随机密码(mkpasswd命令使用前需要安装expect包)
-l 20
例:mkpasswd -l 20 #生成随机密码同时制定长度为20
su
切换用户
-
例:su - test #变更帐号为test并改变工作目录至test的家目录
visudo
编辑/etc/sudoers文件的专属命令
例:oldboy ALL=(ALL) ALL #授予oldboy用户所有命令
例:oldboy ALL=(ALL) /bin/rm, /bin/vi #授予oldboy以root权限运行rm和vi权限
例:oldboy ALL=(ALL) NOPASSWD: ALL #授予oldboy用户所有命令并且不需要输入密码
sudo
以另外一个用户身份(默认是root用户)执行事先在sudoers文件允许的命令
sudo -l
查看获得的权限
id
查看用户身份(uid,gid,用户组信息)
w
谁登录了,在干什么(替代who)
who
显示目前登录系统的用户信息
users
显示当前登录系统的所有用户的用户列表
whoami
查看当前登录用户,相当于id -un命令
last
显示登录过的用户信息列表
lastlog
查看最近登录过的用户报告
文件属性与用户管理
file
查看文件类型
例:file a.txt #查看a.txt文件类型
stat
用户查看文件属性信息
例:stat a.txt #查看a.txt文件属性信息
ln
创建软硬连接
软连接通过ln -s创建,硬链接是通过ln命令创建
-s
创建软连接
例:ln -s /app/nginx-1.20.2/ /app/nginx #现在nginx软件是安装在/app/nginx-1.20.2目录中, 创建软连接 /app/nginx 指向/app/nginx-1.20.2
chown
改变文件或目录的用户和用户组
-R
递归处理,将指定目录下的所有文件及子目录一并处理
例:chown oldboy.oldboy oldboy.txt #修改oldboy.txt的用户所有者和用户所属组为oldboy
chmod
改变文件或目录权限
例:数字权限和字符权限 r 用4表示
w 用2表示
x 用1表示
- 用0表示
例:chmod 755 oldboy.txt #把oldboy.txt文件权限修改为777
-R
对目录以及目录下的文件递归执行更改权限操作
u
拥有者权限
例:chmod u+r oldboy.txt #oldboy.txt增加读的权限
g
所属组权限
例:chmod g+w oldboy.txt #oldboy.txt增加写的权限
o
其他人权限
例:chmod o=x oldboy.txt #oldboy.txt增加执行的权限
chgrp
用来变更文件或目录的所属群组
例:chown .oldboy oldboy.txt #修改oldboy.txt 的所属组为oldboy组
umask
显示或设置权限掩码
设置Linux默认权限
打包、压缩三剑客
tar
打包备份、打包压缩
创建压缩包
zcvf
例:tar -zcvf etc.tar.gz /etc #打包压缩etc目录下文件,名称为etc.tar.gz
zcf
查看压缩包
tvf
例:tar -tf etc.tar.gz #查看压缩包etc.tar.gz中含有哪些内容
tf
解压
zxvf
例:tar -zxvf etc.tar.gz ./ #解压etc.tar.gz到当前目录下
xf
-C
解压到指定目录
例:tar -zxvf etc.tar.gz -C /opt #解压etc.tar.gz压缩包到指定目录opt下
--exclude-from=
排除
gzip
解压或压缩文件
压缩
例:gzip oldboy.txt #压缩/oldboy.txt文件为oldboy.txt.gz
-d
解压,并删除源文件
例:gzip -d oldboy.txt.gz #解压oldboy.txt.gz压缩包到当前目录下
zip/unzip
zip -r
压缩目录
例:zip -r etc.zip /etc/ #压缩etc目录名为etc.zip压缩包
unzip -d
解压指定目录
例:unzip etc.zip -d /opt/ #解压etc.zip压缩包到指定目录opt下
unzip -t
查看压缩包内容
例:unzip -t etc.zip #查看etc.zip压缩包内容
特殊符号
..
当前目录上级目录
.
当前目录
{ }
生成序列
{a..z}
{1..10}
~
当前用户家目录
>或1>
标准输出重定向(先清空,再写入)
>>或1>>
标准输出追加重定向(把内容写入文件结尾)
|
管道符号(前一个命令的结果传递给后面的命令)
' '
单引号
所见即所得,单引号里面的内容会原封不动的输出.
例: echo 'lidao $UID `whoami` {1..5}'
" "
双引号
与单引号类似,但是对引号的里面特殊符号会进行解析(运行)
例:echo "lidao $UID `whoami` {1..5}"
` `
反引号,优先执行引号里面的命令
应用:创建带时间,带IP文件,目录。(备份)
$( )
优先执行,先执行里面的命令. 一般创建/打包的时候给文件名加上个日期.
*
所有
*.txt
*.log
2>
标准错误输出重定向, 先清空文件,然后写入错误信息到文件.
2>>
标准错误追加输出重定向, ,把错误信息追加到文件末尾.
>> oldboy.log 2>&1
追加到oldboy.log中.
&>>oldboy.txt
正确输出和错误输出 追加到oldboy.txt中
收藏
收藏
0 条评论
下一页