Linux详解

目录结构

Linux是没有盘符的概念的 只有一个根目录/ 所有文件都在他下面
在Linux中,路径之间的层级关系使用:/来表示
在windows中 路径之间的层级关系使用:\来表示
在这里插入图片描述
在这里插入图片描述

基本命令

ls命令

ls [-a -l -h] [linux路径]

用于列出当前目录下的内容【等同于windows下的双击目录会列出当前目录下的值】

Linux系统的命令行终端在启动的时候会默认加载:
当前登录用户的HOME目录作为当前工作目录,所以ls命令列出的是HOME目录的内容

HOME目录:每个Linux操作用户在linu系统的个人账户目录,路径在:/home/用户名上面的是root用户 则home目录是:/home/root


ls 参数
添加linux路径表示打开指定路径下的
例如打开/ 根目录下
ls /
添加-a 参数
ls -a
表示列出所有文件包括隐藏的文件/文件夹【前面带有.的就是隐藏文件/文件夹】

添加-l 参数
代表以列表(竖向排列)的形式展示内容 并展示更多信息【权限组等】
ls  -l

添加 -h参数
-h表示以易于阅读的形式 列出文件的大小 如 k 、m、g 【但是必须要搭配-l一起使用】
ls -l -h

也可以参数组合一起使用 都表示同时应用-l 和-a的功能
ls -l-a
ls -la
ls -al


# cd命令和pwd命令

cd..:返回上级目录


目录切换:

cd xxx:进的是根目录下的目录


如果已经在跟目录下的home 要求usr 目录使用cd usr 是会报错的!!!
必须先返回上级目录:cd.. /usr

pwd:显示当前所在的目录


```java
相对路径: 以当前目录为起点 路径无需以 / 开头
绝对路径:以根目录为起点,路径以 / 为起点

特殊路径符

. 表示当前目录,比如 cd ./desc 表示切换到当前目录下的desc目录
… 表示上一级目录 比如 cd … 即可切换到上一级目录
~ 表示HOME目录 比如 cd ~ 即可切换到HOME目录



## mkdir 命令

通过mkdir 来创建目录(文件夹)
  参数必填,表示Linux路径,即要创建的文件夹的路径
   -p 可填  表示自动创建不存在的父类目录,适用于创建连续多层级的目录

mkdir [-p] linux路径

例如:
mkdir ~ test // home目录下创建test文件

-p 参数 【连续创建多个层级文件夹】

mkdir -p test1/test1/test3

touch 创建文件

语法:touch Linux路径
cat 命令 

查看文件内容

cat Linux路径

cp命令

复制文件夹【复制一个副本出来】

语法 cp [-r]   被复制的文件  要复制的地方

cp test.txt test2.txt
如果要复制文件夹 加 -r
cp -r ittest1 ittest2

mv 命令

语法:mv 被移动的文件 要移动到的位置

mv test.txt Desktop/ // 将test.txt 文件移动到Desktop文件夹中

rm 命令

删除文件
-r 选项用于删除文件夹【删除文件夹 不加这个会报错】
-f 表示强制删除(不会弹出确认信息)【普通用户删除内容不会弹窗提醒,只要root管理员会一般用户用不到-f】
参数1,参数2 表示要删除的文件或文件夹 按照空格隔开

语法 rm [-r  -f ] 参数1 参数2.....
通配符
rm 命令支持通配符 *  用来做模糊匹配
test * 表示任何以test 开头的内容
*test  表示匹配任何以test结尾的内容
*test* 表示匹配任何包含test的内容

grep 命令

可以通过grep 命令 从文件中通过关键字过滤查看文件
参数: -n :可选 表示输出匹配的关键字出现在第几行
关键字:必填 表示过滤的关键字
文件路径:必填 表示要进行查询(过滤)的文件路径

语法:grep [ -n ] 关键字 文件路径

红色表示出现的位置

WC 命令

【word count】
用来进行统计文件的行数和单词的数量等

语法:wc [ -c  -m -l -w ] 文件路径

参数:
-c : 统计 bytes数量
-m : 统计字符的数量
-l: 统计行数
-w: 统计单词数量
文件路径: 被统计的文件

which命令

Linux命令其实就是一个二进制可执行程序,可以通过which命令去查看所使用的一系列命令的程序文件在哪里

语法:which 要查找的命令

find命令

按造文件名查找文件

语法:find   起始路径   -name "被查找的文件名"

find / -name test // 从根目录/开发检索

也可以使用通配符 来做模糊查询
test * 表示查找任何以test 开头的内容
*test 表示查找匹配任何以test结尾的内容
test 表示查找匹配任何包含test的内容

find命令

按文件大小查找文件

    • 表示大于和小于
      n 表示大小数字
      kMG表示 大小单位 k()小写字母表示kb; M表示MB;G表示GB
语法:find 起始路径   -size +|-n[kMG]

例如 查找小于10kb的文件 find / -size -10k
查找大于100Mb的文件:find / -size +100M
查找大于1GB 的文件:find / -size+1G

echo命令

可以使用echo命令在命令行输出指定的内容

语法:echo  输出的内容      // 复杂的可以用""包围,例如带有空格或\等特殊符号

反引号 `

被反引号包围的会被作为命令执行,而非普通字符

语法  echo `xx `

重定向符

将左侧的命令的结果覆盖写入到符号右侧的文件中

将左侧的命令的结果,追加到符号右侧指定的文件中

tail命令

可以查看文件尾部的内容,跟踪文件的最新更改

-f : 表示持续跟踪
-num 表示查看尾部多少行 不填默认10行

语法: tail  [-f -num]  Linux 路径   

权限

root用户(超级管理员)
root用户拥有最大的系统操作权限,而普通用户在很多地方的权限收到限值
普通用户权限: 一般在其HOME目录内不熟限值
一旦出了HOME目录,大多数情况下普通用户只有只读火绒执行的权限,无修改权限

su和exit命令

su命令就是用于账户切换的系统命令 来源单词: Switch User

  • 符号:表示是否在用户切换后加载环境变量 建议带上
    用户名:表示要切换的用户,可以省略 省略则表示切换到root下
    语法:su [-] [用户名]
    普通用户切换到其他用户需要输入密码 如切换到root用户
    root用户切换到其他用户 无需密码 直接切换
    exit:表示退回上一个用户,可以使用快捷键ctrl+d

sudo命令

当我们在使用普通用户时遇到一些没有权限时要切换root用户,但是长期使用root用户可能带来系统的损坏
我们可以使用sudo命令 为普通的命令授权 临时有root的权限
但是并不是所有的用户都有权利使用sudo 我们需要为普通用户认证才可以授权

语法:sudo  其他命令       // 这个命令临时被赋予了root授权

为普通用户配置sudo认证

进去root下 执行visudo命令  会自动打开/etc/sudoers 文件  在文件的最后添加:
用户名  ALL=(ALL)  NOPASSWD: ALL     // NOPASSWD: ALL 表示不用输入密码
wq 保存

如果把那个文件里那句话删除将会报以下错误:

用户和用户组

Linux系统中可以配置多个用户,配置多个用户组 用户可以加入多个用户组中

Linux中关于权限的观看级别有2个级别 分别是:
针对用户的权限控制
针对用户组的权限控制
比如:针对某个文件 可以控制用户的权限,也可以控制用户组的权限
其实就是 有一个文件 我运行你这个用户访问,也可以运行这个组里的用户访问

用户组管理

以下命令需要root用户下执行

创建用户组

语法:groupadd 用户组名

删除用户组

语法:groupdel 用户组名

用户管理

创建用户

-g : 指定用户的组,不使用-g表示会创建一个同名的组并加入这个组【指定的-g需要组已经存在】

  例如:不使用-g 你创建一个test用户 那么也会创建一个test组 并把这个test用户放在test这个组里 

-d: 指定用户HOME路径 不指定 HOME目录默认在 /home/用户名
useradd [ -g -d] 用户名

删除用户

-r: 删除用户时删除的HOME目录,不使用-r 表示删除用户时保留HOME目录

userdel [-r] 用户名

查看用户组

参数: 用户名,被查看的用户,如果不添加查看自身

id [用户名]

修改用户所属组

 将指定用户加入用户组中
usermod -aG 用户组  用户名 

getent命令

查看当前系统有哪些用户

语法:getent passwd

输出的格式(7份信息):
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录: 执行终端(默认bash)

查看系统有哪些组

语法:getent group

输出结果:

组名称:组认证(显示为x):ID

权限信息

通过ls -l 可以以列表的形式查看内容,并显示权限细节
从左到右分别是:表示文件的权限控制信息,文件的所属用户,文件的所属用户组

权限细节

举例:drwxr-xr-x
d:表示是文件夹
所属用户的权限是rwx
所属用户组权限是rx没有w权限 (-表示无此权限)
其他用户的权限是rx 无w权限
表示这个文件夹Desktop 所属的用户itheima 对这个文件有rwx 权限,属于itheima这个用户组里的有rx权限,其他用户是rx权限

rwx
r代表读权限
为代表写权限
x代表执行权限
对于文件和文件夹rwx有不同的含义:
r: 对于文件表示可以查看文件内容,对于文件夹 表示可以查看文件夹的内容如ls命令
w:对于文件表示可以修改此而文件,对于文件夹表示可以在文件夹内创建、删除、改名等操作
x: 对于文件表示可以将文件作为程序执行,对于文件夹表示可以将工作目录更改为此文件夹 即cd进入
chmod命令
修改权限信息
-R:对文件夹内的全部内容应用同样的操作【里面的文件也会变成一样设置的权限】

语法:chmod [-R] 权限 文件或文件夹

例如:chmod u=rwx, g=rx,o=x hello.txt
上面是将文件hello.txt 权限修改为rwxr-x–x
其中u:表示用户所属权限,g表示用户组权限,o表示 other其他用户的权限

例如:chmod -R u=rwx, g=rx,o=x test
上面是将文件夹test以及文件夹内部权限设置为rwxr-x–x

权限的数字序号

语法: chmod 权限序号  文件或文件夹名

权限可以使用3位数字来代表 第一位表示用户权限 第二位表示用户组的权限,第三位表示其他用户权限

其中数字细节为: r记为4 w记为2 x 记为1
0:代表无权限 即: - - -
1: 代表仅x权限 即 :- - x
2: 代表仅w权限 即:- w -
3: 代表有w和x权限 即:-wx
4: 仅有r权限 即 r - -
5: 有r和x权限 即:r-x
6: 有r和w权限 即:rw-
7:代表所有权限 即:rwx
所以751 表示:rwx(7) r-x(5) - -x(1)

chown 命令

修改文件或文件夹的所属用户和用户组
ps: 普通用户无法修改所属为其他用户或组 所有次命令只适用于root用户
参数:

-R 对文件夹内部所有文件都应用相同规则【里面的文件夹都修改所属用户和用户组】
用户:修改所属用户
用户组:修改所属用户组
:用于分隔用户和用户组
语法:chown [-R ] [用户] [:] [用户组] 文件或文件夹
例如:
chown root hello.txt //将hello.txt所属用户修改为root
chown :root hello.txt //将hello.txt所属用户组修改为root
chown root: itman hello.txt // 将hello.txt 所属用户修改为root 所属组修改为itman
chown -R root: itman test // 将test文件夹的所属用户修改为root 所属组修改为itman 并且对文件夹里的所有内容都应用

快捷键

ctrl+c 强制停止
ctrl+d 退出或登出
history:历史命令搜索

软件安装

操作系统安装软件一般分为下载安装包安装和系统应用商店安装

yum命令

yum :RPM包软件管理器 用于自动化安装配置Linux软件 并可以自动解决依赖问题
ps: yum命令需要root权限,所以可以su 切换root 或使用sudo提权,并且yum需要联网
参数:

-y: 自动确认 无需手动确认安装或卸载
install: 安装
remove: 卸载
search: 搜索

语法:yum [-y] [install | remove | search] 软件名称
例如:

yum [-y] search wget //查找wget
yum [-y] remove wget // 删除wget
yum [-y] install wget //安装wget

没有加- y 会提示是否安装

apt命令

前面我们学习的各类Linux命令都是通用的 但是软件安装上CentOS系统和ubuntu是使用的不同的包管理器
CentOS 使用的是yum管理器 ubuntu使用的是apt管理器
同样和yum一致 需要root权限

语法: apt [-y] [install | remove | search] 软件名称

systemctl命令

Linux系统很多软件均支持和使用systemctl命令控制;启动、停止、开机自启
能够被isystemctl管理的软件 一般也称之为服务

status: 查看状态
enable:开启开机自启
dissable: 关闭开机自启

语法:systemctl start | stop | status | enable | disable 服务名

系统内置的服务比较多比如:

NetworkManager;主网络服务
network: 副网络服务
filewalld: 防火墙服务
ssh服务 (FinalShell 远程登录Linux就是使用的这个服务)
例如:systemctl status firewalld // 查看firewalld的状态

除了内置的服务外 部分第三方软件安装后也可以使用systemctl 进行控制

软链接

在系统中创建软链接 可以将文件或者文件夹链接到其他位置类似于windows系统中的快捷方式
本体不变 只是加了一个快捷方式

参数-s: 创建软连接
参数1:被链接的文件和文件夹
参数2 :要链接的目的地
语法:ln -s 参数1 参数2
例如:ln -s /etc/yum.conf ~/yum.conf

查看日期时间

date命令
通过date命令可以命令中查看系统的时间
参数:-d 按照给定的字符串显示日期,一般用于日期计算
格式化字符串:通过特定的字符串标记 来显示的日期格式

语法:date [-d] [+格式化字符串]

修改Linux的时区

当我们使用date查看时间时 会发现date查看的时间是不准确的,因为不是默认的中国东八区

使用root权限下 修改市区为东八区

将系统自带的localtime文件删除 并将 /user/share/zoneinfo/Asiz/Shanghai文件链接为localtime文件即可
rm - f /etc/localtime
sudo ln -s /user/share/zoneinfo/Asiz/Shanghai /etc/localtime

ip地址

可以通过ifconfig 查看本机的ipd地址 如无法使用ifconfig的可以使用

yum  -y install net-tools

ens33:主网卡【centos系统的都叫ens33】
inet: ip地址
lo: 本地回环的网卡
virbr0: 虚拟机专用网卡

主机名

每一台电脑处理对外的联络地址外还可以有个名字称之为主机名

查看Linux系统主机名

hostname

修改主机名

【需要root权限】

hostnamectl set -hostname 主机名

域名解析

ip地址难以记忆 可是使用主机名或指责字符地址去代替数字化的ip地址
先去查看本机的记录(私人地址本) 再去联网去DNS服务器询问

固定ip

当我们使用的是虚拟机的Linux时 其中ip地址是通过DHCP服务获取的

DHCP:动态获取ip地址,即每次重启设备都会获取一次,这样可能导致ip地址频繁变更
步骤:1.在VMware Workstation 中配置ip地址网关和网段(ip地址的范围)
2.在Linux系统=手动修改配置文件 固定ip

ping 命令

可以通过ping命令检查指定的网络服务器 是否可联调状态
-c: 检查的次数 不使用则表示无限次持续检查
ip 或主机名 被检查的服务器的ip地址或者主机地址
语法:ping [-c num] ip或主机名

wget命令

wget是一个非交互式的文件下载器。可以在命令行内下载网络文件
-b : 可选 后台下载【不会显示进度】 会将日志写到当前目录的wget-log文件
url: 下载的链接

语法:wget [-b] url

如果下载到一半就停止 那么ls 后也是会出现那个文件都会存在

curl 可以发送http网络请求 可用于下载文件 获取信息等
-O: 用于下载文件 当uer是下载链接是可以使用次选项进行保存文件
url: 要发起请求的网络地址

语法:curl [-O] url

端口

Linux系统是一个超大号的小区 可以支持65535个端口 这65535个端口分为3类进行使用

1.公认端口: 1~1023 通常用于一些系统内置的或者知名的程序的预留使用例如 SSH服务的22端口 HTTPS服务的443端口 非特殊不要占用
2.注册端口:1024~49151 通常可以随意使用,用于松绑一些程序
3.动态端口:495151~65535 通常不会绑定程序,而是当程序对外进行网络连接时用于临时使用

查看端口占用

使用nmap命令,安装nmap: yum -y install nmap

语法:nmap 被查看的ip地址

例如 nmap 127.0.0.1 查看本机端口的被占用情况

查看端口被占

可以通过netstat命令查看指定端口的占用情况
安装netstat: yum -y install net-tools

语法: netstat -anp | grep 端口号

也可以: netstat -anp | grep 进程号

进程

程序在操作系统中运行 是被操作系统所管理的
为了管理运行的程序每一个程序在运行的时候 便被操作系统注册为系统的一个进程 并且为每一个进程所分配一个独有的:进程id

查看进程

可以通过ps 命令查看Linux系统中的进程信息
参数:-e 显示出全部的进程
-f 以完全格式化的形式展示信息(展示全部信息)

语法:ps [-e -f ]   // 固定用法:ps -ef

格式:
UID:进程所属的用户id
PID:进程的进程号id
PPID:进程的父id
C:此进程的cpu占用率(百分比)
STIME: 进程的启动时间
TTY: 启动此进程的终端序号 如显示? 表示非终端启动
TIME:进程占用CPU的时间
CMD:进程的启动路径或者命令

查看指定进程

语法:ps -ef | grep 进程号

关闭进程

9: 表示强制关闭进程 不使用则向进程发送信号要求其关闭 但是否关闭要看进程自身的处理机制

语法:kill [ -9 ] 进程id

例如: kill -9 2339

主机状态监控

查看系统资源占用
通过top命令查看cpu、内存的使用情况 类似于windows的任务管理器【默认每5秒刷新一次】

语法:top

cpu 中的us: 用户自己起的进程cpu使用率 sy 是系统自己的进程cpu使用率

top 命令选项
-p: 只显示某个进程的信息
-d: 设置刷新时间 默认5s 例如:top -d 3
-c: 显示产生进程的完整命令 默认是进程名 top -c
-n: 指定刷新次数 比如 top -n 3 表示刷新3次后退出
-b: 以非交互非全屏 模式运行
-i:不显示任何闲置或无用的进程
-u:查找特定用户启动的进程

查看磁盘信息

使用df命令 可以查看磁盘的使用情况

语法:df[ -h ]    // -h 以更加人性化的单位显示

可以使用iostat 查看CPU、磁盘的相关信息
-x:显示更多信息
num1: 刷新间隔
num2: 刷新几次

语法: iostat [-x] [num1][num2]

查看网络状态

可以使用sar命令查看网络的相关统计
-n: 查看网络 DEV 表示网络端口
num1: 刷新间隔 不填就1次
num2: 刷新几次 不填就一次

语法:sar -n DEV num1 num2

环境变量

在讲解which命令时知道其实一系列的命令就是一个个的可执行程序
比如:cd 命令的本体就是:/user/bin/cd 这个程序文件
那么为什么无论在什么工作目录下都能执行/user/bin/cd 这个程序文件呢?是因为环境变量的作用

环境变量是操作系统在运行时 记录的一些关键性信息用以辅助系统的运行
在Linux中env命令即可查看当前系统中的环境变量
环境变量都是keyValue结构的

环境变量 PATH

 环境变量 PATH里面记录了系统执行命令的搜索路径

那么为什么无论在什么工作目录下都能执行/user/bin/cd 这个程序文件呢?是因为借助环境变量中的PATH这个项目的值来实现的
PATH 记录了系统执行任何命令的搜索路径(路径之间以:隔开)

当我们使用cd命令时就会去PATH里面搜索有没有user/bin/cd这个文件

$ 符号

Linux中 符 号 用 于 取 变 量 的 值 环 境 变 量 记 录 的 信 息 除 了 给 操 作 系 统 自 己 使 用 外 如 果 我 们 相 使 用 也 可 以 使 用 通 过 符号用于取变量的值 环境变量记录的信息 除了给操作系统自己使用外 如果我们相使用也可以使用 通过 使使使符号取环境变量的值

语法:$ 环境变量名     // 比如:echo $ PATH  通过echo输出PATH这个环境变量的值

当和其他内容混合在一起时可以通过{}来标注取的变量是谁【也就是取出来的值再拼接 下面的是指取PATH变量里的值最后再拼接ABC】

设置环境变量

Linux 环境变量可以用户自行设置 其中分为:

临时设置

【重新登录就失效】

语法:export 变量名=变量值

永久生效

针对当前用户生效:那么就配置在当前用户的 ~/bashrc文件中
vi ~/bashrc // 进入/bashrc文件
添加:export 变量名=变量值
source ./bashrc //立刻生效
针对所有用户生效:配置在系统的 /etc/profile文件中
vi /etc/profile // 进入 /etc/profile文件
添加:export 变量名=变量值
source /etc/profile //立刻生效
并且通过语法:source 配置文件 进行立刻生效 或重新登录

自定义环境变量PATH

环境变量 PATH里面记录了系统执行命令的搜索路径,这些搜索路径我们可以自行添加到PATH中去
这个时候需要到全局中进行修改

但是切换目录之后执行不了 那么就可以配置path变量

vi /etc/profile // 进入 /etc/profile文件
添加:export PATH=$PATH:/root/myenv
source /etc/profile //立刻生效

上传下载

rz sz命令

通过一些客户端软件可以实现拖拽上传下载也可以使用rz sz命令进行文件传输
rz sz命令需要安装

安装语法:yum -y install lrzsz

rz命令

进行上传【速度慢】

语法:rz

输入rz 后会弹出一个框框只要找到你要上传的文件 双击即可

sz 命令

实现下载
【下载到桌面】

语法 sz 要下载的文件   

压缩

压缩格式:
zip: Linux、windows\MacOS常用
7zip: Windows系统常用
rar: Windows系统常用
tar: Linux、Macos常用
gzip: Linux、MacOS 常用
tar命令压缩文件
Linux和Mac系统常用的有2种压缩格式 后缀分别是 .tar 和 .gz
.tar 称为tarball 归档文件 即简单的将文件组装到一个.tar的文件内 并么有太多文件体积的减少,仅仅是简单的封装
.gz 使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
参数解释:
-c 创建压缩文件 用于压缩模式
-v 显示压缩,解压过程,用于查看进度
-x 解压模式
-f 要创建的文件 或解压的文件 -f必须在所有选项的最后一个位置
-z: gzip 模式 不使用-z就是普通的tar格式
-C 选择解压的目的地用于解压模式【指定解压到指定目录】

语法:tar [-c -v -x -f -z -C] 参数1 参数2 参数3

例如: tar -cvf test.tar 1txt 2txt 3txt

压缩完后;
会发现使用tar 格式并没有体积压缩

使用为gzip 模式压缩

   tar -zcvf test.tar 1txt  2txt 3txt

zip命令压缩文件

可以使用zip命令 压缩文件为zip 压缩包
-r :被压缩的包含文件夹的时候 使用-r 和rm cp等命令-r效果一致

语法:zip [-r] 参数1  参数2 ....参数N
例如:
zip test.zip a.txt b.txt c.txt     // 将a.txt b.txt c.txt 压缩熬test.zip文件内
zip test.zip test a.txt b.txt c.txt     // 将test文件夹 和a.txt b.txt c.txt 压缩熬test.zip文件内

解压

ar解压常见组合:
tar -xvf test.tar // 解压test.tar到当前目录
tar -xvf test.tar -C /home/ithe // 解压test.tar到指定目录目录
tar -zxvf test.tar.gz -C /home/itheeee //以Gzip模式解压test.tar.gz并将文件解压到指定目录

unzip 命令解压

d:指定要解压去的位置 和tar的-C选项相似用法
参数: 被解压的zip压缩包

语法:unzip [-d] 参数
例如:
unzip test.zip  //将test.zip解压到当前目录
unzip test.zip -d /home/ith  //将test.zip解压到/home/ith目录下
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值