一、课程内容
二、Linux应用领域
一、Linux使用在哪些地方
- Linux最强应用:服务器
三、Linux概述
三、Linux和Unix的关系
五、VM和Linux的安装
- 基本说明
- 学习Linux需要一个环境,我们需要创建一个虚拟机,然后再虚拟机上安装一个Centos系统来学习
- 先安装virtual machine 15.5
- 再安装Linux(CentOS 7.6/centOS8.1)
- 原理示意图(画)
- vmware15.5下载
官方地址: https://www.vmware.com/cn.html
其它地址: https://www.nocmd.com/windows/740.html
- VM安装步骤
- 去BIOS里修改设置开启虚拟化设备支持(F2,F10)
- 安装虚拟机软件(VM15.5)
- 在BOIS开启CPU虚拟化支持启动BIOS的虚拟化设置 | 开启CPU虚拟化支持-百度经验
- 再安装
六、centOS7.6安装
- Centos下载地址
- CentOS-7-x86_64-DVD-1810.iso CentOS 7.6 DVD版4G(目前主流的生产环境)http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
- CentOS 8.1 DVD版 8G(未来的主流.)https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/
- CentOS安装的步骤
- 创建虚拟机【演示】
- 开始安装系统(CentOS7.6)的步骤【演示】提示生成复杂代码:https://suijimimashengcheng.51240.com/
- CentOS安装难点-网络链接方式理解【示意图】
七、网络连接的三种方式
- 桥接模式:虚拟系统可以和外部系统通讯,但容易造成IP冲突,因为例子中192.168.0网段的ip总共就255个,如果都用192.168.0的网段,一旦数量过多,就容易造成重复
- 张三的虚拟系统Linux的网关设置成192.168.0可以和李四和王五通信
- NAT模式:网络地址转化模式,虚拟地址可以和外部系统通讯,不造成IP冲突
- 王五的主机使用NAT模式,此时虚拟网络Linux设置为192.168.100.88,此时王五主机上会生成一个对应的虚拟的网卡,范围也是192.168.100;例如此时是192.168.100.99
- 此时王五主机所产生的虚拟网卡192.168.100.99和虚拟系统Linux192.168.100.88是互通的
- 虚拟系统Linux192.168.100.88通过王五主机的ip192.168.0.50的代理找到外部教室网络
- NAT是网络地址转换,相当于给你虚拟机虚拟一个ip,然后在需要访问外部的时候,自动转换成你母机ip去访问外部
- 主机模式 :独立的系统
八、虚拟机克隆
如果已经安装了一台Linux操作系统,还想要更多,无需重新安装,只需要克隆即可
- 方式一:直接拷贝一份安装好的虚拟机文件
- 方式二:使用vmware的克隆操作;注意:克隆时,需要先关闭Linux系统
- 右键虚拟机--管理--克隆
- 选克隆自:虚拟机当前状态
- 选创建完整克隆
九、虚拟机快照
如果你在使用虚拟机系统的时候(比如Linux),你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware也提供了这样的功能,就叫快照管理
- 应用实例
- 安装好系统以后,先做一个快照A
- 进入到系统后,创建一个文件夹,再保存一个快照B
- 回到系统刚刚安装好的状态,即 快照A
- 试试看,是否还能再次回到快照B
- 右键虚拟机--快照--拍摄快照--给快照命名和添加备注
- 再桌面上新建一个文件夹--任意命名
- 依次做三次快照操作
- 右键虚拟机--选择快照管理--点击要回到的某一次,再点击右下角的转到,就可回到第一次快照的地方
- 现在回到状态B,z在状态B创建一个hello3文件夹,且拍一个快照,命名为快照D,就说是下图的情况
十、虚拟机迁移和删除
虚拟机安装好了,本质就是文件(放在文件夹内的),因此虚拟系统的潜移很方便,可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外位置使用,删除也很简单,用vmware进行移除,再点击菜单-->从磁盘删除即可,或者直接手动删除虚拟系统对应的文件夹即可,
演示:把前面克隆的系统进行迁移和删除
- 先在vnware处右键选择移除,但只是移除了目录
- 再到文件目录处右键选择删除,才是真正的移除
十一、vmtools
一、安装vmtools
- 介绍
- vmtools安装后,可以让我们在windows下更好的管理vm虚拟机
- 可以设置windows和centos的共享文件
- 示例
- 主机下的D盘(举例)中有一个共享文件夹
- 主机和虚拟系统Linux可以对共享文件夹中进行读写删除操作
- 在虚拟系统Linux向共享文件夹中的文件写了一份数据,主机也可以马上看到共享文件夹中的文件变化
- 安装vmtools的步骤
- 进入centos
- 先右键光驱弹出
- 左上角点击vm菜单的 虚拟机 ->重新安装 vmware tools(桌面会出现一个WMware Tools光盘,如果没有,右键取消安装,再重新安装)
- centos会出现一个vm的光盘,右键光盘打开;看到xx.tar.gz,
- 右键复制 xx.tar.gz,打开桌面主文件夹-->选择其他位置-->点击计算机-->选择opt文件夹-->在opt文件夹内粘贴xx.tar.gz
- 在桌面空白处右键-->打开终端
- 拷贝到 /opt
- 在终端中 cd /opt 进入opt目录
- ls 查看目录下的文件
- 解压文件 tar -zxvf xx.tar.gz(输入VM按Tab键可自动补全)
- 使用解压命令 tar,得到一个安装文件
- ls查看解压目录
- 进入该vm解压的目录, /opt目录下
- cd vmware-tools-distrib键入解压目录
- ls查看安装文件
- 安装 ./vmware-install.pl
- 全部使用默认设置回车即可,就可以安装成功,下图说明安装成功
- 注意:安装vmtools需要有gcc
- 检查是否安装了gcc的操作 在终端敲 gcc -v,安装了的话会有相关的版本提示
二、设置共享文件夹
- 基本介绍
- 为了方便,可以设置一个共享文件夹,比如在D盘D:/myshare
- 具体步骤
- 先在D盘的某个位置创建一个共享文件夹myshare,在文件夹内部创建一个文件hello.txt并写入相关内容
- 左上角菜单-->虚拟机-->设置-->选项-->选择共享文件夹
- 选择总是启用-->选择共享文件夹的路径-->启用此路径--点击完成
- windows和centos可共享 D:/share目录可以读写文件了
- 共享文件在centos-->主文件夹-->其他位置-->计算机-->mnt文件夹-->hgfs文件夹-->mySHare文件夹
- 注意事项
- windows和centos就可以共享文件了,而且读写是同步的,但是在实际开发过程中,文件的上传下载是需要使用远程的方式完成的
- 远程方式登录,后面具体再讲解
十二、Linux的目录结构
- 基本介绍
- linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/";然后在此目录下再创建其他的目录
- 深刻理解linux树状文件目录是非常重要的
- 一句经典的话:在Linux的世界里,一切皆文件
- 在win操作系统中,下面有CDE盘,这些盘都可以自主命名,且盘下面还有子目录文件
- 在Linux操作系统中,只有一个根目录"/" ,在根目录下有很多的子目录这些子目录的名字是规定好的,不能乱写
十三、目录结构详解
- 具体 的目录结构(不用背,知道即可)
- /bin 【常用】(usr/bin,/usr/local/bin),
- 是Binary的缩写,这个目录存放着最经常使用的目录
- /sbin (/usr/sbin、/usr/local/sbin),
- s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
- /home【常用】
- 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般目录名是以用户的账号命名,
- 例如创建的huomu账号,在home目录下就会有个huomu的文件夹
- 打开终端-->输入指令 useradd jack-->在home目录下创建一个为jack的文件夹(创建一个用户为jack)
- userdel -r jack --> 删除jack文件夹(删除jack用户)
- /root 【常用】
- 该目录为系统管理员,也称为超级权限者的用户主目录
- /lib系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
- /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
- /lost+found一般是隐藏起来的,需要在终端 cd / --> ls 查看才能看到/lost+found
- /etc【常用】
- 所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库 my.conf
- /usr 【常用】
- 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于与windows下的program files目录
- /boot【常用】
- 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /proc 【不能动】
- 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- /srv 【不能动】
- service缩写,该目录存放一些服务启动之后需要提取的数据
- /sys 【不能动】
- 这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核新出现的一个文件系统sysfs
- /tmp
- 这个目录是用来存放一些临时文件的
- /dev
- 类似于windows的设备管理器,把所有的硬件用文件的形式存储
- /media【常用】
- Linux系统会自动识别一些设备,例如U盘、光驱灯,当识别后,linux会把识别的设备挂载到这个目录下
- /mnt【常用】
- 系统提供该目录是为了让用户临时挂在别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了
- /opt
- 这是给主机额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录下,默认为空
- /usr/local 【常用】
- 这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序
- /var 【常用】
- 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
- /selinux [security-enhanced linux]
- SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式。可自行设置
十四、远程登陆到Linux服务器
说明:公司开发的时候,具体的应用场景是这样的
- linux服务器是开发小组共享
- 正式上线的项目运行在公网
- 因此程序员需要远程登录到Linux进行项目管理或开发
- 画出简单的网络拓示意图(帮助理解)
- 远程登录客户端有Xshell6, Xftp6,我们学习使用Xshell和Xfpt6,其他远程工具大同小异
一、Xshell介绍
说明:Xshell是目前最好的远程登录到Linux操作的软件,流畅的速度并完美的解决了中文乱码的问题,是目前程序员首选的软件
- Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNET协议
Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
二、下载安装和配置
下载free-for-home-school版本
地址: https://www.netsarang.com/en/free-for-home-school/
- 在centos中右键打开终端。输入命令ifconfig查看ip(上图中的公网ip)
- 在命令提示符中ping一下保证能ping通这个网络
- 打开Xshell远程登陆公网,右键打开Xshell-->新建-->在主机中填入公网的ip地址-->确定
- 点击连接
- 一次性接受(每次都要输入用户名和密码,这里推荐使用),接受并保存(只需要输入一次,工作中推荐使用)
十五、远程文件传输
- 介绍
是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用了Xfpt以后,windows用户能安全的在UNIX/Linux和Windows PC之间传输文件
- 安装完成xftp后
- 点击打开xfpt-->点击新建-->主机填公网ip-->确定
- 点击确定-->点击连接
- 可以实现windows到linux的文件互传
十六、vim快速入门
Linux 系统会内置 vi 文本编辑器
Vim 具有程序编辑的能力,可以看作是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计,代码补完,编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
一、vi和vim常用的三种模式
- 正常模式
- 以vim打开一个档案就直接进入一般模式了(这是默认的模式),在这个模式中,你可以使用【上下左右】按键来移动光标,你也可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】来处理你的文件数据
- 插入模式
- 按下i,I,o,O。a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可
- 命令行模式
- 插入模式切换至命令行模式 :先按esc 表示退出,再输入冒号 : 即可
- 在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号等的动作,则是在此模式中完成的
- 练习:使用 vim 开发一个 Hello.java 程序,保存步骤说明和演示
- vim Hello.java -->使用vim工具创建一个Hello.java程序
- 输入 i 进入编辑模式,底下会出现插入的字样
- 在 编辑模式中,写完程序
- 需要保存,则需要从插入模式进入命令行模式,
- 插入模式进入命令行模式:先按esc 表示退出再输入 : 即可
- 先按 esc ,再输入 : wq ; w 代表写入;q 代表退出;回车
- ls 查看;目录下就有 Hello.java 文件
- 如果想修改文件,再输入 vim Hello.java ,重新进入编辑界面
十七、vim 快捷键
看看vi和vim各个模式的切换图
一、快捷键的使用练习
- 拷贝当前行 :yy
- 拷贝当前行向下的5行 : 5yy,并粘贴(输入p)
- 注意:拷贝的动作在一般模式下进行!
- 光标定的位置就是当前行的yy位置
- 删除当前行: dd
- 删除当前行向下的5行:5dd
- 注意:删除的动作在一般模式下进行!
- 光标定的位置就说当前行的dd位置
- 在文件中查找某一个单词[命令行下/关键字,回车 查找,输入 n 就是查找下一个]
- 一般模式输入 : 或者 / ; 进入命令行模式
- 输入 / 查找的字符(不晓得为啥 : 查找的字符在这没用),例如 /hello;然后回车查找,会有绿颜色光标,按n就是查找下一个
-
设置文件的行号,取消文件的行号[命令行下 :set nu 和 :set nonu ]
-
例如 vim /etc/profile文件进入该文件,由于文件比较大,文件内容比较多,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
-
在一个文件中输入"hello“,然后又撤销这个动作 u
-
例如 vim /etc/profile文件进入该文件,在一般模式下,将光标移动到,输入20,再输入 shift+g
-
先 vim /etc/profile文件进入该文件
-
再 :set nu 列出行号,现在是在命令行模式,再按 ESC 回到一般模式
-
输入行号 20 ,再输入shift + g
-
完成定位
-
- 更多的请看整理文档
十七、vim 内容整理
- 快捷键图
十八、关机重启
一、关机&重启命令
- 基本介绍
- shutdown -h now 立刻进行关机
- shudown -h 1 ”hello,1分钟后会关机了
- shutdown -r now 现在重新启动计算机
- halt 关机,作用和上面一样
- reboot 现在重新启动计算机
- sync 把内存的数据同步到磁盘
- 注意细节
- 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
- 目前的 shutdown/reboot/halt等命令均已经在关机前进行了 sync,
- 在Xshell中执行关机指令和在Linux中执行关机指令都可行
- 在linux中执行关机指令
- 右键打开终端
- 输入 shutdown -h now
- 再打开虚拟机,右键打开终端,输入reboot;重启设备
- 标准的做法 是先执行 sync ;再执行关机或者重启操作
二十、登陆和注销
- 基本介绍
- 登陆时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后再用 “ su - 用户名" 命令来切换成系统管理员身份。
- 进行普通用户账号登录Xshell,
- cd / root 切换到 root 目录下,显示权限不够
- 通过 su - root 登录 root 账号, 输入密码, 再通过 cd /root/ 进入 root 目录
- 在提示符下输入 lgout 即可注销账户
- 在用户是 root 的情况下,输入 logout ;会退回到用户是 huomu 的时候
- 再执行一次 logout ,就会退出登录
- 注意:在centOS中的终端中输入 logout 没有用,只会提示 exit 退出 ,而输入 exit 也只是退出终端
- 使用细节
- logout 注销指令在图形运行级别无效,在 运行级别3 下有效
- 运行级别这个概念,后面在介绍
二十一、用户管理1
基本介绍
Linux系统十一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
添加用户
- 基本语法
- useradd 用户名
- 应用案例
- 案例1:添加一个用户 millan
- 默认该用户的家目录在 /home/milan
- 当用 millan 登录会自动切换到该目录下面
- 细节说明
- 当创建用户成功后,会自动地创建和用户同名的家目录
- 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
- 创建一个用户 在指定 home 目录下,用户名为 test king
指定/修改密码
- 基本语法
- passwd 用户名
- 应用案例
- 给 milan 指定密码
- 注意:指令 pwd 显示当前在哪个目录下
删除用户
- 基本语法
- userdel 用户名
- 应用案例
- 删除用户 milan ,但是保留家目录:userdel 用户名
- 删除了 milan ,但是通过 ls 查看, milan 的家目录还是在的
- 虽然 milan 的家目录还在,但此时再通过 milan 的用户名和密码登录,就不行了
- 删除用户 huomu 以及用户 huomu 的主目录 :userdel -r 用户名
- 删除了 huomu ,通过 ls 查看, huomu 的家目录也没了
- 注意:这个操作一定要慎重
- 细节说明
- 删除之前用 su - root 切换成权限最高的用户进行删除
- 最好是不要在普通用户已经登陆的情况下对用户进行删除,而是退出直接登录权限最高的账户进来进行删除
- 是否保留家目录的讨论
- 一般情况下,最好建议保留家目录,使用 userdel 用户名 进行删除保留家目录即可
二十二、用户管理2
查询用户信息指令
- 基本语法
- id 用户名
- 返回了 root 用户的 uid 组id 所在组
- 应用实例
- 案例:请查询root 信息
- 细节说明
- 当用户不存在,返回无此用户
- 当用户不存在,返回无此用户
切换用户
- 介绍
- 在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到最高权限用户, 比如 root
- 基本语法
- su - 切换用户名
- 应用实例
- 创建一个用户jack,指定密码,然后切换到jack
- 细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之则要
- 当需要返回原来的用户时,使用 exit/logout 指令
查看当前用户/登录用户
- 基本语法
- whoami/ who am i
-
显示登录时间和从哪个地址登录到Linux服务器的
二十三、用户管理3
用户组
- 介绍
- 类似于角色,系统可以对有共性的多个用户进行统一的管理
- 新增组
- 指令 : groupadd 组名
- 删除组
- 指令: groupdel 组名
- 增加用户时直接加上组
- 指令:useradd -g 用户组 用户名
- 修改用户的组
- 指令:usermod -g 用户组 用户名
- 将 zwj 的组修改成 mojiao
- 应用实例
- 增加一个用户 zwj ,直接将他指定到 wudan 这个用户组
- 先 groupadd 用户组 增加 wudan 这个组
- 再使用 useradd -g 用户组 用户名 将用户添加到组中
- 再使用 id 用户名 查看用户信息
- 增加一个用户 zwj ,直接将他指定到 wudan 这个用户组
- 细节说明
- 如果前面没有创建组的话,直接创建用户,那么就会默认创建一个和用户相同的组名
用户和组相关文件
- /etc/passwd 文件
- 用户 (user)的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识:组标识号:注释性描述:主目录:登录Shell
- 口令一般看不到或者打个×;用户标识:uid:组标识号:gid;主目录:用户所在的家目录;
- 登录Shell:
- 发送一条cd指令给linux内核,内核是无法直接识别的,内核并不具备解析的能力
- 中间有个Shell,负责将cd消息解析发送给linux内核,
- Shell种类很多,一般用的是 bash Shell, 还有tc Shell
- /etc/shadow 文件
- 口令的配置文件
- 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group 文件
- 组(group)的配置文件,记录Linux包含的组的信息
- 每行的含义:组名:口令:组标识号:组内用户列表
二十五、运行级别
指定运行级别
- 基本介绍
- 运行级别说明
- 0 :关机
- 1:单用户【找回丢失的密码】
- 2:多用户状态没有网络服务
- 3:多用户状态有网络服务(用的最多的)
- 4:系统未使用保留给用户
- 5:图形界面
- 6:系统重启
- 常用运行级别是3和5,也可以指定默认运行级别,后面演示
- init 3 进入不带图形界面的有网络服务
- 再使用 init 5 切回图像界面
- 应用实例
- 命令:init[0123456]
- 通过 init 来切换不同的运行级别,比如 5-3,然后关机
指定运行级别
CentOS后运行级别说明
- 在 /ect/inittab 文件中,
- 进行了简化,如下:
- multi-user.target(CentOS7后):等价于:analogous to runlevel 3(CentOS7前)
- graphical.target(CentOS7后):等价于:analogous to runlevel 5(CentOS7前)
- 查看当前的运行级别是什么
- 指令:systemctl get-default
- 设置运行级别
- 指令:systemctl set-default TARGET.target(设置的目标运行级别)
- 查看当前默认级别
- 显示是图形化级别
- 设置为多用户级别
- 再使用 reboot 指令重启,那么CentOS会直接进入非图形化界面,而不会进入桌面
- 重新设置回图形界面
- 注意点
- 在工作中用的是3这个级别
- 讲课使用的是5这个级别
二十六、找回root密码
- 面试题
- 如何找回 root 密码(看参考文档)
- 首先,启动系统,进入开机界面,在界面中按"e“进入编辑界面,
- 按 " e”的时候快一点,尽量在5s内完成
- 进入编辑界面,使用键盘上的上下键把光标往下移动,
- 找到以“ Linux16” 开头的内容所在的行数
- 在行的最后输入:init=/bin/sh
- 输入完成后,按快捷键 :Ctrl+x 进入用户单模式
- 在光标闪烁的位置中输入:mount -o remount,rw /
-
在新的一行最后面输入:passwd,完成后按键盘的回车键,输入密码,再次确认密码即可,密码修改成功后,会显示passwd......的样式,说明密码修改成功
- 在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(touch与 / 后面有个空格),完成后按键盘的回车键
- 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exef与 / 后面有个空格),完成后回车,等待系统修改密码(时间可能较长),
- 完成后,系统回自动重启,新的密码生效
-
下次再登录就可以用 passwd 用户名 修改密码了
二十七、帮助指令
man 获得帮助指令
- 基本语法:man [命令或配置文件](功能描述:获得帮助信息)
案例:查看 ls 命令的帮助信息
- 输入 man ls
- 对于未显示内容,按一下 空格键 就会继续往下走了
- 在 linux 下,隐藏文件是以 . 开头的
- 在 linux 下, ls -l 是单列输出的意思
- ls -la(或者al也行) 表示用单行列出所有隐藏文件
- 选项可以组合使用,比如 ls -al/root 查看root目录下的所有的文件,包括隐藏文件
help指令
- 基本语法:help 命令(功能描述:获得 shell 内置命令的帮助信息)
- 应用实例
- 查看 CD 命令的帮助信息
二十八、文件目录指令1
相对路径和绝对路径
相对路径:从当前目录开始往下定位
绝对路径:从和根目录开始往下定位
文件目录类
-
pwd 指令
- 基本语法:pwd
- 功能描述:显示当前工作目录的绝对路径
- 应用实例:显示当前工作目录的绝对路径
- 增加一个 tom 的用户
- 进入 tom 用户下 ,创建一个 a.txt 文件,回车
- 按 i 进入编辑模式(进入编辑模式底下会有插入字样),输入内容,
- 保存需要进入命令行模式,先按 ESC 从编辑模式进入命令行模式,然后输入:wq 保存并退出
- 进入 tom 的目录下,使用 pwd 查看绝对路径
-
cd 指令
- 基本语法: cd [参数]
- 功能描述:切换到指定目录
- cd ~ 或者 cd 回到自己的家目录
- cd .. 回到当前目录的上一级目录
- 应用案例
- 案例1:使用绝对路径切换到root目录 cd /root
- 案例2:使用相对路径到 /root 目录
- 比如当前在 /home/tom
- cd ../../root
- 案例3:回到当前目录的上一级目录, cd ..
- 案例4:回到家目录, cd ~
- 基本语法: cd [参数]
二十九、文件目录指令2
文件目录类
-
mkdir 指令
- mkdir 指令用于创建目录
- 基本语法:mkdir [选项] 要创建的目录
- [选项]
- -p : 代表创建多级目录
- [选项]
- 应用实例
- 案例1:创建一个目录 /home/dog
- mkdir /home/dog
-
案例2:创建多级目录 /home/animal/tiger
-
mkdir -p /home/animal/tiger
-
rmdir 指令
-
rmdir 指令删除空目录
-
基本语法:rmdir [选项] 要删除的空目录
-
应用实例
-
案例:删除一个目录 /home/dog
-
/home/dog 下面是空目录,直接用 rmdir 删除即可删除成功
-
注意:
-
rmdir 删除的是空目录,如果目录下有内容是无法删除的
-
如果需要删除非空目录,需要使用 rm -rf 删除目录(需要谨慎操作)
-
-
-
-
-
touch指令
- touch 指令创建空文件夹
- 基本语法:touch 文件名称
- 应用实例
- 案例:在 /home 目录下创建一个空文件 hello.txx
三十、文件目录指令3
-
cp 指令
- cp 指令拷贝文件到指定目录
- 基本语法: cp [选项] source dest
- [选项]
- -r : 递归复制整个文件夹
- [选项]
- 应用实例
- 案例1:将 /home/hello.txt 拷贝到 /home/bbb 目录下
- 先在home目录下创建 bbb 文件夹 :mkdir bbb、
- 再将 hello.txt 文件复制到 bbb/ 目录下
- 案例2:递归复制整个文件夹
- 举例:比如将 /home/bbb 整个目录,拷贝到 /opt
- cp -r /home/bbb/ /opt/ 把目录本身一起拷贝过来
- 案例1:将 /home/hello.txt 拷贝到 /home/bbb 目录下
- 注意:
- 强制覆盖不提示的方法:\cp
- 强制覆盖的时候会询问,需要打 y 来确定
- 强制覆盖的时候会询问,需要打 y 来确定
- 不需要显示提示消息时,就可以使用 \cp了:\cp -r /home/bbb/ /opt/
- 强制覆盖不提示的方法:\cp
-
rm 指令
- rm 指令移除文件或目录
- 基本语法:rm [选项] 要删除的文件或目录
- [选项] : -r 递归删除整个文件夹
- [选项] : -f 强制删除不提示
- 应用实例
- 案例1:将 /home/hello.txt 删除
- cd /home/ 进入 home 文件夹
- rm hello.txt 删除文档,输入Y 确定,如果不想看到删除提示,就用指令 rm -f hello.txt
- 案例2:递归删除整个文件夹 /home/bbb
- rm -r /home/bbb 删除文件,每删除一次就会提示一次
- rm -rf /home/bbb 删除文件,强制删除不提示
- 案例1:将 /home/hello.txt 删除
- 注意:
- 强制删除不提示的方法:带上 -f 参数
三十一、文件目录指令4
-
mv 指令
- mv 指令:1. 移动文件与目录 2.重命名
- 基本语法
- mv oldNameFile newNameFile (功能描述:重命名)
- mv /temp/movefile /targetFolder (功能描述:移动文件)
- 应用实例
- 案例1:将 /home/cat.txt 文件重新命名为 /home/pig.txt
- touch cat.txt 在/home 目录下创建一个空文件夹cat.txt
- mv cat.txt pig.txt 将cat.txt重命名为 pig.txt
- 案例2:将 /home/pig.txt 文件移动到 /root 目录下
- mv pig.txt /root/ 移动 pig.txt 文件到 /root/ 文件夹下
-
mv pig.txt /root/ ant.txt 称为移动并重命名
-
案例3:移动整个目录,比如将 /opt/bbb 移动到 /home 下
-
mv /opt/bbb /home
-
- 案例1:将 /home/cat.txt 文件重新命名为 /home/pig.txt
-
cat 指令
- cat 查看文件内容(cat 只能查看不能修改)
- 基本语法:
- cat [选项] 要查看的文件
- [选项] : -n 显示行号
- 应用实例
- 案例1:查看 /etc/profile 文件内容,并显示行号
- 注意:
- cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
- 加上管道命令 | more 后,不会显示全部行数,出现一个 more 字样,
- 回车就多出现一行内容
- 想要显示的内容整体翻页,就按 空格
-
more 指令
- more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置了若干个快捷键(交互的指令),
- 基本语法:
- more 要查看的文件
- 操作说明
-
应用实例
-
案例:采用 more 查看文件 /etc/profile
-
三十二、文件目录指令5
-
less指令
-
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端, less 指令在显示文件内容时候,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件局又较高的效率
-
基本语法:
-
less 要查看的文件
-
-
应用实例
-
实例1:采用 less 查看一个大文件文件 less /opt/杂文.txt
-
先利用xfpt5 将 杂文.txt 上传到 /opt 文件夹中
-
-
-
-
echo 指令
-
echo 输出内容到控制台
-
基本语法:
-
echo [选项] [输出内容]
-
-
应用实例
-
案例1:使用echo 指令输出环境变量,比如输出 $HOSTNAME
-
echo $HOSTNAME
-
-
案例2:使用echo 指令输出 hello,world!
-
-
head 指令
- head 指令用于显示文件开头部分内容,默认情况下head指令显示文件的前十行内容
- 基本语法:
- head 文件(功能描述:查看文件头十行的内容)
- head -n 5 文件 (功能描述:查看文件头五行内容,五也可以是任意行数)
- 应用实例
- 案例1:查看 /etc/profile 的前5行代码(空行也算一行)
- head -n 5 /etc/profile
- 案例1:查看 /etc/profile 的前5行代码(空行也算一行)
-
tail 指令
- tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的前10行内容
- 基本语法:
- tail 文件(功能描述:查看文件尾10行的内容)
- tail -n 5 文件 (功能描述:查看文件尾5行的内容,5可以是任意行数)
- tail -f 文件 (功能描述:实时追踪该文档的所有更新)
- 应用实例:
- 案例1:查看 /etc/profile 最后5行代码(空行也算一行)
- tail -n 5 /etc/profile
- 案例2:实时监控 mydate.txt,看看文件有变化时,能否看到,实时的追加日期
- 先 cd /home/ 进入 home 目录
- 再 touch mydate.txt 创建一个 mydate.txt 文档
- tail -f mydate.txt 实时追踪文档的更新,退出就是 Ctrl + C
-
为了方便观测到文档更新,打开终端
-
输入echo "hello" > /home/mydate.txt 向 txt 文档中输入内容 “hello”
- 之后在XShell 看到了终端往 mydate.txt 输入的 hello
- Ctrl + C 退出实时追踪模式
- 案例1:查看 /etc/profile 最后5行代码(空行也算一行)
-
-
> 指令 和 >> 指令
- > 指令 :覆盖原先的内容,输出重定向
- >> 指令: 不会覆盖原先的内容,而是追加在后面
- 基本语法:
- ls -l > 文件 (功能描述:列表的内容写入到 a.txt 中(覆盖写)
- ls -al >> 文件 (功能描述:列表内容追加到文件 aa.txt的末尾)
- cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件 2)
- echo ”内容" >> 文件
- 应用实例
- 案例1:将 /home 目录下的文件列表 写入到 /home/info.txt 中,覆盖写入
- ls -l /home > /home/info.txt [如果info.txt 不存在,就会创建一个]
- ls -l /home(或者ls -l 也是写到终端) 将显示内容写到终端
-
ls -l /home > /home/info.txt 将列表的内容写入 info.txt 中,因为没有,所有会创建一个 info.txt 文件
-
cat info.txt 查看 info.txt 文档
- ls -l /home > /home/info.txt [如果info.txt 不存在,就会创建一个]
- 案例2:将当前日历信息,追加到 /home/mycal 文件中
- cal 显示当前日历信息
- cal >> /home/mycal 追加日历信息到 mycal 文件夹
- 案例1:将 /home 目录下的文件列表 写入到 /home/info.txt 中,覆盖写入
三十三、文件目录指令6
-
ln 指令
- 软链接也称为符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
- 根目录下有 home 目录,在 home 目录下有个符号连接 myroot
- 符号连接 myroot 指向 根目录下的另一个目录 root
- 基本语法
- ln -s [原文件或目录] [软链接名](功能描述:给源文件创建一个软链接)
- 应用实例
- 案例1:在 /home 目录下创建一个软链接 myroot, 连接到 /root 目录
- ln -s /root/ /home/myroot 创建软连接 myroot
- ls -l 将显示内容写到终端、
- myroot 指向的是 root 目录,最前面有 l 就是 link 链接的意思
- 案例2:删除软连接 myroot
- rm /home/myroot
- 案例1:在 /home 目录下创建一个软链接 myroot, 连接到 /root 目录
-
history 指令
- 查看已经执行过的历史命令,也可以执行历史指令
- 基本语法:
- history (功能描述:查看已经执行过的历史命令)
- !n (功能描述:查看曾经执行过的第 n 条指令)
- 应用实例
- 案例1:显示所有的历史命令
- 案例2:显示最近使用过的10个指令
- history 10
- 案例3:执行历史编号为 5 的指令
- !5
- 软链接也称为符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
三十四、时间日期指令
-
date 指令-显示当前日期
- 基本语法:
- date (功能描述:显示当前时间)
- date %Y (功能描述:显示当前年份)
- date %m (功能描述:显示当前月份)
- date %d (功能描述:显示当前是哪一天)
- date %Y- %m- %d %H:%M:%S (功能描述:显示年月日时分秒)
- 应用实例
- 案例1:显示当前时间信息
- 案例2:显示当前时间年月日
- date "%Y- %m- %d"
- 案例3:显示当前时间年月日时分秒
- date "%Y- %m- %d %H:%M:%S"
- 基本语法:
-
date指令-设置日期
- 基本语法:
- date -s 字符串时间
- 应用实例
- 案例1:设置系统当前时间,比如设置成 2021-11-11 11:22:22
- date -s "2021-11-11 11:22:22"
- 案例1:设置系统当前时间,比如设置成 2021-11-11 11:22:22
- 基本语法:
-
cal 指令
- 查看日历指令 cal
- 基本语法:
- cal [选项] (功能描述:不加选项,显示本月日历)
- 应用实例
- 案例1:显示当前日历 cal
- 案例2:显示2020年日历:cal 2020
三十五、查找指令1
-
find指令
- find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
- 基本语法:
- find [搜索范围] [选项]
- [选项]
-
应用实例
-
案例1:按文件名:根据名称查找 /home 目录下的 hello.txt 文件
-
find /home -name hello.txt
-
-
案例2:按拥有者:查找 /opt 目录下,用户名为 nobody 的文件
-
find /opt -user nobody
-
案例3:查找整个 linux 系统下大于 200M 的文件( +n 大于 -n 小于 n 等于 n指的是文件的大小数字 例如下面的200M)
-
find /( /代表从根目录对整个系统进行查找) -size +200M
-
ls -lh 将453365760的显示转变成更直观的 433M
-
-
-
- 基本语法:
- find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
-
local 指令
-
local 指令可以快速定位文件路径,local指令利用事先建立的系统中所有文件名称及路径的local数据库实现快速定位给定的文件,Local指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确性,管理员必须更新loacal时刻
-
基本语法
-
local 搜索文件
-
注意:
-
由于local 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建locate 数据库
-
应用实例
-
案例1:使用 local 指令快速定位 hello.txt 文件所在目录
-
先执行 updatedb 创建 local 数据库
-
local hello.txt 查看 hello.txt文件在哪个目录下
-
-
-
-
-
-
which 指令
-
查看某个指令在哪个目录下,
-
应用实例
-
比如 ls 指令在哪个目录下
-
-
三十六、查找指令2
-
grep 指令和管道符号
- grep 过滤查找,
- 管道符 :"|" , 表示将前一个命令的处理结果输出传递给后面的命令处理
- 使用 cat a.txt 将文档内容显示到终端,但只想要显示 txt 文档中的某一个内容
- 使用 cat a.txt | grep “想要查找的文档内容关键字" 进行筛选显示
- 基本语法
- grep [选项] 查找内容 源文件
- [选项]
- 应用实例:
- 案例1:请在 hello.txt 文件中,查找 “yes” 所在行,并显示符号
- 写法1:cat/home/hello.txt | grep "yes"
-
写法2:grep -n "yes" /home/hello.txt
- 案例1:请在 hello.txt 文件中,查找 “yes” 所在行,并显示符号
三十七、压缩和解压1
-
gzip/gunzip 指令
- gzip 用于压缩文件,gunzip 用于解压
- 基本语法
- gzip 文件 (功能描述:压缩文件,只能将文件压缩成 .gz文件)
- gunzip 文件.gz (功能描述:解压缩文件命令)
- 应用实例
- 案例1:gzip压缩,将 /home 下的 hello.txt 文件进行压缩
- gzip /home/hello.zip
- 案例2:gunzip压缩,将 /home下的 hello.txt.gz 文件进行解压缩
- gunzip /home/hello.txt.gz
- 案例1:gzip压缩,将 /home 下的 hello.txt 文件进行压缩
-
zip/unzip 指令
- zip 用于压缩文件, unzip 用于解压,这个在项目打包发布中很有用
- 基本语法:
- zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
- [选项]
- -r: 递归压缩,即压缩目录
- [选项]
- unzip [选项] XXX.zip (功能描述:解压缩文件)
- [选项]
- -d<目录> :指解压后的文件存放目录
- 应用实例
- 案例1:将 /home下的 所有文件进行压缩成 myhome.zip
- zip -r myhome.zip /home/ (包括 home 本身也被压缩了)
- 案例2:将 myhome.zip 解压到 /opt/tmp 目录下
- 先创建 mkdir /opt/tmp
- unzip -d /opt/tmp /home/myhome.zip
- 案例1:将 /home下的 所有文件进行压缩成 myhome.zip
- zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
三十八、压缩和解压2
-
tar 指令
- tar 指令是打包指令,最后打包的文件是 .tar.gz 的文件
- 基本语法:
- tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
- 选项说明
- 应用实例
- 案例1:压缩多个文件,将/home/pig.txt 和/home/cat.txt 压缩成 pc.tar.gz
- tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
- 案例2:将 /home 的文件夹压缩成 myhome.tar.gz
- tar -zcvf myhome.tar.gz /home/
- 案例3:将 pc.tar.gz 解压到当前目录,切换到 /opt/
- tar -zxvf pc.tar.gz
- 案例4:将 myhome.tar.gz 解压到 /opt/tmp2 目录下
- mkdir /opt/tmp2
- tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
四十、Linux组的基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外,在linux中每个文件的所有者、所在者、其他组的概念
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
四十一、Linux所有者
- 一般为文件的创建者,谁创建了该文件,酒自然的成为该文件的所有者
-
查看文件的所有者
- 指令:ls -ahl
- 应用实例
- 文件所有者为 root
- 文件所有者为 root
-
修改文件所有者
- 指令:chown 用户名 文件名
- 应用实例
- 使用 root 创建一个文件 apple.txt ,然后将其所有者改成 tom
- chown tom apple.txt 文件所有者从 root 变成 tom
四十二、所在组
- 基本指令
- groupadd 组名
- 应用实例
- 创建一个组,monster
- groupadd monster
- 创建一个用户 fox ,并放入到 monster组中
- useradd -g monster fox
- 创建一个组,monster
-
文件/目录 所在组
- 当某个用户创建了一个文件后,这个文件的所在组就说该用户的所在组
-
查看文件/目录所在组
- 基本指令:
- ls -ahl
- 应用实例
- 使用 fox 来创建文件,看看该文件是属于哪个组的
- 基本指令:
-
修改文件所在组
- 基本指令:
- charp 组名 文件名
- 应用实例:
- 使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组
- groupadd fruit 创建一个 fruit 组
- touch orange.txt 创建 orange.txt 文件
- 查看当前这个文件属于哪个组 -> root
- chgrp fruit orange.txt
- 使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组
- 基本指令:
四十三、修改所在组
-
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
-
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组
- 改变用户所在组
- 指令:
- usermod -g 组名 用户名
- usermod -d 目录名 用户名 改变该用户登录的初始目录
- 注意:用户需要有进入到新目录的权限
- 应用实例
- 将 zwj 这个用户从原来的组,修改到 wudan 组里面
- id zwj 先查看 zwj 在哪个组内
- 再 cat /etc/group 查看是否有 wudan 这个组
- 如果文件很大,查看有没用关键词,用指令 cat /etc/group | grep wudan
- usermod -g wudan zwj
- 将 zwj 这个用户从原来的组,修改到 wudan 组里面
- 指令: