Fork me on GitHub

Linux教程

目录

1. Linux简介

  • Window属于单用户操作操作系统
  • Unix和Linux属于多用户操作系统
    • Linux中没有盘符的概念,只有一个根目录/

image-20220227211501629

Linux目录

  • /根目录:一般根目录只存放目录,linux中只有一个跟目录
  • /bin,/usr/bin:可执行二进制文件的目录,如常见的命令ls,tar,mv,cat
  • /boot:放置linux系统启动时用到的一些文件
  • /dev:存放linux系统下的设备文件
  • /etc:系统配置文件的存放目录,不建议再此目录下存放可执行文件,重要的配置文件有
    • /etc/inittab
    • /etc/fstab
    • /etc/init.d
    • /etc/X11
    • /etc/sysconfig
    • /etc/xinetd.d
  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下

2. Linux命令

2.1. 常用linux命令

命令 英文 含义
ls list 查看当前文件夹的内容
pwd print work directory 查看当前所在文件夹
cd [目录名] change directory 切换文件夹
touch [文件名] touch 如果文件夹不存在就创建
mkdir [目录名] make directory 创建目录
rm [文件名] remove 删除指定的文件名
clear clear 清屏

2.2. Linux的格式

command [-option] [parameter]
  • [-option]:选项,可以对命令进行控制,也可以省略
  • parameter:传给命令的参数,可以是0,1,或者多个

2.3. 查询命令帮助信息

(1)--help

command --hep

(2) man

man command

操作中的说明

操作键 功能
空格 显示手册的 下一屏
Enter 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索word字符串

3. 命令讲解

3.1. 文件目录相关命令

(1) 查看目录内容:ls

参数 含义
-a 显示指定目录下的所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合-l以人性化的方式显示文件大小

ls通配符

通配符 含义
* 代表任意个数的字符
? 代表任意一个字符
[] 表示可以匹配字符组中的任意一个
[abc] 匹配a,b,c中的任意一个
[a-f] 匹配a到f范围内的任意字符

image-20220228152653538

(2) 切换目录:cd

命令 含义
cd 切换到当前用户的主目录
cd ~ 切换到当前用户的主目录
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd - 可以在最近两次工作目录之间来回切换

(3) 创建和删除操作:touch, rm, mkdir

touch 创建文件

  • 如果文件不存在,可以创建一个空白文件
  • 如果文件已经存在,可以修改文件的最后一次修改日期

mkdir 创建一个新目录

选项 含义
-p 可以递归创建目录

image-20220228153840109

rm 删除文件或目录

使用rm命令会直接从磁盘中删除,无法恢复

参数 含义
-f 强制删除,忽略不存在的文件,无需提示
-r 递归删除目录下的内容,删除文件夹事必须加入这个参数

image-20220228154129244

(4) 拷贝和移动文件tree,cp,mv

命令 作用
tree [目录名] 以树状图列出文件目录结构
cp 源文件 目标文件 复制文件或者目录
mv 源文件 目标文件 移动文件或者目录/文件或者目录重命名

tree 树状图列出文件目录

选项 含义
-d 只显示目录

image-20220228155255311

cp 复制

选项 含义
-i 覆盖文件提示
-r 若给出的源文件是目录文件,则cp
将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录

image-20220228160147409

mv 移动+重命名

选项 含义
-i 忽略文件提示

(5) 查看文件内容: cat, more, grep

命令 作用
cat 文件名 查看文件内容、创建文件、文件合并、追加文件内容等功能
more 文件名 分屏显示文件内容
grep 搜索文本文件名 搜索文本文件内容

cat 查看文件内容,创建文件,文件合并,追加文件内容

  • 一次性显示所有内容,适合内容较少的文本
选项 含义
-b 对非空输出行编号
-n 对输出的所有航编号

more分屏显示内容

操作键 含义
空格 显示手册的下一屏
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出

grep 搜索文本

选项 含义
-n 显示匹配行和行号
-v 显示不包含匹配文本的所有行
-i 忽略大小写

常有的两种模式查找

参数 含义
^a 行首,搜找以a开头的行
`ke 参数
----- ---------------------
^a 行首,搜找以a开头的行
行尾,搜以ke结尾的行

image-20220228210821442

(6) 其他:echo, 重定向>/>>, 管道|

echo 在终端中显示传递给的参数,类似print (一般和重定向一起使用)

重定向:将本应该输出到终端的内容输出到指定文本中

  • >表示输出,会覆盖原内容
  • >>表示追加,会追加

image-20220228211337712

管道|:将一个命令的输出通过通道当做另一个命令的输入

常用的管道命令

  • more
  • grep

image-20220228211839373

image-20220228211905341

3.2 远程管理命令

(1)关机、重启

命令 作用
shutdown 关机
# 重新启动操作系统,其中now表示现在
shutdown -r now

# 立刻关机
shutdown now

# 系统会在20:00 关机
shutdown 20:00

# 系统在10分钟后关机
shutdown +10

# 取消关机
shutdown -c

(2)查看或配置网卡信息

命令 作用
ifconfig 查看/配置计算机当前的网卡配置信息
ping ip 地址 检测到目标ip地址的连接是否正常

网卡:

  • 负责网络通讯的硬件设备
  • IP地址就是设置在网卡上的地址信息

image-20220228215628019

(3)远程登录ssh和复制文件

ssh是linux中非常常用的工具,通过ssh客户端我们可以连接到运行了ssh服务器的远程机器上面去

image-20220228222322413

  • SSH客户端是一种使用Secure sheel (SSH)协议链接到远程计算机的软件程序
  • SSH是目前比较可靠,专门为远程登录会话和其他网络服务提供安全性的协议
    • 通过SSH协议,可以游戏防止远程管理过程中的信息泄露
    • 通过SSH协议,可以对所有传输的数据进行加密

域名和端口号

域名

  • 由一串用点分隔的名字组成www.baidu.com
  • IP地址的别名

端口号

  • IP地址:通过IP地址找到网络上的计算机
  • 端口号:通过端口号可以找到计算机上运行的应用程序
    • SSH服务器的默认端口号是22
  • 常见的服务端口号列表
服务 端口号
SSH服务器 22
Web服务器 80
HTTPS 443
FTP服务器 21

ssh客户端的简单使用

ssh [-p port] user@remote
  • user是在远程机器的用户名
  • remote是远程机器的地址,可以是IP或者域名,或者别名
  • port是SSH server监听的端口,如果不指定,默认22

提示

  • 使用exit退出当前用户的登录
  • Window系统中,可以安装XShell来使用shell

XShell连接到ubuntu

  1. 首先在ubuntu中查看是否安装和开启ssh服务
# 查看是否安装ssh
ssh localhost

# 安装ssh-server
sudo apt-get install openssh-server

# 启动服务
sudo /etc/init.d/ssh start

# 检查是否启动成功
ps -e|grep ssh

(4) scp 远程拷贝文件

  • scp用于远程拷贝文件
  • 它的地址格式和ssh基本相同,但是指定端口时是大写的P而不是小写的

image-20220228225553265

# 本地->远程:将本地当前目录下得01.py 复制到 远程家目录下得Desktop/01.py
scp -P port 01.py user@remote: Desktop/01.py

# 远程->本地:把远程家目录下得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 将递归复制该目录下的所有子目录和文件
-P 若远程SSH的端口不是22,需要使用大写字母-P选项指定端口

image-20220228230529980

FileZilla: 传输文件

image-20220228232909430

3.3. 用户权限命令

基本概念

  • 用户是linux系统的重要部分,包括用户和组的管理
  • Linux中,可以指定每一个用户针对不同的文件或者目录的不同权限
  • 对于文件/目录的权限包括
权限 缩写 数字代码
r 4
w 2
执行 x 1

  • 为了方便用户管理,提出了组的概念
  • 在实际应用中,可以预先对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每个用户设置权限

(1)ls -l扩展:查看目录详细信息

image-20220228234103349

  • 权限:第一个字符如果是d表示目录
  • 硬链接数:有多少种方式可以访问到当前目录/文件
  • 拥有者:家目录下 文件/目录 的拥有者通常是当前用户
  • 组,在linux中,很多时候会出现组名和用户名相同的情况
  • 大小
  • 时间
  • 名称

image-20220228234252594

(2)chmod 修改用户/组 对文件/目录的权限

chmod +/- rwx 文件名|目录名

image-20220301101533435

对于目录的修改

image-20220301101950104

(3)root超级用户

  • Linux系统的root账号通常用于系统的维护和管理,对于操作系统的所有资源具有访问权限
  • 大多数linux中,都不推荐直接使用root账号登录系统

sudo

  • su是substitute user的缩写,表示使用另外一个用户的身份
  • sudo命令用来以其他身份来执行命令,预设为root
  • 用户使用sudo时,需要输入密码

3.4 组管理sudo-based

创建组/删除组都需要用sudo执行

命令 作用
groupadd 组名 添加组
groupdet 组名 删除组
cat /etc/group 确认组的信息
chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

image-20220301102912353

image-20220301105532889

3.5 用户管理sudo-based

创建用户/删除用户/修改其他用户密码需要通过sudo

(1) 创建用户/设置密码/删除用户useradd, passwd, userdel

命令 作用 说明
useradd -m -g 组 新建用户名 添加用户名 -m自动建立用户家目录
-g:指定用户所在的组,否则会建立一个和同名的组
passwd 用户名 设置用户名 如果是普通用户,直接用passwd
userdel -r 用户名

创建用户

image-20220301110228926

  • 用户信息保存在/etc/passwd文件中

(2)查看用户信息id, who, whoami

命令 说明
id [用户名] 查看用户UID和GID信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

id: 用户代号和组代号

image-20220301111148268

passwd文件

/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是:

  • 用户名
  • 密码(x,表示加密的密码)
  • UID:用户识别
  • GID:组识别
  • 用户全面或本地账号
  • 家目录

who/whoami

image-20220301111652955

(3)usermod:设置用户的主组/附加组和登录shell: sudo-based

  • 主组:通常在新建用户时指定,在etc/passwd的第四列GID对应的组
  • 附加组:在etc/group中的最后一列表示该组的用户列表,用于指定用户的附加权限
# 修改用户的主组
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登录shell
usermod -s /bin/bash 用户名

# 添加用户到sudo
usermod -G sudo 用户名

设置用户的主/附加组

image-20220301112622257

  • 添加到sudo后,需要退出并重新登录

设置登录shell

  • 登录使用的是shell,就是登录后,使用的终端命令,ubuntu默认的是dash,需要改成shell的bash,更好

(4) which:查看命令所在位置

  • /etc/passwd:是用于保存用户信息的文件,只是文本文件无法执行
  • /usr/bin/passwd:是用于修改用户密码的程序,可执行

which可以查看执行命令所在位置

which ls

bin和sbin

  • 在linux中,绝大多数可执行文件都是在保存在/bin,/sbin,/usr/bin,/usr/sbin
    • /bn: 二进制执行文件目录,主要用于具体应用
    • /sbin:是系统管理员专用的二进制代码存放目录,主要用于系统管理
    • /usr/bin:后期安装的一些软件
    • /usr/sbin:超级用户的一些管理程序

(5)su 切换用户

命令 作用
su -用户名 切换用户,并且切换到目标用户得家目录
exit 退出当前登录账号

image-20220301114110114

(6)修改文件权限chown, chgrp, chmod

命令 作用
chown 修改拥有者
chgrp 修改组
chmod 修改权限

image-20220301115043518

# 修改文件|目录的拥有者
chown 用户名 文件名|目录名

# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名

# 递归修改文件权限
chmod -R 755 文件名|目录名

chmod的数字表示

chmod设置权限时,可以简单的使用三个数字分别对应拥有者/组合其他用户的权限

# 直接修改文件|目录的 读写执行权限,但是不能精确到 拥有者|组|其他
chmod +/1 rwx 文件名|目录名

image-20220301115701964

image-20220301115914995

3.6. 系统信息

  • 本节主要为方便远程终端维护服务器,查看服务器上当前的系统日期和时间/磁盘情况等情况

(1) 时间和日期

命令 作用
date 系统时间
cal 查看日历,-y可以查看一年的日历

(2)磁盘信息

命令 作用
df -h disk free 显示磁盘剩余空间
du -h [目录名] disk usage显示目录下的文件大小
  • -h用人性化的显示文件大小

image-20220301120518390

(3) 进程信息

  • 所谓进程,就是当前正在进行的程序
命令 作用
ps aux process status 查看进程的详细情况
top 动态显示运行中的进程并排序
kill [-9] 进程代号 终止指定代号的进程,-9表示强制终止

ps: 全部显示

  • ps默认只会显示当前用户通过终端启动的应用程序
  • ps的选项
选项 含义
a 显示终端上所有的进程,包含其他用户的进程
u 显示进程的详细状态
x 显示没有控制中终端的进程
  • 使用kill命令时,最好只终止当前用户开启的进程,而不要终止root身份开启的进程,不然系统会崩溃

top: 动态显示并排序

  • 退出top按q

3.7 其他命令

(1)查找文件find

命令 作用
find [路径] -name "*.py" 查找指定路径下扩展名为.py的文件,包括子目录
  • 如果省略路径,就会在当前文件夹下查找
  • 之前学习的通配符,可以在这里使用

(2)软链接: 类似快捷方式

命令 作用
ln -s 被链接的源文件 链接问价 建立文件的软链接,类似快捷方式
  • 没有-s选项建立的是一个硬链接
    • 两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
  • 源文件要使用绝对路径,不能使用相对路径,可以方便移动链接文件后,仍然能正常使用

image-20220301123947063

软链接和硬链接区分

image-20220301124238946

  • Linux中,文件名和文件的数据是否分开存储的

(3)打包和压缩

打包/解包 tar

  • tar是linu常用的备份工具,此命令将一系列文件打包成一个大的文件中,也可以将一个大的文件包恢复成一系列文件
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径

# 解包文件
tar -xvf 打包文件.tar

打包操作

image-20220301125132471

解包操作

image-20220301125217553

压缩/解压缩 gzip

  • tar和gzip命令结合可以实现文件打包压缩
    • tar负责打包,不压缩
    • gzip压缩tar打包后的文件为xxx.tar.gz
  • tar命令中有一个选项-z可以调用gzip,从而实现压缩和解压缩的功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径

# 解压缩文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径

(4)软件安装 apt

通过apt安装/卸载软件

  • apt是Advanced packaging tool,是linux下得一款安装包管理工具
  • 可以再终端中方便的安装/卸载/更新软件包
# 安装软件
sudo apt install 软件包

# 卸载软件
sudo apt remove 软件名

# 更新软件
sudo apt upgrade

配置软件源

  • 如果希望linu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器来提供软件下载/安装服务
  • 镜像源:就是所有服务器的内容都是相同的,但是根据所在位置不同,国内服务器通常速度更快一些

image-20220301130050380

4. Vim编辑器

  • 在无图形界面的环境下,进行编辑

  • 让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作

  • VI的特点:

    • 没有图形界面的编辑器
    • 只能编辑文本内容,不能对子图,段落进行排版
    • 不支持鼠标哦擦做
    • 没有菜单
    • 只有命令

4.1. 打开文件

(1)打开

vi 文件名
  • 如果文件存在,直接打开
  • 如果文件不存在,新建并打开

(2)打开文件并定位行

vi 文件名+行数
  • 如果只带上+号,没有行数,就会定位到末尾

(3)异常处理

  • 如果vi异常退出,在磁盘上可能保存有交换文件
  • 下次再使用vi的时候,会看到如下信息,按下字母d可以删除交换文件即可

image-20220301144121092

4.2. 工作模式

vi有三种工作模式:

  • 命令模式
    • 打开文件首先进入命令模型,是使用vi的入口
    • 通过命令对文件进行常规编辑操作,例如:定位、翻页、复制粘贴、删除......
    • 在其他图形编辑器下,通过快捷键或者鼠标实现的操作,都能在命令模式下实现
  • 末行模式: 执行保存、退出等操作
    • 要退出vi,需要在末行模式下输入命令
    • 末行模式是vi的出口
  • 编辑模式: 正常的编辑文字

image-20220301144441730

末行模式命令

命令 功能
w 保存
q 退出,如果没保存,不允许退出
q! 强行退出,不保存退出
wq 保存并退出
x 保存并退出

4.3. vi常用命令

命令线路图

  1. 重复次数
    1. 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数
  2. 移动和选择
    1. vi之所以快,关键在于能够快速定位到要编辑的行
    2. 移动命令能够和编辑操作命令结合使用
  3. 编辑操作
    1. 删除、复制、粘贴、替换、缩π
  4. 撤销和重复
  5. 查找替换
  6. 编辑

4.3. 移动选中命令

(1)上、下、左、右

命令 功能
h 向左
j 向下
k 向上
l 香油

image-20220301145256811

(2)行内移动

命令 功能
w 向后移动一个单词
b 向前移动一个单词
数字0 行首
^ 行首,第一个不是空白字符的未知
` 命令
----- ------------------------------
w 向后移动一个单词
b 向前移动一个单词
数字0 行首
^ 行首,第一个不是空白字符的未知
行尾

(3)行数移动

命令 功能
gg 文件顶部
G 文件底部
数字gg 移动到数字对应行数
数字G 移动到数字对应行数
:数字 移动到数字对应行数

(4)屏幕移动

命令 功能
Ctrl + b 向上翻页
Ctrl + f 向下翻页
H 屏幕顶部
M 屏幕中间
L 屏幕底部

(5)移动命令

段落移动

  • 在vi中使用空行来区分段落
  • 在程序开发时,通常一段功能相关的代码会写在一起--之间没有空行
命令 功能
{ 上一段
} 下一段

括号切换

  • 在程序世界中,{},(),[]使用特别频繁
命令 功能
% 括号匹配以及切换

标记

  • 在开发时,某一块代码可能需要稍后处理
  • 此时先使用m增加一个标记,这样可以在需要时快速的跳转回来或者执行其他编辑操作
  • 标记名称可以是a-z或者A-Z的任意一个字母
  • 添加了标记的行如果被删除,标记也会被删除
  • 如果在其他行添加了相同名称的标记,之前添加的标记会被替换
命令 功能
mx 添加标记x,x是a-z或者A-Z的任意一个字母
'x 直接定位到标记x所在位置

(6)选中文本

  • 学习复制命令前,应该先学会如何选中代码
  • 在vi中要选择文本,需要现在visual命令切换到可视模式
  • vi提供三种可视模式,可以方便程序员选择选中文本的方式
  • ESC可以放弃选中,返回到命令模式
命令 模式 功能
v 可视模式 从光标位置开始按照正常模式选中文本
V 可视行模式 选中光标经过的完整行
Ctrl + v 可视块模式 垂直方向选中文本

4.4. 撤销删除命令

(1)撤销命令 u

命令 说明
u 撤销上次命令
Ctrl + r 回复撤销的命令

(2)删除命令x,d

命令 说明
[数字]x 删除光标所在字符,或者选中文字
d 删除移动命令对应的内容
[数字]dd 删除光标所在行,可以ndd复制多行
D 删除至行尾
  • 如果使用可视模型中已经选中了一段文本,那么无论使用d还是x,都可以删除
  • 删除命令和移动命令可以结合使用:
dw  # 从光标位置删除到单词末尾
d0  # 从光标位置删除一行的起始位置
d}  # 从光标位置删除到段落结尾
ndd # 从光标位置连续向下删除n行
d代码行G # 从光标所在行,删除到指定代码行,之间的代码
d'a     # 从光标所在行,删除到标记a,之间的代码

4.5. 复制、粘贴:y / yy / p

命令 说明
y(移动命令) 复制
yy 复制,nyy可以复制多行
p 粘贴

提示:

  • 命令d,x类似剪切操作
  • 命令y类似复制操作
  • 命令p类似粘贴操作

4.6. 替换命令

命令 说明
r 替换当前字母
R 替换当前行光标后的字符
  • R命令可以进入替换模式,替换完成后,按下ESC就可以回到命令行模型

4.7. 缩排和重复命令

  • 一次性在选中代码前增加4个空格:增加缩进
  • 一次性在选中代码前删除4个代码:减少缩进
命令 功能
>> 向右增加缩进
<< 向左增加缩进
. 重复上次命令

4.7. 查找和替换命令

(1)查找

命令 功能
/str 查找str
  • 查找到指定内容后,使用Next查找下一个出现的位置:
    • n:查找下一个
    • N: 查找上一个

单词快速匹配

命令 功能
* 向后查找当前光标所在单词
# 向前查找当前光标所在单词

(2)查找并替换

  • vi中查找和替换命令需要在末行模式下执行
:%s///g

全局替换

  • 一次性替换文件中的所有出现的旧文本
:%s/旧文本/新文本/g

替换可视区域范围

  • 先选中要替换文字的范围
  • 命令格式如下
:s/旧文本/新文本/g

image-20220301165920817

确认替换

  • 如果把末尾的g改成gc,替换的时候就会有提示
:%s/旧文本/新文本/gc
  1. y-yes替换
  2. n-no不替换
  3. a-all替换所有
  4. q-quit退出替换
  5. l-last最后一个
  6. ^E向下滚屏
  7. ^r向上滚屏

4.8 进入编辑模式的6个命令

命令 功能
i 在当前字符前插入文本
I 在行首插入文本
a 在当前字符后添加文本
A 在行末添加文本
o 在当前行后面插入一空行
O 在当前行前面插入一空行

image-20220301170722323

image-20220301171045790

posted @ 2022-03-01 17:20  Bricker666  阅读(117)  评论(0编辑  收藏  举报