Linux基础命令
- **uname **查看操作系统信息
uname -a
- **ls 相对/绝对 路径 **查看文件
ls /uesr/local/
ls /local/(在user目录下)
ls -l == ll
ls -a
ls -h
ls -a ls -h == ls -ah
-
**pwd **显示当前路径
-
**cd **切换目录
cd ../ 上一级目录
cd ~ == cd 用户家目录
cd 路径
- 重启关机
reboot
shutdown
shutdown -h 20
shutdown now
shutdown -r 60/now
halt == shutdown -h 0
-
**history **查看历史命令
-
**hostnamectl **主机名命名
-
**管理员root **
su root
“/”的使用
#加上 /:表示使用绝对路径,确保准确定位文件或目录。
#不加 /:如果你在当前工作目录下,并且命令或文件名没有重复,便可以直接使用相对路径。
Linux文件管理
文件命名规则
Linux严格区分大小写,命名尽量都使用小写,以“_”隔开
使用拓展名并无特殊含义,是为了便于区分文件
文件管理命令
目录的创建/删除
#mkdir 创建目录
mkdir /user/local/nginx
#mkdir不能隔级创建目录。必须要求创建的目录所在的目录存在
mkdir -p 【路径】
#可同时创建多个目录,可以隔级创建目录
#rmdir 删除目录
rmdir /user/local/nginx
rmdir /user/local/nginx /user/local/a /user/local/b /user/local/c
rmdir -p /itheima/tomcat
#此方法仅适用于CentOS 7
rmdir -r /itheima/tomcat
Y
文件创建/删除
#touch 创建文件
touch /[文件名] #在根目录创建
#也可在绝对路径在创建
touch [文件名] #在当前 目录下创建
touch [文件名] [文件名] [文件名] #在当前 同时创建[文件名]*3
touch {1..6}.log[后缀名] #创建1到6.log
#拓展
touch /user/local/a1.txt a2.txt b.txt c.txt
#此时a1的绝对路径为 /user/local/a1
#a2及b c为 /user/a2 b c 与local文件夹平级(此时在user层级下)
#也就是说执行上面命令时,分为了两条
#touch /user/local/a1.txt
#touch a1.txt 在当前目录下创建
#rm 删除文件
rm [文件] #删除当前路径下的该文件
rm -r [文件夹]/[文件夹]
#删除当前文件夹之下的所有文件和文件夹
#每个文件都会询问
rm -rf [文件夹]/[文件夹]
#强制删除当前文件夹之下的所有文件和文件夹
复制与剪切
#cp 复制
#拷贝文件
cp [文件] [B路径]
#将该目录下的该文件,拷贝到B路径下
cp [A路径]/[文件] [B路径]
#将A路径下的文件 复制到B路径
cp [A路径]/[文件A] [B路径]/[B文件]
#将A路径下的A文件 复制到 B路径下并更名为B文件
#拷贝目录
cp -r [文件夹1]/[文件夹11] [文件夹2]/[文件夹22]
#将文件夹1中的11,拷贝到文件夹22中
#mv 剪切
mv [文件] [路径]/[路径]
mv [文件夹] /[路径]/[路径]
#重命名
mv [文件名1] [文件名2]
#将文件名1 更改成 文件名2
#cp与mv的区别
#mv不管是针对文件还是文件夹都不需要加类似的 -r 的选项
#默认在移动的过程中文档名称是不变的,变得是路径
tar打包压缩与解压缩
打包:文件和目录的总合,打包成一个文件,占用的空间为所有文件和目录的总合。
压缩:也是总合,但是占有的空间少于总合。
打包
tar -c #创建打包*
-v #显示打包文件过程*
-f #指定打包的文件名(必加项)*
-u #update,可追加新文件进入打包(了解)
-t #查看打包文件内容(了解)
tar -[命令] 文件名 [打包文件][打包文件]
tar -cvf abc.tar a.txt b.txt c.txt
tar -uf abc.tar d.txt
tar -tf abc.tar
打包并压缩*
tar -z #压缩为.gz格式*
-j #压缩为.bz2格式
-J #压缩为.xz格式
-x #解压缩
tar -zcvf abc.tar.gz a.txt b.txt c.txt
tar -Jcvf abc.tar.xz a.txt b.txt c.txt
解压
tar -x
tar -zxvf abc.tar.gz
tar -xvf [文件名] #通用解压
zip压缩与解压缩(了解)
zip压缩
unzip解压缩
Vim
Vim文件编辑器
VIM四种模式:
命令: esc
编辑(输入、插入):i
可视化:v
末行: : /
Vim使用
vim [文件名] #打开文件
#VIM保存文件并退出
#按两下esc回到命令模式,输入 :wq 回车
#VIM不保存文件并退出
# :q!
Vim命令模式操作*
页面和文件的移动
`Ctrl + f/PgDn`:向下翻页
`Ctrl + b/PgUp`:向上翻页
`Ctrl + d`:向下滚动半页
`Ctrl + u`:向上滚动半页
`G`:跳转到文件的最后一行
`gg`:跳转到文件的第一行
`[n]G`:跳转到第 n 行,例如 `20G` 跳转到第 20 行*
复制/粘贴
复制:光标所在行 `yy`
数字`yy`行侠复制指定的行数
粘贴:需要粘贴的地方`p`
剪切/删除
剪切/删除光标所在行
按键:`dd`(删除后下一行上移)
注意:dd严格上说是剪切命令,若剪切后不粘贴就是删除效果
剪切/删除光标所在行为准,相加删除指定的行
按键:`数字dd`(删除后下一行上移)
剪切后,但是删除之后的下一行不上移
按键:`D`(删除后当前行会变成空白行)
撤销/恢复
撤销: `u(undo)`
恢复: `ctrl+r` 恢复(取消)之前的撤销操作【重做 redo】
Vim末行模式操作*
按下 `:` 或者`/`进入末行模式
保存(write)
`:w`保存文件
退出(quit)
`:q`
保存并退出
`:wq`
强制(!)
`:q!`
搜索/查找
`/关键词`
在搜索结果中切换上/下结果:`N/n`
`取消高亮:noh`
替换
显示行号
`:set nu`
`:set nonu`
set paste与set nopaste
编辑模式
按下i
进入
可视化模式
复制
按键 `ctrl+v或V或v`,用方向键选中
复制 `y`,粘贴 `p`
退出esc
多行注释
ctrl+v
进入视图 块模式- 在行首上下键选择需要注释的行
- 按下
I
进入插入模式 - 输入
#
- 按两下
esc
删除多行注释
选中行首的#,按下 del
Vim的一些实用功能
代码着色
异常退出的解决办法
将交换文件(在编程过程中产生的临时文件)删除掉即可【在提示界面按下 D
键,或者使用 rm
指令删除交换文件】
Vim退出方式
:q
或者 :wq
:x
在文件没有修改的情况下,表示直接退出()等价于:q,在文件修改的情况下表示保存并退出
区别
如果您在编辑文件并希望保存更改,使用 :x
或 :wq
是合适的。
在一般情况下,使用 :x
是个不错的选择,因为它会根据文件是否有修改来决定是否保存。
如果您希望明确保存,可以考虑使用 :wq
文本处理命令
查看文件内容
cat查看及合并
cat [文件名]
#cat命令用于查看文件内容时,不论文件内容有多少,都会一次性显示。若文件非常大,那么文件开头的内容就看不到了。
#cat命令适合查看不太大的文件。
cat [文件1] [文件2] > [文件3]
#将文件1,2的内容合并后,输出到文件3
more/less分屏显示文件
more [文件名]
#流程:more在读取文件时,默认已经加在文件的全部内容
less [文件名]
#流程:不是加载整个文件,而是一点一点进行加载,相对而言,读取大文件时,效率比较高
#通用交互界面
#回车 向下一行
#d 向下半页
#空格 向下一页
#b 向上一页
#/字符串 搜索指定字符串
#:f 显示当前文件的文件名和行号
#q或Q 退出more/lessmoshi
cat、more、less对比
head显示文件开头
head [文件名]
head -n [文件名]
#查看一个文件的前n行,如果不指定n,则默认显示前10行
tail显示文件结尾
tail [文件名] #默认显示最后10行
-n [文件名] #显示最后n行的内容
-f [文件名] #输出文件变化后新增加的数据
#按下ctrl+c可退出查看状态
统计文件信息
wc -lwc [文件名] #统计文件内容数量
#统计文件内容信息
#三个参数混在一起使用时,不影响输出结果。行数、单词数、字节数
du -s [文件名/目录] #统计文件大小
-h [文件名/目录] #高可读性
-sh [文件名/目录] #
文本处理
find /var/ -name "*.log" -type f #文件查找
#find 路径 选项1 选项1的值 选项2 选项2的值
grep [查找到内容] [文件名/多个文件名] #搜索文件内容
`命令`>`文件` #进行覆盖输出
`命令`>>`文件` #进行追加输出
#区别
`>`#将命令所输出的内容,写入文件中。若文件中有其他内容,则先清空,再写入。
`>>`#将命令输出的内容,追加写入到文件中。
#文件路径中的文件可以是不存在的文件,执行明亮时会自行创建。
Linux用户管理
用户和用户组
为针对不同用户分配不同权限,不同权限访问到的系统资源不同。
主组:每个用户的主组只能有一个。
附加组:每个用户的附加组可以用多个。
管理工作
- 用户组的管理
- 用户帐号的增删改,密码管理
/etc/passwd 用户配置文件,存储用户的基本信息
/etc/group 存储用户组的信息
/etc/shadow 存储用户的密码信息
用户和用户组管理
用户组
用户组的增删改
groupadd [组名] #添加组
groupmod [选项 选项值] 用户组名 #修改组
#选项
-g :gid设置一个自定义的用户组ID数字
-n :name设置新的用户组的名称
groupdel [组名] #删除组
用户
用户的增删改
useradd [选项 选项值] 用户名 #添加用户
#选项
-g :指定用户的用户主组,选项值口语为用户组ID,也可以是组名。
-G :指定用户的用户附加组,同上。
-u :uid,用户的id,系统会默认按顺序分配uid。可通过该选项自定义。
-c :comment,添加注释
-s :指定用户登录后所使用的shell解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可设置为/sbin/nologin*
-d :指定用户登入时的起始目录
-n :取消建立以用户名称为名的群组
#若执行"useradd infosky"
#不适用任何参数,创建用户,系统会默认执行以下操作
#在/etc/passwd中创建infosky用户数据
#在/etc/shadow中新增infosky密码数据
#在/etc/group中创建一行与用户名相同的组
#在/etc/gshadow中新增一行与新增群组相关的密码信息
#自动创建用户的家目录,默认在/home下,与用户名同名
etc/passwd存储用户信息的文件
vim /etc/passwd
# infosky:x:1000:1000::/home/infosky:/bin/bash
# 用户名:密码:用户ID(-u):用户组ID(-g):注释(-c):家目录(-d):解释器shell(-s)
#密码位置显示x,表示密码的占位,真实密码存储在/etc/shadow
#若解释器是/bin/bash表示用户可以登录到系统,/sbin/nologin表示用户不能登录到系统
id查看用户信息
id #默认显示当前执行该命令的用户基本信息
id [用户名] #查看用户的基本信usermod
usermod修改用户
usermod [选项 选项值] 用户名 #修改用户的各种属性
-g 指定用户的用户主组,可以说用户组的ID,也可以是组名
-G 指定附加组
-U 解锁用户 unlock
-L 锁定用户,锁定后用户无法登录系统 lock
-c 修改用户帐号的备注文字
-d 修改用户登录时的目录
-s 修改用户登入后所使用的shell
passwd修改用户密码
passwd [用户名] #如果不指定用户名则修改自己的密码
认识/etc/shadow文件
su切换用户
su 用户名
userdel删除用户
userdel 选项 用户名
-r #删除用户的同时,删除其目录/home下的对应文件夹
删进程
#查找占用的进程
ps -ef | grep [名称]
#选中进程后,kill
kill [进程]
管道
管道符
一种通信机制,常用于进程间的通信。表现出的形式将前面的每一个进程都输出(stdout)直接作为下一个进程的输入(stdin)
过滤功能
grep #用于过滤
grep 选项 文件路径
#ls / | grep "y" 以此为例
#以管道作为分界线,前面的命令有个输出,右面束腰先输入(缺少查找范围),然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入。
grep [选项] "搜索关键词" 搜索范围
cat /etc/passwd | wc -l #指令 路径 | 指令 指令
xargs命令拓展
- xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从输出中读取数据。
- xargs可以将单行或多行文本输入转换为其他格式,如多行变单行,单变多。
- xargs默认的命令是echo,意味着通过管道传递给xargs的输入将会包含换行和空白,不通过xargs的处理,换行和空白将被空格取代。
- xargs能捕获一个命令的输出,然后传递给另外一个命令。
网络配置
ifconfig查看网络信息
ifconfig #查看网络信息
ens192 :默认网卡
lo(loop,循环) :回环网卡
#(vmware中才有)virbr0 :虚拟网络接口
网卡配置文件位置及详解
cd /etc/sysconfig/network-scripts/
`ifcfg-ens192`
TYPE=Ethernet #网络类型=以太网
BOOTPROTO=none #启动协议,这里为静态IP。还可以选择DHCP自动获取
DEFROUTE=yes #默认路由
NAME=ens192 #网络接口的名称
DEVICE=ens192 #网卡设备名称
ONBOOT=yes #系统在启动时是否启用此网络接口
IPADDR=172.20.220.145 #指定静态IP地址,给这个网络接口分配的地址是172.20.220.145
PREFIX=24 #指定子网掩码的前缀长度,这里24是指子网掩码为255.255.255.0。意味着该网络可以容纳256个地址
GATEWAY=172.20.220.254 #指定默认网关的IP地址,数据包会通过这个地址转发到其他网络
DNS1=172.17.18.18 #指定首选DNS服务器的IP地址,用于域名解析
systemctl
#查看网卡状态
systemctl status network #centOS7
systemctl status NetworkManager #centOS8
#网卡的启动/重启/停止
systemctl start/stop/restart network
Linux的权限管理操作
普通权限管理
文件权限详解
三类身份
身份 | 字母 |
---|---|
属主 | u |
属组 | g |
其他用户 | o |
Linux七种文件类型
-
:普通文件
d
:目录文件
l
:软链接(类似于windows的快捷方式)
b
:块设备文件(硬盘、光盘)
p
:管道文件
c
:字符设备文件
s
:套接口文件/数据接口文件
文件权限对应关系
r 4 可读
w 2 可写
x 1 可执行
d rwx r-x r-x
1:文件类型
2-4:属主的权限情况
5-7:属组的权限
8-10:其他的权限
设置文件/文件夹权限
字母形式
chmod [选项] 权限模式 文档
#增加或减少当前文件所有者的权限(不能改变所有者,只能改变现有所有者的权限)
选项: `-R` 递归设置权限(当文档类型为文件夹时)
chmod -R 要增加的权限 文件名
#例如
#chmod -R u+x quanxian.txt
#chmod -R g+x,o+x quanxian.txt(同时改变多个对象的权限用`,`隔开)
chmod -R 要减少的权限 文件名
#例如
#chmod -R o-x quanxian.txt
chmod -R 要赋予的权限 文件名
#例如
#chmod -R u=rwx,g=rwx,o=rwx quanxian.txt
#给谁设置
u
g
o
ugo
a
#怎么设置
+
-
=
#增加减少或赋予什么权限
r
w
x
#设置给多个身份权限时,使用`,`隔开
#chmod u=rwx,g=rwx = chmod ug=rwx
数字形式
权限 | 数字 |
---|---|
r | 4 |
x | 2 |
x | 1 |
chmod -R 数字形式权限 文件名
#例如
#chmod -R 765 quanxian.txt
#注意一般情况下,单独出现2、3的权限数字一般都是有问题的权限。因为文件在进行写或执行前,需要具备可读的权限。
#一般Linux中,不允许出现777的权限
特别说明
在Linux中,若要删除一个文件。不是看文件有没有对应的权限,而是看文件所在 目录是否有写权限 ,如果有才可以删除(同时必须具备执行权限)
属主与属组设置
chown修改文件的属主
chown [-R] 新文档拥有者名称 文档路径
#更改文档的所属用户
#选项:-R 代表递归修改文件的属主
#例如
#chown infosky readme.txt
#chown infosky bjhr/
chgrp修改文件属组
chgrp [-R] 新文档组名称 文档的路径
#例如
#chgrp itcast readme.txt
#-rw-r--r--. 1 infosky itcast 0 10月 16 10:38 readme.txt
chown同时修改属主与属组*
chown [-R] username:groupname 文档路径
#例如
#chown root:root readme.txt
#-rw-r--r--. 1 root root 0 10月 16 10:38 readme.txt
#chown指令只由root所使用,普通用户没有该权限。
ACL访问控制
基本命令
getfacl
setfacl
自有服务
systemctl管理服务命令
显示服务
systemctl [选项]
#选项
list-units --type service --all :列出所有服务(包含启动的和没启动的)
list-units --type service :列出所有启动服务
查看启动和停止服务
systemctl [选项] 服务名
#选项
status:检查指定服务的运行状况
start:启动制定服务
stop
restart:
reload:重新加载配置文件(并非所有服务都支持reload,通常使用restart)
服务持久化
#选项
enable:开机自启动
disable:不自启动
常用自有服务(ntp,firewalld,crond)
服务名 | 含义 |
---|---|
ntp | 用于同步计算机的系统时间的服务 |
firewalld | 防火墙服务 |
crond | 计划任务服务 |
ntp时间同步服务
firewalld防火墙
查看,开启和停止firewalld服务
systemctl [选项] firewalld
管理firewall配置
firewall-cmd [选项]
#选项
--get-default-zone #查看默认使用的区域
--get-zones #查看所有可用区域
--list-all #列出当前使用区域配置
--list-all-zones #列出所有区域的配置
--zone=public --add-port=1024/tcp #在public区域,允许添加tcp协议的1024端口通过的规则
--zone=public --add-service=ftp #在public区域,添加允许ftp服务通过的规则
--zone=public --remove-port=1024/tcp #在public区域,去掉允许tcp协议的1024端口通过的规则
--permanent --zone=public --add-port=1024/tcp #在public区域,使用permanent参数,永久添加允许1024端口通过的规则
--reload #重新加载配置
计划任务crontab
查看计划任务
计划任务就是一个文件
crontab 选项
#选项
-l:列出指定用户的计划任务列表
-e:编辑指定用户的计划任务列表
-u:指定的用户名,若不指定,则表示当前用户
-r:删除指定当前用户的计划任务列表
编辑计划任务*
* * * * * [需要执行的命令]
分 时 日 月 周
符号 | 意思 |
---|---|
* | 取值范围中的每一个数字 |
- | 做连续区间表达式时,要想表示1~7,则可写成: 1-7 |
/ | 表示每多少个,例如想每10分钟一次,则*/10 |
, | 表示多个取值,比如想在1点,2点,6点执行,则1,2,6 |
Linux软件包
命令
rpm [选项] | grep 软件名称
#查询软件安装情况
rpm -qa | grep 软件名称
#选项
-q:查询
-a:全部
#卸载软件
rpm -e | grep 软件名称
#安装软件
rpm -ivh 软件包完整路径名称
#选项
-i:install
-v:显示进度条
-h:表示以“#”的形式显示进度条
#更新某个软件
rpm -Uvh 软件包名称
#查看文件所属的包名
rpm -qf 需要查询的文件路径
-f:查询文件所属包
YUM
yum命令
#查询
yum search 关键词
#安装
yum [-y] install 关键词
#卸载
yun [-y] remove 关键词
#更新
yum [-y] update [包的关键词]
#注意 包的关键词如果不写,则表示更新整个系统