跳至主要內容

Linux

Yang大约 29 分钟

相关概念

操作系统

是应用程序运行的基础支撑环境

  • 作用:管理和控制计算机系统的硬件与软件资源

TTY

计算机的终端(terminal)设备

文件

Linux 中一切都是文件

目录

  • 文档:目录open in new window

  • 有且只有一个根目录,就是 /

  • / 表示目录层级关系,例如:/usr/bin

  • 一般在 Linux 下命名目录时尽量不要使用空格或其他特殊符号,尽量使用小写字母,会省去很多不必要的麻烦

直属子目录

  • bin:常用二进制命令存放目录
    • 包含会被所有用户使用的可执行文件
    • 普通用户root 用户均可使用命令
  • sbin:系统管理命令存放目录
    • 包含系统级的重要可执行程序
    • root 用户可用命令
  • boot:启动目录,Linux 内核与系统引导程序目录
  • dev:设备文件存放目录,里面的每个子目录对应一个外设(光盘驱动器文件)
  • etc:系统配置文件存放目录
  • root:超级用户 root 的家目录
  • home:普通用户家目录,用户私人目录
    • 每个用户都在 home 目录下有一个私人目录,除 root,root 用户拥有所有权限,和普通用户不在一起
  • lib:函数库存放目录,启动系统与运行命令所需的共享库文件与内核模块目录
    • 包含被程序所调用的库文件,例如 .so 结尾的文件
    • windows 中这样的库文件是以 .dll 结尾的
  • media:媒体设备挂载目录
    • 当可移动的外设(USB 盘、SD 卡、DVD、光盘等等)插入时,可以通过 media 子目录来访问这些外设中的内容
  • mnt:系统挂载目录
    • 类似 media 目录,但一般用于临时挂载一些装置
  • opt:第三方软件存放目录
    • 表示可选的应用软件包,用于安装多数第三方软件和插件
  • srv:服务存放数据目录
    • 包含一些网络服务启动之后所需要取用的数据
  • tmp:临时目录,普通用户和程序存放临时文件的地方
  • usr:存放用户应用程序的目录
    • /usr/local:编译方式安装程序的默认目录
    • /usr/src:程序源码目录
  • var:系统相关文档内容目录
    • 通常包含程序的数据,比如 log(日志)文件
  • proc:系统运行时,进程信息与内核信息存放
  • lib64
  • run
  • sys

路径格式

  • 绝对路径
    • 从根目录 / 开始写起
  • 相对路径
    • 当前目录 .
    • 上级目录 ..
    • 家目录 ~

命令提示符

[sunzhenyang@localhost ~]$
  • sunzhenyang:当前用户的名字(Linux 是多用户才做系统)

    • 修改位置:setting -> Details -> User
  • @:前面是用户名,后面是所在的域,例如:874530670@qq.com

  • localhost:电脑/主机的名字,也就是主机名(hostname)

    • 修改位置:setting -> Details -> About
  • ~:当前所在目录的名字,会随着用户进入不同目录而改变

    • 表示当前用户的家目录(home directory)
  • $:指示所具有的权限,表示普通用户,有权限的限制

  • #:表示超级用户,也就是 root,拥有所有权限

命令参数

  • 参数是写在命令之后的一些补充选项,命令和参数之间有空格隔开
  • 格式:command parameters
  • 参数没有固定格式,可以包含数字、字母等等,但一般遵循一定的规范
  • 短参数
    • 最常用的参数形式是一个短横线后接一个字母:command -p
    • 一次可以加多个短参数,用空格隔开:command -p -a -T -c
    • 多个短参数可以合并:command -paTc
    • 短参数字母是区分大小写的,表示不同含义
  • 长参数
    • 以两个短横线开始
    • 格式:command --parameters
    • 多个长参数不能合并,只能以空格隔开
      • command --paramters1 --paramters2
  • 可以组合使用短参数和长参数
  • 同一个意义的参数有短参数和长参数两种形式
    • 例如:ls -als --all
  • 参数的值
    • 有一些参数需要赋值,短参数和长参数赋值方式不同
    • 短参数赋值:command -p 10
    • 长参数赋值:command --paramters=10

配置文件

  • Linux 或 unix 的许多程序启动时,都需要 rc 后缀的初始文件或配置文件

  • Linux 中配置文件大多以 点(.)开头表示隐藏,而且大多以 rc 结尾

  • 一般配置在用户家目录下

快捷键

  • Ctrl + Alt + F1:回到图形界面

  • Ctrl + Alt + F2:terminal 1(:0 大致等于 tty1)

  • Ctrl + Alt + F3:terminal 2(tty2)

  • Ctrl + Alt + F4:terminal 3(tty3)

  • Ctrl + Alt + F5:terminal 4(tty4)

  • Ctrl + Alt + F6:terminal 5(tty5)

  • Ctrl + C:可以终止大部分终端的命令和正在执行的程序,有点类似 windows 中的 Alt + F4

  • Ctrl + L:清空命令行(同 clear 命令)

  • Ctrl + D:给终端传递 EOF ( End Of File, 文件结束符 )

  • Shift + PgUp:用于向上滚屏,与鼠标滚轮向上滚屏一个效果

  • Shift + PgDown:用于向下滚屏,与鼠标滚轮向下滚屏一个效果

  • Ctrl + A:光标跳到一行命令的开头,同键盘上的 Home 键

  • Ctrl + E:光标跳到一行命令的结尾,同键盘上的 End 键

  • Ctrl + U:删除光标左侧命令字符

  • Ctrl + K:删除光标右侧命令字符

  • Ctrl + W:删除光标左侧单词(单词指用空格隔开的一个字符串,例如:-a)

  • Ctrl + Y:粘贴 Ctrl + UCtrl + KCtrl + W 删除的字符串

命令

Tab 键补全命令

按两次 Tab 键补全文件名、路径名(结果过多时:空格键跳转到下一页,回车键跳转到下一行,Q 键退出列表)

方向键上下用于显示上一条或下一条命令

Ctrl + R:查找使用过的命令

history:列出之前使用过的所有命令,可以用 !编号的格式重新运行 history 输出中对应的命令

系统相关

  • uname:查看当前系统
  • uname -a:查看当前系统的详细描述
  • hostname:获取当前主机名
  • 命令 --help:查看某个命令的帮助信息
  • ip addr:查看 ip 地址
    • 可以简写为 ip -a
  • data:显示当前时间 3
    • CST:Central Standard Time 的缩写,表示中央标准时间(时区)
  • clear:清屏
  • shutdown [选项][时间 hh:mm / mm] [消息]并有如下选项:
    • k 不执行任何关机操作,只发出警告信息给所有用户
    • r 重新启动计算机(或 reboot
    • h 关机并彻底断电
    • f 快速关机且重启动时跳过 fsck
    • n 快速关机不经过 init 程序
    • c 取消之前的定时关机

系统管理

  • ifconfig:获取 IP 地址

  • netstat -tulpnnetstat -ano:查看网络端口号

    • 命令参数
      • t:显示 TCP 传输协议连接状况
      • u:显示 UDP 传输协议连接状况
      • l:显示处于监听状态的网络连接
      • p:显示应用的 PID 和 程序名称
      • n:显示 IP 地址
      • a:显示所有连接
      • o:显示计时器
    • 结果参数
      • Proto:网络协议
      • Recv-Q:接收队列,等待处理的数据包的数量
      • Send-Q:发送队列,等待处理的数据包的数量
      • Local Address:本地地址
      • Foreign Address:远程地址
      • State:网络连接状态
        • ·LISTEN:表示此连接正在被监听
      • PID/Program name:应用进程编号/应用名称
  • ps -ef:查看进程

    • ps -ef | grep vim
  • kill -9 PID:杀掉 PID 进程

  • kill -s QUIT PID:采用正常方式关闭进程

用户管理

  • sudo su:切换为 root 用户
  • visudo:对某些用户进行授权
  • visudo -c:对文件进行格式化检查
  • Ctrl + Dexit:退出 root 用户
  • who:查看当前已登录的用户信息
  • whoami:获取当前用户名字
  • useradd [-g 群组] 用户名:创建用户并分配群组
  • passwd 用户名:设置密码
  • userdel [-r] 用户名:删除用户

文件管理

查看

  • echo
    • echo "文本":在终端输出指定字符,字符用双引号包裹
    • echo "hello" > hello.txt> 表示将左侧位置产生的结果重写至右侧文件
    • echo "hello" >> hello.txt>> 表示将左侧位置产生的结果追加至右侧文件
  • cat 文件路径 文件路径:一次性在终端显示文件的所有内容
    • 可以连接多个文件,会把多个文件内容合并显示
    • -n:显示行号
    • -E:显示空行
    • cat a.txt b.txt >> c.txt:将多个文件内容合并输出到一个文件
    • cat > test.txt << EOF:创建输入流并将输入文本重写入到指定文件
      • <<:创建输入留
      • EOF:指定的结束字符(可以是其他文本)
      • > 改为 >> 即可把重写文本操作改为追加文本操作
  • head + 文件路径:显示文件的开头几行
    • -n + 行数:指定显示行数
  • tail + 文件路径:显示文件的结尾几行(默认显示 10 行)
    • -n + 行数:指定显示行数
    • -f:实时追踪文件的更新
      • 默认每隔 1s 检查一下文件是否有新内容
    • -s + 秒数:指定间隔检查的描述
  • grep 要查找的文本 文件路径:将包含文本的文本行进行提取
    • -v:将不包含文本的文本行进行提取
    • 要查找的文本可以是正则表达式
    • |:通道,将前面命令的输出结果作为后面命令的依据
      • ll | grep bin
    • -E:使用扩展的正则表达式对结果进行筛选
    • ll | grep bin[0-9]{1,5}.txt
  • less + 文件路径:分页显示文件内容
    • 命令中快捷键
      • d 键:前进半页(半个屏幕)
      • u 键:后退半页(半个屏幕)
      • 空格 键:文件内容读取下一个终端屏幕的行数,相当于前进一个屏幕页,与键盘上的 PageDown(下一页) 效果相同
      • b 键:后退一页,与键盘上的 PageUp(上一页) 效果相同
      • 回车 键:文件内容读取下一行,与向下键效果相同
      • y 键:后退一行,与向上键效果相同
      • q 键:终止 less 命令或退出帮助文档
      • h 键:显示帮助文档
      • = 键:显示在文件中的位置
        • 当前页面的内容是文件的第几行到第几行
        • 整个文件的行数
        • 当前页面的字符数
        • 整个页面的字符数
        • 当前页面占整个文件的百分比
      • / (斜杠):进入搜索模式
        • 在斜杠后输入要搜索的文字按下回车键,就回把所有符合的结果都表示出来
        • 要在搜索的结果中跳转
          • n 键(跳到下一个符合项目)
          • N 键(shift + n跳到上一个符合项目)
        • 正则表达式也可以用在搜索内容中

操作

  • touch + 文件路径:当文件不存在时,创建一个空白文件,可同时创建多个文件
  • cp:拷贝文件
    • -r/-R:拷贝目录
    • *:通配符
  • mv:移动或重命名文件或目录
  • rm:删除目录或文件
    • -i:向用户确认是否删除
    • -f:不询问用户是否确定删除文件
    • -r:递归删除,用于删除目录

查找

  • locate + filename|function|reg:搜索包含关键字的所有文件或目录

    • 不会对实际的整个硬盘进行查找,而是在文件的数据库里进行查找
    • 对于刚创建不久的文件,还没有被收录进文件数据库,所以找不到其索引,不会返回任何结果
    • 一般每天会更新一次数据库,隔 24 小时再用 locate 查找就可以找到了
  • updatedb:强制系统立即更新文件数据库,此命令只能由 root 用户执行

  • find:查找文件

    • 可以让我们对每个找到的文件做后续的操作
    • 不会在文件数据库中查找文件的记录,而是遍历实际硬盘
    • find [何处] 何物 [做什么]
      • 何处:指定在哪个目录中查找,此目录的所有子目录也会被查找
        • 如果没有提供此参数,会在当前目录及其子目录进行查找
      • 何物:(必须)可以根据 文件名字、大小、最近访问时间 等等来查找
      • 做什么:找到文件后最为每个文件做一定的操作,称为“后续处理”
        • 默认地,假如不指定这个参数,该命令只会显示找到的文件
      • -name:按名称查找
      • -type:按类型查找
        • d:目录
        • f:文件
      • -printf:格式化打印查找结果
        • %p:文件名
        • %u:文件所有者
      • -delete:删除查找到的文件
      • -exec:可以后接一个命令,对每个查找到的文件进行操作
        • 不必用双引号括起来
        • {}:会用查找到的每个文件来替代
        • \:是必须的结尾
      • -ok:和-exec 类似,但每次操作查找到的文件前都有一次确认提示
    • find 只会查找完全符合 何物 字符串表示的文件,locate 会查找所有包含关键字的文件
      • 例如查找 thing,find 只会找到 thing, 为不会找到 thing1
      • 可以使用通配符(*)解决此问题
# 根据文件名查找
find -name "new_file"

# 根据文件大小查找
find /var -size +10M
find /var -size -50k
find /var -size +20G

# 按文件类型查找
find . -name "new_file" -type d

# 按最近访问时间查找(7天内)
find -name "*.txt" -atime -7

# 在特定的目录下按文件名查找
find /var/log -name "syslog"

# 格式化打印查找结果
find -name "*.txt" -printf "%p - %u\n"

# 删除当前目录及其子目录下所有以 .jpg 为后缀的文件
find -name "*.jpg" -delete

# 对每个找到的文件修改权限
find one -name "*.txt" -exec chmod 600 {} \

目录管理

查看

  • ls [-al] [文件名或目录名]:列出当前目录下的目录和文件
    • -a:列出所有文件,包含隐藏文件
    • -A:与 -a 类似,但不包含 ...
    • -l:使得 ls 命令列出一个显示文件和目类似-录的详细信息的列表(文件以字节为单位)
    • -h:表示适合人类阅读的
    • -t:按文件最近一次修改时键排序
    • -i:显示文件的 inode
  • ll:列出当前目录下的目录和文件信息
    • |:通道,将前面命令的输出结果作为后面命令的依据
      • ll | grep bin
  • cd [目录名称]:切换目录
    • 不加路径参数时会直接回到家目录(~)
    • cd ..:返回上一级目录
    • cd ../..:返回上上级目录
  • pwd:显示当前目录路径
  • du:表示磁盘使用/占用(只显示目录)
    • -a:显示目录和文件的大小
    • -h:表示适合人类阅读的
    • -s:只显示总计大小
  • which:获取命令的可执行文件的位置
    • which node
  • whereis 文件或目录:查找特定目录
  • find 目录 [-name/user/size] 参数:查找

操作

  • mkdir [-p] 目录名称:创建目录

    • -p:递归创建目录结构,例如:mkdir -p one/two/three
    • -v:用于显示执行过程
  • rmdir [-p] 目录名称:删除目录,只能用于删除空目录

  • cp:拷贝文件

    • -r/-R:拷贝目录
    • *:通配符
  • mv:移动或重命名文件或目录

  • rm:删除目录或文件

    • -i:向用户确认是否删除
    • -f:不询问用户是否确定删除文件
    • -r:递归删除,用于删除目录
  • ln:创建链接(类似于 windows 中的快捷方式)

    • physical link:物理连接或硬链接
    • Symbolic link:符号链接或软链接

压缩和解压缩

压缩文件类型

  • *.gz:gzip 压缩格式的文件
  • *.bz2:bzip2 压缩格式的文件
  • *.xz:xz 压缩格式的文件
  • *.tar:tar 打包的文件
  • *.zip:zip 压缩格式的文件
  • *.tar.gz:打包并使用 gzip 压缩的文件
  • *.tar.bz2:打包并使用 bzip2 压缩的文件
  • *.tar.xz:打包并使用 xz 压缩的文件

压缩、解压缩命令

gzip

gzip 是 linux 系统中的文件压缩程序,默认扩展名为 .gz

tar

tar 是 linux 系统将多个文件打包和压缩的工具,本质是打包软件,扩展名为 .tar

可以结合 gzip 或其他压缩工具实现打包压缩,扩展名为 .tar.gz

  • tar [-ctxzjJvf] 压缩文件 [源文件]:打包、压缩文件
    • z:只用 gzip 方式
    • c:打包压缩
    • x:解打包解压缩
    • v:显示过程
    • f:指定压缩包名
    • t:查看内容
    • j:使用 bzip2 方式
    • J:使用 xz 方式
    • -C + 目录:解压缩到某个目录
# 压缩命令
tar zcvf tomcat.tar.gz /usr/local/tomcat

# 解压缩命令
tar zxvf tomcat.tar.gz -C /use/local/tomcat

软件的安装与卸载

安装方式

  • 编译安装:用户自己从网站下载程序源码进行编译安装

    • 下载源码包(curl、wget
    • 解压(tar
    • 进入到该目录(cd
    • 编译前配置(./configure
    • 编译(make
      • 错误时,可能需要先安装 gcc
        • gcc:C 语言源代码的编译工具包
        • yum install -y gcc
      • 错误时,可能需要先删除文件夹并重新解压安装文件源码包
    • 编译安装(make install
    • 注意
      • 编译安装时软件包依赖解决
      • 删除 make clear 然后直接删除目录
  • rpm:Red Hat 软件包管理器,相当于应用程序安装文件的执行者

    • rpm -ivh 软件包
      • i:安装
      • v:显示详细信息
      • h:显示进度
    • rpm -q 安装包:查询是否安装
    • rpm -qi 安装包:查询包信息
    • rpm -ql 安装包:查询安装位置
    • rpm -e 安装包:卸载
  • yum:软件仓库安装

    • yum search 包名称:在仓库中查询是否存在指定 应用

    • yum list 包名称:查询可以安装的软件包

    • yum list installed 包名称:查询已安装的软件包

      • yum list installed *tree*:模糊匹配筛选已安装的软件包
    • yum info 包名称:查看应用详细信息

    • yum install [-y] 包名称:全自动下载安装应用及其依赖

      • -y:自动回答 yes
    • yum update [-y] 包名称:更新

    • yum remove [-y] 包名称:卸载

总结

  • 编译安装,兼容性强,同一平台都可以安装
  • rpm 安装管理方便
    • 需要用户自己解决依赖问题
  • yum 省时省力
    • 引入软件仓库,联网下载 rpm 包及依赖,并依次自动安装
    • 是 rpm 的前端程序,其目的是简化 rpm 的安装过程

文件存储

  • 每个文件分为三部分:文件名、文件内容、权限
  • 每个文件的文件内容都被分配到一个标识号码,就是 inode
  • 每个文件名都绑定到它的文件内容(用 inode 标识)

硬链接

使链接的两个文件共享同样的文件内容,就是同样的 inode

  • 一旦文件 1 和文件 2 之间有了硬链接,那么修改文件 1 或文件 2,修改的是相同的一块内容

  • 缺陷:只能创建指向文件的硬链接,不能创建指向目录的

  • ln file1 file2:创建 file2 并指向 file1 的文件内容

  • 对硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除,同时删除硬链接的所有文件,共同指向的文件内容才会消失,也就是 inode 才会被删除

软链接

类似于 windows 下的快捷方式,原理很相似

  • ln -s file1 file2:创建 file1 的软链接 file2
  • 如果删除了 file2,file1 不会有任何影响,如果删除 file1,file2 会变成死链接,因为指向的文件不见了
  • 软链接可以指向目录

用户和权限

  • sudo:以 root 身份运行命令

用户组织

  • root 用户是默认创建的,超级用户
  • 进入 root 的几种方式
    • sudo su:会输入当前用户密码,进入后使用 pwd 命令查看依然为普通用户目录
    • su:会输入 root 密码,进入后使用 pwd 命令查看依然为普通用户目录
    • su -:会输入 root 密码,进入后使用 pwd 命令查看为 root 家目录

root 可用命令

  • useradd:添加用户 useradd user1

  • passwd 用户名 :修改用户密码 passwd user1

  • userdel:删除已创建的用户 userdel user1

    • 不加参数只会删除用户,不会删除用户的家目录
    • -r/--remove:连用户家目录一并删除
  • usermod:修改用户账户

    • -l:对用户重命名,/home 中的家目录名不变,需要手动修改
    • -g:修改用户所在群组,此用户家目录内所有文件所在的用户群组会相应改变(会将用户从之前的群组中删除)
      • usermod -g friends user1
    • -G:将用户添加到多个群组,中间用逗号隔开(会将用户从之前的群组中删除) usermod -G friend1,firend2 user1
    • -aG:追加,改变群组时保留之前的群组,追加群组一定要用 -G

权限管理命令

说明

所有者所属组其他用户
文件/目录rwxrwxrwx
符号(数值)权限对文件的含义对目录的含义
r(4)读权限查看文件查看目录
w(2)写权限修改文件修改目录内容
x(1)执行权限执行文件进入目录
权限数字计算
---00 + 0 + 0
r--44 + 0 + 0
-w-20 + 2 + 0
--x10 + 0 + 1
rw-64 + 2 + 0
r-x54 + 0 + 1
-wx30 + 2 + 1
rwx74 + 2 + 1
  • 第一个字符
    • -:表示文件
    • d:表示目录
    • l:表示连接(windows 中的快捷方式)
  • 后面九个字符表示三组读写执行权限:所有者、所属组、其他用户
  • 最后的小点表示 SELinux 的安全标签
  • root root:对应所有者和所属组

修改权限

  • chmod:修改访问权限,不需要是 root 用户才能运行,只要是文件的所有者就可以使用此命令来修改文件访问权限
    • chown [-R] 用户名 文件或目录:修改所有者
    • chown [-R] 用户名:组名 文件或目录:修改所有者和组
    • chgrp [-R] 组名 文件或目录:修改所属组
    • chmod [-R] xyz 文件夹或目录:权限修改
    • -R:递归设置子目录和子文件
    • 第一种修改法
      • x:所有者权限数值之和
      • y :所属组权限数值之和
      • z:其他用户权限数值之和
    • 第二种修改方法
      • x:角色,** u g o a ** 分别表示所有者、所属组、其他用户、所有角色
      • y :设置,** + - = ** 分别表示增加、减少、设置
      • z :权限, ** r w x **:分别表示读权限、写权限、执行权限
// 用数字分配权限,具体含义参考上面表格
chmod 777 file.txt
// 用字母分配权限
chmod u+rx file.txt
chmod g+r file.txt
chmod o-r file.txt
chmod g+r o-r file.txt
chmod go-r file.txt
chmod +x file.txt
chmod u=rwx,g=r,o=- file.txt
chmod -R 700 /home/sunzhenyang

群组管理

  • Linux 中每一个用户都属于一个特定的群组
  • 如果不设置用户的群组,默认会创建一个和它用户名一样的群组
  • 只有 root 用户可以修改一个文件的所有者和群组

群组命令

  • groups:显示当前用户所在群组,后加用户名会显示输入用户名所在群组

  • groupadd:创建群组

    • groupadd friends
  • groupdel:删除群组

    • groupdel friends
  • chown:改变文件所有者 chown friends file.txt

    • chown sunzhenyang:firends file.txt
    • -R:递归设置子目录和子文件
  • chgrp:改变文件的群组 chgrp friends file.txt

    • -R:递归设置子目录和子文件
  • newgrp 用户组:将当前组切换到新的用户组

文本编辑器

Vim

Vi 的增强版,用于在远程环境下用命令的形式对文本进行在线编辑

  • vi 文件名:用 vi 编辑器打开文件
  • vimtutor:查看 vim 教程
  • 模式
    • 命令模式(默认)
      • k j h l:上 下 左 右
      • dd:剪切当前行
      • yy:复制当前行
      • p:在下一行粘贴
      • P(shift + p):在上一行粘贴
      • w:保存
      • deletex:删除单个字符
      • /str:全文查找 str 字符串
        • n:下一个
        • N:上一个
      • :% s/old/new/g:替换文件内所有 old 字符为 new
      • u:撤销最近一次操作
      • 转换到编辑模式
        • a:在光标之后插入
        • A(shift + a):在当前行之后插入(行末)
        • i:在光标之前插入
        • I (shift + i):在当前行之前插入(行首)
        • o:在光标之下插入
        • O(shift + o):在上当前行之上插入
    • 编辑模式
    • 最后行模式
      • : 或 /:进入最后行模式
      • w:保存
      • wq:保存并退出
      • wq!:(强制只读文件)保存并退出
      • q: 不保存退出
      • q!: 文档已被修改时,强制不保存退出
      • set nu:显示行号

Nano

配置文件

.nanorc
  • 一般配置在每个用户的家目录中新建 .nanorc 文件

  • 全局配置:/etc/nanorc

  • 每一行一句配置语句,配置语句以 setunset 开头

    • set:激活
    • unset:关闭
// 激活鼠标
set mouse

// 激活自动缩进
set autoindent

// 激活智能 Home 键
set smarthome

命令

  • nano file.txt:打开文件
    • 如果 file.txt 不存在,就会创建一个名为 file.txt 的空文件
    • -m:激活鼠标
    • -i:激活自动缩进功能
    • -A:激活智能 Home 键功能
      • 通常情况下按下键盘的 Home 键光标会自动跳到一行的开始,但是加了 -A 之后,会根据一行的开始出有无缩进来智能判断
    • nano -miA file.txt:同时激活上述三个属性

快捷键

  • Ctrl + C:显示目前光标所在处的行数与列数等信息

  • Ctrl + R:打开其他文件

  • Ctrl + G:显示帮助文档

  • Ctrl + W:查找

  • Ctrl + \:替换

  • Ctrl + K:剪切当前行

  • Ctrl + U:粘贴

  • Ctrl + Y:上一页(PgUp)

  • Ctrl + V:下一页(PgDn)

  • Ctrl + F:向前移动一格光标(左键)

  • Ctrl + B:向后移动一格光标(右键)

  • Ctrl + P:向上移动一行(上键)

  • Ctrl + N:向下移动一行(下键)

  • Ctrl + O:保存文件

  • Ctrl + X:退出

SSH

是专为远程登录和其他网络服务提供的安全协议

  • 分为两个不兼容版本 1.x 和 2.x,默认通过 SSH2.x 连接
  • 常见工具:Xshell、SecureCRT

应用服务化

指让应用程序以服务方式在系统改后台运行

  • Linux 系统对服务化应用进行统一管理
  • systemctl:服务管理命令
指令用途
start启动服务
stop停止服务
restart重启服务
enable设置开机启动
disable禁止开机启动
status查看服务状态
daemon-reload重载服务配置文件
list-unit-files列出所有服务

操作步骤

  • 进入服务文件夹:cd /usr/lib/systemd/system
  • 新建 redis.service 文件并输入内容:vim redis.service
[Unit]
# 描述
Description=Redis
# 在某些系统服务之后启动
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
# 类型 forking:后台运行
Type=forking
# PID文件路径
PIDFile=/var/run/redis_6379.pid
# 服务启动命令
ExecStart=/usr/local/redis/redis-6.2.5/src/redis-server /usr/local/redis/redis-6.2.5/redis.conf
# 服务停止命令
ExecStop=/bin/kill -s QUIT $MAINPID
# 为每个服务设置私有的临时文件目录
PrivateTmp=true

[Install]
# 将当前服务分配到系统默认服务组,允许服务随系统启动
WantedBy=multi-user.target
# 重载服务配置文件
systemctl daemon-reload

# 启动 Redis 服务
systemctl start redis

# 查看 Redis 服务状态
systemctl status redis

# 关闭 Redis 服务
systemctl stop redis

# 重启 Redis 服务
systemctl restart redis

# 设置 Redis 服务 开机启动
systemctl enable redis

# 关闭 Redis 服务 开机启动
systemctl disable redis

防火墙

借助硬件和软件对内外部网络环境的保护措施

  • CentOS 7 基于 firewall 实现应用层防火墙

    • 核心命令:firewall-cmd
  • CentOS 6 基于 iptables

命令描述
firewall-cmd --state查看防火墙状态
firewall-cmd --list-ports查看防火墙房型的端口
firewall-cmd --zone=public --permanent --add-port=8080/tcp放行 8080 端口
firewall-cmd --zone=public --permanent --remove-port=8080/tcp移除被放行的 8080 端口
firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp放行范围内的端口号
firewall-cmd --reload配置重载
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.163.210" port protocol="tcp" port="3306" accept"对指定 IP 向本机指定端口发送的数据包放行

Shell

是用 C 语言 编写的脚本解释器,是用户通过代码操作 Linux 的桥梁

  • 用于输入终端的各种命令
  • 是一个用户跟操作系统之间的一个命令解释器,也就是用户与 Linux 操作系统之间沟通的桥梁
  • Shell 脚本描述要执行的任务,完成系列复杂的操作,文件通常以 .sh 后缀
  • Shell 脚本通过 Shell 解释器执行,按揭使其分类分为多种类型
    • 目前大部分 Linux 发行版默认的 shell 是 Bash
# deploy_tomcat.sh
echo "准备下载Tomcat9"
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
echo "正在解压缩Tomcat9"
tar zxf apache-tomcat-9.0.34.tar.gz
echo "防火墙开放8080端口"
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
echo "启动Tomcat"
cd ./apache-tomcat-9.0.34/bin
./startup.sh

.bashrc

是 Bash 这个 shell 程序的配置文件(不用登录的图形化终端)

  • 位于家目录下

  • .bashrc 本身的语法也是 Bash 语法,是一种脚本语言

  • 默认在用户下次登录系统时才能生效

  • source .bashrc :使改动立即生效

  • 终端 bash 全局配置文件:/etc/bashrc

.profile

需要登录的,非图形界面的终端的配置文件

  • 位于家目录下

  • profile 文件会调用 .bashrcprofile 文件会用本身的配置加上 .bashrc 的配置

  • 默认在用户下次登录系统时才能生效

  • source .profile:使改动立即生效

  • 全局配置文件:/etc/profile

软件仓库(基于 RedHat)

软件包

  • 一个软件包是软件所有文件的压缩包
  • 二进制形式,包含了安装软件的所有指令
  • 在 Red Hat 一族里,软件包的后缀是 .rpm
  • Debian 一族(Ubuntu、Debian 等)的软件包后缀是 .deb
  • 软件包管理包括了依赖关系的管理
  • 软件包不需要通过搜索引擎来找到并下载
  • 几乎所有 .rpm 软件包存放在相同的地方,成为软件仓库

依赖关系

  • 通常来说,很少有一个软件可以单独在 Linux 上运行而不依赖于其他程序
  • 一个软件经常需要使用其他程序或者其他程序的片段(称之为“库”)
  • 一个软件依赖其他程序,忙着就是依赖关系

管理软件仓库

# 修改为阿里源

# 备份源配置文件(CentOS 7)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载ailiyun的yum源配置文件到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 运行yum makecache生成缓存
yum makecache

包管理工具

  • 终端的软件包管理工具一般用 yum

  • yum 是 CentOS 中的默认包管理工具,也用于 Red Hat 一族

    • yum update:更新软件包(不删除旧包),生产环境最好用此命令,防止因旧软件包依赖而出现问题
    • yum upgrade:更新软件包(删除旧包)
    • yum search + package:搜索软件包
    • yum install + package:安装软件包
    • yum remove + package:删除软件包(yum remove autoremove + 软件包)
  • 本地的 .rpm 软件包,可以用 rpm 命令来安装

    • sudo rpm -i *.rpm:安装
    • sudo rpm -e + 包名:卸载
  • 本地的 .rpm 软件包,可以用 yum 命令来安装

    • sudo yum localinstall *.rpm:安装
    • sudo yum remove + 包名:卸载

最小化安装

  • yum install -y net-tools.x86_64
  • yum install -y wget
  • yum install -y vim-commom
  • yum install -y vim-enhanced
# 下载 MySQL
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 准备安装源
yum localinstall -y mysql80-commumity-release-e17-3.noarch.rpm

#
yum search mysql-comm

#
yum install -y mysql-community-server

# 启动 MySQL
systemctl start mysqld

# 查看 MySQL 默认密码
vi /var/log/mysqld.log

# 进入 MySQL 命令行
mysql -u root -p

# 修改密码
alter user 'root'@'localhost' identified with mysql_native_password by ‘qwQW88173081!# 修改访问
use mysql;
select host,user form user;
update user set host='%' where user='root'
# java环境安装
yum search jdk
yum install -y java-1.8.0-openjdk
java -version

# 安装 Tomcat

阅读手册(RTFM)

  • man:是 manual 的缩写,是英语 “使用手册” 的意思
    • 若不加数字, man 默认从数字最小的手册中寻找相关命令和函数
  • 手册包含
    • 可执行程序或 Shell 命令
    • 系统调用(Linux 内核提供的函数)
    • 库调用(程序库中的函数)
    • 文件(例如:/etc/passwd)
    • 特殊文件(通常在 /dev 下)
    • 游戏
    • 杂项(例如:man(7)、groff(7))
    • 系统管理命令(通常只能被 root 用户使用)
  • 安装手册:sudo yum install -y man-pages (CentOS 中默认安装了)
  • 补全/更新 手册:sudo mandb
  • main + 数字编号 + 命令/函数等 可以查找到相关的命令和函数
  • apropos:查找命令(根据手册的关键字找到命令)
  • -h:帮助,可查看相关命令的文档
    • 大多数命令都接受这个参数,有时 --help 也可以
  • whatis:列出 man 命令显示的手册的开头部分,也就是概述命令

手册显示后快捷键

  • 上键:向上移动一行

  • 下键:向下移动一行

  • PgUp:上一页

  • PgDn:下一页

  • Home:跳转到开头

  • End:跳转到结尾

  • /:搜索,和 less 命令中功能类似

    • 在斜杠后输入要搜索的文字按下回车键,就回把所有符合的结果都表示出来
    • 要在搜索的结果中跳转
      • n 键(跳到下一个符合项目)
      • N 键(shift + n跳到上一个符合项目)
    • 正则表达式也可以用在搜索内容中
  • q:退出手册

手册解析

  • NAME:手册对应命令或函数的名字,后接简单描述
  • SYNOPSIS:使用此命令的所有方法(参数组合)
    • 粗体的文字标识要原封不断的输入
    • 下划线的文字标识要用实际的内容替换(固定参数除外)
    • [OPTION]:选项(命令参数),表示可选的参数,可组合多个
    • ... ...:省略号表示可以有多个此类内容
    • [-hvc]-h-v-c 选项是可选的,非强制性的
    • a|b:可以输入 a 或 输入 b,但不能同时输入 ab
  • DESCRIPTION:命令更深入的描述,包括所有参数及其用法
  • AUTHOR:作者
  • COPYRIGHT:版权
  • SEE ALSO:与此命令有关的命令,扩展阅读
上次编辑于:
贡献者: sunzhenyang