Linux系统
计算机的体系结构
计算机由计算机硬件和计算机软件两个部分组成,其中计算机软件可分为系统软件和应用软件,系统软件就是操作系统,是其他软件的基础
主流的操作系统:Windows、Unix、Linux、Android、IOS
Linux系统的概述
Linux系统诞生于1991年,在Linux Torvalds上大学期间不满意MINIX操作系统并出于个人爱好设计和研发的。 Linux系统是一套免费、自由、开放源代码的类Unix操作系统,是一个基于Posix标准和多用于、多任务、支持多线程的操作系统。 Linux能运行主要的Unix工具软件、应用程序和网络协议,支持32位和64位硬件
- redhat:目前最大的Linux发行商,功能全面并且稳定,IBM收购
- Ubuntu:目前最好的Linux桌面版,拥有很人性化的l
安装虚拟机
Mac 系统
Mac 下安装 : https://www.jianshu.com/p/120ee4a6be9e
下载 Oracle VM VirtualBox 虚拟机
下载 CentOS7 系统
新建虚拟机 按照默认操作一路点击继续即可
配置操作系统 选择下载的.iso 文件
然后运行,安装系统即可,注意设置root密码和开启以太网.
安装完成重新启动后,需要一些配置:
执行ifconfig失效 需要安装net-tools 即可
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 中配置端口
然后在Mac终端输入: (root 是用户名,1111主机端口不要冲突就行了) 输入密码,就可以在mac终端进行操作了
ssh -l root -p 1111 127.0.0.1
注意 如果想要ftp连接虚拟机,下载ftp的软件推荐使用transmit 连接IP设置:127.0.0.1 端口:1111 ftp就可以连接虚拟机了.
通过桥接网卡的方式连接,更加方便 推荐
然后在虚拟机中执行:ifconfig 命令查看虚拟机的ip地址
Windows 系统
Linux 目录结构
Linux 命令
目录管理命令
查看目录
ls -al :显示全部的文件包括隐藏文件
ls -a : 显示当前路径所有的文件包括隐藏文件
ls -alh : 显示大小
ls -alhS : 按文件大小来排列 从大到小
ls -alhSr : 按文件大小来排列 从小到大
ls —help / man ls : 查看帮助手册
创建/删除目录
mkdir 目录名称
创建多个目录 mkdir -p c/d/e
rmdir 目录名称 删除单个目录
rmdir -p c/d/.. 删除多个目录 要依次删除子目录
文件操作命令
创建文件
touch 文件名 vi 文件名
编辑文件
通过vi 命令来编辑文件
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 (来源文件..) 目标文件
复制文件到某个文件目录下并且修改文件名
cp b.txt 目标文件/c.txt
复制一个文件目录到另一个文件目录下
cp -r 来源文件 目标文件
移动文件命令
mv 来源文件 目标文件
mv 命令还可以在移动的同时改变文件名,可以移动一个文件目录到另一个文件目录
删除文件命令
rm 文件 (只有rm不能删除目录) 弹出再次确认输入:y 就会删除
rm -f 文件 不在弹出询问,直接删除
rm -f ./* 删除该目录下的所有文件
rm -r 目录 弹出询问删除目录,如果目录有文件会依次弹出询问依次删除
rm -rf 目录 不弹出询问直接删除
如下操作命令:
查找命令
which 命令名 查找命令(只能查找命令不能查找文件或者目录) 如下所示:
whereis 文件/目录 只能从特定的目录查找
find 目录 [-name/user/size] 参数 find 可以查找到所有的匹配文件
find 模糊匹配查找
find / -name ‘pass*’
find / -name ‘pass??’ 一个?代表一个字符
find 查找某个用户
用户管理命令
who 查看当前登录用户
useradd [-g群组] 用户名 创建用户
passwd [用户名] 跟当前的用户/其他用户设置密码
eixt 从mac终端退出当前登录用户,需要重新登录,以zhangsan的用户名登录,可以看到创建的文件都在/home/zhangsan 的目录下,也就是说当前用户登录创建的文件等,都会在/home/用户 的目录中
退出zhangsan的用户,在以lisi的用户登录,然后切换到root目录,提示权限不够,lisi的用户并没有加入root群组自然不能访问root目录
在上述步骤中我们创建的用户wangwu 加入了root群组
useradd -g root wangwu
用wangwu在登录,看能否切换到root目录中,如下命令,是可以切换到root用户的,但是wangwu的用户无法在root目录中创建文件、删除文件、修改文件等,只有查看root的权限
同样该用户也无法创建用户
创建用户群组
groups [用户名] 查看群组
groupadd 群组名 创建群组
groupdel 群组名 删除群组
usermod [-g 群组名] 用户名 用户群组修改
userdel [-r] 用户名 -r 会删除该用户在/home路径下的创建的用户目录,如下 在删除张三的时候没有删除家目录,可以通过 rm -rf /home/zhangsan 进行删除
groupdel 群组名 删除群组
权限管理命令
权限的作用
如下图所示:在开头的字符 d:对应这一个目录; -:对应着一个文件; l:对应这个一个连接
权限、角色的设置
下面我们来演示一个用户权限的设置,在root用户下创建两个用户:user001 user002
然后在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 提示权限不够
我们来看一下home目录的权限设置
ls -l /
如下图:home目录的所有者root:rwx 所属组:r-x 可读可执行 而其他用户的权限:r-x 只能可读可执行
root 在root用户下创建 workspace01 目录
user001 然后可以在user001中看到这个目录创建了
在看一下目录的权限:workspace001 目录 只有root可以有写操作
root 在root下面修改权限只修改其他用户权限为 7 rwx
user001 然后在user001 的workspace01 中进行写操作,写入成功了
然后查看1.txt的权限:ll
可以看到1.txt对于其他用户只有读的权限
我们在1.txt中写入一些数据
user002 然后在user002中可以看到1.txt,并且可以看到文件的内容
但是输入 vi 1.txt 可以进入,但是不能够保存
user001 修改1.txt权限
user002 对1.txt再次执行写操作,就可以写入成功
user001 在user001 中我们在创建一个文件2.txt,这个文件我们自然所属组user001的用户才能够执行写操作
root 修改user002 的所属组为user001
user002 重启user002,可以看到user002 现在所属组为user001
对2.txt执行写操作
这个时候,只要在user001用户下创建的文件,那么user002 都可以会写的操作
root 修改所属者 和 所属组
chown 用户名 文件/目录
chgrp 用户名 文件/目录
chown 所属者:所属组 文件/目录 同时修改所属者和所属组
chown -R 所属者:所属组 目录 修改这个目录包括目录下的文件的所属者和所属组
压缩和解压缩
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!
定义变量
#!/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