linux学习笔记

常用的RPM软件包命令

文字描述指令
安装软件的命令格式rpm -ivh filename.rpm
升级软件的命令格式rpm -Uvh filename.rpm
卸载软件的命令格式rpm -e filename.rpm
查询软件描述信息的命令格式rpm -qpi filename.rpm
列出软件文件信息的命令格式rpm -qpl filename.rpm
查询文件属于哪个RPM的命令格式rpm -qf filename.rpm

常见的Yum命令

命令作用
yum repolist列出所有仓库
yum list all列出仓库中所有软件包
yum info 软件包名称查看软件包信息
yum install 软件包名称安装软件包
yum reinstall 软件包名称重新安装软件包
yum update 软件包名称升级软件包
yum remove 软件包名称移除软件包
yum clean all清除所有仓库缓存
yum check-update检查可更新的软件包
yum grouplist查看系统中已经安装的软件包组
yum groupinstall 软件包组安装指定的软件包组
yum groupremove 软件包组移除指定的软件包组
yum groupinfo 软件包组查询指定的软件包组信息

systemed与System V init 的区别以及作用

System V init 运行级别systemed 目标名称作用
0runlevel0.target, poweroff.target关机
1runlevel1.target, rescue.target单用户模式
2runlevel2.target, multi-user.target等同于级别3
3runlevel3.target, multi-user.target多用户的文本界面
4runlevel4.target, multi-user.target等同于级别3
5runlevel5.target, graphical.target多用户的图形界面
6runlevel6.target, reboot.target重启
emergencyemergency.target紧急Shell

systemctl常用命令

systemctl命令作用
systemctl start foo.service启动服务
systemctl restart foo.service重启服务
systemctl stop foo.service停止服务
systemctl reload foo.service重新加载配置文件(不终止服务)
systemctl status foo.service查看服务状态
systemctl enable foo.service开机自动启动
systemctl disable foo.service开机不自动启动
systemctl is-enable foo.service查看特定服务是否为开机自动启动
systemctl list-unit-files --type=service查看各个级别下服务的启动与禁用情况

常用LINUX命令

命令描述格式
man man查看man命令自身的帮助信息
man --help查看man命令自身的帮助信息
man -h查看man命令自身的帮助信息
echo在终端输出字符串或变量提取后的值echo[字符串|$变量]
date显示和设置系统的时间或日期date[选项] [+指定的格式]
reboot重启系统reboot
poweroff关闭系统poweroff
wget在终端中下载网络文件wget[参数] 下载地址
ps查看系统中的进程状态ps[参数]
top动态监视进程活动与系统负载等信息top
pidof查询某个指定服务进程的PID值pidof[参数] [服务名称]
kill终止某个指定PID的服务进程kill[参数] [进程PID]
killall终止某个指定名称的服务所对应的全部进程killall[参数] [进程名称]
ifconfig获取网卡配置与网络状态等信息ifconfig[网络设备]] [参数]
uname查看系统内核与系统版本等信息uname[-a]
uptime查看系统的负载信息uptime
free显示当前系统中内存的使用量信息free[-h]
who查看当前登陆主机的用户终端信息who[参数]
last查看所有系统的登陆记录last[参数]
history显示历史执行过的命令history[-c]
sosreport收集系统配置及架构信息并输出诊断文档sosreport
pwd显示用户当前所处的工作目录pwd[选项]
cd切换工作路径cd[目录名称]
ls显示目录中的文件信息ls[选项] [文件]
cat查看纯文本文件(内容较少)cat[选项] [文件]
more查看纯文本文件(内容较多)more[选项] 文件
head查看纯文本文件的前N行head[选项] [文件]
tail查看纯文本文档的后N行或持续刷新内容tail[选项] [文件]
tr替换文本文件中的字符tr[原始字符] [目标字符]
wc统计指定文本的行数、字数、字节数wc[参数] 文本
stat查看文件的具体存储信息和时间等信息stat 文件名称
cut按“列”提取文本字符cut[参数] 文本
diff比较多个文本文件的差异diff[参数] 文件
touch创建空白文件或设置文件的时间touch[选项] [文件]
mkdir创建空白的目录mkdir[选项] 目录
cp复制文件或目录cp[选项] 源文件 目标文件
mv剪切文件或重命名文件mv[选项] 源文件 [目标路径|目标文件名]
rm删除文件或目录rm[选项] 文件
dd按照指定大小和个数的数据块来复制或转换文件dd[参数]
file查看文件类型file 文件名
tar对文件进行打包压缩或解压tar[选项] [文件]
grep用于在文本中执行关键词搜索,并显示匹配结果grep[选项] [文件]
find用于按照指定条件来查找文件find[查找路径] 寻找条件 操作

输入重定向中用到的符号及其作用

符号作用
命令 < 文件将文件作为命令的标准输入
命令 << 分界符从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2将文件1作为命令的标准输入并将标准输出到文件2

eg1:

需要统计b.txt文件的行数

$ wc -l b.txt
61 b.txt

也可以将输入重定向到b.txt文件中

$ wc -l < b.txt
61

第二个不会显示文件名,因为它只知道从标准输入中读取内容

eg2:

$ cat << u
>i
>love
>u
i
love

eg3:结合邮箱命令

# mail -s "readme" xx@qq.com << over

输出重定向中用到的符号及其作用

符号作用
命令 > 文件将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2 > 文件将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件将标准输出重定向到一个文件中(追加到原文件内容后面)
命令 2 >> 文件将错误输出重定向到一个文件中(追加到原文件内容后面)
命令 >> 文件 2>&1或 命令 &>> 文件将标准输出与错误输出共同写入到文件中(追加到原有内容后面)

通俗的讲,重定向输出就是把原本要输出的文件信息写入到一个文件中去而不是输出到控制台(显示屏)

管道命令符

“ | ”为管道命令符,其执行格式为“命令A | 命令B”,简单来说就是把前一个命令原本要输出到屏幕的标准正常数据当作后一个命令的标准输入。

eg1:

$ cat b.txt | wc -l
61

eg2:更改root用户的密码通常需要输入两次密码,这对编写自动化脚本很不方便,于是可以

# echo "xxxxxx" | passwd --stdin root
Changing password for user root
passwd:all .....successfully

命令行的通配符

“ * ” 代表匹配零个或多个字符,“ ? ” 代表匹配单个字符,“ [0-9] ”代表匹配0-9之间的单个数字的字符,“ [abc] ”代表匹配三个字符中任意一个字符。

转义字符表

字符作用
反斜杠( \ )使反斜杠后面的一个变量变为单纯的字符串
单引号(’’)转义其中所有的变量为单纯的字符串
双引号("")保留其中的变量属性,不进行转义处理
反引号(F`)把其中的命令执行后返回结果

重要的环境变量

命令在Linux执行分为4个步骤:

​ 第一步:判断用户是否以绝对路径或相对路径的方式输入命令,如果是的话则直接执行

​ 第二步:Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用 alias 命令来创建一个属于自己的命令别名,格式为“ alias 别名=命令”。若要取消用 unalias 命令。

​ 第三步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交给第四步处理,可以使用 ”type 命令名称“ 来判断用户输入的命令是内部命令还是外部命令。

​ 第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做PATH,可以简单地把它理解成是“解释器小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置,然后Bash解释器就会在这些位置逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。

查看Linux系统中所用环境变量可以使用env命令。

变量名称作用
HOME用户的主目录
SHELL用户在使用的Shell解释器名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
MAIL邮件保存路径
LANG系统语言、语系名称
RANDOM生成一个随机数
PS1Bash解释器的提示符
PATH定义解释器搜索用户执行命令的路径
EDITOR用户默认的文本编辑器

export命令可以将变量提升为全局变量。

Vim中常用的命令

命令作用
dd删除(剪切)光标所在整行
5dd删除(剪切)从光标处开始的5行
yy复制光标所在整行
5yy复制从光标处开始的5行
n显示搜索命令定位到的下一个字符串
N显示搜索命令定位到的上一个字符串
u撤销上一步操作
p将之前删除或复制过的数据粘贴到光标后面

Vim末行模式中可用的命令

命令作用
:w保存
:q退出
:q!强制退出
:wq!保存并强制退出
:set nu显示行号
:set nonu不显示行号
:命令执行该命令
:整数跳转到该行
😒/one/two将光标所在行的第一个one替换成two
😒/one/two/g将光标所在行的所有one替换成two
:%s/one/two/g将全文的one替换成two
?字符串在文本中从下至上搜索该字符串
/字符串在文本中上至下搜素该字符串

SHELL脚本的编写

简单示例:
#!/bin/bash
#For Example 
pwd
ls -al

第一行一般是脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本

第二行的注释信息是对脚本的功能和某些命令的介绍信息

之后就是可执行的语句

接收用户参数:

Linux内置接收参数的变量:

参数作用
$0当前Shell脚本程序的名称
$#总共有几个参数
$*所用位置的参数值
$?显示上一次命令的执行返回值
$1、$2对应的第N个位置的参数值
判断用户的参数:
测试语句格式:[ 条件表达式 ]

条件测试语句可以分为4种:(1)文件测试语句(2)逻辑测试语句(3)整数值比较语句(4)字符串比较语句

文件测试所用参数:
运算符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行
逻辑测试符:

&& “与” 表示当前面的命令执行成功后才会执行它后面的命令

|| “或” 表示当前面的命令执行失败后才会执行它后面的命令

! “非” 把条件测试中的判断结果取相反值

可用的整数比较运算符:
运算符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

eg:

# [ 5 -eq 10 ]
# echo $?
1

注意:“$?”指的是上一条指令的执行状态,“0”代表成功,“1”代表失败。

常见的字符串比较运算符
运算符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空
if条件测试语句:
单分支结构:
if 条件测试操作
  then 命令序列
fi
双分支结构:
if 条件测试操作
  then 命令序列1
  else 命令序列2
fi
多分支结构:
if 条件测试操作1
  then 命令序列1
elif 条件测试操作2
  then 命令序列2
else
  命令序列3
fi
for条件循环语句:
for 变量名 in 取值列表
do
	命令序列
done
while条件循环语句:
while 条件测试操作
do
  命令序列
done
case条件测试语句:
case 变量值 in
模式1)
	命令序列1
	;;
模式1)
	命令序列2
	;;
*)
	默认命令序列
esac
计划任务服务程序

计划任务分为一次性计划任务与长期性计划任务

一次性计划任务
命令作用
at 时间在指定时间执行任务
at -l查看已设置好但还未执行的一次性计划任务
atrm 任务序号删除任务
长期性计划任务
命令作用
crontab -e创建、编辑计划任务
crontab -l查看创建好的任务
crontab -r删除某条计划任务
crontab -u编辑他人计划任务

格式:

分,时,日,月,星期 命令

用户身份与文件权限

用户身份常用指令
指令格式作用
useradduseradd[选项] 用户名用于创建新的用户
groupaddgroupadd[选项] 群组名用于创建用户组
usermodusermod[选项] 用户名用于修改用户的属性
passwdpasswd[选项] [用户名]用于修改用户密码、过期时间、认证信息
userdeluserdel[选项] 用户名用于删除用户
useradd参数
参数作用
-d指定用户的家目录(默认/home/username)
-e账户的到期时间,格式为YYYY-MM-DD
-u指定该用户的默认UID
-g指定一个初始的用户基本组
-G指定一个或多个扩展用户组
-N不创建与用户同名的基本用户组
-s指定该用户的默认Shell解释器
usermod参数
参数作用
-c填写用户账户的备注信息
-d -m重新指定用户的家目录并自动把九的数据转移过去
-e账户的到期时间
-g变更所属用户组
-G变更扩展用户组
-L锁定用户禁止其登陆系统
-U解锁用户,允许其登陆系统
-s变更默认终端
-u修改用户的UID
passwd参数
参数作用
-l锁定用户禁止其登陆
-u解除锁定,允许其登陆
–stdin允许通过标准输入修改用户密码
-d使该用户可用空密码登陆系统
-e强制用户在下次登陆时修改密码
-S显示用户的密码是否被锁定,以及密码所采用的加密算法名称
userdel参数
参数作用
-f强制删除用户
-r同时删除用户及用户家目录
文件权限与归属
文件类型
字符作用
-普通文件
d目录文件
l链接文件
b块设备文件
c字符设备文件
p管道文件
文件权限的字符与数字表示
权限分配文件所有者文件所属组其他用户
权限项读 写 执行读 写 执行读 写 执行
字符表示r w xr w xr w x
数字表示4 2 14 2 14 2 1
文件的特殊权限
SUID

SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。当查看某命令属性时发现rwx变成了rws,表明该文件被赋予了SUID权限,如果rw-则会变为rwS。

SGID

SGID有两种功能:(1)让执行者临时拥有属组的权限(2)在某个目录中创建的文件自动继承该目录的用户组

更改权限的命令
命令格式作用
chmodchmod[参数] 权限 文件或目录名称设置文件或目录的权限
chownchown[参数] 所有者:所属组 文件或目录名称设置文件或目录的所有者和所属组
SBIT

SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。

当目录被设置SBIT特殊权限位后,rwx–>rwt,rw- -->rwT

chmod o+t可以设置SBIT

文件的隐藏属性
命令格式作用
chattrchattr[参数] 文件用于设置文件的隐藏权限
lsattrlsattr[参数] 文件用于显示文件的隐藏权限
chattr参数

添加隐藏功能使用“+参数”,移除隐藏功能使用“-参数”

参数作用
b不再修改文件或目录的存取时间
D检查压缩文件中的错误
d使用dump命令备份时忽略本文件/目录
c默认将文件或目录进行压缩
u当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t让文件系统支持尾部合并
X可以直接访问压缩文件中的内容
i无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的自文件内容而不能新建或删除文件
a仅允许补充内容,无法覆盖/删除内容(Append Only)
S文件内容在变更后立即同步到硬盘(sync)
s彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A不再修改这个文件或目录的最后访问时间(atime)
文件访问控制列表
setfacl命令

setfacl命令用于管理文件的ACL规则,格式为“ setfacl[参数] 文件名称 ”。文件的ACL提供的使在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。针对目录文件需要使用-R递归参数;针对普通文件则使用-m,删除某个文件的ACL使用-b。

怎么查看是否设置了ACL?

答:文件权限的最后面的“ . ”变为了 “ + ”。

getfacl命令

getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。

su与sudo

su命令可以使用户在普通用户与管理员之间进行切换,切换到root用户时需要输入密码,造成安全隐患。

sudo命令可以把特定命令的执行权限赋予给指定用户。

sudo服务中可用的参数
参数作用
-h列出帮助信息
-l列出当前用户可执行的命令
-u 用户名或UID以指定的用户身份执行命令
-k清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b在后台执行指定的命令
-p更改询问密码的提示语
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值