title: Linux常用基本指令+vim编辑器使用
目录
Linux常用基本指令
你好!这里记录了在使用Linux系统时常用基本指令以便查找使用。[]里的内容表示为可选,可以选择输入或者不输入。
Linux终端的常用操作:
1> 自动补全
在敲出文件/目录/命令的前几个字母之后,按下 tab 键
如果输入的没有歧义,系统会自动补全
如果还存在其他文件/目录/命令,再按一下 tab 键,系统会提示可能存在的命令
2> 曾经使用过的命令
按 上/下 光标键可以在曾经使用过的命令之间来回切换
如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c
3> 退出输入
如果想退出当前的输入状态,可以按 ctrl + d(相当于quit命令)
常用目录指令
- ls <查看目录内容>
命令格式:ls [选项] [目录路径]
常用选项 | 作用 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件(以.为开头的文件) |
-l | 以列表方式显示文件的详细信息 |
-h | 与-l搭配使用,用于以人性化的方式显示文件大小 |
- ls 通配符的使用(用于条件显示)
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少 1 个 |
[*] | 表示可以匹配字符组中的任一一个 |
[?-?] | 匹配从 ? 到 ? 范围内的的任意一个字符 |
- cd <切换目录>
命令格式:cd [目录路径]
常用操作 | 效果 |
---|---|
[~] | 切换到当前用户的主目录 |
. | 保持在当前目录不变 |
. . | 切换到上级目录 |
- | 可以在最近两次工作目录之间来回切换 |
- pwd <显示当前工作目录>
命令格式:pwd
常用文件指令
-
touch <创建文件>
如果文件不存在,可以创建一个空白文件;
如果文件已经存在,可以修改文件的末次修改日期。
命令格式:touch [文件路径/]文件名 (需要注意在Linux系统中认为目录也是文件) -
mkdir <创建一个新的目录>
命令格式:mkdir [选项] [目录路径/]目录名
常用选项 | 作用 |
---|---|
-p | 递归的创建多级目录 |
- rm <删除文件或目录>
使用rm命令要小心,因为文件删除后不能恢复
命令格式:rm [选项] 要删除的文件/目录
常用选项 | 作用 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
- tree <以树状图列出文件目录结构>
命令格式:tree [选项] [目录名]
常用选项 | 作用 |
---|---|
-d | 只显示目录 |
- cp <文件/目录拷贝>
命令格式:cp [选项] 文件/目录源位置 文件/目录目标位置
常用参数 | 作用 |
---|---|
-i | 覆盖文件前提示 |
-r | 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
- mv <移动文件或目录,也可以给文件或目录重命名>
指令格式:mv [选项] 文件/目录源位置 文件/目录目标位置
常用选项 | 作用 |
---|---|
-i | 覆盖文件前提示 |
- cat <在终端中显示所有的内容,适合查看内容较少的文本文件>
命令格式:cat [选项] 文件名
常用选项 | 作用 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
- more <用于分屏显示文件内容,适合于查看内容较多的文本文件>
命令格式:more 文件名
常用操作 | 作用 |
---|---|
空格键 | 显示下一屏 |
Enter 键 | 一次滚动一行 |
b/f键 | 回滚一屏/前滚一屏 |
/??? | 搜索???字符串 |
q键 | 退出 |
- grep <对文本文件进行模式查找,即正则表达式>
命令格式:grep [选项] 要查找的文本 文件名
常用选项 | 作用 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行 |
-i | 忽略大小写 |
常用参数 | 作用 |
---|---|
^a | 搜寻以 a 开头的行 |
a$ | 搜寻以 a结束的行 |
-
echo <在终端中输出内容>
通常与重定向配合使用
命令格式:echo 要输出的内容 -
重定向 > 或者 >> <将命令的结果输出文件中>
> 表示输出,会覆盖已有文件内容
>> 表示在文件末尾追加内容
命令格式:其它指令 > 文件路径 -
管道 | <将一个命令的输出传递给另一个命令作为输入>
常与 more grep 搭配使用
命令格式:指令 | more/grep/其它指令
常用远程指令
- shutdown <用于关闭或重启操作系统>
该命令在远程管理服务器时常用于重启系统
命令格式:shutdown [选项] [时间]
常用选项 | 作用 |
---|---|
-r | 重新启动系统 |
-c | 取消上次设定的计划 |
常用时间参数 | 效果 |
---|---|
now | 立即执行命令 |
具体时间 | 在设定的时间执行命令 |
+数字 | 在设定的(数字)分钟后执行命令 |
*当shutdown命令不跟随任何选项和参数时表示在一分钟后执行关机操作
-
ifconfig <用于查看或配置网卡信息>
常用命令格式:ifconfig | grep inet <用于快速定位网卡IP地址> -
ping <用于检测与目标IP的网络连通性>
常用命令格式:ping IP/域名地址 -
ssh <用于远程登录管理服务器>
命令格式:ssh [-p port] user@remote address
ssh免密登录
1>在客户端执行"ssh-keygen"命令生成一对SSH密钥
2>执行"ssh-copy-id [-p port] user@remote address"命令将公钥上传到服务器
ssh配置别名(利用别名登录<ssh 别名>)
1>若./ssh目录下没有config文件,则通过"touch config"命令创建文件
2>在./ssh/config里追加以下内容
Host 自定义别名
HostName IP地址
User 用户名
Port 端口
- scp <用于远程复制内容>
命令格式:scp [选项] [-P port] 源地址 目标地址
当文件地址为远程地址时格式为:user@remote address:文件路径
常用选项 | 作用 |
---|---|
-P(需要大写) | 指定端口 |
-r | 复制文件夹时使用 |
用户权限指令
因为Linux是一个多用户的操作系统,所以存在比较复杂的用户和权限管理操作具体详见下文
root<超级用户>使用该用户登录系统具有所有访问权限,常用于系统的维护和管理,如需临时使用root用户,可以通过“sudo 指令”的方式使用。
一般来说在Linux系统中,组信息保存在 /etc/group 文件中;用户信息保存在 /etc/passwd 文件中。
group文件中每一行包含:组名:组密码(x,表示加密的密码):GID(组标识):该用户组中的用户列表;
passwd文件中每一行包含:用户名:密码(x,表示加密的密码):UID(用户标识):GID(组标识):用户全名或本地帐号:家目录:登录使用的 Shell。
group和passwd文件里的 “x” 仅仅是密码标识,真正加密后的密码默认分别保存在 /etc/shadow和 /etc/gshadow文件中。
用户设置密码是为了验证用户的身份,用户组密码主要是用来指定组管理员的,但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。
/etc/shadow文件中,每行用户信息被划分为 9 个字段。每个字段的含义如下:用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段;
/etc/gshadow文件中,每行代表一个组用户的密码信息,各行信息用 “:” 作为分隔符分为 4 个字段,每个字段的含义如下:组名:加密密码:组管理员:组附加用户列表。
- groupadd <用于创建新组>
groupadd常用指令格式:
groupadd 组名 # 创建一个新的用户组
cat /etc/group | grep 组名 # 使用该命令可以查看组是否已经建立
- groupdel <用于删除组>
groupdel常用指令格式:
groupdel 组名 # 删除已经存在的用户组
cat /etc/group | grep 组名 # 使用该命令可以查看组是否已经删除
- useradd & passwd <前者用于创建新用户,后者给用户设定密码>
useradd & passwd常用指令格式:
useradd -m [-g 组] 新建用户名 # -m 用于自动建立用户家目录、-g 用于指定用户所在的组,否则会建立一个和用户同名的组
passwd 用户名 # 用于设置用户密码,如果是普通用户,直接用passwd可以修改自己的账户密码
cat /etc/passwd | grep 用户名 # 用于确认用户是否建立,用户信息会保存在/etc/passwd文件中
- userdel <用于删除用户>
userdel常用指令格式:
userdel [-r] 用户名 # 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd | grep 用户名 # 用于确认用户是否删除,用户信息会保存在/etc/passwd文件中
- id&who&whoami <id命令用于查看用户id(uid)和所属组id(gid)who用于查看当前登录用户whoami用于自身使用的用户>
id&who&whoami命令格式:
id [用户名]
who
whoami
- su&exit <用户切换登录用户和退出登录用户>
执行exit命令后会回退到进行用户切换之前的用户
su&exit命令格式:
su [用户名] # 不跟用户名表示切换到root用户
exit # 退出当前登录用户
- usermod <用来设置用户的主组/附加组和登录Shell>
用户的主组在创建用于的时候一般已经设立,但新建用户默认是没有附加组的,所以新建用户无法使用sudo指令,可以通过添加附加组的方式让用户拥有使用sudo的权限(执行完usermod指令后需要重新登录用户以便更改生效)
usermod常用指令格式:
usermod -g 组 用户名 # 用于修改用户的主组
usermod -G 组 用户名 # 用于修改用户的附加组
usermod -s /bin/bash|dash 用户名 # 修改用户登录Shell(bash|dash)
- chmod <用于修改用户/组对文件/目录的权限>
用户/组的权限包括:r(读)4、w(写)2、x(可执行)1
chmod常用指令格式:
chmod +/-[r][w][x] 文件|目录 # +表示添加权限,-表示删除权限。该命令表示的是同时修改所有者和组的权限
chmod [-R] 755 文件|目录 # -R表示递归的修改文件夹及文件夹下的子目录和文件的权限,7 5 5分别表示所有者 所在组 其它用户对文件的权限
- chgrp <用于修改文件/目录的所属组>
chgrp常用指令格式:
chgrp -R 组名 文件/目录 # 递归的修改文件/目录的所属组
- chown <用于修改文件/目录的拥有者>
chown常用指令格式:
chown -R 用户名 文件/目录 # 递归的修改文件/目录的所属用户
系统信息指令
-
时间与日期
date # 用于查看系统当前时间 cal [-y] # 查看日历,-y表示查看一年的日历
-
磁盘信息
df -h # 显示磁盘剩余空间,此处的-h选项功能与ls命令中的类似 du -h [目录] # 显示目录下的文件大小
-
进程信息
# 查看进程的详细状况 # a表示显示终端上的所有进程包括其他用户启动的进程 # u表示显示进程的详细状态 # x表示显示没有控制终端的进程 ps aux # 动态显示运行中的进程并排序,利用q键退出 top # 终止指定进程号的应用程序,-9表示强行终止 kill [-9] 进程号
如果ps命令后不接任何参数默认只显示当前用户通过终端启动的应用程序。
程序安装指令
apt的全称是Advanced Packaging Tool,是Linux下的一款安装包管理工具。利用apt命令可以在终端中快捷的安装/卸载/更新软件包。
# apt命令只适合利用Advanced Packaging Tool进行包管理的Linux系统比如:Debian系列的Linux系统
# 安装软件
sudo apt install 软件包
# 卸载软件
sudo apt remove 软件包
# 更新所有软件包
sudo apt update && sudo apt upgrade
# 清除软件安装包和不需要的软件
sudo apt autoclean
sudo apt autoremove
apt命令的使用需要一个软件源,而一般Linux的官方软件源都位于国外。为了加快软件的安装速度可以将官方软件源切换为国内的镜像源例如清华镜像源和阿里镜像源。这两者的官方网站中有具体系统的软件源配置方式,在此对这些开源的镜像源表示感谢。以下我给出Debian10修改为清华镜像源的示例:
# 先利用cp命令将原有软件源文件进行备份或者将原有软件源配置信息注释
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 利用vim打开软件源配置文件并将文件内容写改为以下的内容
sudo vim /etc/apt/sources.list # vim的使用见下文
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
其它常用指令
-
查找命令位置
which 命令名
-
查找文件位置
find [路径] -name 文件名 # 省略路径表示搜索当前目录,文件名可以使用通配符
-
软链接<类似于Windows的快捷方式>
ln -s 源文件 目标文件 # 去除-s选项表示建立硬链接,源文件地址尽量采用绝对路径以便软链接的移动
软链接与硬链接的区别:在Linux系统中文件数据和文件名是分开存储的,软链接建立的是到源文件名的链接,而硬链接是建立到源文件数据的链接。在日常的使用中很少建立硬链接。
-
打包压缩
# 在Linux中常用的打包压缩方式是tar.gz # tar命令只负责打包文件,不压缩文件 # 要实现文件的压缩可以利用tar结合gzip使用 # 在tar命令后跟-z选项就能调用gzip # -c表示打包、-x表示解包、-v显示进度、-f指定文件名 tar -cvf 文件名.tar 文件目录/路径 # 打包文件 tar -xvf 打包文件.tar [-C 目录路径] # 解包文件,-C可以指定路径,路径必须存在 tar -zcvf 文件名.tar.gz 文件目录/路径 # 打包并压缩文件 tar -zxvf 打包文件.tar.gz [-C 目录路径] # 解包并压缩文件,-C可以指定路径,路径必须存在 # 除了可以利用gzip压缩文件以外还能利用bzip2来压缩文件 # 在tar中利用-j来调用bzip2 tar -jcvf 文件名.tar.bz2 文件目录/路径 # 打包并压缩文件 tar -jxvf 打包文件.tar.bz2 [-C 目录路径] # 解包并压缩文件,-C可以指定路径,路径必须存在
vim编辑器使用
vim编辑器特点
vi是Linux中最经典的文本编辑器,vi作为一款终端中的编辑器在没有图形化界面的情况下是最佳的选择。
vi作为一款没有图形界面的文本编辑器,虽然不支持鼠标操作但却具备了完善的命令行控制指令使得vi在进行远程维护时,其功能永远不是图形界面编辑器所能比拟的。vi的所有操作都只需要在键盘的核心区域就可完成。vim是从vi发展而来的,与vi相比vim的使用更广泛其支持代码补全、编译以及错误跳转等功能。
因在许多的Linux的发行版中直接将vi制作成了vim的软链接,所以vi/vim启用的都是vim。
vim编辑器打开/创建文件
利用vim编辑器打开/创建文件都是通过以下命令进行,若文件不存在既是创建一个新文件、文件存在就会直接打开文件。vim可以利用+行号选项来定位打开文件时定位的行号。
vim 文件名 [+行号] # 若+号不跟行号表示直接定位到文件尾
异常情况:如果打开文件提示发现交换文件,一般是由于上次vi编辑器出现异常退出导致。针对这种情况可以根据提示信息进行操作。例如:按d键删除交换文件、e键直接进行编辑等等具体操作都会有提示。
vim编辑器的工作模式
vim编辑器具有三种工作模式:命令模式、末行模式与编辑模式。
vim编辑器打开文件后默认的是命令模式,在命令模式下可以通过相应的命令对文件进行定位、翻页、复制、粘贴等常规操作。在命令模式下可以通过按下i键实现切换为编辑模式,在编辑模式下可以正常的编辑文字。如果要对文件进行保存则需要先通过esc键退回到命令模式,然后按下:键进入末行模式输入相关的指令即可,末行模式回退到命令模式同样是通过esc键。在进行文件编辑时通常是在命令模式与编辑模式之间来回切换。
在末行模式下可以进行文件的保存以及退出等操作具体命令见下表:
命令 | 功能描述 |
---|---|
w | 保存文件 |
q | 退出vim编辑器,需要文件已保存 |
q! | 强制退出不保存文件修改 |
wq | 保存并退出 |
x | 保存并退出 |
vim编辑器常用命令
-
★★★ 重复执行命令
如果想要多次执行某个命令,只需要在命令模式下先输入数字再输入命令的方式即可。
-
光标移动和选择
在vim编辑器中要实现光标的移动不需要通过光标键,在命令模式下可以通过h键实现光标向左移动、j键实现光标向下移动、k键实现光标向上移动、l键实现光标向右移动。详细的光标移动操作见下表:
命令 功能描述 h 光标向左移动 j 光标向下移动 k 光标向上移动 l 光标向右移动 w 光标向后移动一个单词 b 光标向前移动一个单词 0 光标移动到行首 ^ 光标移动到行首第一个非空白字符处 $ 光标移动到行尾 gg 光标移动到顶部 G 光标移动到尾部 数字gg 光标移动到数字行 Ctrl+b 向上翻页 Ctrl+f 向下翻页 H 屏幕顶部 M 屏幕中部 L 屏幕底部 { 跳转到上一段 } 跳转下一段 % 括号匹配及切换 mx 添加标记输入’x可以跳转到标记位置,x可以替换为a-z/A-Z。 在vim中提供了一种用于选择文本的模式(可视模式)共有三种方式可供选择具体的选择模式如下表:
命令 模式 功能 v 可视模式 选择光标经过的文本 V 可视行模式 选择光标经过行的所有文本 Ctrl+v 可视块模式 以垂直的方式选择文本 esc 退出 退回命令模式 -
编辑操作
这里的编辑操作指的是对文本进行删除、复制、粘贴与剪切等操作。
要对文本进行删除可以通过以下命令进行:
命令 功能 x 删除光标所在字符/选中文本 d+(移动命令) 删除移动命令选择的文本 dd 删除光标所在行 D 删除从光标到行尾的内容 # vim删除操作常用组合 dw # 从光标到单词尾 d0 # 从行的起始位置到光标 d} # 从光标到代码块的末尾 ndd # 删除n行 d行数G # 删除从光标位置到指定行之间的代码
文本的复制与粘贴:
命令 功能 y+(移动命令) 复制 yy 复制一行 p 粘贴内容 需要注意的是:
- p命令粘贴的内容是保存在vim缓冲区的内容,而不论是x还是d命令都会更新缓冲区。
- ★ p命令也不能将系统剪切板中利用Ctrl+c复制的内容粘贴到vim中,要粘贴系统剪切板中的内容需要先按下i键进入编辑模式然后按下鼠标右键进行粘贴。
在进行代码的编辑操作是经常需要添加/减少缩进,在vim中同样提供了代码的缩进命令,命令格式如下表:
命令 功能 >> 向右缩进4空格 << 向左缩进4空格 . 重复上次操作 ★ 在进入编辑模式的状态下只需一个<或>即可。
-
撤销与恢复
在vim中要执行撤销命令只需要按下u键即可,而恢复撤销操作通过Ctrl+r键实现。
-
查找与替换
在vim中如果是进行轻量级的修改,可以在不进入编辑模式的情况下利用替换命令进行修改文件内容。替换命令的使用如下表所示:
命令 功能 r 替换光标所在字符 R 替换当前行光标后的字符,需要用esc退出 在进行文本的编辑时查找操作会被经常使用到,在vim中查找命令可以通过下表中的操作实现:
命令 功能 /str 查找str,利用n切换下一个,N切换上一个 * 向后查找当前光标所在位置单词 # 向前查找当前光标所在位置单词 查找功能可以与替换功能结合使用,其命令可以参照以下的语法:
# 全局替换在末行模式下进行 :%s/旧文本/新文本/g # 可视范围内替换 :s/旧文本/新文本/g # 确认替换(推荐使用)提示命令中的y表示替换光标所在字符、n不替换、q退出 :%s/旧文本/新文本/gc
-
文本编辑
要对文本进行编辑要进入编辑模式,在vim的日常使用中除了上文中提到的i键外还可以通过以下命令进入编辑模式:
命令 功能 i ★在当前字符前插入文本 I 在行首插入文本 a 在当前字符后插入文本 A 在行末插入文本 o ★在当前行后插入空行 O ★当前行前插入空行 编辑命令同样可以与数字连用实现重复执行的效果,具体操作是:在进入编辑模式之前先按下输入要执行的次数,然后进入编辑模式进行编辑,编辑结束后通过esc退出编辑模式后在编辑模式中进行的操作会被重复前文中所指定的次数。
在日常使用中,进入编辑编辑模式前不要按数字。
vim编辑器末行命令扩展
-
末行命令的简单扩展
在末行模式下除了保存、退出、保存&退出、搜索&替换外还有下表中的指令:
命令 功能 e 文件名 切换到另一个文件,如果文件名不清楚用.代替可以打开文件浏览器进行选择 n 文件名 新建文件,会切换到新文件 w 文件名 另存文件,不会切换当前编辑文件主要用于阶段性备份 执行该部分的指令是要注意先保存文件。
-
末行命令的高级扩展——分屏命令
vim可以使用分屏命令来同时编辑多个文件,分屏命令的使用流程如下:先利用vim打开一个文件后,在末行模式下利用sp命令进行横向分屏,利用vsp进行纵向分屏。
在进入分屏后要对分屏进行管理,需要先按下Ctrl+w键,然后才能执行下表中的操作:
命令 功能 w 切换到下一个窗口 r 互换窗口 c 关闭当前窗口,不能关闭最后一个窗口 q 退出当前窗口,若是最后一个则退出vim o 关闭其他窗口