二.Linux基础指令

1. Vi 与 Vim编辑器

学习Vi的目的

  • 在工作中,要对服务器上文件进行简单修改,可以使用SSH远程登录到服务器上,并使用vi进行快速编辑;
  • 常见需要修改的文件包括:
    • 源程序
    • 配置文件,例如SSH 的配置文件:~/.ssh/config

1.1 vi 和 vim 的基本介绍

1)vi:所有的 Linux 系统都会内建 vi 文本编辑器

2)Vim:具有程序编辑的能力, 可以看做是 Vi 的增强版本, 可以主动的以字体颜色辨别语法的正确性, 方便程序设计。 代码补完、 编译及错误跳转等方便编程的功能特别丰富, 在程序员中被广泛使用。

1.2 vi 和 vim 的三种常见模式

1.2.1 正常模式

在正常模式下, 我们可以使用快捷键。

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』 按键来移动光标, 你可以使用『删除字符』 或『删除整行』 来处理档案内容, 也可以使用『复制、 贴上』 来处理你的文件数据。

1.2.2 插入模式/编辑模式

在模式下, 程序员可以输入内容。

按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可。

1.2.3 命令行模式

在这个模式当中, 可以提供你相关指令, 完成读取、 存盘、 替换、 离开 vim 、 显示行号等的动作则是在此模式中达成的!

按Esc键,然后输入命令行(如“:wq”)

1.3 vi 和 vim 三种模式的相互转化图

二.Linux基础指令

1.4 快捷键

再插入模式下无法使用快捷键,需要退出到正常模式。

vi与vim 命令与快捷键

1)拷贝当前行 yy , 拷贝当前行向下的 5 行 5yy, 并粘贴:再输入p

2)删除当前行 dd , 删除当前行向下的 5 行 5dd

3)在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ],查询hello.

4)设置文件的行号, 取消文件的行号.[命令行下 : set nu 和 :set nonu]

5)编辑 /etc/profile 文件, 使用快捷键到底文档的最末行[G]和最首行[gg],注意这些都是在正常模式下执行的。

6)在一个文件中输入 “hello” ,然后又撤销这个动作, 再正常模式下输入 u

7)编辑 /etc/profile 文件, 并将光标移动到 第 20 行 shift+g

  • 第一步: 显示行号 :set nu
  • 第二步: 输入 20 这个数
  • 第三步: 输入 shift+g

VIM键盘图:

https://blog.****.net/sinat_36101354/article/details/65937513

vim多行注释与取消

https://blog.****.net/summy_J/article/details/75104748

2.关机、重启和用户登录注销

2.1 关机&重启

2.1.1 基本介绍

1.shutdown:

  • shutdown -h now : 表示立即关机
  • shutdown -h 1 : 表示 1 分钟后关机
  • shutdown -r now: 立即重启

2.halt:就是直接使用, 效果等价于关机

3.reboot:就是重启系统

4.sync : 把内存的数据同步到磁盘

2.1.2 注意细节

当我们关机或者重启时, 都应该先执行一下 sync 指令, 把内存的数据写入磁盘, 防止数据丢失。

2.2 用户登录和注销

1) 登录时:尽量少用 root 帐号登录

  • 因为它是系统管理员, 最大的权限, 避免操作失误。
  • 可以利用普通用户登录, 登录后再用” su - 用户名’ 命令来切换成系统管理员身份.

2)注销: 在提示符下输入 logout ,即可注销用户

3)使用细节

  • logout 注销指令在图形运行级别无效, 在 运行级别 3 下有效.
  • 运行级别这个概念, 后面给大家介绍

3.用户管理

3.1 基本介绍

用户管理的规则:

  • 1)用户与用户组的概念
  • 2)用户家目录的概念
    • 创建用户时,/home/目录小有各个创建用户对应的家目录;
    • 当用户登录时,会自动进入到自己的家目录。
      二.Linux基础指令

为何会这么设置:

说明:

  • 1)Linux 系统是一个多用户多任务的操作系统, 任何一个要使用系统资源的用户, 都必须首先向系统管理员申请一个账号, 然后以这个账号的身份进入系统。
  • 2)Linux 的用户需要至少要属于一个组

3.2 添加用户

1.创建用户的两种方法:

useradd [选项] 用户名			->自动的创建和用户同名的家目录
useradd -d 指定目录 用户名   ->给创建的用户指定家目录

2.细节说明:

  • 1)当创建用户成功后, 会自动的创建和用户同名的家目录
  • 2)也可以通过 useradd -d 指定目录 新的用户名, 给新创建的用户指定家目录(可以不同名)

3.指定/修改密码

passwd 用户名

root用户才能设置密码

4.案例:

useradd xiaoming

cd /home

ls  ->目录小会自动创建名为xiaoming的家目录

passwd xiaoming  ->为xiaoming用户设置密码

3.3 删除用户

1.基本语法:

userdel 用户名

2.实际案例

  • 1)删除用户,但保留家目录;

userdel 用户名

  • 2)删除用户,以及用户主目录

userdel -r 用户名

3.是否保留家目录:

在删除用户时, 我们一般不会将主目录删除。

因为,用户家目录下可能会有有用文件存在。

3.4 查询用户信息

1.基本语法

id 用户名

二.Linux基础指令

2.细节说明

  • 当用户不存在时, 返回"无此用户"

3.5 切换用户

1.介绍

在操作 Linux 中, 如果当前用户的权限不够, 可以通过 su - 指令, 切换到高权限用户, 比如 root。

2.基本语法

su – 切换的用户名

3.应用实例

在root下创建一个用户 xf; 指定密码; 然后切换到 xf
二.Linux基础指令

4.细节说明

  • 1)从权限高的用户切换到权限低的用户, 不需要输入密码, 反之需要;
  • 2)当用户权限不足时,会给提示;
  • 3)当需要返回到原来用户时, 使用 exit 指令。

3.6 查看当前用户/登录用户

基本语法

whoami / who am I

3.7 用户组操作

1.介绍

用户组类似于角色, 系统可以对有共性的多个用户进行统一的管理。

2.增加组

groupadd 组名

3.删除组

groupdel 组名

4.增加用户时,直接加上组

useradd -g 用户组 用户名

增加一个用户 zwj, 直接将他指定到 wudang
二.Linux基础指令

5.修改用户的组

usermod -g 新的用户组 用户名

创建一个 shaolin 组, 让将 zwj 用户修改到 shaolin

二.Linux基础指令

3.8 用户和组的相关文件

增加完用户和组之后,这些组和用户的信息在什么地方呢?

3.8.1 /etc/passwd 文件

文件内容:用户(user) 的配置文件

  • 1)记录用户的各种信息;
  • 2)使用 vi 查看该文件内容,每行的含义:
    • 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell

二.Linux基础指令

3.8.2 /etc/shadow 文件

文件内容:口令的配置文件

  • 记录密码和登录的相关信息(加密)。

每行的含义:

  • 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

3.8.3 /etc/group 文件

文件内容:组(group)的配置文件

  • 记录 Linux 包含的组的信息

每行含义:

  • 组名:口令:组标识号:组内用户列表

4.实用指令

4.1 指定运行级别

4.1.1 运行级别说明

1.为什么要设置运行级别,什么是运行级别,作用是什么?

2.各运行级别:

Linux 系统有 7 种运行级别(runlevel): 常用的是级别 3 和 5

  • 运行级别 0: 系统停机状态[关机], 系统默认运行级别不能设为 0, 否则不能正常启动
  • 运行级别 1: 单用户工作状态, root 权限, 用于系统维护, 禁止远程登陆【找回丢失密码】
  • 运行级别 2: 多用户状态(没有 NFS), 不支持网络
  • 运行级别 3: 完全的多用户状态(有 NFS), 登陆后进入控制台命令行模式
  • 运行级别 4: 系统未使用, 保留
  • 运行级别 5: X11 控制台, 登陆后进入图形 GUI 模式
  • 运行级别 6: 系统正常关闭并重启, 默认运行级别不能设为 6, 否则不能正常启动

3.开机流程

开机
BIOC
/boot
init进程1
运行级别
运行级别对应服务

1)BIOS:“Basic Input Output System”——“基本输入输出系统”。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。

2)/boot:系统引导文件

4.运行级别的修改:

常用运行级别是 3 和 5 , 要修改默认的运行级别可改文件:

  • /etc/inittab 的 id:5:initdefault:这一行中的数字

5…运行级别的示意图:
二.Linux基础指令

4.1.2 切换到指定运行级别的指令

1.基本语法

init [012356]

1)init 方法:

  • 运行后,系统直接重启,运行级别直接切换;
  • 但并不会修改配置文件,下一次系统启动还是原先的运行级别。

1)vi /etc/inittab
2)修改id:5:initdefault:中的数字(切忌不要改为0,否则一开机就关机,解决方案见7.1.3)
3)保存修改退出
4)reboot 重启

2)vi /etc/inittab 方法:

  • 直接修改配置文件,不会直接切换运行级别(不会重启);
  • 手动重启,或是下一次系统启动时,自动切换到指定的运行级别。

案例 1: 通过 init 来切换不同的运行级别, 比如动 5->3 , 然后关机

  • init 3
  • init 5
  • init 0

4.1.3 面试题

如何找回 root 密码, 如果我们不小心, 忘记 root 密码, 怎么找回。

1.思路: 进入到 单用户模式-1, 然后修改 root 密码。

  • 因为进入单用户模式, root 不需要密码就可以登录。

2.总结

开机->在引导时输入 回车键-> 看到一个界面输入 e -> 看到一个新的界面, 选中第二行(编辑内核) 在输入 e-> 在这行最后输入 1 ,再输入 回车键->再次输入 b ,这时就会进入到单用户模式。

这时, 我们就进入到单用户模式, 使用 passwd 指令来修改 root 密码,然后正常重启。

3.关于这种操作的解释:

  • 因为启用单用户模式后,只能在服务器端OS上才能进行操作,SSH不能使用;
  • 你已经在服务器端,而不是远程登录,此时默认你已经有root权限了

4.2 帮助指令

介绍:

当我们对某个指令不熟悉时, 我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。

4.2.1 man 获得帮助信息

功能描述: 获得帮助信息

1.基本语法

man [命令或配置文件]

2.应用实例

案例: 查看 ls 命令的帮助信息

man ls

4.2.2 help 指令

功能描述: 获得 shell 内置命令的帮助信息

1.基本语法

help 命令

4.3 文件目录类指令

4.3.1 pwd 指令

1.功能描述:

  • present work directory
  • 显示当前工作目录绝对路径

2.基本语法

pwd

4.3.2 ls 指令

1.基本语法

ls [选项] [目录或是文件]

不仅仅可以显示目录,还可以显示文件的详细信息。

2.常用选项

  • -a : 显示当前目录所有的文件和目录, 包括隐藏的。
  • -l : 以列表的方式显示信息
  • -al:可以联合使用

3.帮助文档:

  • man ls

4.3.3 cd 指令

1.功能描述: 切换到指定目录

2.基本语法

cd [参数]

3.常用参数

  • 绝对路径
  • 相对路径

1)回到家目录:cd ~ 或 cd

2)回到父目录:cd ..

4.如何理解绝对路径和相对路径

4.3.4 mkdir 指令

1.功能介绍:

  • mkdir 指令用于创建目录
  • make directory

2.基本语法

mkdir [选项] 要创建的目录

3.常用选项

  • -p : 用于创建多级目录

4.应用实例

案例 :创建多级目录 /home/animal/tiger(现在没有animal文件夹)

二.Linux基础指令

4.3.5 rmdir 指令

1.rmdir 指令:

  • remove directory
  • 删除空目录

2.基本语法

rmdir [选项] 要删除的空目录

3.应用实例

案例 1:删除一个目录 /home/dog

4.注意细节

  • rmdir 删除的是空目录, 如果目录下有内容时无法删除的。
  • 参数:-p, --parents
    • remove DIRECTORY and its ancestors;
    • e.g., ‘rmdir -p a/b/c’ is similar to ‘rmdir a/b/c a/b a’

5.提示:

  • 如果需要删除非空目录, 需要使用 rm -rf 要删除的目录

rm -rf 非空目录名

4.3.6 touch 指令

1.touch 指令:创建空文件

2.基本语法

touch 文件名称 [文件2名称]

可以一次性创建多个空文件

4.3.7 cp 指令[重要]

1.cp 指令:

  • copy
  • 拷贝文件到指定目录

2.基本语法

cp [选项] source dest

3.常用选项

  • -r : 递归复制整个文件夹

拷贝单个文件也可以,拷贝整个文件夹也可以。

4.使用细节

  • 如果再次进行复制,则会提示具体的文件是否要覆盖;缺点就是如果文件夹中有100个文件,会问100次。
  • 强制覆盖不提示的方法: \cp

4.3.8 rm 指令

1.rm 指令:

  • remove 移除
  • 移除【删除】 文件或目录

2.基本语法

rm [选项] 要删除的文件或目录

3.常用选项

  • -r : 递归删除整个文件夹,删除的提示信息也会是递归显示(见下图);
  • -f : 强制删除不提示;

二.Linux基础指令

4.使用细节

  • 单独的 rm 命令,不能删除目录,需要加上参数 -r;
  • 强制删除不提示的方法: 带上 -f 参数即可;

4.3.9 mv 指令

1.mv指令:

  • move
  • 移动或者重命名文件与目录

2.基本语法

mv oldNameFile newNameFile (功能描述: 重命名)

mv /temp/movefile /targetFolder (功能描述: 移动文件)

4.3.10 cat 指令

1.cat 查看文件内容, 是以只读的方式打开。

2.基本语法

cat [选项] 要查看的文件

3.常用选项

  • -n : 显示行号

4.使用细节

  • cat 只能浏览文件, 而不能修改文件, 为了浏览方便, 一般会带上 管道命令 | more

cat 文件名 | more [分页浏览]

4.3.11 more 指令

1.more 指令:

  • 是一个基于 VI 编辑器的文本过滤器;
  • 它以全屏幕的方式按页显示文本文件的内容。

2.基本语法

more 要查看的文件

3.more指令中内置了若干快捷键, 详见操作说明
二.Linux基础指令

4.3.12 less 指令

1.less 指令:

  • 用来分屏查看文件内容
  • 它的功能与 more 指令类似, 但是比 more 指令更加强大, 支持各种显示终端;
  • less 指令在显示文件内容时, 并不是一次将整个文件加载之后才显示, 而是根据显示需要加载内容, 对于显示大型文件具有较高的效率。

2.基本语法

less 要查看的文件

3.快捷键
二.Linux基础指令

4.3.13 > 指令 和 >> 指令

1.> 指令 和 >> 指令

  • > 输出重定向 : 会将原来的文件的内容覆盖
  • >> 追加: 不会覆盖原来文件的内容, 而是追加到文件的尾部。

2.基本语法

ls -l >文件 (功能描述: 列表的内容写入文件 a.txt 中(覆盖写) )

说明: ls -l > a.txt , 将 ls -l 的显示的内容覆盖写入到 a.txt 文件, 如果该文件不存在, 就创建该文件。

ls -al >>文件 (功能描述: 列表的内容追加到文件 aa.txt 的末尾)

cat 文件 1 > 文件 2 (功能描述: 将文件 1 的内容覆盖到文件 2)

echo “内容” >> 文件

4.3.14 echo 指令

1.echo :输出内容到控制台。

2.基本语法

echo [选项] [输出内容]

3.使用 echo 指令:输出环境变量,输出当前的环境路径:

echo $PATH

输出 hello world

echo “hello world”

4.3.15 head 指令

1.head 指令:

  • 用于显示文件的开头部分内容
  • 默认情况下 head 指令显示文件的前 10 行内容

2.基本语法

head 文件 (功能描述: 查看文件头 10 行内容)

head -n 5 文件 (功能描述: 查看文件头 5 行内容, 5 可以是任意行数)

4.3.16 tail 指令

1.tail指令:

  • 用于输出文件中尾部的内容,
  • 默认情况下 tail 指令显示文件的后 10 行内容。

2.基本语法

tail 文件 (功能描述: 查看文件后 10 行内容)

tail -n 5 文件 (功能描述: 查看文件后 5 行内容, 5 可以是任意行数)

tail -f 文件 (功能描述: 实时追踪该文档的所有更新, 工作经常使用)

二.Linux基础指令

4.3.17 ln 指令

软链接:也叫符号链接, 类似于 windows 里的快捷方式, 主要存放了链接其他文件的路径

2.基本语法

ln -s [原文件或目录] [软链接名] (功能描述: 给原文件创建一个软链接)

3.可以使用 ls -l 命令查看软链接及其指向文件

4.使用pwd指令,位置显示的是软链接的位置;而使用cd命令转到软链接,实际上转到的是指向文件

5.删除软链接:

rm -rf 软链接 (不能带/)

二.Linux基础指令

4.3.18 history 指令

1.查看已经执行过历史命令,也可以执行历史指令

2.基本语法

history (功能描述: 查看已经执行过历史命令)

3.参数使用

history 5(功能描述:查看最近执行的5个命令)

!88 (功能描述:执行历史命令的第88号命令)

4.4 时间日期类

4.4.1 date 指令-显示当前日期

基本语法

  1. date (功能描述: 显示当前时间)
  2. date +%Y (功能描述: 显示当前年份)
  3. date +%m (功能描述: 显示当前月份)
  4. date +%d (功能描述: 显示当前是哪一天)
  5. date “+%Y-%m-%d %H:%M:%S”(功能描述: 显示年月日时分秒,减号连接符可以换)

4.4.2 date 指令-设置日期

1.基本语法

date -s “字符串时间”

2.应用实例

设置系统当前时间 , 比如设置成 2018-10-10 11:22:22

date -s “2018-10-10 11:22:22”

4.4.3 cal 指令

1.cal 指令:查看日历指令

2.基本语法

cal [选项] (功能描述: 不加选项, 显示本月日历)

显示2020年日历:

cal 2020

4.5 搜索查找类

4.5.1 find 指令

1.find 指令:

  • 将从指定目录向下递归地遍历其各个子目录,
  • 将满足条件的文件或者目录显示在终端。

2.基本语法

find [搜索范围] [选项] 目标

3.选项说明(常用)

选项参数 作用
-name 按文件名,查找:支持通配符
-user 按文件所属用户,查找
-size 按文件大小,查找:+N表示大于,-N表示小于,N等于

find / -size -20M(功能描述:查找根目录下小于20M的文件)

ctrl + c 结束执行

4.5.2 locate 指令

1.locate 指令:

  • 可以快速定位文件路径。

locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。 Locate 指令无需遍历整个文件系统, 查询速度较快。

为了保证查询结果的准确度, 管理员必须定期更新 locate 时刻。

2.基本语法

locate 搜索文件

3.特别说明

  • 由于 locate 指令基于数据库进行查询, 所以第一次运行前, 必须使用 updatedb 指令创建 locate 数据库

updatedb (功能描述:创建 locate 数据库)

4.linux的locate命令不能使用

执行一下命令安装以后,就可以locate XXX了:

  • yum install mlocate
  • sudo updatedb
  • locate *.doc

4.5.3 grep 指令和 管道符号 |

1.grep 指令:过滤查找 ;

管道符-“|”:表示将前一个命令的处理结果,输出传递给后面的命令处理。

2.基本语法

grep [选项] 查找内容 源文件

3.常用选项

选项参数 作用
-n 显示匹配行及行号
-i 忽略字母大小写

二.Linux基础指令

4.6 压缩和解压类

4.6.1 gzip/gunzip 指令

1.gzip 用于压缩文件—*.gz 文件, gunzip 用于解压

2.基本语法

gzip 文件 (功能描述: 压缩文件, 只能将文件压缩为*.gz 文件)

gunzip 文件.gz (功能描述: 解压缩文件命令)

3.细节说明

  • 当我们使用 gzip 对文件进行压缩后, 不会保留原来的文件;
  • 可一次压缩、解压多个文件;

二.Linux基础指令

4.6.2 zip/unzip 指令

1.zip 用于压缩文件—*.zip;unzip 用于解压的:

  • 这个在项目打包发布中很有用

2.基本语法

zip [选项] XXX.zip 将要压缩的内容(功能描述: 压缩文件和目录的命令)

unzip [选项] XXX.zip (功能描述: 解压缩文件)

3.zip 常用选项

  • -r: 递归压缩, 即压缩目录

4.unzip 的常用选项

  • -d <目录> : 指定解压后文件的存放目录

5.如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,安装方法:

  • 获取安装列表命令: yum list | grep zip/unzip
  • 安装命令: yum install zip #提示输入时,请输入y;
  • 安装命令: yum install unzip #提示输入时,请输入y;

4.6.3 tar 指令

1.tar 指令 是打包指令, 最后打包后的文件是 .tar.gz 的文件。

2.基本语法

tar [选项] XXX.tar.gz 打包的内容 (功能描述: 打包目录, 压缩后的文件格式.tar.gz)

选项说明

压缩:参数 -zcvf
二.Linux基础指令

解压:

  • 参数 -zxvf;
  • 解压到指定文件目录时,还需指定参数-C;且目录得事先存在。

二.Linux基础指令

二.Linux基础指令