一、远程登录到Linux服务器
(1)为什么需要远程登录Linux
- linux服务器是开发小组共享的
- 正式上线的项目是运行在公网
- 因此程序员需要远程登陆到Linux进行项目管理或者开发
- 画出简单的网络拓扑示意图
- 远程登陆客户端有Xshell6,Xftp6,我们学习使用Xshell6和Xftp6,其他的远程工具大同小异
- 示意图
(2)远程登陆Linux-Xshell8
- 说明:Xshell是目前最好的远程登录到Linux操作系统的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员首选的软件
- Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNET协议
- Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
(3)下载-安装-配置和使用
- 下载free-for-home-school版本
- 下载地址:家庭/学校免费 - NetSarang Website
(4)远程上传下载文件-Xftp8
Xftp8是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用Xftp以后,windows用户能安全地在UNIX/Linux的和Windows PC之间传输文件
(5)Xftp8安装配置和使用
- 下载地址和Xshell一样
- 如何处理Xftp中文乱码问题?文件→默认会话属性→选项→编码→UTF-8
二、vi和vim编辑器
(1)vi和vim的基本介绍
- Linux系统会内置vi文本编辑器
- vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体的颜色辨别语法的正确性,方便程序设计。代码补完,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
(2)vi和vim常用的三种模式
- 正常模式:以vim打开一个文档就可以直接进入一般模式了(默认模式)。在这个模式中。可以使用上、下、左、右来移动光标
- 插入模式:按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可
- 命令行模式:先输入Esc,再输入冒号":"或“/”,就能切换到命令行模式。(1)wq:是write和quit的组合命令,它的作用是将当前编辑的文件内容保存,然后退出vim编辑器(2)q:代表quit,即退出vim编辑器。但该命令只能在文件内容没有被修改的情况下使用,如果文件内容有修改,直接使用q会报错(3)q!:也是退出vim编辑器的命令,其中!是强制的意思。使用q!命令会强制退出vim,且不会保存对文件所做的任何修改
(3)vi和vim基本使用
使用vim开发一个Hello.java程序
- 在终端输入vim Hello.java
- 输入i。进入插入模式
- 进行运行。按下esc键,再输入冒号:wq表示写入并退出
(4)各种模式的相互切换![](https://i-blog.csdnimg.cn/direct/451de27941b245f69fb71281ef2521bd.png)
(5)vi和vim快捷键
2.5.1一般模式
- 拷贝当前行:输入yy。拷贝当前行向下的5行:输入5yy;并粘贴(输入p)
- 删除当前行:输入dd。删除当前行向下的5行:输入5dd
- 编辑/etc/profile文件,使用快捷键到该文档的最末行[G]和最首行[gg]
- 在一个文件中输入“hello”,然后又撤销这个动作:在一般模式下,输入“u”
- 编辑/etc/profile文件,并将光标移动到20行:在一般模式下,输入“20”再输入”shift+g”
2.5.2命令模式
- 在文件中查找某个单词:在命令行模式下输入“/单词”,回车就会对单词进行查找,输入n就是查找下一个
- 设置文件的行号,取消文件的行号:在命令行模式下,输入“:set nu”(set number的缩写)和“:set nonu”
三、开机、重启和用户登录注销
(1)关机&重启命令
3.1.1基本介绍
- shutdown -h now:立刻进行关机
- shutdown -h 1 “hello, 1分钟后会关机了”:在终端提示“hello,1分钟后会关机了”,并且在1分钟后关机
- shutdown -r now:现在重新启动计算机
- halt:关机,作用和上面一样
- reboot:现在重新启动计算机
- sync:把内存的数据同步到磁盘
3.1.2注意细节
- 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
-
目前的shutdown/reboot/halt等命令均已经在关机前进行了sync
(2)用户登录和注销
3.1.1基本介绍
- 登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,要避免使用它导致误操作。可以利用普通用户登录,然后登陆后再用“su - 用户名”命令来切换成系统管理员身份(su - 普通用户,su - root)
- 在提示符下输入logout即可注销用户
3.1.2使用细节
- logout注销指令在图形运行级别(如终端)无效,在运行级别3(如Xshell登录)下有效
- 运行级别的概念在下面
四、用户管理
(1)基本介绍
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
- 示意图:
(2)添加用户
- 基本语法:useradd 用户名
- 应用案例:添加一个用户milan,默认该用户的家目录在/home/milan(登录该用户后会默认切换到其家目录)
- 细节说明:(1)当创建用户成功后,会自动创建和用户同名的家目录(2)也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
/home/test:在根目录中选择home,进入home,选择home中的test
(3)指定/修改密码
- 基本语法:passwd 用户名
- 注意:如果不写用户名,则只会给当前用户修改密码
- 应用案例:给milan指定密码
- 补充:pwd命令(print working directory):显示当前所在的工作目录
(4)删除用户
- 基本语法:userdel 用户名
- 细节说明:删除用户时,(1)我们可以保留他的家目录:userdel 用户名,(2)也可以不保留它的家目录:userdel -r 用户名
(5)查询用户信息指令
- 基本语法:id 用户名
- 应用案例:请查询root信息和milan的信息
- 细节说明:当用户不存在时,返回无此用户
(6)切换用户
- 介绍:在操作LInux中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户,比如root
- 细节说明:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用exit/logout指令
- 使用“su 用户名"来切换用户,不能通过logout注销,只能通过exit退出登录
(7)查看当前用户/登录用户
- 基本语法:who am i或者whoami
- 注意:
(8)用户组
- 介绍:类似于角色,系统可以对有共性(权限)的多个用户进行统一的管理
- 新增组:groupadd 组名
- 删除组:groupdel 组名
- 增加用户时直接加上组:useradd -g 用户组 用户名
- 案例演示:增加一个用户zwj, 直接将他指定到wudang
- 修改用户的组:usermod -g 用户组 用户名
- 案例演示:创建一个组mojiao,把zwj放入到mojiao
- 注意事项:使用useradd 用户名新增用户时,没有分配组,系统会默认分配该用户到用户名同名的组中去
(9)用户和组相关文件
- /etc/passwd文件:
- 用户(user)的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识号(uid):组标识号(gid):注释性描述:主目录(家目录):登录Shell
- 补充:
- 用户(user)的配置文件,记录用户的各种信息
- /etc/shadow文件:
- 介绍:
- 每行的含义:
- 介绍:
- /etc/group文件:
- 组(group)的配置文件,记录Linux包含的组的信息
- 每行含义:组名:口令:组标识号:组内用户列表
- 注意:组内用户列表看不到,它隐藏了
- 组(group)的配置文件,记录Linux包含的组的信息
五、实用指令
(1)指定运行级别
- 基本介绍:常用运行级别是3和5,也可以指定默认运行级别
- 0:关机
- 1:单用户【找回丢失密码】
- 2:多用户状态没有网络服务(用的很少)
- 3:多用户状态有网络服务(用的最多的,不带图形界面,节省资源)
- 4:系统未使用保留给用户(用的比较少)
- 5:图形界面(启动后默认进入的级别,是多用户的)
- 6:系统重启
- 应用实例:通过init来切换不同的运行级别,比如修改级别为3,则命令为init 3
- CentOS7后运行级别说明:
- 在centos7以前,我们是在/etc/inittab文件中进行修改
- 到了centos7,进行了简化。我们可以通过如下方式进行修改,直接在终端中输入即可(1)systemctl set-default multi-user.target,设置为多用户,等价于级别3(2)systemctl set-default graphical.target,设置为图形化,等价于级别5
- 查看当前运行级别:systemctl get-default
- 重启后,会发现系统已经变成了级别3
(2)找回root密码
- 启动系统,进入开机界面,在该界面中按“e”进入编辑界面,速度要快
- 进入编辑界面,使用键盘的上下键将光标往下移动,找到以“Linux16”开头内容所在的行数,在行的最后面输入:init=/bin/sh
- 输入完成后,直接按快捷键:Ctrl+x进入单用户模式
- 在光标闪烁的位置中输入:mount -o remount,rw / (注意:各个单词间有空格),完成后按键盘的回车键
- 在新的一行最后面输入:passwd,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(我自己设置的密码是123456)
- 接着,在光标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与/之间有一个空格),完成后按回车
- 继续在光标闪烁的位置中,输入:exec /sbin/init(注意: exec与/之间有一个空格),完成后按回车,等待系统自动修改密码(这个过程时间可能有点长,耐心等待)
(3)帮助指令
- man获得帮助信息:
- 基本语法:man [命令或配置文件](功能描述:获得帮助信息)
- 例如,查看ls命令的帮助信息:man ls
- man 注意:(1)如果信息太长,没有显示全,按空格键,就会显示下面的内容(2)按h寻求man指令的帮助,按q退出man指令
- ls的常用选项:
- 注意:(1)选项可以组合使用(2)ls默认是查看当前目录的,如果要查看其它目录下的文件:
- help指令:
- help与man的区别:
- help的使用举例:
- help与man的区别:
(4)文件目录类
5.4.1pwd指令
- 基本语法:pwd
- 功能:显示当前工作目录的绝对路径
5.4.2ls指令
- 基本语法:ls [选项] [目录或是文件]
- 功能:列出指定目录中的内容
5.4.3cd指令
- 基本语法:cd [参数] (功能描述:切换到指定目录)
- 理解:绝对路径和相对路径
- cd~或cd:表示回到自己的家目录
- cd ..:表示回到当前目录的上一级目录
- 应用案例:
- 使用绝对路径切换到root目录:
- 使用相对路径到/root目录:
- 使用绝对路径切换到root目录:
5.4.4mkdir指令(make directory)
- 基本语法:mkdir [选项] 要创建的目录
- 功能:用于创建目录
- 常用选项:-p(parents的缩写),创建多级目录
- 应用案例:
- 创建一个目录/home/dog
- 创建多级目录/home/animal/tiger
- 创建一个目录/home/dog
5.4.5rmdir指令(remove directory)
- 基本语法:rmdir [选项] 要删除的空目录
- 功能:删除空目录
- 注意细节:删除的是空目录,如果目录下由内容是无法删除的
- 想要删除非空目录,需要使用指令“rm -rf 要删除的目录”(r是recursive的缩写,f是force的缩写)
- rm指令只能删除文件。加上参数-r可以删除包含文件的文件夹,但是在删除前shell会询问。如果不想被询问,就再加上f
5.4.6touch指令
- 基本语法:touch 文件名称
- 功能:创建空文件
- 应用实例:在/home目录下,创建一个空文件hello.txt
5.4.7cp指令
- 基本语法:cp [选项] source dest
- 功能:拷贝文件到指定目录
- 常用选项:-r,递归复制整个文件夹
- 应用案例:
- 将/home/hello.txt拷贝到/home/bbb目录下(只拷贝了hello.txt)
- 递归复制整个文件夹,比如将/home/bbb整个目录,拷贝到/opt(拷贝了bbb和bbb里面的hello.txt)
- 将/home/hello.txt拷贝到/home/bbb目录下(只拷贝了hello.txt)
5.4.8rm指令
- 基本语法:rm [选项] 要删除的文件或目录
- 功能:移除文件或目录
- 常用选项:
- -r:递归删除整个文件夹
- -f:强制删除不提示
- 应用实例:
- 案例一:将/home/hello.txt删除
- 案例二:递归删除整个目录 /home/bbb(递归:既删除bbb,又删除bbb里面的hello.txt)
- 案例一:将/home/hello.txt删除
- 强制删除不提示的方法:带上-f参数即可
5.4.9mv指令
- 基本语法:
- 重命名:mv oldNameFile newNameFile
- 移动文件:mv /temp/movefile /targetFolder
- 功能:移动文件与目录或重命名
- 注意:
- 重命名是在同一个目录下
- 移动是在不同的目录下
- 应用实例:
- 将/home/cat.txt文件重新命名为pig.txt
- 将/home/pig.txt文件移动到/root目录下
- 移动整个目录,比如将/opt/bbb移动到/home下,并重命名为uuu(1)图一,home目录中本来没有uuu目录(2)图二,home目录中已经有uuu目录,就会把bbb放到uuu里面
- 将/home/cat.txt文件重新命名为pig.txt
5.4.10cat指令
- 基本语法:cat [选项] 要查看的文件
- 功能:查看文件内容,cat只能查看,不能修改
- 常用选项:-n(number的缩写),显示行号
- 使用细节:为了浏览方便,一般会带上管道命令:| more。按空格可以换页
- 补充:管道命令
5.4.11more指令
- 介绍:用于分页显示文本文件内容
- 基本语法:more 要查看的文件
- 操作说明:
5.4.12less指令
- 与more的区别:
- 基本语法:less 要查看的文件
- 操作说明:
5.4.13echo指令
- 基本语法:echo [选项] [输出内容]
- 功能:输出内容到控制台
- 应用实例:
- 案例一:使用echo指令输出环境变量,比如输出环境变量$PATH和输出主机名$HOSTNAME
- 案例二:使用echo指令输出hello,world(有没有双引号都可以)
- 案例一:使用echo指令输出环境变量,比如输出环境变量$PATH和输出主机名$HOSTNAME
5.4.14head指令
- 基本语法:
- head 文件(功能描述:查看文件头10行内容)
- head -n 5 文件(功能描述:查看文件头5行内容,5可以是任意行数)
- 功能:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
5.4.15tail指令
- 基本语法:
- tail 文件(功能描述:查看文件尾10行内容)
- tail -n 5 文件(功能描述:查看文件尾5行内容,5可以是任意行数)
- tail -f 文件(功能描述:实时追踪该文档的所有更新)
- 功能:用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
- 举例:实时监控mydate.txt(-f的f是follow的缩写),Ctrl+c可以退出监控
- 可以看到,此时已经被阻塞
- 在另一个终端中,对mydate.txt进行修改
- 可以看到,这里已经监控到mydate.txt被修改了
- 可以看到,此时已经被阻塞
5.4.16>指令和>>指令
- 基本语法:
- 列表的内容写入当某文件中(覆盖写):ls -l > 文件
- 列表的内容追加到某文件的末尾:ls -al >> 文件
- 将文件1的内容覆盖到文件2:cat 文件1 > 文件2
- 控制台内容追加到文件中:echo “内容” >> 文件
- 注意细节:>表示覆盖写,>>追加写
5.4.17ln指令
- 基本语法:ln -s [原文件或目录] [软连接名]
- 功能:软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径,-s的s是symbolic的缩写
- 应用实例:
- 案例一:在/home目录下创建一个软链接myroot,连接到/root目录
- 案例二:删除软链接myroot(用rm删,会提示:是否删除符号链接)
- 案例一:在/home目录下创建一个软链接myroot,连接到/root目录
- 注意:如果删除软链接时,后面带上了一个/,会提示无法删除
- 细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
5.4.18history指令
- 基本语法:history
- 功能:查看已经执行过的历史指令,也可以执行历史指令
- 应用实例:
- 显示所有的历史命令:history
- 显示最近使用过的10个指令:history 10
- 执行历史编号为5的指令:!5 (输入负数,代表倒数第几条指令)