来个操作吓吓你
提问:这是个啥,这个键盘是干啥的
是vi/vim的快捷键
vi是用来操作和编辑文件的,又因为linux是万事万物皆文件,所以可见这个操作重要性
vim是vi的加强版,也同样重要
想要操作一个文件首先要打开它,在linux系统中打开终端,输入如下代码
vim 文件名.扩展名这句话的意思就是如果没有这个文件就先创建再打开,如果有直接打开
vim 打开文件后有三种模式
普通(正常)模式
用vim打开后的默认模式在这个模式我们可以使用快捷键进行[粘贴/复制],[删除整行/删除字符]来处理文档内容编辑模式
按下i,I,o,O,a,A,r,R等任何一个字母就会进入编辑模式,一般我们使用到的都是i命令行模式
在这个模式中,可以提供你相关指令,完成读取,存盘,替换,离开,vim,显示行号等都是在这个模式中完成的三种模式的切换方法
vi/vim常用快捷键(未作标注的都是在普通模式下的按键) 1)拷贝当前行yy, 拷贝当前行向下的5行5yy, 并粘贴。2)删除当前行dd,删除当前行向下的5行5dd3)在文件中查找某个单词[命令行下/关键字,回车查找,输入n就是查找下一个]4)设置文件的行号,取消文件的行号.[命令行下:set nu和:set nonu]5)编辑/etc/profile文件,使用快捷键到底文档的最末行[G]和最首行[gg]6)在一个文件中输入"hello" ,然后又撤销这个动作u7)编辑/etc/profile 文件,并将光标移动到20行shift+g创建用户
useradd 用户名 useradd -d 指定路径 用户名第一种方式创建就是在home路径下创建一个用户名同名的文件夹就代表这个用户
第二种方式创建就是在指定路径下创建一个用户名同名文件夹代表这个用户
扩展
useradd -g 组名 用户名创建用户并把它放在指定的组下
useradd -u 用户ID 用户名指定用户的id号
设置密码
passwd 用户名删除用户
userdel 用户名 ##删除指定用户保留用户目录 userdel -r 用户名 ##删除指定用户不保留用户名 userdel -f 用户名 ##强制删除用户,即使当该用户已经登录在公司中一般保留用户目录,万一里面有公司业务
查询用户
id 用户名 #当用户不存在时就会返回信息用户不存在切换用户
su 切换的用户名权限高的用户切换到权限低的用户不需要输入密码,反之需要如果需要返回原来的用户直接输入exit注意 su - 用户名切换用户并且会携带目标用户的环境变量,但是su就不会修改用户
usermod用于修改用户的基本信息
语法:
usermod [选项] 用户名选项
-g 修改用初识登陆组,并且这个组必须存在
usermod -g 组名 用户名-c 修改用户的注释信息
usermod -c "注释新消息" 用户名-d 修改用户的宿主目录
usermod -d 用户寄宿新目录 用户名sudo
功能介绍:sudo设置普通用户具有root权限
语法: sudo [指令]
注意需要修改配置文件
[root@hadoop101 ~]#vi /etc/sudoers 修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下所示: ## Allow root to run any commands anywhere root ALL=(ALL) ALL jinghang ALL=(ALL) ALL 或者配置成采用sudo命令时,不需要输入密码 ## Allow root to run any commands anywhere root ALL=(ALL) ALL jinghang ALL=(ALL) NOPASSWD:ALL 修改完毕,现在可以用jinghang帐号登录,然后用命令 sudo ,即可获得root权限进行操作。查看当前用户
whoami/who am Iwhoami只输出用户名who am i 会显示登陆时间等一系列信息用户组管理
添加用户组 groupadd 组名groupadd -g [组id] [组名] 修改用户的组 usermod -g 用户组 用户名用户组删除
groupdel [组名]经验技巧: groupdel 指令无法删除用户的主要组(Primary Group), 即无法删除创建用户时自动为用户所创建的组(如果此用户还存在)。更改用户组
语法:groupmod [选项] [组名]选项: -n<新组名>-g<新租ID>注意:组名和id名必须得是唯一的用户和组的配置文件
/etc/passwd 用户(user) 的配置文件,记录用户的各种信息每行的含义,用户名:口令(加密密码):用户标识号:组标识号:注释性描述:主目录:登录Shell /etc/shadow 存放用户口令(加密密码) /etc/group 包含用户组信息每行含义:组名:口令:组标识号:组内用户列表运行级别
常用的运行级别就是3/5
运行级别系统配置文件在 /etc/inittab,可以通过修改运行级别来切换级别状态
在配置文件中的为 id:5:initdefault
切换运行级别还可以直接 init 运行级别
man 获取帮助信息
语法
man [命令或者配置文件]help
语法
help 命令 (功能描述: 获取shell内置命令的帮助信息)取 help -s 命令 剪短的形式出现命令的书写格式百度查找最直接
man与help的差别:
首先要区分内键命令和外部命令,首先我们知道centos7是基于linux内核外加shell程序的一个应用程序,内键指令实际上是shell程序的一部分,存放一些简单的linux系统命令,在linux系统加载的时候就会被加载入内存,执行时不需要开启子线程,所以运行速度就会非常的块,比如cd,history,exit外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。我们可以使用type 或者是which命令来区分命令是内建的还是外部的。例如这两个得出的结果是不同的 包含shell的字眼的就是内建命令如果包含linux文件系统中的目录就是外部命令 man既可以看内建命令也可以看内部命令,但是help却只能识别内建命令基本语法
Is [选项] [目录或是文件]
常用选项
-l :以列表的方式显示信息-a :显示当前目录所有的文件和目录,包括隐藏的-h:显示文件大小(一般与l连用)-R:递归显示该目录下所有的文件或者目录-s:以块(1块=1024字节)为单位显示文件的大小-C: 多列显示输出结果,默认-P:跳转到实际物理路径,而非软连接路径先创建软连接然后跳转 mkdir指令用于创建目录
基本语法
mkdir [选项] 要创建的目录 从外向内创建常用选项
-p 创建多及目录-v 显示创建目录的过程
rmdir指令用于删除空目录
基本语法
rmdir [选项] 要删除的空目录 由内而外删除注意
rmdir只能删除空目录如果目录下有内容,就需要 rm -rf 要删除的目录 touch指令创建文件(空文件)
基本语法 touch 文件名 练习在/root/文档目录下创建touch1txt,touch2.txt cp 指令拷贝文件到指定目录
基本语法
cp[选项] source(源文件在哪) dest(复制到哪)常用选项
-r 递归复制整个文件夹-a 保持源文件的原有结构和属性,与选项“-dpR"的功能相同在cp前加 \ 就是强制覆盖(用于处理已经存在的文件复制)-v 显示指令执行细节注意
经验技巧:cp指令可以一次复制多个源文件,但是要求最后一个参数必须为目录。练习将/root/文档中的两个文件移到公共中 -
注意: 如果想要只赋值内容的话就需要加*号 rm指令移除文件或目录
基本语法 rm [选项]要删除的文件或目录 常用选项 -r:递归删除整个文件夹(一般不单独使用)-f :强制删除乐提示-v:显示过程细节 练习:删除/root/公共的/下的所有内容(不要删除公共的文件夹)mv 移动文件与目录或重命名
基本语法
mv oldNameFile newNameFile (功能描述:重命名) 如果在同一 目录下利用mv指令移动文件,可以实现文件改名操作。为防 止误操作而覆盖已经存在的文件,在使用mv指令时,最好加上“-i”选项 mv /temp/movefile /targetFolder (功能描述:移动文件) 当第一个参数有文件名,第二个没有的时候就会发生文件移动练习:将class26.txt移动到/root/文档/下
练习2:将/root/文档 下的foom.txt改为fffm.txt
cat查看文件内容
基本语法 cat: [选项]要查看的文件 常用语法 -n:显示行号包括空行-b:在非空行前显示行号-s :压缩空行,多个空行连续出现时仅显示一个空行 使用细节 cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令 | morecat只适合浏览小型的文本文件,性能不是很出色 练习不同参数下的cat语法去访问/root/文档/class26.txt文件-n 所有都会显示(包括空行)
-b在非空行前显示行号
先压缩在显示行号 -
more指令中内置了若干快捷键,详见操作说明
基本语法 more 要查看的文件 说明 由于more是基于vi编辑器的文本过滤器性能上会好一点,但是他由于是将全篇文本加载进入内存后展示,只适合小型和适中大小的文本 注意 能够执行上面操作的前提是文本大小要大于一页才可以 less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令 在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
基本语法 less 要查看的文件 说明 这个是比较优秀的文本过滤器,需要多少就加载进内存多少,不会一下子就加载完成,既可以满足小文本读取,也可以快速读取大文本的一部分,可以说相当优秀">"输出重定向 >> 追加
基本语法 ls -l > 文件 (把操作 ls - l 的结果覆盖放入文件中,如果文件不存在就创建)ls -al >> 文件 (把操作 ls -al 的结果追加到文件中,如果文件不存在就创建)cat 文件1 > 文件2 (把操作 cat 文件1 的结果或者说是文件1中的内容覆盖到文件2中,没有就创建)[同样也可以追加]echo “内容” >> 文件 (把"内容"追加写入文件中) [同样也可以覆盖] 追加内容 cal可以直接显示当前日历 将日历分别覆盖与添加到/root/文档/中的fffm.txt和form2.txt中echo输出内容到控制台
基本语法 echo [选项] [输出内容] 参数列表 -e 支持反斜线控制的字符转换在-e的基础上两个\ 输出\本身\n 换行符\t 制表符,也就是Tab键 应用 一般使用echo指令输出环境变量,输出当前的环境路径echo $PATH 输出环境变量 练习换行输出 head指令用于显示文件开头的部分内容,默认情况下head指令显示文件的前10行内容
基本语法 head 文件 (查看开头10行的内容)head -n 5 文件 (查看开头5行的内容) 参数 -v 总是显示文件名的头信息-n <行数> 指定显示头部内容的行数 tail指令用于显示文件结尾的部分内容,默认情况下tail指令显示文件最后10行内容
基本语法 tail 文件 (查看结尾10行的内容)tail -n 5 文件 (查看文件后5行的内容)tail -f 文件 (实时追踪文档更新) 软链接也叫符号链接,类似于window中的快捷方式,主要存放了链接其他文件的路径
软连接和硬链接的区别:
软连接的类似于windows的快捷方式,指向真实地址
硬链接与真实文件的大小和日期一模一样,就好像是同步更新
硬链接与复制的区别:
复制到的文件与原文件的日期不相同,但是硬链接的是相同的
基本语法
ln 直接创建硬链接ln -s [原文件或者目录] [软连接名] (功能描述: 给原文件创建一个链接)cd -P 软连接路径 可以进入真实路径cd $(readlink -f 软连接路径)细节说明
当我们使用pwd查看目录时,仍然看到的是软连接所在的目录删除的时候最后不要带/,并且要使用-rf加成才能删除只能为普通文件创建硬链接, 不能为目录创建硬链接。而符号链接(软连接)则没有任何限制练习为/root/文档/fffm.txt文件在/root中创建一个软连接rili
进入软连接的真实路径的方法
cd $(readlink -f 软连接路径)echo $(readlink -f 软连接路径)cd -P 软连接 查看已经执行过的指令,并且可以执行历史指令
基本语法 history 查看已经执行过得指令history 5 查看最近使用的5个命令!5 执行编号为5的指令(一般是先查看历史指令,然后执行)date (显示当前时间)
date “+%Y” (显示当前的年份)
date “+%m” (显示当前的月份)
date “+%d” (显示当前的日期)
date “+%Y-%m-%d %H:%M:%S” (显示年月日时分秒)
应用实例
date修改时间
前提一定要在root用户下date -s “字符串时间”data查看非当前时间
语法: date -d “1 days ago”(显示前一天的时间)date -d “-1 days age”(显示明天的时间)date使用细节
查看时间的时候一定要在字符串里加一个"+"号显示当前日历
显示2020年的日历
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法 find [搜索范围] [选项] 选项说明-empty 查找文件大小为0的目录或者文件
-type<文件类型> 按照指定的文件类型查找文件,支持的文件类型如下:
b块设备文件(block device)c字符设备文件( characterdevice)d目录(directory)p命名管道(FIFO)f普通文件l符号链接文件(symbolic links)s网络套接字文件( socket) 案例找到/home下的Hello.java
查找/opt下的用户名为root的文件
查找/home文件大小大于10K的文件
查找/home下所有txt文件
查找/root大于1M小于3M的文件
注意事项:
使用size选项查找的时候需要注意单位M大写,k小写+代表大于,-代表小于,什么都没有代表等于 locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
基础语法 locate 要定位的文件 特别说明 由于locate指令基于数据库进行查询,所以第一次运行前, 必须使用updatedb指令创建locate数据 应用实例利用locate指令快速定位hello.java文件
grep过滤查找,管道符 “|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法 grep [选项] 查找内容 源文件 常用选项 -n :显示匹配行和行号-i :忽略字母的大小-v:搜索不含指定字符串的行 应用实例需求: 在Hello.java中寻找String所在的行
需求:在/root/文档/fffm.txt中寻找日所在的行
功能介绍:which指令用于查找并显示给定指令的绝对路径
语法 which [指令名] 练习找到ll指令的绝对路径 功能介绍:whereis显示指令及相关文件的路径
语法:whereis 【选项】【参数】选项: -b 仅查找二进制程序或者命令练习找到rm的路径 gzip用于压缩文件,gunzip用于解压缩文件
基本语法 gzip 文件 将文件压缩成文件.gzgunzip 文件.gz 将.gz文件解压缩 说明 文件一旦压缩过后原文件就会消失,取而代之的是.gz文件只能压缩文件 案例 zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用的
基本语法 zip [选项] XXX.zip 将要压缩的文件名unzip[选项] XXX.zip 常用选项 -r: 递归压缩,即压缩目录 unzip的常用选项 -d<目录> :指定解压后文件的存放目录 应用案例 案例1:将home下的所有文件进行压缩成mypackage .zip tar指令
tar指令是打包指令,将文件打包过后生成**.tar.gz**的文件
基本语法
tar [选项] XXX.gz 需要打包的内容选项说明
应用案例
案例1:压缩多个文件,将a1.txt和a2.txt压缩成a.targz
案例2:将/home 的文件夹压缩成backage.targz
案例3:将a.tar.gz解压到当前目录
特别说明
想要解压到某个目录下需要在目录前加**-C** tar -zxvf XXX.tar.gz -C 文件目录 经验技巧:tar指令的3个主选项“c”,“x”只能使用一个,不能同时使用没否则将导致命令报错