Linux
1.Linux目录结构
Linux的目录结构是一个树形结构,没有盘符的概念,只有一个根目录 / 所有的文件都在它下面
’ / ’ 在Linux系统中表示:
1.出现在开头的 / 表示:根目录
2.出现在后面的 / 表示:层次关系
2.Linux命令基础
命令:即Linux操作指令,是系统内置的程序,可以以字符化的形式去使用
命令行:即Linux终端,可以提供字符化的操作页面供命令执行
无论是什么命令,用于什么用途,在Linux中,命令都有其通用的格式:
command [-options] [parameter]
command:命令本身
-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter:[可选,非必填]命令的参数,多用于命令的指向目标
语法中的[],表示可选的意思
3.ls命令
ls [-a -l -h] [Linux路径]
ls命令的作用:在命令行中,以平铺的形式,展示当前工作的目录(默认HOME目录)下的内容(文件或文件夹)
HOME目录是每一个用户在Linux系统的专属目录,默认在:/home/用户名
Linux命令行在执行命令的时候,需要一个工作目录,打开命令行程序(终端)默认设置工作目录在用户的HOME目录
参数:
当ls不使用参数,表示列出:当前工作目录的内容,即用户的HOME目录
当使用参数时,ls命令的参数表示:指定一个Linux路径,列出指定路径的内容
选项:
-a选项,表示:all的意思,即列出全部文件(包括隐藏的文件/文件夹)
其中以 ‘.’ 开头的,表示是Linux系统的隐藏文件/文件夹(只要以 ‘.’ 开头,就能自动隐藏)
只有通过-a选项才能看见隐藏的文件/文件夹
-l选项,表示:以列表(竖向排列)的形式展示内容,并展示更多信息
语法中的选项是可以组合使用的,比如-l和-a可以组合使用
写法:
ls -l -a
ls -la
ls -al
ls -a -l
这些写法都是一样的,表示同时应用-l和-a的功能
-h选项,需要和-l选项搭配使用,以更加人性化的方式显示文件的大小单位
4.cd命令
可以通过cd命令,更改当前所在的工作目录
语法:cd [Linux路径]
cd命令无需选项,只有参数,表示要切换到哪个目录下
cd命令直接执行,不写参数,表示回到用户的HOME目录
5.pwd命令
可以通过pwd命令,来查看当前所在的工作目录
语法:pwd
pwd命令,无选项,无参数,直接输入pwd即可
6.相对路径和绝对路径
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
cd /home/aaa/Desktop
相对路径:以当前根目录为起点,描述路径的一种写法,路径描述无需以/开头
特殊路径符:
. 表示当前目录,比如cd ./Desktop表示切换到当前目录下的Desktop目录内
-
… 表示上一级目录,比如 cd … 即可切换到上一级目录,cd …/…切换上两级目录,以此类推
- 表示HOME目录,比如 cd ~ 即可切换到HOME目录,或cd ~/Desktop,切换到HOME内的Desktop目录
7.mkdir命令
mkdir用以创建新的目录(文件夹)
语法:mkdir [-p] Linux路径
参数必填,表示要创建的目录的路径,相对、绝对、特殊路径符都可以使用
-p选项的作用:可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
如果想要一次性创建多个层级的目录,可以通过-p选项,将一整个链条都创建完成
注意:创建文件夹需要修改权限,必须确保操作均在HOME目录内,不要在HOME目录外操作,涉及到权限问题,HOME外无法成功
8.touch命令
可以通过touch命令创建文件
语法:touch Linux路径
touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符都可以使用
9.cat命令
准备好文件内容后,可以通过cat查看内容
语法:cat Linux路径
cat没有选项,只有必填参数,参数表示:被查看的文件路径
10.more命令
用于查看文件内容,可翻页查看
语法:more Linux路径
参数必填,表示要查看的文件的路径
使用空格进行翻页,使用q退出查看
11.cp命令
cp命令可以用于复制文件\文件夹
语法:cp [-r] 参数1 参数2
-r选项,可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制去的地方
12.mv命令
mv命令可以移动文件\文件夹
语法:mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹
参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
例:
mv test.txt Desktop/ 将test.txt文件移动至Desktop目录下
13.rm命令
rm命令可用于删除文件、文件夹
语法:rm [-r -f] 参数1 参数2 … 参数N
同cp命令一样,-r选项用于删除文件夹
-f表示force,强制删除(不会弹出提示确认信息)
普通用户删除内容不会弹出提示,只有root管理员删除内容会有提示
所以普通用户一般用不到-f选项
参数1、参数2、… 、参数N表示要删除的文件或文件夹路径,按照空格隔开
通配符:
符号*表示通配符,即匹配任意内容(包括空),示例,
test*,表示匹配任何以test开头的内容
*test,表示匹配任意以test结尾的内容
*test * ,表示匹配任何包含test的内容
通过输入su - root,并输入密码临时切换到root用户
通过输入exit命令,退回普通用户
注意:rm是一个危险的命令,特别是在处于root(超级管理员)用户的时候,请谨慎使用
如下命令,千万不要在root管理员用户下执行:
rm -rf /
rm -rf /*
以上命令效果等同于在windows上执行c盘格式化
14.which命令
学习的Linux命令,其实他们的本体就是一个个的二进制可执行程序
和windows系统中的.exe文件,是一个意思
我们可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里
语法:which 要查找的命令
15.find命令
按文件名搜索
在Linux系统中,我们可以通过find命令去搜索指定的文件
语法:find 起始路径 -name “被查找的文件名”
find命令可以结合通配符查找文件
按文件大小查找
语法:find 起始路径 -size +|-n[kMG]
+、—表示大于和小于
n表示大小数字
kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
示例:
查找小于10kB的文件:find / -size -10k
16.grep命令
可任意通过grep命令,从文件中通过关键字过滤文件行
语法:grep [-n] 关键字 文件路径
选项-n,可选,表示在结果中显示匹配的行的行号
参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用“ ”将关键字包围起来
参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
17.wc命令
可以通过wc命令统计文件的行数、单词数量等
语法:wc [-c -m -l -w] 文件路径
选项-c,统计bytes数量
选项-m,统计字符数量
选项-l,统计行数
选项-w,统计单词数量
参数,文件路径,被统计的文件,可作为内容的输入端口
18.管道符
将管道符左边命令的结果,作为右边命令的输入
例:
统计test.txt文件中带有system关键字的有几行
cat test.txt|grep “system”|wc -l
19.echo命令
可以使用echo命令在命令行内输出指定内容
语法:echo 输出的内容
无需选项,只有一个参数,表示要输出的内容
类似于编程中的 print 语句
反引号 ` (通常称为飘号) 键盘布局中,位于~下面
重定向符:>和>>
> ,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>>,将左侧命令的结果,追加写入到符号右侧指定的文件中
例:
echo “this is a test to use >” > test.txt
echo “you can so anything in this file” >> test.txt
20.tail命令
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改
语法:tail [-f -num] Linux路径
参数,Linux路径,表示被跟踪的路径
选项-f,表示持续跟踪,使用ctrl+c停止跟踪
选项-num,表示查看尾部多少行,不填默认10行
21.vi/vim编辑器的三种工作模式
vi/vim编辑器,就是命令行模式下的文本编辑器,用来编辑文件
vim是vi的升级版,一般用vim即可,包含全部vi命令
1.命令模式
如果需要通过vi/vim编辑器编辑文件,使用如下命令
vi 文件路径 或 vim 文件路径
vim兼容全部的vi功能
如果文件存在,则修改文件,若不存在,那么会创建新文件
i —在当前光标位置进入输入模式
a —在当前光标位置之后进入输入模式
I —在当前行的开头进入输入模式
A —在当前行的结尾进入输入模式
o —在当前光标的下一行进入输入模式
O —在当前光标的上一行进入输入模式
esc —任何情况下输入esc都能回到命令模式
键盘上、k —向上移动光标
键盘下、j —向下移动光标
键盘左、h —向左移动光标
键盘右、l —向后移动光标
0 —移动光标到当前行的开头
$ —移动光标到当前行的末尾
pageup —向上翻页
pagedown —向下翻页
/ —进入搜索模式
n —向下继续搜索
N —向上继续搜索
dd —删除光标所在行的内容
ndd —n是数字,表示删除当前光标向下n行
yy —复制当前行
nyy —n是数字,复制当前行和下面的n行
p —复制粘贴的内容
u —撤销修改
ctrl+r —反向撤销修改
gg —跳到首行
G —跳到行尾
dG —从当前行开始,向下全部删除
dgg —从当前行开始,向上全部删除
dS —从当前光标开始,删除到本行的结尾
d0 —从当前光标开始,删除到本行的开头
2.底线命令模式
:wq —保存并退出
:q —仅退出
:q! —强制退出
:w —仅保存
:set nu —显示行号
:set paste —设置粘贴模式
22.root用户
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的
普通用户的权限一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
1.su命令
su命令适用于账户切换的系统命令
语法:su [-] [用户名]
-符号是可选的,表示是否在切换用户后加载环境变量(建议带上)
参数,用户名,表示要切换的用户,用户名可以省略,省略表示切换到root
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl+d
使用普通用户切换到其他用户需要输入密码
使用root用户切换到其他用户,无需密码,可以直接切换
2.sudo命令
使用sudo命令,为普通的命令授权,临时以root身份执行
语法:sudo 其他命令
在其他命令之前带上sudo,即可为这一条命令临时赋予root授权
但是并不是所有的用户都有权使用sudo,需要为普通用户配置sudo认证
23.用户和用户组管理
-
Linux用户管理模式
Linux可以支持多用户、多用户组、用户加入多个组
Linux权限管控的单元是用户级别和用户组
用户组管理:
需用root用户执行
创建用户组 groupadd 用户组名
删除用户组 groupdel 用户组名
用户管理:
需用root用户执行
- 创建用户 useradd [-g -d] 用户名
选项 -g,指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
选项 -d,指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
- 删除用户 userdel [-r] 用户名
选项 -r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
- 查看用户所属组 id [用户名]
参数用户名,被查看的用户,如果不提供则查看自身
- 修改用户所属组 usermod -aG 用户组 用户名
将指定用户加入指定用户组
- getent
使用getent命令,可以查看当前系统中有哪些用户
语法:getent passwd
共有七份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
使用getent命令,同样可以查看当前系统中有哪些用户组
语法:getent group
包含3份信息,组名称:组认证(显示为x):组ID
24.查看权限控制信息
25.chmod命令
可以使用chmod命令,修改文件、文件夹的权限信息
注意:只有文件、文件夹的所属用户或root用户可以修改
语法:chmod [-R] 权限 文件或文件夹
选项: -R,对文件内的全部内容应用同样的操作
例:
chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为rwxr-x–x
- 其中:u表示user所属的用户权限,g表示group组权限,o表示other其他用户权限
chmod u=rwx,g=rx,o=x test,将文件夹test以及文件夹内的全部内容权限设置为:rwxr-x–x
除此之外,还有快捷写法:chmod 751hello.txt
将hello.txt的权限修改为751
'r’记作4 'w’记作2 'x’记作1
26.chown命令
使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其他用户或组,此命令只适用于root用户执行
语法:chown [-R] [用户] [:] [用户组] 文件或文件夹
选项,-R,同chmod,对文件夹内全部内容应用相同的规则
选项,用户,修改所属用户
选项,用户组,修改所属用户组
:用于分隔用户和用户组
27.小技巧
ctrl+c 强制停止当前运行的程序或退出当前未写好命令并重新输入
ctrl+d 退出账户登录或者退出某些特定程序的专属页面
history可查看历史输入过的命令
可以通过!命令前缀,自动执行上一次匹配前缀的命令(基本只能用于才执行过的短暂时间内的命令)
ctrl+r 输入内容去匹配历史命令:
如果搜索到的内容是你需要的,那么回车键可以直接执行,键盘左右键,可以得到此命令(不执行)
光标移动快捷键:
ctrl+a 跳到命令开头
ctrl+e 跳到命令结尾
ctrl+键盘左键 向左跳一个单词
ctrl+键盘右键 向右跳一个单词
ctrl+l 清空终端内容---------等同于命令clear
28.软件安装
Ubuntu安装包格式:.deb 使用apt
CentOS安装包格式:.rpm 使用yum
Ubuntu apt命令
语法:apt [-y] [install | remove | search] 软件名称
选项,-y,自动确认
30.ln命令
在系统中创建软连接,可以将文件、文件夹链接到其他位置
类似于Windows系统中的快捷方式
链接只是一个指向,并不是物理移动
语法:ln -s 参数1 参数2
-s选项,创建软链接
参数1:被链接的文件或文件夹
参数2:要链接去的目的地
例:
ln -s /etc/yum.conf ~/yunm.conf
31.date命令
date命令可以查看时间,并格式化显示形式以及做日期计算
语法:date [-d] [+格式化字符串]
-
%Y 年
%y 年份后两位数字
%M 月份
%d 日
%H 小时
%M 分钟
%S 秒
%s 自1970-01-01 00:00:00 UTC到现在的秒数
修改Linux的时区
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntp的作用
可以自动联网同步时间,也可以通过ntpdate -u ntp.aliyun.com手动校准时间
32.IP地址和主机名
127.0.0.1 —这个IP地址用于指代本机
0.0.0.0 —特殊IP地址
可以用于指代本机,可以在端口绑定中用来确定绑定关系,在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
可以利用hostname查看主机名
centos修改主机名:hostnamectl set-hostname 主机名,修改主机名(需root)
可以自行在本地记录里配置相关的主机名映射关系
33.ping命令
可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法:ping [-c num] ip或主机名
选项,-c,检查的次数,不使用-c选项,将无限次数持续检查
参数:ip或主机名,被检查的服务器的ip地址或主机名地址
34.wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url
选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
参数:url,下载链接
注意:无论是否下载完成,都会生成要下载的文件
35.curl命令
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-O] url
选项:-O,用于下载文件,当url是下载地址时,可以使用此选项保存文件
参数:url,要发起请求的网络地址
37.nmap命令
可以通过nmap命令查看端口的占用情况 查看指定IP的对外暴露端口
语法:nmap 被查看的IP地址
例:nmap 127.0.0.1 查看本机端口占用
38.netstat命令
可以通过netstat命令,查看指定端口的占用情况
语法:netstat -anp|grep 端口号
39.ps命令查看进程
进程是指程序在操作系统内运行后被注册为系统内的一个进程,并拥有独立的进程ID(进程号)
可以通过ps命令查看Linux系统中的进程信息
语法:ps [-e -f]
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
可以通过管道符和grep命令过滤信息
例:
ps -ef|grep tail 可以准确的找到tail命令的信息
40.kill命令关闭进程
在Linux中,通过kill命令关闭进程
语法:kill [-9] 进程ID
选项:-9,表示强制关闭进程。不使用-9,会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制
41.主机状态监控
可以通过top命令查看cpu、内存使用情况,类似于windows的任务管理器
42.磁盘信息监控
使用df命令,可以查看硬盘的使用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示
可以使用iostat查看cpu、磁盘的相关信息
语法:iostat [-x] [num1] [num2]
选项:-x,显示更多的信息
num1:数字,刷新间隔 num2:数字,刷新几次
43.网络状态监控
可以使用sar命令查看网络的相关统计
语法:sar -n DEV num1 num2
选项:-n,查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查看一次结束)
num2:查看次数(不填就查看无限次数)
44.环境变量
环境变量是一组信息记录,类型是KeyValue型(名称=值),用于操作系统运行记录关键信息
env命令查看环境变量
$符号被用于取“变量”的值
取得环境变量的值就可以使用语法:$环境变量名 来取得
echo $PATH 取得环境变量PATH的值,通过echo输出
Linux环境变量可以有用户自行设置,分为:
临时设置,语法:export 变量名=变量值
永久生效:
针对当前用户生效,配置在当前用户的: ~/bashrc文件中
针对所有用户生效,配置在系统的: /etc/profile文件中
并通过语法:source配置文件,进行立刻生效,或重新登录FinalShell生效
加入自定义的命令搜索路径
例:export PATH=$PATH:自定义路径
45.压缩和解压缩
Linux系统常见压缩格式有:
tar格式,归档文件,简单的将文件整合到一个文件内,无压缩效果
gzip格式,gzip压缩文件,不仅能整合到一个文件,同时有体积压缩效果
- tar命令
tar [-z -x -c -f -C] 参数…
-c:创建压缩文件
-v:查看压缩\解压过程
-x:解压模式
-f:指定压缩\解压的文件
-z:gzip模式
常见格式:tar格式压缩 -cvf gzip格式压缩 -zcvf
tar格式解压 -xvf gzip格式解压 -zxvf
-C:指定解压的路径
-z在选项组建议在开头,-f在选项组必须在尾部,-C单独使用
例:
将test1.txt,test2.txt压缩到test.tar.gz中
tar -zcvf test.tar.gz test1.txt test2.txt
解压到test文件中
tar -zxvf test1.tar.gz -C ./test/
- zip命令
zip [-r] 参数…
-r :压缩文件夹使用
例:zip -r test.zip test1 test2.txt
- unzip命令
unzip [-d] 参数
-d:指定解压到的目录
符号被用于取“变量”的值
取得环境变量的值就可以使用语法:$环境变量名 来取得
echo $PATH 取得环境变量PATH的值,通过echo输出
Linux环境变量可以有用户自行设置,分为:
临时设置,语法:export 变量名=变量值
永久生效:
针对当前用户生效,配置在当前用户的: ~/bashrc文件中
针对所有用户生效,配置在系统的: /etc/profile文件中
并通过语法:source配置文件,进行立刻生效,或重新登录FinalShell生效
加入自定义的命令搜索路径
例:export PATH=$PATH:自定义路径
45.压缩和解压缩
Linux系统常见压缩格式有:
tar格式,归档文件,简单的将文件整合到一个文件内,无压缩效果
gzip格式,gzip压缩文件,不仅能整合到一个文件,同时有体积压缩效果
- tar命令
tar [-z -x -c -f -C] 参数…
-c:创建压缩文件
-v:查看压缩\解压过程
-x:解压模式
-f:指定压缩\解压的文件
-z:gzip模式
常见格式:tar格式压缩 -cvf gzip格式压缩 -zcvf
tar格式解压 -xvf gzip格式解压 -zxvf
-C:指定解压的路径
-z在选项组建议在开头,-f在选项组必须在尾部,-C单独使用
例:
将test1.txt,test2.txt压缩到test.tar.gz中
tar -zcvf test.tar.gz test1.txt test2.txt
解压到test文件中
tar -zxvf test1.tar.gz -C ./test/
- zip命令
zip [-r] 参数…
-r :压缩文件夹使用
例:zip -r test.zip test1 test2.txt
- unzip命令
unzip [-d] 参数
-d:指定解压到的目录
例:unzip test.zip -d ./test/