学习终端命令的技巧:
- 常用的命令:别死记硬背,使用多了就记得了;
- 不常用的命令:不会就百度;
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前文件夹下的内容 |
02 | pwd | print work directory | 查看当前所有文件夹 |
03 | cd[目录名] | change directory | 切换文件夹 |
04 | touch[目录名] | touch | 如果文件不存在,新建文件 |
05 | mkdir[目录名] | make directory | 创建目录 |
06 | rm | remove | 删除指定文件名 |
07 | clear | clear | 清屏 |
注意:linux系统区分大小写;
command -options [parameter]
[]:代表可选
说明:
command --help
man command
参数 | 含义 |
---|---|
-a | 显示指定目录下目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l以人性化的方式显示文件大小 |
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少1个 |
[] | 代表可以匹配字符组中的任一一个 |
[abc] | 匹配a,b,c中的任意一个 |
[a-f] | 匹配从a到f范围内的任意一个字符 |
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd … | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
新建目录的名词 不能与当前目录中 已有的目录或文件同名
使用rm是直接删除,不能恢复;
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | tree[目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件 目录文件 | copy | 复制文件或者目录 |
03 | mv源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat文件名 | concatenate | 查看文件内容/创建文件/文件合并/追加文件内容等功能 |
02 | more文件名 | more | 分屏显示文件内容 |
03 | grep搜索文件文件名 | grep | 搜索文本文件内容 |
cat命令可以用来查看文件内容,创建文件,文件合并,追加文件内容等功能;
cat会一次显示所有的内容,适合查看内容较少的文本文件;
| 选项 | 含义 |
| — | — |
| -b | 对非空输出行编号 |
| -n | 对输出的所有行编号 |
通过这两个命令可以在终端中查看程序一共包含多少行代码;
Linux系统中,grep命令是一种强大的文本搜索工具;
grep允许文本文件进行模式查找,所谓模式查找,又被称为正则表达式;
| 选项(可以连用) | 含义 |
| — | — |
| -n | 显示匹配行及行号 |
| -v | 显示不包含匹配文本的所有行(相当于求反) |
| -i | 忽略大小写 |
常用的两种模式查找
| 参数 | 含义 |
| — | — |
| ^a | 行首,搜索以a开头的行 |
| ke$ | 行尾,搜索以ke结束的行 |
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | shutdown 选项 时间 | shutdown | 关机/重新启动 |
提示:
- 不指定选项和参数,默认表示1分钟之后关闭电脑;
- 远程维护服务器时,最好不要关闭系统,而应该重新启动系统;
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
02 | ping ip 地址 | ping | 检测到目标ip地址的连接是否正常 |
我们可以把电脑比作电话,网卡相当于SIM卡,IP地址相当于电话号码;
注意:每台电脑的IP地址不能相同,否则会出现IP地址冲突,并且没有办法正常通讯;
提示:有关IP地址的详细内容,这里略…
- 1.检测到目标主机是否链接正常;
ping IP地址
- 2.检测本地网卡工作正常
ping 127.0.0.1
- 127.0.0.1 被称为 本地回环/环回地址,一般用来测试本地网卡是否正常;
- 网络管理员之间也常将ping用作动词 – ping一下计算机X,看他是否开着;
- 原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在;
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ssh 用户名@ip | secure shell | 关机/重新启动 |
02 | scp用户名@ip:文件名或路径 用户名@ip:文件名或路径 | secure copy | 远程复制文件 |
- 在Linux中SSH是非常常用的工具,通过SSH客户端我们可以链接到运行了SSH服务器的远程机器上;
- 通过SSH远程维护服务器的工作方式:首先在自己的服务器上安装一个SSH服务器的软件,然后在自己的电脑上安装一个SSH的客户端软件.两端的软件安装完成之后,通过网络远程登录到服务器上,对服务器进行日常的管理;
- SSH客户端,只有windows系统才需要安装,linux和mac系统,默认安装了SSH客户端;
**IP地址:**通过IP地址找到网络上的计算机
**端口号:**通过端口号可以找到计算机运行的应用程序
1).常见服务端端口号列表(默认)
| 序号 | 服务 | 端口号 |
| — | — | — |
| 01 | SSH服务器 | 22 |
| 02 | Web服务器 | 80 |
| 03 | HTTPS | 443 |
| 04 | FTP服务器 | 21 |
2).SSH客户端的简单使用
ssh [-p port] user@remote
提示:
- 使用exit推出当前用户的登录;
注意:
- ssh这个终端命令只能在Linux或者UNIX系统下使用;
- 如果在Windows系统中,可以安装putty(官网下载,免费使用)或者XShell客户端软件即可;
- SSH服务器的端口哈很有可能不是22,如果遇到这种情况就需要使用-p选项,指定正确的端口号,否则无法正常连接到服务器;
比较简单,自行百度吧,温馨提示:从官网上下载;
#.把本地当前目录下的 01.py文件复制到 远程 家 目录下的 Desktop/01.py
#.注意; ':'后面的路径如果不是绝对路径,则以用户的家目录作为参照物路径
scp -P port 01.py user@remote:Desktop/01.py#.把远程 家目录的Desktop 的Desktop/01.py 文件复制 本地当前目录 01.py
scp -P port user@remote:Desktop/01.py 01.py#. 加上 -r 选项可以传送文件夹
#. 把当前的 demo 文件夹 复制到 远程 家目录下的Desktop
scp -r demo user@remote:Desktop#. 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote;Desktop Demo
选项 | 含义 |
---|---|
-r | 若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名; |
-p | 若远程SSH服务器的端口不是22,则需要使用大写字母-P选项指定端口 |
- scp 这个终端命令只能在 Linux 或者 UNIX系统下使用;
- 如果在Windows系统中,可以安装Putty,使用pscp命令行工具或者安装FileZilla(如果使用的是xp的系统,那么我们还需要下载一些老一点的版本使用)使用FTP进行文件传输;
提示:有关SSH配置信息都保存在用户家目录下的.SSH目录下;
当第一次连接陌生的主机的时候,系统会提示我们是否授权,一旦授权,连接主机的信息就会保存在已知的文件中;
- 配置公钥
- 执行 ssh-keygen 即可生成SSH钥匙,一路回车即可;
- ssh-keygen:会生成两个加密型(id_rsa和id_rsa.pub)文件,保存在.ssh目录下;
- 上传公钥到服务器
- 执行 ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥;
- 上面命令目的:将id_rsa.pub上传到服务器;
执行 ssh-keygen生成两个文件,其中pub文件是公钥,另一个是私钥,然后将公钥复制到服务器,随后,SSH客户端和SSH服务器通过非对称加密方式进行通信;
Host “别名”
HostName ip地址
User “用户名”
Port “端口号”
目标
- 用户 和 权限 的基本概念;
- 用户管理 终端命令;
- 组管理终端命令;
- 修改权限 终端命令;
在日常使用的频率并不高,用户管理一般由管理员进行操控,开发团队的人员发生变化的时候,管理员用于添加和删除操作用户的操作.重点放在理解用户和权限的概念,对接下来的终端命令的使用有个基本的了解;
绝对路径
…
chmod +/-rwx 文件名|目录名
- su是substitute user的缩写,表示使用另一个用户的身份;
- sudo命令用来以其它身份执行命令,预设的身份为root;
- 用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码;
- 注意:若其未经授权的用户企图使用sudo,则会发出警告邮件给管理员;
提示: 创建组/删除组 的终端命令都需要通过sudo执行;
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd祖名 | 添加组 |
02 | groupdel祖名 | 删除组 |
03 | cat /etc/group | 确认组信息 |
04 | chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
- /etc 目录是专门用来保存 系统配置信息 的目录;
- 组信息 保存在 /etc/group 目录下;
- chgrp -R 组名 文件/目录名 : -R 递归修改文件/目录的所属组;
提示:创建用户/删除用户/修改其他用户密码 的终端命令都需要通过 sudo 执行
序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | useradd -m -g 组 | 添加新用户 | - -m 自动建立用户家目录 - -g 执行用户所在的组,如果不使用该命令,则会创建一个跟用户名同名的组 |
02 | passwd 用户名 | 设置用户密码 | - 如果是普通用户,直接用passwd; - 可以修改自己的账户密码 |
03 | passwd -r 用户名 | 删除用户 | - -r 选项会自动删除用户家目录 |
04 | cat /etc/passwd | grep 用户名 | 确认用户信息 |
- 创建用户时,如果忘记添加 -m 选项(是不会自动添加家目录的)指定新用户的家目录 --最简单的方法就是删除用户,重新创建;
- 创建用户时,默认会创建一个和用户名同名的组名;
- 用户信息保存在 /etc/passwd 文件中;
序号 | 命令 | 作用 |
---|---|---|
01 | id[用户名] | 查看用户UID和GID信息 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前命令用户的账户名 |
提示:设置了用户的附加组之后,需要重新登录才能生效;
#修改用户的主组(passwd中的GID)
usermod -g 组 用户名
#修改用户的附加组
usermod -G 组 用户名
#修改用户登录 Shell
usermod -s /bin/bash
usermod -G sudu 用户名
which ls
#输出
/bin/lswhich useradd
#输出
#user/sbin/useradd
提示:
- cd 这个终端命令是在内置在系统内核中的,没有独立的文件,因此用which无法找到。
如:比如在使用zhangsan用户的时候,去指定一些命令,发现权限不够,于是就切换到其它拥有更高权限的用户,去执行相应的命令。
- 格式:su-用户名,切换用户,并且切换到切换用户的家目录;
- 格式:su 用户名,切换用户,目录保持不变;
- exit:退出到切换之前的用户;
序号 | 命令 | 作用 |
---|---|---|
01 | chown | 修改拥有者 |
02 | chgrp | 修改组 |
03 | chmpd | 修改权限 |
修改文件|目录的拥有者
chown 用户名 文件名|目录组递归修改文件|目录的组
chgrp -R 组名 文件名|目录名递归修改文件权限(当前目录以及目录的子文件)
chmod -R 755 文件名|目录名
755:分别对于拥有者,主用户,其他用户;
直接修改文件|目录的 读|写|执行 权限,但是不能精确到 拥有者|组|其他
chmod +/-rwx 文件名|目录名
拥有者 | 组 | 其他 | ||||||
---|---|---|---|---|---|---|---|---|
r | w | x | r | w | x | r | w | x |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
a:显示终端上所有的进程,包括其他用户的进程;
u:现实进程的详细状态;s:显示没有控制终端的进程;
提示:使用kill命令时,最好只终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃。
通俗来讲:类似与windows系统的快捷方式,在linux系统中,可以通过软链接快速访问软链接指向的文件;
命令(4部分),ln -s 被链接的源文件 软链接的名字;
注意:没有-s选项建立的是一个硬链接文件;两个文件占用相同大小的硬盘空间;源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用。
硬链接简介
在使用ln 创建链接时,如果没有-s选项,会创建一个硬链接,而不是软链接;
#打包文件
tar -cvf 打包文件.tar 被打包的文件/路径…
#如:将桌面上三个文件,py01.txt,py02.txt,py03.txt打包成py.tar文件,先cd进到桌面,然后使用命令,
tar -cvf py.tar py01.txt,py02.txt,py03.txt,多个文件中间使用空格。即可完成打包操作。#解压文件
tar -xvf 打包文件.tar
#压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径…
#解压缩文件
tar -zxvf 打包文件.tar.gz
#解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
注:-C,解压缩到指定目录,要解压的目录必须存在。
#压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径…#解压缩文件
tar -jxcf 打包文件.tar.bz2
#1.安装软件:
sudo apt install 软件包
#2.卸载软件:
sudo apt remove 软件包
#3.更新已安装的包:
sudo apt upgrade
#一个小火车提示
sudo apt install sl
#一个比较漂亮的查看当前进程排名的软件
sudo ap install htop
vi简介
打开和新建文件
三种工作模式
常用命令
分屏命令
常用命令速查图
简介,vi和vim以及vi的特点
- 在没有图形界面的环境下,要编辑文件,vi是最佳选择!
- 每一个要使用Linux的程序员,都应该或多或少学习一些vi的命令
- 没有图形界面的功能强大的编辑器;
- 只能是编辑文本内容,不能对自体,段落进行排版;
- 不支持鼠标操作;
- 没有菜单;
- 只有命令;
vi编辑器在系统管理,服务器管理编辑文件时,其功能永远不是图形界面的编辑器能比拟的;
打开和新建文件
vi 文件名
- vi 文件名 +行数
提示:按下键盘时,注意关闭输入法;
- 命令模式 —> 编辑模式 ,输入 i
- 命令模式 —> 末行模式 ,输入 :
- 末行模式/编辑模式 —> 按ESC
w:保存;
q:退出,如果没有保存,不允许退出;
q!:强行退出,不保存退出;
wq:保存并退出;
x:保存并退出;
- 重复次数
- 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行次数;
- 移动和选择
- vi之所以快,关键在于能够快速定位到要编辑的代码行;
- 移动命令能够和编辑操作命令组合使用;
- 编辑操作
- 删除,复制,粘贴,替换,缩排;
- 撤销和重复
- 查找替换
- 编辑
- 上,下,左,右
- h,j,k,l:左,下,上,右
w(word):向后移动一个单词;
b(back):向前移动一个单词;
0:行首
^:行首,第一个不是空白字符的位置;
$:行尾
- gg(go):文件顶部
- G(go):文件末尾
- 数字gg(go):移动到数字对应行数
- 数字G(go):移动到数字对应行数
- :数字 :移动到数字对应行数
- Ctrl + b :back, 向上翻页
- Ctrl + f : forward,向下翻页
- H:Head,屏幕顶部
- M:Middle,屏幕中间
- L:Low,屏幕底部
- vi中使用空行来区分段落;
- 在程序开发时,通常一段功能相关的代码会写在一起;
- {:上一段;
- }:下一段;
- %:能在成对的括号之间快速的切换;
在开发时,某一块代码可能需要稍后处理,例如:编辑,查看;
此时先使用m增加一个标记,这样可以在需要时快速地跳转回来或者执行其他编辑操作;
标记名称可以是a-z或者A-Z之间的任意一个字母;
添加了标记的行如何被删除,标记同时被删除;
如果在其他行添加了相同名称的标记,之前添加的标记有会被替换掉;
命令
mx:添加标记x,x是a-z或者A-Z之间的任意一个字母;
'x:直接定位到标记x所在位置;
学习复制命令之前,应该先学会怎么样选中要复制的代码;
在vi中要选择文本,需要先使用Visual命令切换到可视模式;
vi中提供了三种可视模式,可以方便程序员选择文本的方式;
按ESC可以放弃选中,返回到命令模式;
| 命令 | 模式 | 功能 |
| — | — | — |
| v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
| V | 可视行模式 | 选中光标经过的完整行 |
| Ctrl + v | 可视块模式 | 垂直方向选中文本 |
在可视模式下,可以和移动命令连用,例如:ggVG能够选中所有内容。
u: 对应英文uodo,撤销上次命令;
CTRL + r:对应英文redo,恢复撤销的命令;
提示:如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本。
*dw # 从光标位置删除到单词末尾
*d0 # 从光标位置删除到一行的起始位置
*d} # 从光标位置删除到段落末尾
*ndd # 从光标位置向下连续 删除n行
*d代码行G # 从光标所在行 删除到指定 代码行 之间所有的代码
da # 从光标所在行 删除到 标记a 之间的所有代码
vi 中提供了一个 被复制文本的缓冲区
提示
- 命令 d、x类似于图形界面的 剪切操作 – CTRL +X
- 命令 y 类似于图形界面的复制操作 – CTRL + C
- 命令 p 类似于图形界面的粘贴操作 – CTRL + V
- vi 中的 文本缓冲区同样只有一个,如果后续做过复制、剪切操作,之前缓冲区的内容会被替换;
- vi 中的 文本缓冲区 和 系统 的**剪切板 **不是同一个;
- 所以在其它软件中使用CTRL + C 复制的内容,不能在vi中通过p命令粘贴;
- 可以在编辑模式下使用鼠标右键粘贴;
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
在程序中,缩进 通常用来表示代码的归属关系;
- 前面空格越少,代码的级别越高;
- 前面空格越多,代码的级别越低;
常规查找
| 命令 | 功能 |
| — | — |
| /str | 查找str |
查找到指定内容之后,使用Next查找下一个出现的位置;
如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可;
单词快速匹配
| 命令 | 功能 |
| — | — |
| * | 向后查找当前光标所在单词 |
| # | 向前查找当前光标所在单词 |
在开发中,通过单词快速匹配,可以快速看到这个单词在其它什么位置使用过;
:%s///g
:%s/旧文本/新文本/g
/旧文本/新文本/g
:%s/旧文本/新文本/gc
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后插入一空行 | 常用 | |
O | 在当前行前插入一空行 | 常用 |
在Python中有简单的方法,但是其它语言中通常需要自己输入
- 输入10,表示要重复10次;
- 输入i进入编辑模式;
- 输入*也就是重复的文字;
- 按下 ESC 返回到 命令模式,返回之后 vi 就会把第2,3两步的操作重复10次;
- 提示:正常开发中,在 进入编辑模式之前,不要按数字;
在Python中,要给代码增加注释,可以在代码前增加一个#
末行命令 主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
| 命令 | 英文 | 功能 |
| — | — | — |
| :e. | edit | 会打开内置的文件浏览器,浏览当前目录下的文件 |
| :n文件名 | new | 新建 |
| :w文件名 | write | 另存为,但是仍然编辑当前文件,并不会切换文件 |
已经学习过的 末行命令
命令 | 英文 | 功能 |
---|---|---|
:w | write | 保存 |
:q | quit | 退出,如果没有保存,不允许退出 |
:q! | quit | 强行退出,不保存退出 |
:wq | write & quit | 保存并退出 |
:x | 保存并退出 | |
:%s///gc | 确认搜索并替换 |
在实际开发中,可以使用 w 命令 阶段性的备份代码
使用 分屏命令,可以 同时编辑和查看多个文件
| 命令 | 英文 | 功能 |
| — | — | — |
| :sp[文件名] | split | 横向增加分屏 |
| :vsp[文件名] | vertical split | 纵向增加分屏 |
切换分屏窗口
分屏窗口都是基于 CTRL + w 这个快捷键的,对应的英文单词是 window
命令 | 英文 | 功能 |
---|---|---|
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quite | 退出当前窗口,如果是最后一个窗口,则关闭vi |
o | other | 关闭其它窗口 |