Linux系统

计算机的体系结构

计算机由计算机硬件和计算机软件两个部分组成,其中计算机软件可分为系统软件和应用软件,系统软件就是操作系统,是其他软件的基础
image.png
主流的操作系统:Windows、Unix、Linux、Android、IOS

Linux系统的概述

Linux系统诞生于1991年,在Linux Torvalds上大学期间不满意MINIX操作系统并出于个人爱好设计和研发的。 Linux系统是一套免费、自由、开放源代码的类Unix操作系统,是一个基于Posix标准和多用于、多任务、支持多线程的操作系统。 Linux能运行主要的Unix工具软件、应用程序和网络协议,支持32位和64位硬件

image.png

  • redhat:目前最大的Linux发行商,功能全面并且稳定,IBM收购
  • Ubuntu:目前最好的Linux桌面版,拥有很人性化的l

安装虚拟机

Mac 系统

Mac 下安装 : https://www.jianshu.com/p/120ee4a6be9e
下载 Oracle VM VirtualBox 虚拟机
下载 CentOS7 系统

新建虚拟机 按照默认操作一路点击继续即可

image.png

配置操作系统 选择下载的.iso 文件
image.png

然后运行,安装系统即可,注意设置root密码和开启以太网.

安装完成重新启动后,需要一些配置:

执行ifconfig失效 需要安装net-tools 即可

  1. yum install net-tools

Mac 终端连接虚拟机
在 CentOS 中装上 wget 先。

yum -y install wget

安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

虚拟机开启22端口
VirtualBox完成配置后,还要确认虚拟机中对应的SSH端口已经开启。在虚拟机中编辑以下文件,打开 Port 22 注释。

vi /etc/ssh/sshd_config

vim : 按 i 操作配置, 配置完成保存退出 esc -> :wq

然后在VirtualBox 中配置端口

image.png

image.png

然后在Mac终端输入: (root 是用户名,1111主机端口不要冲突就行了) 输入密码,就可以在mac终端进行操作了

ssh -l root -p 1111 127.0.0.1

注意 如果想要ftp连接虚拟机,下载ftp的软件推荐使用transmit 连接IP设置:127.0.0.1 端口:1111 ftp就可以连接虚拟机了.

通过桥接网卡的方式连接,更加方便 推荐
image.png

然后在虚拟机中执行:ifconfig 命令查看虚拟机的ip地址

然后在mac终端:ssh root@虚拟机ip地址 即可

Windows 系统

VMware 和Linux操作系统安装教程.pdf

Linux 目录结构

image.png

image.png

Linux 命令

目录管理命令

查看目录

image.png

ls -al :显示全部的文件包括隐藏文件
image.png

ls -a : 显示当前路径所有的文件包括隐藏文件
image.png

ls -alh : 显示大小
image.png

ls -alhS : 按文件大小来排列 从大到小
image.png

ls -alhSr : 按文件大小来排列 从小到大
image.png

ls —help / man ls : 查看帮助手册

cd ~ : 回到root目录
cd /: 回到根目录

创建/删除目录

mkdir 目录名称
image.png

创建多个目录 mkdir -p c/d/e
image.png

rmdir 目录名称 删除单个目录
rmdir -p c/d/.. 删除多个目录 要依次删除子目录
image.png

文件操作命令

创建文件

touch 文件名 vi 文件名
image.png

编辑文件

通过vi 命令来编辑文件

image.png

vi 文件名

编辑模式 描述
a 在光标后插入
i 在光标前插入
o 在当前行之下插入
A 在当前行之后插入
I 在当前行首插入
O 在上一行插入

编辑完毕后按:esc 进入命令模式

命令模式
dd 剪切
yy 复制
p 下一行粘贴
P 上一行粘贴
/匹配的词 查找当前文件的匹配的词
:q 退出
:wq 保存退出
:q! 不保存退出
:set nu 显示行号

查看文件

cat [-n] 文件名 显示文件的全部(-n 显示行号)
more 文件名 不全部显示,一行行显示
less 文件名 上下/翻页查看文件
head 文件名 查看文件头几行
tail 文件名 查看文件末几行

目录及文件管理命令

复制文件命令

复制单个或多个文件到一个文件目录下
cp (来源文件..) 目标文件
image.png

image.png

复制文件到某个文件目录下并且修改文件名
cp b.txt 目标文件/c.txt
image.png

复制一个文件目录到另一个文件目录下
cp -r 来源文件 目标文件
image.png

移动文件命令

mv 来源文件 目标文件
image.png

mv 命令还可以在移动的同时改变文件名,可以移动一个文件目录到另一个文件目录

image.png

删除文件命令

rm 文件 (只有rm不能删除目录) 弹出再次确认输入:y 就会删除
rm -f 文件 不在弹出询问,直接删除
rm -f ./* 删除该目录下的所有文件

rm -r 目录 弹出询问删除目录,如果目录有文件会依次弹出询问依次删除
rm -rf 目录 不弹出询问直接删除

如下操作命令:

image.png

查找命令

which 命令名 查找命令(只能查找命令不能查找文件或者目录) 如下所示:
image.png

whereis 文件/目录 只能从特定的目录查找
image.png

image.png

find 目录 [-name/user/size] 参数 find 可以查找到所有的匹配文件
image.png

find 模糊匹配查找
find / -name ‘pass*’

image.png

find / -name ‘pass??’ 一个?代表一个字符
image.png

find 查找某个用户

image.png
image.png

用户管理命令

who 查看当前登录用户
image.png

useradd [-g群组] 用户名 创建用户
image.png

passwd [用户名] 跟当前的用户/其他用户设置密码
image.png

eixt 从mac终端退出当前登录用户,需要重新登录,以zhangsan的用户名登录,可以看到创建的文件都在/home/zhangsan 的目录下,也就是说当前用户登录创建的文件等,都会在/home/用户 的目录中
image.png

退出zhangsan的用户,在以lisi的用户登录,然后切换到root目录,提示权限不够,lisi的用户并没有加入root群组自然不能访问root目录

image.png

在上述步骤中我们创建的用户wangwu 加入了root群组
useradd -g root wangwu
用wangwu在登录,看能否切换到root目录中,如下命令,是可以切换到root用户的,但是wangwu的用户无法在root目录中创建文件、删除文件、修改文件等,只有查看root的权限
image.png
image.png
image.png

同样该用户也无法创建用户

image.png

创建用户群组
groups [用户名] 查看群组
groupadd 群组名 创建群组
groupdel 群组名 删除群组
usermod [-g 群组名] 用户名 用户群组修改

image.png
userdel [-r] 用户名 -r 会删除该用户在/home路径下的创建的用户目录,如下 在删除张三的时候没有删除家目录,可以通过 rm -rf /home/zhangsan 进行删除
groupdel 群组名 删除群组
image.png

权限管理命令

权限的作用

image.png

image.png

如下图所示:在开头的字符 d:对应这一个目录; -:对应着一个文件; l:对应这个一个连接

image.png

权限、角色的设置

image.png

image.png

image.png

下面我们来演示一个用户权限的设置,在root用户下创建两个用户:user001 user002
image.png

然后在mac打开多个终端分别使用user001和user002登录

ssh -l user001 -p 1111 127.0.0.1
ssh -l user002 -p 1111 127.0.0.1

user001
在user001下,在home目录中创建一个文件夹workspace01 提示权限不够

image.png

我们来看一下home目录的权限设置

ls -l /

如下图:home目录的所有者root:rwx 所属组:r-x 可读可执行 而其他用户的权限:r-x 只能可读可执行
image.png

root 在root用户下创建 workspace01 目录
image.png
user001 然后可以在user001中看到这个目录创建了
image.png
在看一下目录的权限:workspace001 目录 只有root可以有写操作
image.png

root 在root下面修改权限只修改其他用户权限为 7 rwx

image.png

user001 然后在user001 的workspace01 中进行写操作,写入成功了
image.png
然后查看1.txt的权限:ll
可以看到1.txt对于其他用户只有读的权限
image.png

我们在1.txt中写入一些数据
image.png

user002 然后在user002中可以看到1.txt,并且可以看到文件的内容
image.png

但是输入 vi 1.txt 可以进入,但是不能够保存
image.png

user001 修改1.txt权限
image.png

user002 对1.txt再次执行写操作,就可以写入成功
image.png

user001 在user001 中我们在创建一个文件2.txt,这个文件我们自然所属组user001的用户才能够执行写操作
image.png

root 修改user002 的所属组为user001
image.png

user002 重启user002,可以看到user002 现在所属组为user001
image.png

对2.txt执行写操作
image.png
这个时候,只要在user001用户下创建的文件,那么user002 都可以会写的操作
root 修改所属者 和 所属组
chown 用户名 文件/目录
chgrp 用户名 文件/目录
image.png

chown 所属者:所属组 文件/目录 同时修改所属者和所属组
image.png

chown -R 所属者:所属组 目录 修改这个目录包括目录下的文件的所属者和所属组
image.png

压缩和解压缩

image.png

image.png

image.png

image.png

Shell 编程

  • 使用vi工具创建xxx.sh文件

    #!/bin/bash
    echo hello world!
    
  • 执行.sh文件

    [prim@localhost shell]$ /bin/bash hello.sh
    hello world!
    [prim@localhost shell]$ bash hello.sh
    hello world!
    [prim@localhost shell]$ sh hello.sh
    hello world!
    [prim@localhost shell]$ chmod u+x hello.sh
    [prim@localhost shell]$ ll
    total 4
    -rwxrw-r--. 1 prim prim 30 Dec 29 16:04 hello.sh
    [prim@localhost shell]$ ./hello.sh
    hello world!
    
  • 定义变量

image.png

#!/bin/bash
name=zhangfei #定义一个名字为name的变量 初始值为zhangfei
echo $name
unset name # 撤销name的定义
echo $name # 打印变量name的值
show='My Self!' #值之间有空格必须使用单引号 
echo $show
show2="My Self!$show" #打印其他的变量必须使用双引号
echo $show2