Linux系统会内置vi文本编辑器
Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用「. 上下左右」按键来
移动光标,你可以使用[删除字符」或「删除整行」来处理档案内容,也可以使用 [复制、粘贴」来处理你的文件数
按下i,I,o,O,a, A, r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可。
输入esc再输入:在这个模式当中,可 以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的!
使用vim 开发一个Hello.java程序,保存.步骤说明和演示
在XShell中操作,输入
vim Hello.java
回车后进入正常模式
输入i进入插入模式
在插入模式中输入java语句
先输入esc,退出插入模式,再输入冒号进入命令行模式
先输入: 切换到命令行,接着输入wq保存并退出
此时已经存储了Hello.java文件
我们再次编辑的话,直接输入
vim H[Tab键自动补全]
进入后,输入i进入插入模式,结尾加感叹号
按Esc退出插入模式
最后按Caps lock(大写) ZZ
也可以实现保存并且退出。
再看看Linux中,该文件出现了
拷贝当前行yy,拷贝当前行向下的5行5yy, 并粘贴(输入p)
(一般模式下输入)
在正常模式下删除当前行 dd, 删除当前行向下的5行 5dd
在文件中查找某个单词[命令行下/关键字,回车 查找,输入n就是查找下一个]
设置文件的行号, 取消文件的行号[命令行下:set nu 和:set nonu]
编辑/etc/profile 文件,在一般模式下, 使用快捷键到该文档的最末行[G]和最首行[gg]
在一个文件中输入"hello" ,在一般模式下,然后又撤销这个动作u。
编辑
/etc/profile文件,在一般模式下,并将光标移动到,输入 20,再输入shift+g
su只能获得root的执行权限,不能获得环境变量。
su -是切换到root并获得root的环境变量及执行权限。
Linux系统是-一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
查看所有用户
cd /home
useradd 用户名
添加一个用户米兰
useradd milan
多了一个用户
案例1:添加一个用户milan, 默认该用户的家目录在/home/milan
比如在home/test目录下,创建用户king,并且指定家目录
useradd -d/home test king
passwd 用户名
给milan指定密码 passwd milan
比如给milan设置的密码也是milan,实际工作中建议密码设置的复杂一些。
passwd milan milan
尝试用新改的密码登录milan,发现成功了
补充,显示当前用户所在的目录pwd。
pwd
userdel 用户名
删除用户milan, 但是要保留家目录,userdel milan
想用milan登录,就不允许登录了
删除用户以及用户主目录,比如tom, userdel -r tom
创建一个新用户lucy,然后删除lucy
userdel -r lucy
想用lucy登录,就不允许登录了
是否保留家目录的讨论?一般情况下, 我们建议保留。
id 用户名
案例:请查询root信息
#id root
当用户不存在时,返回无此用户
在操作Linux 中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户,比如root。
su - 切换用户名
创建一个用户jack,,指定密码,然后切换到jack
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
当需要返回到原来用户时,使用exit、logout指令。
whoami/who am I
注意:该指令只显示你登录的用户,如果中途切换用户,也是显示登录的用户而不是切换后的用户
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理。
指令:
groupadd组名
案例演示
注意clear指令可以清理指令
clear
如果创建用户没有指定组名称,会自动创建组,组名和用户名相同,比如刚才新建的用户king
指令(基本语法): groupdel 组名
案例演示
指令(基本语法): usermod -g 用户组 用户名
用户(user) 的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell。
查询不同种类的shell
切换目录bin
查询以sh结尾的文件
cd /bin
ls -l *sh
用vim打开
vim /etc/passwd
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志。
vim /etc/shadow
给zwj加上密码后再看看,产生了加密方式
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表。
vim /etc/group
运行级别说明:
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别,后面演示
命令: init [0123456]应用案例:通过 init来切换不同的运行级别,比如从5切换到3 ,然后关机。
比如目前的级别是5,图形界面,在Linux命令终端中输入
init 3
而输入init 6 就是重启了
init 6
重启相当于reboot指令
在centos7以前,/etc/inittab 文件中
进行了简化,如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
#To view current default target, run:
systemctl get-default
#To set a default target, run:
systemctl set-default TARGET.target
输入指令,查看当前系统的运行级别(XShell)
systemctl get -default
现在想切换成运行级别3
systemctl set-default mult-usr.target
如下:
之后再查看一下当前运行级别
这时候如果输入reboot指令重启的话,再开机就会进入运行级别3
如何找回root密码
课堂练习:
进入编辑界面后,实用键盘上的上下键把光标往下移动,找到以“Linux16”开头内容所在的行数如图,在行的最后输入:
init=/bin/sh
接着输入完成后,直接按快捷键 ctrl+x进入单用户模式
接着,在光标闪烁的位置中输入
mount -o remount,rw /
注意,各个单词间都有空格,完成后按键盘的回车键(Enter)如图
在新的一行最后面输入passwd,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可密码修改成功后,会显示passwd的样式,说明密码修改成功。
接着,在光标闪烁的位置中(最后一行)输入
touch /.autorelabel
注意touch与/之间有一个空格,完成后按键盘的回车(Enter)
继续在光标闪烁的位置中,输入
exec /sbin/init
注意:exec与/之间有一个空格,完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程很长,耐心等待)完成后,系统会自动重启,新的密码生效了
之后用新的密码登录即可。
课堂练习:
2) 设置运行级别,linux 运行后,直接进入到命令行终端
见上述操作
基本语法: man [命令或配置文件] (功能描述:获得帮助信息)
案例:查看ls命令的帮助信息 man ls
输入(XShell)
man ls
未展示完的页按空格即可。
在linux下,隐藏文件是以.开头
我们看到文档中-a是展示隐藏文件,那么我们操作一下。首先按q退出帮助文档,在命令行中输入如下指令:
ls -a
我们再看一下帮助信息中-l指的是单列输出,我们再尝试一下。
首先输入q退出帮助文档,然后在命令行中输入
ls -l
帮助文档中,选项可以组合使用
比如ls -al, 比如 Is -al /root
我们实验一下输入
ls -al
输入
ls -al /root
以单列形式展示root目录下的文件
帮助指令的顺序可以修改,比如上面的指令
ls -al /root
可以修改成
ls -la /root
基本语法:help命令(功能描述:获得shell内置命令的帮助信息)
案例:查看cd命令的帮助信息
help cd
如果英语不太好的,也可以直接百度靠谱。
基本语法: pwd (功能描述:显示当前工作目录的绝对路径)
应用实例:案例:显示当前工作目录的绝对路径
模拟:访问a.txt,当前路径是/home
我们新建用户tom
useradd tom
切换目录,使当前目录到home/tom
cd /home/tom
用vim打开a.txt,输入
Hello,Tom
此时退出vim之后,在命令行中输入
pwd
显示如下:
可见pwd是显示当前工作目录的绝对路径
基本语法: ls [选项] [目录或是文件]
cd ~ 或者cd : 回到自己的家目录,
比如你是root,cd ~ 就会回到 /root 目录
cd… :回到当前目录的上一级目录
cd /root
案例2:使用相对路径到/root目录,比如在/home/tom,
解析:当前目录结构:
/→root→home→tom→a.txt
现在在tom的位置,往上2层就到了/的位置,想去root,那么还需要再进入root,综上,命令行如下:
cd ../../root
案例3:表示回到当前目录的上一级目录,cd …
cd..
案例4:回到家目录,cd ~
cd ~
➢mkdir 指令用于创建目录
基本语法: mkdir [选项] 要创建的目录
➢常用选项
-p :创建多级目录
➢应用实例
案例1:创建一个目录/home/dog(相当于创建了1个文件夹)
mkdir /home/dog
案例2:创建多级目录/home/animal/tiger(相当于创建了2个文件夹)
mkdir -p /home/animal/tiger
rmdir指令
➢基本语法
rmdir[选项]要删除的空目录
➢应用实例
案例:删除一个目录/home/dog
rmdir /home/dog
➢使用细节rmdir删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用rm-rf 要删除的目录比如:
删除的时候要谨慎
rm - rf /home/animal
➢touch指令创建空文件
➢基本语法
touch文件名称
➢应用实例 .
案例:在/home目录下,创建一个空文件hello.txt
cp指令拷贝文件到指定目录
➢基本语法
cp [选项] source dest
➢常用选项
-r :递归复制整个文件夹
➢应用实例
案例1:将/home/hello.txt拷贝到/home/bbb 目录下
cp hello.txt bbb/
案例2:递归复制整个文件夹,举例,比如将home/bbb 整个目录,拷贝到/opt
cp -r /home/bbb /opt
➢使用细节
强制覆盖不提示的方法: \cp, \cp -r /home/bbb /opt
说明: rm指令移除文件或目录
rm /home/hello.txt
案例2:递归删除整个文件夹/home/bbb,rm -rf /home/bb [删除整个文件夹,不提示]
rm -rf /home/bb
mv
移动文件与目录或重命名
mv /home/cat.txt /home/pig.txt
案例2:将/home/pig.txt文件移动(剪切)到/root 目录下
mv /home/pig.txt /root/
案例3:移动整个目录,比如将/opt/bbb 移动到/home目录下试试
mv /opt/bbb /home/
案例4:移动并重命名,将/root/bbb/hello2.txt移动到/root目录下,并且重命名为hello3.txt
mv hello2.txt /root/hello3.txt
cat 查看文件内容,更加安全(不能修改)
cat -n /etc/profile
cat /etc/profile|more
输入管道命令,相当于和系统有个交互
空格:下一页
回车:下一行
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令),详见操作说明
基本语法
more要查看的文件
操作说明,如图
more /etc/profile
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less
指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有
较高的效率。
操作说明
下面表格中,空白键 = 空格键
less /etc/profile
echo输出内容到控制台
echo $PATH
echo $HOSTNAME
案例:使用echo指令输出hello ,world!
echo "hello ,world"
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
head -n 5 /etc/profile
不写 -n 数字默认是前10行
head /etc/profile
tail用于输出文件中尾部的内容,默认情况下tail 指令显示文件的后10行内容。
tail -n 5 /etc/profile
案例2:实时监控mydate.txt, 看看到文件有变化时,是否看到,实时的追加hello,world
在XShell中执行如下命令
tail -f /home/mydate.txt
这里想要退出监控的话,实用指令Ctrl+c
登录Linux中,用命令行追加
echo "hello" > /home/mydate.txt
输出重定向和>>追加
ls -l /home > /home/info.txt
那如果我们再追加一段指令会发生什么呢?
echo "hello">info.txt
因为是覆盖写,所以会被hello覆盖
案例2:将当前日历信息追加到/home/mycal 文件中
指令为:
cal >> /home/mycal
那如果我们继续执行下一个指令会发生什么呢
cal >> /home/mycal
因为>>是追加,所以会再生成一个日历
软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
cd myroot/
展示当前列表
ll
发现myroot中就是root的内容,那下面如果我不想要这个软连接了呢?
案例2:删除软连接myroot
rm /home/myroot
查看已经执行过历史命令,也可以执行历史指令
history
案例2:显示最近使用过的10个指令。
history 10
案例3:执行历史编号为5的指令
!5
date
案例2:显示当前时间年月日
date "+%Y- %m-%d"
案例3:显示当前时间年月日时分秒
date "+%Y-%m-%d %H:%M:%S"
date -s “2020-11-03 20:02:10”
查看日历指令cal
cal
案例2:显示2020年日历: cal 2020
cal 2020
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
find /home -name hello3.txt
案例2:按拥有者:查找/opt目录下,用户名称为nobody 的文件
find /opt -user nobody
案例3:查找整个linux系统下大于200M的文件
+n 大于
-n 小于
n 等于
单位有 k,M,G
find / -size +200M
我们验证一下是否有200M多的文件
cd /run/media/root/CentOS\ 7\ x86_64/LiveOS/
展示文件详细信息
ls -l
展示文件详细信息,以直观数据展示
ls -lh
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
先执行
updatedb
再定位
locate hello3.txt
which指令,可以查看某个指令在哪个目录下,比如ls 指令在哪个目录
which ls
grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
比如以上示意图就是,检索hello3.txt中“hello”的段落
cat hello3.txt |grep "hello"
cat /root/hello.txt| grep -n "yes"
写法2:
grep -n "yes" /root/hello.txt
gzip用于压缩文件,gunzip用于解压的,这个在项目打包发布中很有用。
gzip /home/hello.txt
案例2: gunzip压缩, 将/home下的hello.txt.gz 文件进行解压缩
gunzip /home/hello.txt.gz
zip用于压缩文件,unzip 用于解压的,这个在项目打包发布中很有用的
V基本语法
zip [选项] XXX.zip将要 压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip ( 功能描述:解压缩文件)
zip-r myhome.zip/home/
案例2:将myhome.zip 解压到/opt/tmp 目录下
mkdir /opt/tmp
unzip -d /opt/tmp /home/myhome.zip
tar指令是打包指令,最后打包后的文件是.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解压到当前目录
tar -zxvf pc.tar.gz
查看解压情况
案例4:将myhome.tar.gz解压到/opt/tmp2 目录下
(1) mkdir /opt/tmp2
(2) tar -zxvf /home/myhome.tar.gz -C /opt/tmp2