Linux系统基础
阅读目录
- 一、操作系统
- 二、Linux内核及发行版
- 三、文件和目录
- 四、常用 Linux 命令的基本使用
- 五、远程管理常用命令
- 六、远程登录和复制文件
- 七、用户权限相关命令
- 八、组管理相关命令
- 九、用户管理终端命令
-
一、操作系统
1.操作系统接口示意图
没有安装操作系统的计算机称为裸机
①如果想在裸机上运行自己所编写的程序,就必须使用机器语言书写程序;
②如果计算机安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。
操作系统(OS)就是一个特殊的软件
操作系统的作用:①直接操作硬件;
②操作硬件的代码封装成一个又一个系统调用供其他应用程序来通过这些系统调用间接操作计算机硬件。
2.根据应用领域分为四种操作系统
①桌面操作系统
基于Windows系列:用户群体大,应用软件多,使用方便(缺点:安全性、稳定性低)
基于MacOs系列:适用于开发人员,安全性、稳定性高
基于Linux系列:应用软件少,适合服务器、嵌入式开发。
②服务器操作系统(远程终端控制)
Linux:安全 稳定 免费 提供相关配套软件 市场占有率高
Windows Server:付费 市场占有率低
③嵌入式操作系统(智能产品)--Linux
④移动设备操作系统--ios、Android(基于Linux)
3.虚拟机(Virtual Machine)
定义:通过软件模拟的具有完整硬件系通功能的、运行在一个完全隔离环境中的完整计算机系统
特点:虚拟镜像 桌面 灵活
二、Linux内核及发行版
1.Linux内核: 是系统的心脏,是运行程序和管理磁盘和打印机等硬件设备的核心程序
2.Linux发行版(GNU)
通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
常见发行版:Ubuntu、Redhat、Fedora等。
注:GNU 是一个操作系统项目, 名字是一个递归的 GNU's Not Unix! 的缩写
三、文件和目录
1.单用户操作系统:Windows XP的版本(有盘符)
多用户操作系统:Unix 和 Linux (没有盘符 “/”根目录)
2.Linux 主要目录
/: 根目录(唯一一个)
/bin、/usr/bin:可执行二进制文件的目录
/home: 系统默认的家目录
/etc:系统配置文件存放的目录(不建议放可执行文件)
/boot: 放置Linux 系统时用到的一些文件
/dev: 存放Linux 系统的设备文件
/lib: 系统使用的函数库的目录
/mnt/media: 光盘默认挂载点
/lost*fount:系统异常产生错误时,会将一些迷失的片段放置在此目录下
/root: 系统管理员 root 的家目录
四、常用 Linux 命令的基本使用
1.职场中,服务器维护工作,远程 用 ssh客户端完成
2.常见Linux命令的基本使用
命令 |
英文 |
作用 |
ls |
list |
查看当前文件夹的内容 |
pwd |
Print work directory |
查看当前所在文件夹 |
cd 目录名 |
change directory |
切换文件夹 |
touch 文件名 |
touch |
如果文件不存在,就新建文件 |
mkdir 目录名 |
make directory |
创建目录 |
rm 文件名 |
remove |
删除指定的文件 |
rm -r 目录 |
remove |
删除目录 |
clear |
clear |
清屏 |
3.终端命令格式
command [-options] [parameter]
命令名 选项(可省) 传统命令的参数 []--代表可选(可有可无)
例如:rm -r 目录
帮助信息:①command(命令) --help
②man command 空格(显示下一层) mannual 手册,指南
Enter(一次滚动手册页的一行)
b(回滚一屏)
f(前进一屏)
q(退出)
/word (搜索word字符串)
4.Linux 下文件和目录的特点
①Linux 文件或者目录名称最长256字符
②以.开头的文件为隐藏文件 需要ls -a来显示 (all)
③.代表目录 ..代表上一级目录
④蓝色字体是目录(文件夹),白色字体是文件
5.ls常用选项
-a 显示指定目录下的所有子目录与文件 包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-h以人性化的(直观)方式显示文件大小
注: 命令不分先后 空格可有可无
ls通配符的使用 * 代表任意个字符
?代表任意一个字符 至少一个
5.计算机中常用文件大小的表示
B KB MB GB TB PB EB ZB YB
1KB = 1024B = 2^10 B
6.cd 常用选项:
cd 功能:更改当前的主目录
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd - 可以在最近两次工作目录之间来回切换
7.相对路径与绝对路径
相对路径:在输入路径时,最前面不是/或者~,表示相对当前目录所在的目录位置
绝对目录:在输入路径时,最前面是/或者~,表示从根目录/家目录开始的具体目录位置
8.创建和删除操作
touch (创建文件或修改时间):①文件不存在,创建一个空白文件;
②文件已存在,可修改文件的末次修改日期
mkdir (创建一个新的目录): -p 可以递归创建目录 例如:mkdir -p a/b/c/d
注:Linux中新建目录的名称不能与当前目录中已有的目录或文件重名
rm (删除文件或目录) 使用rm 命令时要小心,因为删除文件后不能恢复。
-r 递归的删除目录下的内容,删除文件夹时必须加此参数。
-f 强制删除,忽略不存在的文件,无需提示。
注:rm 命令通配符一样适用,例如:rm -r * 删除该目录下的所有文件或目录
9.拷贝和移动文件
tree [目录名] 以树状图列出文件目录结构
cp 源文件 目标文件 复制文件或目录 (copy)
mv 源文件 目标文件 移动文件或者目录/文件或者努力重命名 (move)
① tree -d (只显示目录) tree ~ (查看目录下的结构)
② cp -i (覆盖文件前出现提示)
cp -r (将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名)
③ mv a/b/c/123.txt .(这个点表示当前目录)
mv -i (覆盖文件前提示)
mv readme.txt demo.txt(重命名文件 路径不变 修改文件名)
10.查看文件内容
cat 文件名 查看文件内容、创建文件、文件合并等功能 (concatenate)
more 文件名 分屏显示内容
grep 搜索文本文件名 搜索文本文件内容
① cat 会一次显示所有内容,适合查看文件较少的文本文件
-b 对非空输入行编号
-h 对输出的所有行编号
② more 可用于分屏显示内容,每次只显示一页内容,适合于查看内容较多的文本文件
使用more 的操作键和man 的操作键一致 -b -f -q /word
③ grep 是Linux系统中强大的文本搜索工具
-n 显示匹配行和行号 grep -n as 123.txt(文件名)
-v 显示不包括匹配文本的所有行(相当于求反)
-i 忽略大小写 grep -i as 123.txt grep -i "hello world" 123.txt
grep 允许对文本文件进行模式查找 又称正则表达式
^a (行首,搜寻以a 开头的行)
ke$ (行尾,搜寻以ke 结束的行)
11.其他
① echo 会在终端中显示参数指定的文字,通常会和重定向联合使用
② 重定向 > 和 >>
Linux 中允许将命令执行结果重定向到一个文件,将本应该显示在终端上的内容 输出/追加到指定文件中。
其中> 表示输出,会覆盖文件原有的内容
>>表示追加,会将内容追加到已有文件的结尾
③ 管道|
Linux允许将一个命令的输出可以通过管道作为另一个命令的输入
常用的管道命令有:more:分屏显示内容
grep:在命令执行结果的基础上查询指定的文本
例如:ls -lh | more
ls -lha ~ | grep vi 表示有vi 字母的内容
五、远程管理常用命令
1.shutdown
shutdown选项 时间 关机/重启
shutdown 不指定任何选项和参数 默认一分钟之后关闭电脑
shutdown -c 取消 (cancel)
shutdown now 立刻关机
shutdown -r now 立刻重启
shutdown 20:35 在今天20:35关机
shutdown +10 系统在10分钟之后关机
2.查看或配置网卡信息
命令 对应英文 作用
ifconfig configure a network interface 查看/配置计算机当前的网卡配置信息
ping IP地址 ping 检查到目标ip地址的连接是否正常
(1) 网卡和IP地址
网卡是一个专门负责网络通讯的硬件设备
IP 地址是设置在网卡上的地址信息
电脑->手机 网卡->手机卡 IP地址->电话号码
(2) ifconfig ifconfig 查看网卡配置信息
ifconfig | grep inet 查看网卡对应的IP地址
注:一台物理机中可能会有一个物理网卡和多个虚拟网卡
在Linux 中物理网卡的名字通常是ens xx表示
127.0.0.1 被称为本地回环/环回地址 一般来说测试本机网卡是否正常
(3)ping
ping IP地址 检测到目标主机是否连接正常
ping 127.0.0.1 检测本地网卡工作正常
注: ping 一般用于检测当前主机到目标主机之间是否顺畅,数值越大,速度越慢。ping原理和潜水艇的声呐相似,这个命令取自声呐的声音。
原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
【提示】在Linux中终止终端程序的执行大多使用 Ctrl + C
六、远程登录和复制文件
ssh 用户名@ip secure shell 关机/重新启动
scp 用户名@ip:文件名或路径 secure copy 远程复制文件
1.ssh 基础
在Linux 中ssh是非常常用的工具,通过ssh客户端,我们可以连接到运行了ssh服务器的远程机器上。
ssh协议优点:数据传输是加密的,可以防止信息泄露(防止DNS欺骗和IP欺骗)数据传输是压缩的,可以提高传输速度
(1) 域名和端口号
域名:由一串用点分隔的名字组成,是IP地址的别名,方便记忆 例如:www.baidu.com
IP地址:通过IP地址找到网络上的计算机
端口号:通过端口号找到计算机上运行的应用程序(找到服务器的软件)
SSH服务器默认的端口号是22(默认端口号连接可以省略)
常见的服务器端口号:SSH服务器:22 Web服务器:80
HTTPS:443 FTP服务器:21
(2) SSH客户端的简单使用
ssh [-P port] user @remote
user 是远程机器上的用户名,如果不指定的话默认为当前用户
remote 是远程机器的地址,可以是IP/域名或后面提到的别名
port 是SSH server 监听的端口,如果不指定就默认为22
【提示】使用exit 退出当前用户的登录
在工作中,SSH服务器端口号很有可能不是22,则需要使用 -p 选项,指定正确端口号,否则无法连接到服务器。例如:-p 22 user@...
【注】SSH这个终端命令只能在Linux或Unix下使用,如果在Windows系统下,可以安装PuTTY或Xshell 客户端软件即可。
Linux 和 Unix 区别详解:http://c.biancheng.net/view/707.html
(3) Windows下SSH客户端的安装:在官方网站下载正式的安装程序Xshell或Putty
2.scp
scp 就是secure copy 的缩写,是一个在Linux下远程拷贝文件的命令,它的地址格式和ssh基本相同,需要注意的是在指定端口时用的是大写 -P 而不是小写的。
(1)把本地当前目录下的01.py文件复制到远程家目录下的Desktop/01.py下
scp -P port 01.py user@remote:Desktop/01.py
【注意】“:”后面的路径如果不是据对路径,则以用户的家目录作为参考路径
(2)把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py
scp -P port user@remote:Desktop/01.py 01.py
(3) 加上-r 选项可以传送文件夹
(4) 把当前目录下的demo 文件夹复制到远程家目录下的Desktop
scp -r demo user@remote:Desktop
(5) 把远程家目录下的desktop 复制到当前家目录下的demo 文件夹
scp -r user@remote:Desktop demo
例如:scp -P 22 python@172.16.140.138:Desktop/01.py .(这个点表示在当前目录下)
scp -P 22 01.py python@172.16.140.138:Desktop
scp -P 22 -r python@172.16.140.138:Desktop demo(如果没有demo这个文件夹,会创建)
【注】-r若给出的源文件是目录文件,则scp 将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名
-p若远程SSH服务器的端口不是22 需要使用大写字母 -P 选项指定端口
【提示】scp 这个命令只能在linux或者Unix系统下使用
如果在windows系统中,可以安装Putty,使用pscp命令行工具或者安装FileZilla 使用FTP 进行文件传输,FileZilla 使用的是FTP服务器端口号为21
3.ssh 高级
(1) ssh 免密码登录
① 配置公钥 执行ssh-keygen 即可生成ssh钥匙,一路回车即可
② 上传公钥到服务器 执行ssh -copy-id -p part user@remote, 可以让远程服务器记住我们的公钥
示意图
本地使用私钥对数据进行加密/解密
服务器使用公钥对数据进行加密/解密
非对称加密算法:使用公钥加密的数据,需要使用私钥进行解密;使用私钥进行加密的算法,需要使用公钥进行解密。
(2) 配置别名
每次都输入ssh -p port user@remote,时间久了会觉得很麻烦,特别是当user,remote和port 都得输入而且还不好记忆,而配置别名可以让我们进一步“偷懒”,譬如用:ssh mac
来替代上面那么一长串,那么就在 ~/.ssh/config (没有config创建config)里面追加以下内容:
Host mac (可以设置自己喜欢的)
HostName IP地址
User 主机名
Port 22
保存之后,即可使用ssh mac 实现远程登录了 scp 同样可以使用 例如:scp -r ~/Desktop mac:Desktop/demo
七、用户权限相关命令
1.用户和权限的基本概念
用户是Linux 系统工作中的重要的一环,用户管理包括用户与组管理,在Linux 系统想死啊,不论是本机或者是远程登录系统每个系统都必须拥有一个账号,
并且对不同的系统资源有着不同的权限。
对文件/目录的权限包括:
读 read r 4
写 write w 2
执行 excute e 1
2.组
为方便用户管理,提出了组的概念,在实际应用中,可以预先对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为某个用户设置权限。
3.ls -l扩展
ls -l 是以列表形式查看文件夹下文件的详细信息,从左到右依次是:
- 权限,第一个字母 d 表示目录。
- 硬链接数,就是有多少种方式可以访问到当前目录/文件。
- 拥有者,家目录下文件/目录的拥有者通常是当前用户。
- 组,在Linux 中,通常组名和用户名都相同。
- 大小
- 时间
- 名称
目录 |
拥有者权限 |
组权限 |
其他用户权限 |
|||||||
文件权限示例 |
- |
r |
w |
- |
r |
w |
- |
r |
- |
- |
目录权限示例 |
d |
r |
w |
x |
r |
w |
x |
r |
- |
x |
4.chmod 简单使用(重要)
chmod 可以修改用户/组对文件/目录的权限
命令:chmod +/- -rwx 文件名/目录名 (一次性修改用户/组权限)
5.超级用户
Linux 系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有的访问权限(在大多数版本Linux中都不推荐直接使用root账号直接
登录系统),在Linux安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”。
sudo
su 是substitute user 的缩写,表示使用另一个用户的身份。
sudo命令用来以其他身份来执行命令,预设的身份为root。
用户使用sudo 时,必须输入密码,之后会有5分钟使用期限。
若未经授权的用户企图使用 sudo ,则会警告邮件给管理员。
八、组管理相关命令
1.创建组/删除组的终端命令都需要通过sudo 执行
groupadd 组名 添加组
groupdel 组名 删除组
cat/etc/group 确认组信息
chgrp -R 组名 文件/目录名 修改文件/目录的所属组
2.组信息保存在/etc/group 文件中
/etc 目录是专门用来保存系统配置信息的目录。
九、用户管理终端命令
创建用户/删除用户/修改其他用户密码的终端命令都需要通过sudo 执行。
1.创建用户/设置密码/删除用户
命令 作用 说明
sudo useradd -m -g 组 新建用户名 添加新用户 -m是自动建立用户家目录
-g是指定用户所在组,否则会建立一个和用户名重名的组
sudo passwd 用户名 设置用户密码 如果是普通用户,直接passwd 会修改自己账户密码
sudo userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat/etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在/etc/passwd 文件中。
【提示】
① 创建用户时,如果忘记添加-m 选项指定新用户的家目录---最简单的方法就是删除用户,重新创建。
② 创建用户时,默认会创建一个和用户名同名的组名。
③ 用户信息保存在 /etc/passwd 文件中。
2.查看用户信息
命令 作用
id [用户名] 查看用户UID和GID信息 (UID=user id 用户ID;GID= Group id群组ID)
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名
3.passwd 文件
/etc/passwd 文件存放的是用户的信息,是由六个号组成的七个信息,分别是:
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地账号
- 家目录
- 登录使用的shell,就是登录之后使用的终端命令,Ubuntu默认是dash 可以参考:https://ubuntuqa.com/article/2095.html
4.usermod
usermod 可以用来设置用户的主组/附加组合登录shell(shell 是一个软件——终端窗口),命令格式如下:
主组:通常在新建用户时指定,在/etc/passwd 的第4列GID对应的组。
附加组:在/etc/group 中的最后一列表示该组的用户列表,用于指定用户的附加权限。
【注】设置了用户的附加组之后,需要重新登录才能生效。
命令 作用
usermod -g 组 用户名 修改用户的主组(passwd的GID)
usermod -G 组 用户名 修改用户附加组
usermod -s /bin/bash 修改用户登录shell
【注意】默认使用useradd 添加的用户是没有权限,sudo 以root 身份执行命令的,可以使用以下命令,将用户添加到sudo 附加组中。例如 usermod -G sudo 用户名
5.which
/etc/passwd 是用于保存用户信息的文件
/usr/bin/passwd 是用于修改用户密码的程序
which 命令可以查找执行命令所在的位置,例如:
which ls 输出:/bin/ls
which useradd 输出:/usr/sbin/useradd
bin 和 sbin
- 在Linux中, 绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin
- 在/bin (binary)是二进制执行文件目录,主要用于具体应用。
- /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理。
- /usr/bin (user commands for applications)后期安装的一些软件。
- /usr/sbin (super user commands for application) 超级用户的一些管理程序。
【提示】cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此 which 无法找到cd 命令的位置。
6.切换用户
命令 作用 说明
su -用户名 切换用户,并且切换目录 -可以切换用户家目录,否则保持位置不变。
exit 退出当前登录用户
【注意】su 不接用户名,可以切换到root,但是不推荐使用,因为不安全。
exit示意图如下:
7.修改文件权限
命令 作用
chown 修改拥有者
chgrp 修改组
chmod 修改权限
chown 用户名 文件名|目录名 修改文件|目录的拥有者
chgrp -R 组名 文件名|目录名 递归修改文件|目录的值
chmod -R 755 文件名/目录名 递归修改文件权限
例如:sudo chown zhangsan Python学习(目录)
sudo chgrp python Python学习
chmod 640 123.txt
chmod在设置权限时,可以简单使用三个数字分别对应 拥有者/组/其他用户的权限
直接修改文件/目录的读|写|执行权限,但不能精确到拥有者/组/其他用户。
命令格式:chmod +/- rwx 文件名/目录名
拥有者 |
组 |
其他用户 |
||||||
r |
w |
x |
r |
w |
x |
r |
w |
x |
4 |
2 |
1 |
4 |
2 |
1 |
4 |
2 |
1 |
常见的数字组合有(u表示用户/g表示组/o表示其他)
777==》u = rwx, g = rwx, o = rwx
755==》u = rwx, g = rx, o = rx
644==》u = rw, g = r, o = r
例如:chmod 777 12.py
chmod 640 123.txt
chmod -R 775 test(目录)
【提示】
4 |
2 |
1 |
7 |
rwx |
4 |
2 |
0 |
6 |
rw- |
4 |
0 |
1 |
5 |
r-x |
4 |
0 |
0 |
4 |
r-- |
0 |
2 |
1 |
3 |
-wx |
0 |
2 |
0 |
2 |
-w- |
0 |
0 |
1 |
1 |
--x |
0 |
0 |
0 |
0 |
--- |
8.系统信息相关的命令
为了方便通过远程终端维护服务器时,查看服务器上当前系统日期和时间/磁盘空间占用情况/程序执行情况
① 时间和日期
命令 作用
data 查看系统时间
cal calender查看日历, -y 选项 可以查看一年的日历
② 磁盘信息
命令 作用
df -h disk free 显示磁盘剩余空间
du -h[目录名] disk usage 显示文件目录下的文件大小
【提示】“-h” 是以人性化的方式显示文件大小
③ 进程信息
进程: 当前正在执行的一个程序
命令 作用
ps aux process status 查看进程的详细情况
top 动态显示运行中的程序并且排序
kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止
【注意】
- ps 默认只会显示当前用户通过终端启动的应用程序
- ps 选项说明功能
- a 显示终端上的所有进程,包括其他用户的进程
- u 表示显示进程的详细状态
- x 显示没有控制终端的进程
【提示】
- 使用kill 命令时,最好终止由当前用户开启的进程,而不要终止root身份开启的进程,否则可能导致系统崩溃。
- 要退出top,可以直接输入q。
9.其他命令
查找文件:find 软链接:lh -s 打包和压缩:tar 软件安装:apt-get
① 查找文件
find 命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件
命令 作用
find [路径] -name ".py" 查找指定路径下扩展名是.py 的文件(包括子目录)[如果省略了路径,表示在当前文件夹下查找]
演练目标:
- find -name "*|*" 搜索桌面目录下,文件名包含1的文件
- find -name "*.txt" 搜索桌面目录下,所有以.txt 为扩展名的文件
- find -name "1*" 搜索桌面目录下,以数字1 开头的文件
② 软链接:类似于Windows 下的快捷方式
建立文件软命令:ln -s 被链接的源文件叫 链接文件。
- 没有-s 选项建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
- 源文件要使用绝对路径, 不能使用相对路径,这样就可以方便移动链接文件后,仍能正常使用
硬链接:ln 被链接的源文件叫 链接文件。硬链接后的文件不受源文件的控制。
软链接/硬链接示意图
在Linux中,文件名和文件的数据是分开存储的。只有文件的硬链接数==0才会被删除,使用ls -l 可以查看一个文件的硬链接的数量。
③ 打包 压缩:备份文件的一种方式。
不同的操作系统,常用的打包压缩方式是不同的,Windows常用rar,Mac常用Zip,Linux 常用的是tar、gz.
- 打包、解包
tar 命令可以把一系列的文件打包到一个大文件中,也可以把大文件恢复成一系列文件。
tar 命令 格式如下:
# 打包文件 tar -cvf 打包文件.tar 被打包的文件/路径
# 解包文件 tar -xvf 打包文件.tar
tar 选项说明:
-
- 选项 含义
- c 生成档案文件,创建打包文件
- x 解开档案文件
- v 列出归档、解档的详细过程,显示进程
- f 指定档案文件名称,f后面一定是.tar文件,所以必须放在最后,其他选项任意
tar -cvf py.tar(打包文件名) 01.py 02.py 03.py(被打包文件)
- 压缩/解压缩
① gzip
tar 和 gzip 命令结合可以使用实现文件打包和压缩,tar 只负责打包和压缩
tar 只负责打包但不压缩
用gzip 压缩tar 打包的文件,其扩展名一般用xxx.tar.gz
在tar命令中又一个选项-z 可以调用gzip,从而方便实现压缩和解压缩的功能。
命令
# 压缩文件 tar -zcvf 打包文件.tar.gz 被压缩的文件/路径
# 解压缩文件 tar -zxvf 打包文件.tar.gz
# 解压到指定路径 tar -zxvf 打包文件.tar.gz -C 目标路径
-C 含义:解压到指定目录(指定目录必须存在)
② bzip2(two)
tar与 bzip2 命令结合可以使用实现文件打包和压缩(用法和gzip 一样)
用bzip2 压缩tar 打包后的文件,其扩展名一般用xxx.tar.bz2
在tar 命令中有有个选项 -j 可以调用bzip2
命令
# 压缩文件 tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
# 解压缩文件 tar -jxv 打包文件.tar.bz2
④ 软件安装
- 通过apt 安装/卸载软件,apt 是Advanced Package Tool(高级包工具)
- 安装软件: sudo apt install 软件包
- 卸载软件 sudo apt remove 软件名
- 更新已安装的包: sudo apt upgrade
- 安装演练:配置软件源
- # 一个小火车提示
- $ sudo apt install sl
- # 一个比较漂亮的查看当前进程排名的软件
- $ sudo apt install htop
十、Vi——终端中的编辑器
1.简介
① 学习vi 的目的: 在没有图形界面的环境下,要编辑文件对服务器上的文件进行简单修改,要用 vi。
② vi 和 vim
在很多Linux 发行版中,直接把vi 做成vim 的软链接(快捷方式)
- vi 是 visual interface的简称vim 是vi improved 的简称 被称为"编辑器之神"。
- vi 核心设计思想: 让程序员的手始终在键盘核心区域上完成所有操作。
- vi 特点:没有图形界面的、功能强大的编辑器;只能编辑文本内容,不能排版;不支持鼠标操作,没有菜单,只有命令;
2.打开和新建文件
vi 文件名 若已存在,则直接打开; 若文件不存在,则会新建。
① 打开文件并且定位行
命令: vi 文件名 +行数 (若只带上 + 号,不指定行号,则会直接定位到文件末尾)
② 异常处理(输入法的关闭)
③ 三种工作模式
- 命令模式,打开文件,首先进入命令模式,是使用 vi 的入口,通过命令对文件进行常规的编辑操作,例如:定位,翻页,复制,粘贴,删除等等。
- 在其他图形编辑器下,通过快捷键或者鼠标实现的操作都在命令模式下实现。
- 末号模式:执行保存、退出等操作
- 末号模式是vi 的出口,要退出 vi 返回控制台需要在末令模式下输入命令。
- 末行模式命令:
命令 英文 功能
w write 保存
q quit 退出,如果没有保存,不允许退出
q! quit 强制退出,不保存退出
wq write&quit 保存并退出
x 保存并退出
3.常用命令
【提示】在使用vi 命令时,要注意关闭中文输入法
- 重复次数:在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数
- 移动和选择(多练):vi 之所以快,关键在于能快速定位到要编辑的代码行,移动命令能和编辑操作命令组合使用。
- 编辑操作:删除、复制、粘贴、替换、缩排。
- 撤销和重复
- 查找替换
- 编辑
3.1 移动
(1) 上下左右: h 向左,j 向下, k向上,l 向右。
(2) 行内移动: w 向后移动一个单词(word)
b向前移动一个单词(back)
O 行首
^ 行首(第一个不是空白的位置)
$ 行尾
(3) 行间移动 gg 文件顶部
G 文件末尾
数字gg/数字G/:数字 移动到数字对应行数
(4) 屏幕移动 命令 英文 功能
Ctrl + b back 向上翻页
Ctrl + f forward 向下翻页
H Head 屏幕顶部
M Middle 屏幕中间
L Low 屏幕底部
3.2 移动(程序)
(1) 段落移动
vi 中使用空行来区分段落,在程序开发时,通常一段功能都相关的代码会写在一起(之间段没有空行)。
命令:{ 功能:上一段
命令:} 功能:下一段
(2) 括号切换 命令: % 功能:括号匹配切换
(3) 标记
在开发时,某一块代码可以需要稍后处理,例如:编辑、查看。此时先使用 m增加一个标记,这样就可以在需要时快速的跳转回来或者执行其他编辑操作。
标记名称可以使a-z或者A-Z 之间的任意一个字母,添加了标记的行如果被删除,标记同时被删除;如果在其他行添加了相同的标记,之间添加的标记,也会被替换掉。
命令 英文 功能
mx mark 添加标记x,x 是a-z或者A-Z 之间的任意一个字母
'x 直接定位到标记x所在的位置
3.3 选中文本(可视模式)
学习复制命令前,应该先学会怎么样选中复制的代码,在 vi 中先选择文本,需要先使用 visual 命令切换到可视模式。
vi 中提供了三种可视模式,可以方便程序员选择选中文本的方式,按 Esc 可以放弃选中,返回命令模式。
命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选择文本
V 可视行模式 选中光标经过的完整行
Ctrl+v 可视块模式 垂直方向选中文本
可视模式下,可以和移动命令连用,例如:ggvG 能够选中所有内容。
3.4 撤销和恢复撤销
命令 英文 功能
u undo 撤销上次命令
Ctrl+r redo 恢复撤销的指令
3.5 删除文本
命令 英文 功能
x cut 删除光标所在字符,或者选中文字
d(移动命令) delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd 删除多行
D delete 删除至行尾
【提示】如果使用可视模式已经选中了一段文本,那么无论使用d 还是x 都可删除,删除命令可以和移动命令连用,以下是常见的组合命令:
命令 功能
dw 从光标位置删除至单词行尾
d0 从光标位置删除到一行的起始位置
d} 从光标位置删除到段落末尾
ndd 从光标位置向下连续删除n行
d代码行G 从光标所在行删除到指定代码行之间的所有代码
d'a 从光标所在行删除到标记 a 之间的所有代码
3.6 复制、粘贴
vi 中提供有一个被复制文本的缓冲区
复制命令会将选中的文字保存在缓冲区/删除命令删除的文字被保存在缓冲区。
在需要的位置,使用粘贴命令可以将缓冲区的文字插入到光标所在位置。
命令 英文 功能
y(移动命令) copy 复制
yy copy 复制一行,可以nyy复制多行
p paste 粘贴
【提示】命令d、x类似于图形界面的剪切操作——Ctrl + X
命令y 类似于图形界面的复制操作——Ctrl + C
命令p类似于图形界面的粘贴操作——Ctrl + V
vi中的文本缓冲区同样只有一个,如果后续做过复制、剪切操作,之前缓冲区的内容会被替换。
vi中的文本缓冲区和系统的剪切板不是同一个,所以在其他软件中使用Ctrl+C复制的内容,不能再vi中通过p粘贴,可以在编辑模式下鼠标右键粘贴。
3.7 替换
命令 英文 功能 工作模式
r replace 替换当前字符 命令模式
R replace 替换当前光标后的字符 替换模式
R命令可以进入替换模式,替换完成后,按下Esc 可以回到命令模式;替换命令的作用是不用进入编辑模式,对
文件进行轻量级的修改。
3.8 编排和重复执行
命令 功能
>> 向右增加缩进
<< 向左增加缩进
· 重复上次命令
编排命令,在开发程序时,统一增加代码的缩进比较有用。
一次性在选中代码前增加4个空格,就叫做增加缩进。
一次性在选中代码前删除4个空格,就叫做减少缩进。
在可视模式下,缩排命令只需要使用一个 >或者 <。
在程序中,缩进通常用来表示代码的归属关系,前面空格越少,代码的级别越高;前面的空格越多,代码的级别越高。
3.9 查找
常规查找,命令: /str ,功能:查找str
查找到指定内容之后,使用next查找下一个出现的位置。
n :查找下一个
N : 查找上一个
如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可。
单词快速匹配: 命令:* 功能:向后查找当前光标所在单词
命令:# 功能:向前查找当前光标所在单词
在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过。
3.10 查找并替换(在末行模式进行)
命令格式::%s/ / /g
(1) 全局替换:一次性替换文件中的所有出现的旧文本
命令::%s/旧文本/新文本/g
(2) 可视区域替换(先V选中范围)
命令: s/旧文本/新文本/g
(3) 确认替换
如果把末尾的g 改成gc,在替换中会有提示,其中c是confirm的缩写。
命令::%s/旧文本/新文本/gc
【提示】y——yes 替换,n——no 不替换,a——all 替换所有,q——quit 退出替换
l——last 最后一个并且把光标移动到行首,Ctrl + E 向下滚屏,Ctrl + Y向上滚屏
3.11 插入命令
命令 英文 功能
i insert 在当前字符前插入文本
I insert 在行首插入文本
a append 在当前字符后添加文本
A append 在行末添加文本
o 在当前行后面插入一空行
O 在当前行前面插入一空行
演练1——编辑命令和数字连用
在开发中,可能会遇到连续输入N个同样字符的情形,在Python 中会有简单的方法,但在其他语言中需要自己输入。
例如:**********(连续十个*)
要实现这个效果可以在命令模式下:
① 输入10,表示要重复10次
② 输入i进入编辑模式
③ 输入*,也就是要重复的文字
④ 按下Esc返回命令模式,返回值后vi就会把②③两部重复10次。
【注意】正常开发时,在进入编辑模式之前,不要按数字。
演练2——利用可视块给多行代码增加注释
在开发中,可能会遇到一次性给多行代码增加注释的情形,在Python 中,要给代码增加注释,可以在代码前增加一个#
要实现这个效果可以在命令模式下:
① 移动到要添加注释的第一行代码,按 0 或 ^ 来到行首。
② 按Ctrl + v 进入可视块模式
③ 使用 j 向下连续选中要添加的代码行。
④ 输入 I 进入编辑模式,并在行首插入【注】一定要用I。
⑤ 输入# 也就是注释符号。
⑥ 按下Esc返回命令模式,返回之后vi 会在之前选中的每一行代码前插入#。
4.分屏命令(属于vi的高级命令——可以同时查看和编辑多个文件)
4.1末行命令
末行命令,主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
命令 英文 功能
e edit(编辑) 会打开内置的文件浏览器,浏览当前目录下的文件。
n 文件名 new 新建文件
w 文件名 write 另存为,但是仍然编辑当前文件,并不会切换文件。
【提示】切换文件之前,必须要保证当前这个文件已经被保存。
已经学过的末行命令:
命令 英文 功能
w write 保存
q quit 退出,如果未保存,不允许退出
q! quit 强制退出,不保存退出
wq write&quit 保存并退出
:%s/ / /gc 确认搜索并替换
【提示】在开发中,可以使用w 命令阶段性的备份代码。
4.2分屏命令
分屏命令,使用分屏命令可以同时编辑和查看多个文件。
命令 英文 功能
sp [文件名] split(分离) 横向增加分屏
vsp[文件名] vertical split 纵向增加分屏 vertical(垂直的)
切换分屏窗口,分屏窗口都是基于Ctrl + w 这个快捷键的,其中w 是window的缩写
命令 英文 功能
w window 切换到下一个窗口
r reverse 互换窗口
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,如果是最后一个窗口,则退出 vi
o other 关闭其他窗口
作者:Gaowaly
出处:https://www.cnblogs.com/Gaowaly/p/14259928.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性