l114514 发表于 2024-11-23 12:00

Linux系统初步使用

对于运行在云主机里的Linux系统。我们通常使用ssh连接登录。
可以使用命令行`ssh + @`登录,或者使用特定的ssh连接客户端。
___________
# 一、Linux系统使用注意

## 1、Linux严格区分大小写

Linux 和Windows不同,Linux严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。
==我们在操作 Linux 系统时要注意区分大小写的不同。==
________
## 2、Linux文件"扩展名"

我们都知道,Windows 是依赖扩展名区分文件类型的,比如,".txt" 是文本文件、".exe" 是执行文件,但Linux 不是。

Linux 系统通过权限位标识来确定文件类型,常见的文件类型有普通文件、目录、链接文件、块设备文件、字符设备文件等几种。Linux 的可执行文件就是普通文件被赋予了可执行权限。

Linux 中的一些特殊文件还是要求写 "扩展名" 的,但 Linux 不依赖扩展名来识别文件类型,写这些扩展名是为了帮助运维人员来区分不同的文件类型。这样的文件扩展名主要有以下几种:

1. 压缩包:Linux 下常见的压缩文件名有 .gz、.bz2、.zip、.tar.gz、.tar.bz2、.tgz 等。
为什么压缩包一定要写扩展名呢?很简单,如果不写清楚扩展名,那么管理员不容易判断压缩包的格式,虽然有命令可以帮助判断,但是直观一点更加方便。就算没写扩展名,在Linux中一样可以解压缩,不影响使用。
2. 二进制软件包:CentOS 中所使用的二进制安装包是 RPM 包,所有的 RPM 包都用".rpm"扩展名结尾,目的同样是让管理员一目了然。Ubuntu系统的软件包一般采用 `.deb` 格式。
3. 程序文件:Shell 脚本一般用 ".sh" 扩展名结尾。
4. 网页文件:网页文件一般使用 ".php" 等结尾,不过这是网页服务器的要求,而不是 Linux 的要求.

---
## 3、Linux中所有内容以文件形式保存

**Linux中,一切皆文件**

普通文件,类似于windows中文件的概念,可以分为一般文件(黑色)和可执行文件(绿色)。

一般文件特点其打开(编辑器打开)后会看到里面有内容,或者可以往其中写内容。

可执行文件在Windows 下一般为exe、msi、bat 等后缀,其特点就是双击之后可以直接运行。

目录文件类似于Windows中的文件夹。用于存储文件和文件夹。(天蓝色的)
![]

---
## 4、Linux中所有存储设备都必须在挂载之后才能使用

挂载其实就是给这些存储设备分配盘符,只不过 Windows 中的盘符用英文字母表示,例如`c:,d:`。

而 Linux 中的盘符则是一个已经建立的空目录。我们把这些空目录叫作挂载点(可以理解为 Windows 的盘符),把设备文件(如 /dev/sdb)和挂载点(已经建立的空目录)连接的过程叫作挂载。

挂载过程是通过挂载命令实现的。

---
## 5、Linux系统的文件目录结构

Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中。

![[目录结构.png]]
在 Linux 根目录(/)下包含很多的子目录,称为一级目录。
例如 bin、boot、dev 等。
同时,各一级目录下还含有很多子目录,称为二级目录。
例如 /bin/bash、/bin/ed 等。

![[文件目录2.png]]
路径:路径分为 绝对路径和相对路径。
绝对路径:不管当前工作路径是在哪,目标路径都会从“/”磁盘根下开始。
**相对路径**:除绝对路径之外的路径称之为相对路径,相对路径得有一个相对物(当前工作路径)。

只要看到路径以“/”开头则表示该路径是绝对路径,除了以“/”开头的路径称之为相对路径。
`../`:表示上级目录(上一级)
`./` :表示当前目录(同级),普通文件`./`可以省略,**可执行文件必须加`./`**
文件夹名称`/`:表示下级目录(下一级)

## 6、Linux系统的文件目录用途
Linux 基金会发布了 FHS (Filesystem Hierarchy Standard 文件系统层次化标准)。规定了主要文件夹的用途。

| 一级目录    | 功能(作用)                                                                                 |
|-------------|----------------------------------------------------------------------------------------------|
| `/bin/`   | 存放系统命令,普通用户和 root 都可以执行。放在 `/bin` 下的命令在单用户模式下也可以执行。|
| `/boot/`    | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等。         |
| `/dev/`   | 设备文件保存位置。                                                                           |
| `/etc/`   | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等。 |
| `/home/`    | 普通用户的主目录(家目录)。每个用户有一个默认登录和保存自己数据的位置,在 `/home/` 下建立一个与用户名相同的目录。 |
| `/lib/`   | 系统调用的函数库保存位置。                                                                   |
| `/media/`   | 挂载目录,建议用于挂载媒体设备,如软盘和光盘。                                             |
| `/mnt/`   | 挂载目录,早期 Linux 中只有这个挂载目录。建议用于挂载额外的设备,如 U 盘和移动硬盘。       |
| `/misc/`    | 挂载目录,建议用于挂载 NFS 服务的共享目录。管理员可决定在哪个目录中挂载设备。            |
| `/opt/`   | 第三方安装的软件保存位置,手工安装的源码包软件可以安装到此目录中。                           |
| `/root/`    | root 的主目录,普通用户的主目录在 `/home/` 下,root 主目录直接在根目录下。                  |
| `/sbin/`    | 保存与系统环境设置相关的命令,只有 root 可以使用,但也有些命令允许普通用户查看。            |
| `/srv/`   | 服务数据目录,系统服务启动后可以在此目录中保存所需的数据。                                 |
| `/tmp/`   | 临时目录,存放临时文件,所有用户可访问和写入。建议此目录中不保存重要数据,最好每次开机时清空。 |
FHS 针对根目录中包含的子目录仅限于上表,但除此之外,Linux 系统根目录下通常还包含下面几个一级目录。

| 一级目录         | 功能(作用)                                                                        |
| -------------- | ----------------------------------------------------------------------------- |
| `/lost+found/` | 存放因系统意外崩溃或关机产生的文件碎片。系统启动时,fsck 工具会检查并修复损坏的文件系统。每个分区都有此目录,如根分区的 `/lost+found`。 |
| `/proc/`       | 虚拟文件系统,数据保存在内存中,主要保存系统内核、进程、外部设备状态和网络状态等信息。例如,`/proc/cpuinfo` 保存 CPU 信息。      |
| `/sys/`      | 虚拟文件系统,与 `/proc/` 类似,数据保存在内存中,主要保存与内核相关的信息。                                 |
# 二、Linux命令的执行

注意:命令在终端中使用
- 我们可以使用使用组合键: + + ~ 切换终端,分别为tty1-6,若默认为图形页面,则其余为命令行。
![[终端页面.png]]
## 1. 命令的格式
```Linux
# command [-options] parameter1 parameter2 ...
```

1. **指令(command)**:第一部分是要执行的指令名称,或可执行文件(如批处理脚本)。
   - 例:`cd`(变换工作目录)

2. **选项(options)**:
   - 选项通常以 `-` 开头,如 `-h`。
   - 可用完整选项名,前面带 `--`,如 `--help`。
   - 方括号 `[]` 表示该部分是可选的。

3. **参数(parameters)**:
   - `parameter1 parameter2...` 是附加在选项后或命令后的参数。

> 指令、选项和参数之间使用空格分隔。
> 不论空格数量多少,Shell 都视为一个空格,空格是特殊字符,需谨慎使用。

按下 `` 键后,该指令立即执行。`` 表示一行指令的结束并开始执行。
- 如果指令太长,可以使用反斜线(`\`)+回车换行,使指令继续到下一行。

## 2. 命令的基本使用
#### 1. 显示日期的指令:`date`
- **使用方法**:
在命令行输入 `date`,可以查看当前Linux系统的日期和时间。
- **格式化输出**:
若想以特定格式显示日期,可以使用格式化选项。
![]
- 参数前使用 `+` 进行格式化输出。
#### 2. 显示日历的指令:`cal`
- **使用方法**:
输入 `cal` 可查看当前月份的日历。

- **显示整年日历**:
还可以显示特定年份的月历。
```bash
@study ~]$ cal
```
- **错误处理**:
测试不合法的月份会显示错误信息:
![]

#### 3. 简单好用的计算器:`bc`
- **使用方法**:
输入 `bc` 进入计算环境。
>注意:在默认情况下 `bc` 只输出整数,使用 `scale=number` 可以设置小数位数。

![]
- **退出指令**:
输入 `quit` 返回到命令提示符。

#### 总结
- **指令的两种状态**:
1. 指令执行后直接返回命令提示符。
2. 进入指令的环境,直到用特定指令退出。
- **判断环境**:
当光标处于类似 `$` 的提示符后,表示处于命令行等待输入状态。

## 三、常用快捷键

### 1. `` 按键
- **功能**:
- 在Bash shell中,``键用于命令和文件的自动补全。
- 可减少输入错误,快速找到正确的命令或文件名。

- **用法**:
- **命令补全**:在输入命令时,输入前几个字符后按``,可以列出以该字符开头的所有命令。
    ```bash
    $ ca
    ```
- **文件补齐**:在指定路径后输入部分文件名,再按``,列出匹配的文件。
    ```bash
    $ ls -al ~/.bash
    ```
- **选项/参数补齐**:对于某些命令,输入参数后按``可显示可用的选项。
    ```bash
    $ date --
    ```
### 2. `-c` 按键
- **功能**:
- 用于中断当前运行的程序。

- **用法**:
- 当程序运行过长或输入错误时,可以按`-c`来立即停止该程序。
    ```bash
    $ find /
    ....(输出省略)....
    ```
- 注意,使用此组合时要确保不打断重要的指令。
### 3. `-d` 按键
- **功能**:
- 表示输入结束(EOF)或退出当前会话。

- **用法**:
- 当想要退出命令行或程序时,可以直接按`-d`,相当于输入`exit`。
### 4. `+` 和 `+` 按键
- **功能**:
- 用于在长输出中翻页。

- **用法**:
- 使用`+`可以向上翻页查看之前的输出,`+`则向下翻页。

## 三、常用命令

### 1. uname:查看操作系统信息
- **命令**:`uname [参数]`含义:username
- **作用**:获取计算机操作系统相关信息
- **参数**:`-a`:获取全部系统信息(类型、主机名、内核版本、发布时间、开源计划)
![]
---
### 2. ls:查看目录下文件
- **命令**:`ls`(完整写法:list show)
- **作用**:列出当前工作路径下的文件名称

1. **列出当前路径下的文件**:直接输入ls
2. **列出指定路径的文件**(绝对路径)
3. **列出指定路径的文件**(相对路径)
![]
4. **带参数选项**:
   - `-l`:以详细列表形式展示
   - `-a`:显示所有文件(包括隐藏文件)
   - `-h`:以可读性较高的格式展示文件大小
![]
**备注:**
- 多个选项可以合并,例如:`ls -la`等价于`ls -l -a`。
- 文件大小单位可能是“K”、“M”、“G”、“T”。
- 隐藏文件以`.`开头。
- `.`表示当前路径,`..`表示上级路径。
- 文件类型:第一列的第一个字母`d`表示目录,`-`表示文件。
- 文件夹通常为蓝色,文件为黑/白色(视终端配置而定)。

>简写:`ll`等价于`ls -l`。
![]

---
### 3. pwd:显示当前路径
- **命令**:`pwd`(print working directory)
![]

---
### 4. cd:切换目录
- **命令**:`cd`(change directory)
- **作用**:切换当前工作目录

**说明:**
- 不写路径时,切换到当前用户的家目录。
- `~`表示当前用户的家目录。`cd ~`也是切换到家目录。
![]

---
### 5. clear:清除屏幕信息
- **命令**:`clear`
- **作用**:清除终端信息(清屏)

---
### 6. whoami:显示当前用户
- **命令**:`whoami`
- **作用**:获取当前用户的用户名。
![]

---
### 7. reboot:重启操作系统
- **命令**:`reboot`
- **作用**:重启操作系统。


---

### 8. shutdown:关闭操作系统
- **命令**:`shutdown`
- **作用**:关机命令。

**用法:**
1. **立即关机**:
   ```bash
   # shutdown now
   ```
2. **延迟关机**(60秒后关机):
   ```bash
   # shutdown
   ```
3. **指定延迟时间**:参数`-h [数字]`
   ```bash
   # shutdown -h 20
   ```
   **含义**:延迟关机,20秒后关机。

4. **取消关机**:参数 `-c`
   ```bash
   # shutdown -c
   ```
   **含义**:取消等待中的关机(或重启)。

5. **重启计算机**:
   - 延迟重启:参数`-r`
   ```bash
   # shutdown -r 60
   ```
   **含义**:60秒后重启。
   - 立即重启:
   ```bash
   # shutdown -r now
   ```
   **含义**:立即重启。
>重启等待期间,仍然可以使用`shutdown -c`取消操作

6. **halt命令**:
   ```bash
   # halt
   ```
   **含义**:相当于`shutdown -h 0`,立即关机。

---
### 9. type:查看命令类型
- **命令**:`type`
- **作用**:查看一个命令是内部命令还是外部命令。
![]

---
### 10. history:查看历史命令
- **命令**:`history`
- **作用**:列出最近输入的一千条 Shell 命令信息。
![]
---
### 11.hostnamectl主机名命令

查看主机名:`#hostname`
临时更改主机名:`#hostname 临时主机名`
永久更改主机名:编辑/etc/sysconfig/network文件,在文件中定义永久主机名

主机名分3类,静态的(static)、瞬态的(transient)、和灵活的(pretty)。
1. 静态主机名也称为内核主机名,是系统在启动时从/etc/hostname内自动初始化的主机名。相当于**永久更改**
2. 瞬态主机名是在系统运行时临时分配的主机名,相当于**临时更改**
3. 灵活主机名则允许使用特殊字符的主机名,例如"MaYun's Host"
主机名有关的文件为/etc/hostname,它是在系统初始化的时候被读取的,并且内核根据它的内容设置瞬态主机名
#### 查看主机名
- `hostname`查看当前主机名。
- `hostnamectl`查看静态、瞬态和灵活主机名的详细信息。
![[查看主机名.png]]
下面是适用于 Ubuntu 系统的主机名管理命令的详细笔记整理,包括静态、瞬态和灵活主机名的设置方法:

#### 设置静态和瞬态主机名
- **命令**:
```bash
sudo hostnamectl set-hostname 新主机名
```
- **示例代码**:
```bash
# sudo hostnamectl set-hostname heimaserver01.itcast.cn
```
- **含义**:设置主机名称为 `heimaserver01.itcast.cn`,此设置影响静态和瞬态主机名。
#### 设置灵活主机名
- **命令**:
```bash
sudo hostnamectl set-hostname --pretty "灵活主机名"
```
- **示例代码**:
```bash
# sudo hostnamectl set-hostname --pretty "yunwei's server01"
```
- **含义**:单独设置灵活主机名为 `yunwei's server01`。

- **注意**:
- 灵活主机名需要用引号引起来。
- 如果尝试设置不规范的静态或瞬态主机名,命令会执行,但系统会自动去掉不允许的特殊字符。
- 要单独设置静态或瞬态主机名,可以使用 `--static` 或 `--transient` 参数:
    - **静态主机名**:
      ```bash
      sudo hostnamectl set-hostname --static 新静态主机名
      ```
    - **瞬态主机名**:
      ```bash
      sudo hostnamectl set-hostname --transient 新瞬态主机名
      ```
#### 通过配置文件修改静态主机名
- **文件**:`/etc/hostname`
- **操作**:
1. 编辑文件:
   ```bash
   sudo nano /etc/hostname
   ```
2. 输入新的静态主机名。
3. 保存并退出编辑器。

- **注意**:修改后,确保在 `/etc/hosts` 文件中也更新相应的主机名。

# 四、Linux帮助—man page与info page

## 1. `--help`显示命令的帮助
![[--help.png]]

## 2. ### Man手册的使用

`man` 是 Linux 下的重要命令,用于查看系统或程序的手册,提供命令的用法、参数、返回值等信息。

**基本格式**
```bash
man [选项] [命令或程序或函数]
```
**常用选项**
- **`-k`**:查询命令的简要说明。
- **`-f`**:查询命令的详细说明。
- **`-a`**:显示所有与查询项相关的手册页。

#### 手册章节

`man` 手册通常分为多个章节,常用章节包括:
1. 用户命令
2. 系统调用
3. C库函数
4. 特殊文件
5. 文件格式和约定
6. 游戏和屏保
7. 杂项
8. 系统管理命令
查询指定章节的手册页:
```bash
man [章节号] [命令或程序]
```

例如,查询 `scanf` 的 C 库函数手册页:
```bash
man 3 scanf
```

### Man手册汉化

在 Ubuntu 20.04 上汉化 `man` 手册:
1. 安装中文手册:
   ```bash
   sudo apt install manpages-zh
   ```
2. 编辑 `.zshrc` 文件:
   ```bash
   vim ~/.zshrc
   ```
   添加以下内容:
   ```bash
   export LC_ALL=en_US.UTF-8
   export LANG=en_US.UTF-8
   alias cman="man -M /usr/share/man/zh_CN/"
   ```
3. 使改动生效:
   ```bash
   source ~/.zshrc
   ```
### 彩色 Man 手册
在 `.zshrc` 中启用彩色手册:
1. 打开 `.zshrc` 文件:
   ```bash
   vim ~/.zshrc
   ```
2. 修改 `plugins` 行:
   ```bash
   plugins=(git zsh-syntax-highlighting colored-man-pages)
   ```
3. 关闭并重新打开终端以应用更改。
---
> 注意,这是我从我自己的md笔记复制的,如果有格式问题可以复制到obsidian软件阅读,该软件是一个开源免费软件

RenJiu 发表于 2024-11-23 15:20

棒棒,一楼沙发

luyingluying 发表于 2024-11-23 15:30

感谢分享,支持一下

ibin6 发表于 2024-11-23 15:40

感谢分享,很有用的教程。

2024okall 发表于 2024-11-23 16:33

不错的学习教程 值得我学习

scbzwv 发表于 2024-11-23 16:37

感谢分享。很有用

zfb38 发表于 2024-11-23 16:42

这linux都是 CMD

happyplay 发表于 2024-11-23 17:17

感谢分享!很早之前使用过,重温一下使用。

jackeyxiang 发表于 2024-11-23 17:28

入门级教程,太棒了,感谢分享{:1_893:}

yanyaneboy 发表于 2024-11-23 18:02

这个 。。 给个回帖吧
页: [1] 2
查看完整版本: Linux系统初步使用