linux学习

linux命令学习

1、Linux目录结构

linux只有一个顶级目录
在这里插入图片描述
在这里插入图片描述

文件含义
/bin存放着最经常使用的命令。
/sbin存放的是系统管理员使用的系统管理程序。需要管理员权限才能使用的命令
/boot存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。linux中每新建一个用户,会自动在home中为该用户分配一个文件夹
/liblib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,linux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar。几乎所有的应用程序都需要用到这些共享库。
/usr用户的很多应用程序和文件都放在这个目录下(很多系统软件的默认安装路径),类似于 windows 下的 program files 目录。
/var系统和程序运行产生的日志文件和缓存文件放在这里
/root该目录为系统管理员,也称作超级权限者的用户主目录。仅供root账户使用
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/medialinux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/opt这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/srv该目录存放一些服务启动之后需要提取的数据。
/sys该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp用来存放一些临时文件的

2、linux关机

正确的关机流程为:sync > shutdown > reboot > halt

sync 将数据由内存同步到硬盘中
shutdown 关机指令  

shutdown -h now  立马关机,等同于halt和poweroff
shutdown -h 20:25   系统会在今天20:25关机
shutdown -h +10   十分钟后关机
shutdown -r now  系统立马重启,等同于reboot
shutdown -r +10 系统十分钟后重启

3、简单系统命令

# 查看ip地址
      ifconfig
# ping网络(测试网络连接)
      eg:ping www.baidu.com
#  查看系统时间
      date
# 清屏
      clear

4、文件管理命令(区分大小写)

4.1、ls查看文件列表

#  ls  查看当前目录下的文件列表
#  ls /   查看指定目录下的文件
#  ls -l  查看详细信息,元数据信息(用户、组、大小、创建时间、权限信息、文件类型)
#  ls -a  全部的文件,连同隐藏文件(开头为 . 的文件) 一起列出来(常用)
#  ls -la  参数并用

在这里插入图片描述
实例中,usr 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
    接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

4.2、cd切换目录

cd 绝对路径   eg: cd /home/fang
cd 相对路径   eg: cd ./xiaofang
cd ..       返回上一级目录
# eg: cd /home/fang
      cd xiaofang

在这里插入图片描述

4.3、pwd显示目前的目录

pwd  显示目前的目录

在这里插入图片描述

4.4、touch、mkdir新建文件夹及文件

mkdir 文件夹名      在当前位置新建文件夹
mkdir -p /文件名/.../父文件夹名/文件夹名     在指定目录位置,创建文件夹,并创建父文件夹
touch 文件名    在当前目录下新建文件

在这里插入图片描述

4.5、rm、rmdir删除文件及文件夹

rm 文件     删除文件
rm -r 文件夹   删除文件夹
rm -rf 文件    强制删除不询问
rm -i 文件     在删除前会询问使用者是否动作
rmdir [-p] 目录名称   删除空的目录
	  -p:从该目录起,一次删除多级空目录

在这里插入图片描述
在这里插入图片描述

4.6、cp拷贝文件

cp 原文件 新文件       拷贝文件
cp -r  源文件夹 新文件夹      拷贝文件夹
cp -i  原文件 新文件    若目标档已经存在时,在覆盖时会先询问动作的进行(常用)n不覆盖,y为覆盖

在这里插入图片描述
在这里插入图片描述

4.7、mv移动文件或修改文件夹名

mv 文件/文件夹  文件夹    移动源文件到目标文件夹中
mv 文件A 文件B      修改文件A的名字为文件B
mv -i 文件  文件夹        若目标文件已经存在时,就会询问是否覆盖!

在这里插入图片描述
在这里插入图片描述

4.7、获取文件的md5指纹(数字签名)

md5sum 文件名
# 简介
1. 数字签名,又称数字指纹
2. 可以验证文件是否被修改
3. 一个文件通过计算得到的一串字符串,文件内容的唯一标记(文件内容不变,指纹不会变)

在这里插入图片描述

5、查看文件内容命令

5.1、cat命令

查看文件中的全部信息(适合查看小文档)
cat 文件名
cat [-AbEnTv]  文件名
  • -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符
    在这里插入图片描述

5.2、tac命令

ac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
在这里插入图片描述

5.3、nl

显示行号

nl [-bnw] 文件

在这里插入图片描述

  • -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值);
  • -n :列出行号表示的方法,主要有三种:
    -n ln :行号在荧幕的最左方显示;
    -n rn :行号在自己栏位的最右方显示,且不加 0 ;
    -n rz :行号在自己栏位的最右方显示,且加 0 ;
  • -w :行号栏位的占用的位数。

5.4、more

一页一页翻动

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用

5.5、less命令

以分页的方式浏览文件信息(适合查看大文档),进入浏览模式

less 文件名
  • 空白键 :向下翻动一页;
  • ↓:向下翻动一页;
  • ↑ :向上翻动一页;
  • g :第一页
  • G:最后一页
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序

5.6、head

取文件前面几行

head [-n number] 文件 
  • -n :后面接数字,代表显示几行的意思

在这里插入图片描述

5.7、tail命令

实时滚动显示文件的最后10行信息(默认10)

tail -f 文件名
tail [-n number] 文件
  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
    在这里插入图片描述

6、文件查找

6.1、find文件名查找

find 搜索路径 -name "文件名关键字"
eg:find /home/fang/learn -name "tmp"

在这里插入图片描述

6.2、查找文件内容

grep -参数 要查找的目录范围
  • -n 显示查找结果所在行号
  • -R 递归查找目录下的所有文件

7、Linux 用户和用户组管理

7.1、Linux系统用户账号的管理

7.1.1、useradd添加账户

useradd 选项 用户名
  • 选项:
    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
useradd –d  /home/sam -m sam

创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)
在这里插入图片描述

7.1.2、userdel删除账号

删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

在这里插入图片描述

7.1.3、修改账号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

7.1.4、用户口令的管理

用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

passwd 选项 用户名

选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

7.2、linux系统用户和用户组的管理

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

7.2.1、groupadd增加一个新的用户组

groupadd 选项 用户组

选项:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
groupadd group1  //向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

在这里插入图片描述

groupadd -g 101 group2  //向系统中增加了一个新组group2,同时指定新组的组标识号是101。

在这里插入图片描述

7.2.2、groupdel删除用户组

语法:

groupdel 用户组

例:

groupdel group1    //从系统中删除组group1。

7.2.3、groupmod修改用户组属性

语法:

groupmod 选项 用户组

选项:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字
 groupmod -g 102 group2   //将组group2的组标识号修改为102。
 groupmod –g 10000 -n group3 group2   //将组group2的标识号改为10000,组名修改为group3。

7.3、与用户账号有关的系统文件

7.3.1、/etc/passwd

etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。
在这里插入图片描述

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  1. "用户名"是代表用户账号的字符串。
    • 通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。
    • 为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  2. “口令”一些系统中,存放着加密后的用户口令字。
  3. “用户标识号”是一个整数,系统内部用它来标识用户。
    • 一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
    • 通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  4. “组标识号”字段记录的是用户所属的用户组。
    • 它对应着/etc/group文件中的一条记录。
  5. “注释性描述”字段记录着用户的一些个人情况。
  6. “主目录”,也就是用户的起始工作目录。
  7. 用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
  8. 系统中有一类用户称为伪用户(pseudo users)

7.3.2、/etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

/etc/shadow中的记录行与/etc/passwd中的一 一对应,它由pwconv命令根据/etc/passwd中的数据自动产生,它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
  2. "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  4. "最小时间间隔"指的是两次修改口令之间所需的最小天数。
  5. "最大时间间隔"指的是口令保持有效的最大天数。
  6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

7.3.3、/etc/group

用户组的所有信息都存放在/etc/group文件中。

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表
  1. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  2. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  3. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
  4. "组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
    在这里插入图片描述

7.4、批量添加用户

  1. 先编辑一个文本用户文件。
    每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
  1. 以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:
newusers < user.txt
  1. 执行命令/usr/sbin/pwunconv
pwunconv
  1. 编辑每个用户的密码对照文件
    格式为:
用户名:密码
user001:123456
user002:123456
user003:123456
  1. 以 root 身份执行命令 /usr/sbin/chpasswd
    创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏
chpasswd < passwd.txt
  1. 确定密码经编码写入/etc/passwd的密码栏后
    执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow。
pwconv

这样就完成了大量用户的创建了,使用su 用户名可以切换用户进行验证(root用户切换到其他用户无需密码)
在这里插入图片描述

8、文件基本属性

8.1、chown修改所属用户与组

chown [R] 所有者 文件名
chown [-R] 所有者:属组名 文件名

8.2、chmod修改用户权限

8.2.1、数字类型改变文件权限

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。文件的权限字符为: -rwxrwxrwx 。也可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx- - - 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0

所以设定权限的变更时,该文件的权限数字就是 770。

chmod [-R] xyz 文件或目录
  • xyz : 数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

8.2.2、符号类型改变文件权限

基本上就九个权限分别是:

user:用户
group:组
others:其他

那么我们就可以使用 u, g, o 来代表三种身份的权限。此外, a 则代表 all,即全部的身份。

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

8.3、更改文件属性

chgrp [-R] 属组名  文件名

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。

9、Linux磁盘管理

inux 磁盘管理常用三个命令为 df、du 和 fdisk。

  • df(英文全称:disk free):列出文件系统的整体磁盘使用量
  • du(英文全称:disk used):检查磁盘空间使用量
  • fdisk:用于磁盘分区

9.1、df

检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:

df [-ahikHTm] [目录或文件名]

选项与参数:

  • -h:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。
  • -T:显示文件系统的类型。
  • -t <文件系统类型>:只显示指定类型的文件系统。
  • -i:显示 inode 使用情况。
  • -H:该参数是 -h 的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。
  • 这个选项会以 KB 作为单位显示磁盘空间使用情况。
  • 该参数将显示所有的文件系统,包括虚拟文件系统,例如 proc、sysfs 等。如果没有使用该选项,默认情况下,df 命令不会显示虚拟文件系统。
    在这里插入图片描述
    在这里插入图片描述

9.2、du

Linux du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看。
语法:

du [-ahskm] 文件或目录名称

选项与参数:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :仅显示指定目录或文件的总大小,而不显示其子目录的大小。
  • -S :包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;
    在这里插入图片描述
    直接输入 du 没有加任何选项时,则 du 会分析当前所在目录里的子目录所占用的硬盘空间。
    在这里插入图片描述
    在这里插入图片描述
    通配符 * 来代表每个目录。
    与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

9.3、fdisk

fdisk 是 Linux 的磁盘分区表操作工具
语法:

fdisk [-l] 装置名称

选项与参数:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
    在这里插入图片描述

9.4、mkfs 磁盘格式化

语法:

mkfs [-t 文件系统格式] 装置文件名

选项与参数:

  • -l:可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

9.5、fsck磁盘检验

用来检查和维护不一致的文件系统。
语法:

fsck [-t 文件系统] [-ACay] 装置名称

选项与参数

  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
  • -s : 依序一个一个地执行 fsck 的指令来检查
  • -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
  • -C : 显示完整的检查进度
  • -d : 打印出 e2fsck 的 debug 结果
  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
  • -R : 同时有 -A 条件时,省略 / 不检查
  • -V : 详细显示模式
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复
  • -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。

在这里插入图片描述

9.6、磁盘挂载mount与卸载umount

挂载mount 语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点
df  查看已挂载文件信息

卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点

选项与参数:

  • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  • -n :不升级 /etc/mtab 情况下卸除。

10、vi/vim

基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。

10.1、命令模式

用户刚刚启动 vi/vim,便进入了命令模式。
以下是普通模式常用的几个命令:

  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • : – 切换到底线命令模式,以在最底一行输入命令。
  • a – 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O – 在当前行的上方插入一个新行,并进入插入模式。
  • dd – 剪切当前行。
  • yy – 复制当前行。
  • p(小写) – 粘贴剪贴板内容到光标下方。
  • P(大写)-- 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。
  • :w – 保存文件。
  • :q – 退出 Vim 编辑器。
  • :q! – 强制退出Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

10.2、输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符

  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

10.3、底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
  • :q!:强制退出Vim编辑器,不保存修改。

按 ESC 键可随时退出底线命令模式。

10.4、vi/vim 按键说明

10.4.1、一般模式可用的光标移动、复制粘贴、搜索替换等

10.4.1.1、移动光标的方法
按键说明
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+光标移动到非空格符的下一行
-光标移动到非空格符的上一行
n那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
nn 为数字。光标向下移动 n 行(常用)
10.4.1.2、搜索替换
按键说明
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
:n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
10.4.1.3、删除、复制与贴上
按键说明
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd剪切游标所在的那一整行(常用),用 p/P 可以粘贴。
nddn 为数字。剪切光标所在的向下 n 行,例如 20dd 则是剪切 20 行(常用),用 p/P 可以粘贴。
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G复制游标所在行到第一行的所有数据
yG复制游标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)
.不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

10.4.2、一般模式切换到编辑模式的可用的按钮说明

10.4.2.1、进入输入或取代的编辑模式
按键说明
i, I进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)
r, R进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)

10.4.3、一般模式切换到指令行模式的可用的按钮说明

10.4.3.1、指令行的储存、离开等指令
按键说明
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于(保存并退出)
ZQ不保存,强制退出。效果等同于 :q!。
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
10.4.3.2、vim 环境的变更
按键说明
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

11、yum 命令

yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令.

11.1、yum 语法

yum [options] [command] [package ...]
  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

11.2、yum常用命令

  1. 列出所有可更新的软件清单命令:yum check-update
  2. 更新所有软件命令:yum update
  3. 仅安装指定的软件命令:yum install <package_name>
  4. 仅更新指定的软件命令:yum update <package_name>
  5. 列出所有可安裝的软件清单命令:yum list
  6. 删除软件包命令:yum remove <package_name>
  7. 查找软件包命令:yum search <keyword>
  8. 清除缓存命令:
    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12、apt命令

apt是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令。

apt 命令执行需要超级管理员权限(root)。

12.1、apt 语法

  apt [options] [command] [package ...]
  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

12.2、apt 常用命令

  1. 列出所有可更新的软件清单命令:sudo apt update

  2. 升级软件包:sudo apt upgrade

  3. 列出可更新的软件包及版本信息:apt list --upgradeable

  4. 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  5. 安装指定的软件命令:sudo apt install <package_name>

  6. 安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

  7. 更新指定的软件命令:sudo apt update <package_name>

  8. 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

  9. 删除软件包命令:sudo apt remove <package_name>

  10. 清理不再使用的依赖和库文件: sudo apt autoremove

  11. 移除软件包及配置文件: sudo apt purge <package_name>

  12. 查找软件包命令: sudo apt search <keyword>

  13. 列出所有已安装的包:apt list --installed

  14. 列出所有已安装的包的版本信息:apt list --all-version
    在这里插入图片描述
    在这里插入图片描述

    在以上交互式输入字母 Y 即可开始升级。

    可以将以下两个命令组合起来,一键升级:

sudo apt update && sudo apt upgrade -y

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值