vi和vim
基本介绍
- 所有的Linux系统都会内建 vi 文本编辑器
- Vim具有程序编辑能力,可以看做是Vi的增强版,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补充、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
vim安装
- CentOS下:yum -y install vim*
- 如果是CentOS 6版本或以下可能会安装失败,Cannot find a valid baseurl for repo: centos-sclo-rh
- 参考https://blog.csdn.net/weixin_45873488/article/details/113061603
vi和vim的三种模式
快捷键
只能在一般模式下使用
- yy:拷贝当前行
- 5yy:拷贝当前行向下的5行,包括当前行
- p:粘贴
- dd:删除当前行
- 5dd:删除当前行向下的5行,包括当前行
- /要查找的值:在文件中查找某个单词,输入n是查找下一个
- :set nu:设置文件有行号
- :set nonu:设置文件无行号
- G:光标移到文档最末行
- gg:光标移到文档最首行
- u:撤销上一个动作(从一般模式进入编辑模式,编辑一些内容后退出编辑模式到一般模式,使用该快捷键后编辑的内容将被删除)
将光标移动到指定的行数:
可以使用快捷键,可以使用[上下左右]来移动光标,可以进行复制粘贴,删除等操作
插入(编辑)模式
-
命令行模式
:或 \ 开头进入命令行模式
- :wq 保存并退出
- :q 不保存并退出,在没进行任何操作的情况下使用
-
开机、重启和用户登录注销
关机和重启
shutdown
- shutdown -h now:立即关机
- shutdown -h 1:”hello,1分钟后悔关机了”
- shutdown -r now:重新启动计算机
- halt:关机
- reboot:重启
- sync:把内存的数据同步到磁盘
不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,防止数据丢失
用户登录和注销
登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登录后再用“su-用户名”命令来切换系统管理员身份
- 在提示符下输入logout即可注销用户
-
用户管理
基础介绍

Linux系统是一个多用户任务的操作系统,任何一个要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统
-
添加用户
useradd [选项] 用户名
userdel 用户名
- 删除后,家目录保存
- userdel -r 用户名:删除用户及用户主目录
-
查询用户信息
id 用户名:查询用户信息
切换用户
- 在操作Linux中,如果当前用户的权限不够,可以通过su-指令,切换高权限用户,比如root
- su - 切换用户名
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用exit指令
-
用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理
- groupadd 组名
- groupdel 组名
- useradd -g 用户组 用户名:创建用户并指定组名
-
用户和组的相关文件
/etc/passwd:用户的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
- /etc/shadow:口令的配置文件
- 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件:组(group)的配置文件,记录Linux包含的信息
0:关机
- 1:单用户[找回丢失密码]
- 2:多用户状态没有网络服务
- 3:多用户状态有网络服务
- 4:系统未使用保留用户
- 5:图形界面
- 6:系统重启
- 常用运行级别是3和5
- init 运行级别:修改运行级别
vi /etc/inittab,进入编辑模式将默认级别改为3,重启后默认进入命令行模式
找回root密码
开机
- 在引导时输入 e
- 进入一个页面 输入e
- 进入一个页面,选中第二行输入e
- 输入 1 回车
- 输入b,进入单用户模式
- passwd root, 修改密码
-
帮助指令
man 命令或配置文件 (功能描述:获得帮助信息]
- man ls
- help 命令 (功能描述:获得shell内置命令的帮助信息)
-
文件目录类
pwd:(功能描述:显示当前工作目录的绝对路径)
- ls [选项] 目录或是文件
- -a:显示当前目录所有的文件和目录,包括隐藏的
- -l:以列表的方式显示信息
- cd 参数 (功能描述:切换到指定目录)
- cd~或cd:回到自己的家目录
- cd..:回到当前目录的上一级目录
- 绝对路径:从根目录开始
- 相对路径:从当前工作目录开始往下定位。若当前工作目录为boot,在它下面有aaa文件目录,则使用cd ../boot/aaa可将工作目录改为aaa
- mkdir 选项 要创建的目录
- -p:创建多级目录
- 示例:mkdir /home/dog(只能在已有目录下创建一层目录)
- 示例:mkdir /home/animal/tiger
- rmdir 选项 要删除的空目录
- rmdir删除的是空目录,如果目录下有内容时无法删除的
- 如果要删除非空目录,需要使用rm -rf要删除的目录
- touch 文件名称:创建空文件
- 示例:touch hello.txt
- cp 要复制的文件 要粘贴到的目录
- 示例:cp hello.txt bbb/
- cp -r 要复制的目录 要粘贴到的目录(复制整个文件夹)
- cp -r bbb/ zwj/
- \cp:强制覆盖不提示
- rm 选项 要删除的文件或目录
- -r 递归删除整个文件夹
- -f 强制删除不提示
- mv oldNameFile newNameFile (重命名)
- mv 要移动的文件 要移动到的目录(移动文件,相当于剪切)
- cat 选项 要查看的文件
- -n:显示行号
- cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 |more
- more 要查看的文件
- more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,详见操作说明
- 空格键:向下翻一页
- 回车键:向下翻一行
- q:离开
- ctrl+F:向下滚动一屏
- ctrl+B:返回上一屏
- =:输出当前行号
- :f:输出文件名和当前行号
- less 要查看的文件
- less并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
:输出重定向
- ll > 文件:将列表的内容写入文件中(覆盖写)
- ll >> 文件:将列表内容写入文件中(追加写)
- cat 文件1 > 文件2:将文件1的内容覆盖到文件2
- echo 内容 > 文件:将指定内容写入文件中
- cal >> 文件:将日志写到文件中
- echo 选项 输出内容:输出内容到控制台
- 示例:echo $PATH:输出当前环境变量路径
- 示例:echo “hello”
- head:用于显示文件的开头部分,默认显示文件的前10行
- 示例:head /etc/profile
- head -n 5 文件:指定显示几行内容
- 示例:head -n 5 /etc/profile
- tail:用于显示文件的尾部,默认显示后10行
- tail 文件
- tail -n 5 文件:显示指定的几行
- tail -f 文件:实时监测文件更新
- ctrl + c:退出
- ln
- 软连接(符号连接),类似于windows里的快捷方式,主要存放了连接其他文件的路径
- ln -s 原文件或目录 软连接名(给原文件创建一个软连接)
- 示例:ln -s /home linktohome
- 删除软连接:rm linktohome(不加斜杠)
- 当我们使用pwd指令查看目录时,仍然看到的是软连接所在目录
history:查看已经执行过的历史命令
date:显示当前时间
-
cal
cal:显示当前日历
-
搜索查找类
find
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
- find 搜索范围 选项
- -name:按照指定的文件名查找文件
- -user:按照属于指定用户名所有文件
- -size:按照指定的文件大小查找文件
- 示例:find /root -name hello.java
示例:find / -size +20M:所有大于20M的文件
locate
locate指令可以快速定位文件路径
- locate指令利用事先建立好的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。
- locate指令无需遍历整个文件系统,查询速度较快。
- 为了保证查询结果的准确性,管理员必须定期更新locate时刻
- locate 搜索文件
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
grep
过滤查找,管道符,”|”,标示将前一个命令的处理结果输出传递给后面的命令处理
- cat root_info.txt | grep -n hello(区分大小写)
cat root_info.txt | grep -ni hello(不区分大小写)
压缩
gzip/gunzip
gzip 文件(压缩文件,压缩为.gz文件)
- gunzip 文件
- 压缩后不保留原来的文件
- 可同时压缩多个,压缩后得到相应个数的.gz文件
示例:gzip hello.java root_info.txt
zip/unzip
zip 选项 xxx.zip 要压缩的内容(压缩为.zip文件)
- unzip 选项 xxx.zip
- -r :递归压缩,即压缩目录
- -d 目录:指定解压后文件的存放目录
- 示例:zip -r hom.zip /home/
示例:unzip -d /opt/temp home.zip
tar
tar指令是打包指令,最后打包后的文件是.tar.gz的文件
- tar 选项 xxx.tar.gz 打包的内容
- -c:产出tar打包文件
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包同时压缩
- -x:解包tar文件
- 示例:tar -zcvf home.tar.gz /home/
- 示例:tar -zxvf home.tar.gz -C /opt
RPM和YUM
RPM
- 一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manger(RedHat软件包管理工具)的缩写,类似windows的setup.exe
LInux的分发版本都有采用(suse,redhat,centos)
rpm包的简单查询指令
rpm -qa | grep xx:查询已安装的rpm列表
- rpm -q 软件包名:查询软件包是否安装
- rpm -q firefox
- 结果:firefox-45.0.1-1.el6.centos.x86_64
- 示例:查询centos有没有安装firefox
- rpm -qa | grep firefox
- 结果:firefox-45.0.1-1.el6.centos.x86_64
- rpm -ql 软件包名:查询软件包中的文件
- rpm -qi 软件包名:查询软件包信息
rpm -qf 文件全路径名:查询文件所属的软件包
firefox-45.0.1-1.el6.centos.x86_64
- 名称:firefox
- 版本号:45.0.1-1
适用操作系统:el6.centos.x86_64
rpm -e 文件包名称:卸载软件包
- rpm -e —nodeps 文件包名称:强制卸载
- rpm -ivh 文件包名称:安装文件包
- -i:install
- -v:verbose提示
- -h:hash进度条
- 安装firefox
- rpm -e firefox
- cd /media/CentOS_6.8_Final/Packages/
- cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt
- cd /opt
- rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm /opt
yum
https://blog.csdn.net/weixin_42104211/article/details/112228242
