---
url: /diary/linux/1/index.md
description: Linux 基础学习笔记第一篇，vi/vim 常用命令、文件操作、用户管理等基础知识。
---
## 一.vi 和vim常用命令

### 1.拷贝行并粘贴

拷贝当前行：

```shell
yy
```

拷贝当前行向下的5行：

```shell
5yy
```

粘贴：

```shell
p
```

### 2.删除行并粘贴

删除当前行：

```shell
dd
```

删除当前行向下的5行：

```shell
5dd
```

### 3.查询词

查询"hello":

```shell
/hello 
```

往下找：

```shell
n
```

### 4.设置和取消文件行号

设置行号：

```shell
:set nu
```

取消行号：

```shell
:set nonu
```

### 5.快捷到首行和末行

最首行：

```shell
gg
```

最末行：

```shell
G
```

### 6.撤销动作

撤销：

```shell
u
```

### 7.移动到指定行

先设置显示行号：

```shell
:set nu
```

输入指定行：

```shell
20
```

按键：

```shell
shift+g
```

## 二.关机&重启命令

### shutdown

```shell
#立即关机：
shutdown -h now
#一分钟后关机：
shutdown -h 1
#立即重启
shutdown -r now
```

### halt

直接使用，等效关机

### reboot

重启系统

### sync

把内存的数据同步到磁盘上，防止丢失数据。

> 注意:关机和重启前先sync

## 三.用户管理

> 开发时不建议用root用户

### 用户

每个用户至少属于一个组，会在/home自动创建自己的家目录

### 用户组

`root` 默认属于 `root` 组

### 用户家目录

`/home/***`  ，当用户登录时，会自动进入自己的家目录

### 添加用户

```shell
#useradd [可选选项] 用户名 
#eg：添加用户 cc
#若没单独创用户组 则直接添加入同名用户组
useradd cc   #自动添加到cc用户组
passwd cc    #指定用户的密码
#此时 家目录则有cc目录

[root@jhoncc home]# ls
cc  jhoncc

#将cc放入 tiger 家目录
#useradd -d /home/tiger/ cc

#添加用户时加上组
#useradd -g 用户名 用户组
```

### 指定密码

```shell
passwd cc    #使用高权限者 如root用户 指定用户的密码
```

### 删除用户

## 一般保留家目录

```shell
#root 用户下
#删除cc 但保留家目录
userdel cc
#删除cc 且不保留家目录
userdel -r cc 
```

### 查询用户信息

```shell
#id 用户名
[root@jhoncc /]# id cc
uid=1001(cc) gid=1001(cc) 组=1001(cc)

[root@jhoncc /]# id root
uid=0(root) gid=0(root) 组=0(root)

[root@jhoncc /]# id www
id: www: no such user
```

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

```shell
#查询当前用户名
[cc@jhoncc ~]$ whoami
cc
```

### 切换用户

```shell
#切换用户  su - 用户名
#高权限到低权限 不用密码
#权限不足时有提示
[root@jhoncc /]# su - zf
[zf@jhoncc ~]$ cd /root/
-bash: cd: /root/: 权限不够
[zf@jhoncc ~]$ exit
登出
[root@jhoncc /]#     #返回到了原来的用户

```

```shell
[zf@jhoncc ~]$ su - cc
密码：
上一次登录：六 5月  9 11:36:59 CST 2020从 192.168.81.1pts/1 上
[cc@jhoncc ~]$
```

### 注销用户

```shell
#桌面版运行无效 （运行级别）
logout
```

## 四.用户组

### 创建组

```shell
#groupadd 组名
[root@jhoncc home]# groupadd wudang


```

### 组添加用户

```shell
#添加用户时加上组
#useradd -g 用户名 用户组
```

### 修改用户组

```shell
#usermod -g 用户组 用户名
usermod -g wudang cc
```

### 删除组

```shell
#groupdel 组名
[root@jhoncc home]# groupdel wudang
```

## 五.用户配置文件

### 用户信息文件

### /etc/passwd

记录了用户的信息

```shell
vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
# 用户：加密密码：用户id：组id：家目录：/shell
```

### 组配置文件

### /etc/group

```shell
vim /etc/group
root:x:0:
# 组名：口令：组标识：组内用户列表
```

### 口令（密码）配置文件，是加密文件

### /etc/shadow

## 六.运行级别

> ## 系统的运行级别配置文件
>
> ## /etc/inittab

* 0：关机
* 1：单用户（找回丢失密码）
* 2：多用户无网络服务
* 3：多用户有网络服务
* 4：保留
* 5：图形界面
* 6：重启

### 切换到指定运行级别命令

```shell
#init 级别（012345）
init 0
```

### 找回丢失root密码

思路：进入 单用户模式，就可以修改密码，因为进入单用户模式， root 不需要密码就可以登录

```
开机进入 CRUB
输入 e 
选择 kernel 输入 e
输入 1 回车
选择 kernel 输入 b
之后以root身份进入 单用户模式

passwd root
输入密码

正常重启即可！
```

## 七.帮助指令

当我们对某个指令不熟悉时，使用 帮助指令 来了解这个指令的使用方法。

### 1.基本语法

man \[命令或配置文件]

#### 应用案例

使用 man 查看 ls 帮助指令

```shell
[root@jhoncc ~]# man ls
-C     多列输出，纵向排序。
-F     每个目录名加“ / ”后缀，每个 FIFO 名加“ | ”后缀， 每个可运行名加“ * ”后缀。
-R     递归列出遇到的子目录。
-a     列出所有文件，包括以 "." 开头的隐含文件。
-c     使用“状态改变时间”代替“文件修改时间”为依据来排序 （使用“ -t ”选项时）或列出（使用“ -l ”选项时）。
-d     将目录名象其它文件一样列出，而不是列出它们的内容。
-i     输出文件前先输出文件系列号（即 i 节点号: i-node number）。 
-l  列出（以单列格式）文件模式（file mode），文件的链接数，所有者名，组名，文件大小（以字节为单位），时间信息，及文件名。缺省时，时间信息显示最近修改时间；可以以选项“-c”和“-u”选择显示其它两种时间信息。对于设  备文件，原先显示文件大小的区域通常显示的是主要和次要的  号（majorand minor device numbers）。
-q     将文件名中的非打印字符输出为问号。（对于到终端的输出这是缺省的。）
-r     逆序排列。
-t     按时间信息排序。
-u     使用最近访问时间代替最近修改时间为依据来排序（使用 “ -t ”选项时）或列出（使用“ -l ”选项时）。
-1 单列输出。
```

### 2.基本语法

```shell
[root@jhoncc ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
 Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
        -e      if the -P option is supplied, and the current working directory
        cannot be determined successfully, exit with a non-zero status
```
