前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux基础学习整理

linux基础学习整理

作者头像
未来sky
发布2018-12-10 10:09:59
1K0
发布2018-12-10 10:09:59
举报
文章被收录于专栏:好好学习吧好好学习吧
  • 本文练习使用系统信息如下
代码语言:javascript
复制
[root@host shl]#cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
  • 清屏:clear
  • 帮助命令:help、man、info
  • 查看文件内容:cat
代码语言:javascript
复制
[root@host ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
  • 屏幕打印信息:echo
代码语言:javascript
复制
[root@host ~]# echo hello world.
hello world.
[root@host ~]# 
  • 显示主机名称:hostname;显示当前路径:pwd;显示当前用户:whoami
代码语言:javascript
复制
[root@host ~]# hostname;pwd;whoami
host.localdomain
/root
root
[root@host ~]#
  • 可使用反斜杠 \ 对命令换行
代码语言:javascript
复制
-bash-4.2$ echo hello\
> linux
hellolinux
-bash-4.2$ 
  • 系统区分大小写
代码语言:javascript
复制
-bash-4.2$ pwd
/usr/local/kusy
-bash-4.2$ PWD
-bash: PWD: command not found
-bash-4.2$ 
  • 日期格式化
代码语言:javascript
复制
-bash-4.2$ date '+%Y/%m/%d %H:%M:%S'
2018/11/05 22:36:23
  • 查看指定年月的日历
代码语言:javascript
复制
-bash-4.2$ cal 12 2018
    December 2018   
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
-bash-4.2$ 
  • 几个快捷键:Ctrl+C 中断当前命令、Ctrl+D 退出登录、Shift+PgUp/PgDown 前后翻页
  • 数据同步写入磁盘:sync
  • 列出所有文件详细属性(包括隐藏文件,即文件名第一个字符为 . 的字符)
代码语言:javascript
复制
[root@host kusy]# ls -al
total 32
drwxr-xr-x   5 root root 4096 Nov  6 02:17 .
drwxr-xr-x. 15 root root 4096 Oct 30 21:54 ..
drwxr-xr-x   3 root root 4096 Oct 29 04:07 myproject
drwxr-xr-x   5 root root 4096 Oct 29 04:22 mysoftware
-rw-------   1 root root 1679 Oct 29 23:57 sshkey
-rw-r--r--   1 root root  400 Oct 29 23:57 sshkey.pub
drwxr-xr-x   2 root root 4096 Oct 30 05:10 ssl
-rw-r--r--   1 root root    5 Nov  6 02:17 .test.txt
[root@host kusy]# ll
total 20
drwxr-xr-x 3 root root 4096 Oct 29 04:07 myproject
drwxr-xr-x 5 root root 4096 Oct 29 04:22 mysoftware
-rw------- 1 root root 1679 Oct 29 23:57 sshkey
-rw-r--r-- 1 root root  400 Oct 29 23:57 sshkey.pub
drwxr-xr-x 2 root root 4096 Oct 30 05:10 ssl
  • ll 显示完整时间格式
代码语言:javascript
复制
[root@host kusy]# ll --full-time
total 20
drwxr-xr-x 3 root root 4096 2018-10-29 04:07:42.499263925 -0400 myproject
drwxr-xr-x 5 root root 4096 2018-10-29 04:22:32.612639261 -0400 mysoftware
-rw------- 1 root root 1679 2018-10-29 23:57:49.737676506 -0400 sshkey
-rw-r--r-- 1 root root  400 2018-10-29 23:57:49.737676506 -0400 sshkey.pub
drwxr-xr-x 2 root root 4096 2018-10-30 05:10:11.676048683 -0400 ssl
  • 修改系统默认语言
代码语言:javascript
复制
[root@host kusy]# cat /etc/locale.conf
LANG="en_US.UTF-8"
  • 修改用户、组、权限
    • chgrp:修改文件所属群组
    • chown:修改文件所属用户
    • chmod:修改文件访问权限(读r:4,写w:2,执行x:1)
代码语言:javascript
复制
[root@host test]# ll
total 4
-rw-r--r-- 1 root root 5 Nov  6 03:49 test.txt
[root@host test]# chgrp kusy test.txt
[root@host test]# ll
total 4
-rw-r--r-- 1 root kusy 5 Nov  6 03:49 test.txt
[root@host test]# chown kusy test.txt
[root@host test]# ll
total 4
-rw-r--r-- 1 kusy kusy 5 Nov  6 03:49 test.txt
[root@host test]# chmod 774 test.txt
[root@host test]# ll
total 4
-rwxrwxr-- 1 kusy kusy 5 Nov  6 03:49 test.txt
  • 查看当前用户及所属群组
代码语言:javascript
复制
-bash-4.2$ id kusy
uid=1000(kusy) gid=1000(kusy) groups=1000(kusy)
-bash-4.2$ whoami
zoey
-bash-4.2$ groups
zoey
-bash-4.2$ 
  •  查看系统信息
代码语言:javascript
复制
[root@host ~]# uname -a
Linux host.localdomain 4.10.4-1.el7.elrepo.x86_64 #1 SMP Sat Mar 18 12:50:10 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
  • 目录操作
    • 目录切换:cd(cd / cd~ 表示回到家目录,cd - 表示回到切换前的目录)
    • 显示当前目录:pwd
    • 新建目录:mkdir
    • 删除空目录:rmdir
代码语言:javascript
复制
[root@host usr]# pwd
/usr
[root@host usr]# cd ~
[root@host ~]# pwd
/root
[root@host ~]# cd -
/usr
[root@host usr]# pwd
/usr
[root@host usr]# mkdir testAbc
[root@host usr]# ll testAbc
total 0
[root@host usr]# rmdir testAbc
[root@host usr]# ll testAbc
ls: cannot access testAbc: No such file or directory
  • 环境变量PATH,与Windows中环境变量的意义类似(输入命令时,系统会先到PATH变量中指定的路径搜索可执行文件)
代码语言:javascript
复制
[root@host ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@host ~]# PATH="$PATH:/usr"
[root@host ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr
  • 文件基本处理
    • 创建文件:touch
    • 删除文件:rm
    • 复制文件:cp
    • 移动/改名:mv
代码语言:javascript
复制
[root@host test]# ll
total 0
[root@host test]# touch test.txt
[root@host test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov  7 03:16 test.txt
[root@host test]# mv test.txt test2.txt
[root@host test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov  7 03:16 test2.txt
[root@host test]# cp test2.txt test.txt
[root@host test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov  7 03:16 test2.txt
-rw-r--r-- 1 root root 0 Nov  7 03:17 test.txt
[root@host test]# rm test2.txt
rm: remove regular empty file ‘test2.txt’? y
[root@host test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov  7 03:17 test.txt
[root@host test]#
  • 获取路径文件名及目录名
代码语言:javascript
复制
[root@host test]# pwd
/usr/local/kusy/test
[root@host test]# basename $PWD
test
[root@host test]# dirname $PWD
/usr/local/kusy
[root@host test]# 
  • 查看文件内容
代码语言:javascript
复制
[root@host test]# echo abcdefg123456>test.txt 
[root@host test]# cat test.txt 
abcdefg123456
[root@host test]# od test.txt 
0000000 061141 062143 063145 030547 031462 032464 005066
0000016
[root@host test]# nl test.txt 
     1    abcdefg123456
[root@host test]# 
  •  文件搜索
    • which:搜索PATH路径下可执行文件
    • whereis:特定目录下搜索文件
    • find:全盘搜索
代码语言:javascript
复制
[root@host test]# ll
total 4
-rw-r--r-- 1 root root 14 Nov  7 03:23 test.txt
[root@host test]# which pwd
/usr/bin/pwd
[root@host test]# whereis test.txt
test: /usr/bin/test /usr/share/man/man1/test.1.gz
[root@host test]# find test.txt
test.txt
  • 查看磁盘使用情况:df
代码语言:javascript
复制
[root@host test]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          247420       0    247420   0% /dev
tmpfs             258040       0    258040   0% /dev/shm
tmpfs             258040   12712    245328   5% /run
tmpfs             258040       0    258040   0% /sys/fs/cgroup
/dev/sda2       10882760 3469384   6840868  34% /
/dev/sda1         388480  145230    222770  40% /boot
overlay         10882760 3469384   6840868  34% /var/lib/docker/overlay2/1eae537748a1b16e224390ea20b70dea76e1bd0f9f56bfa451be833fca59ad48/merged
shm                65536       0     65536   0% /var/lib/docker/containers/27f5c03b4828514fadf18e6ee8babbf39adfb8b730f14ea122fefeed331acc6d/mounts/shm
tmpfs              51608       0     51608   0% /run/user/0
[root@host test]# 
  • 硬链接(指向同一个inode。PS:每个文件占用一个inode,文件内容由inode记录来指向)与软链接(相当于快捷方式)
代码语言:javascript
复制
[root@host test]# ll -i -R
.:
total 4
528553 drwxr-xr-x 2 root root 4096 Nov  7 04:19 cc

./cc:
total 4
528556 -rw-r--r-- 1 root root 14 Nov  7 03:23 test.txt
[root@host test]# ln cc/test.txt .
[root@host test]# ll -i -R
.:
total 8
528553 drwxr-xr-x 2 root root 4096 Nov  7 04:19 cc
528556 -rw-r--r-- 2 root root   14 Nov  7 03:23 test.txt

./cc:
total 4
528556 -rw-r--r-- 2 root root 14 Nov  7 03:23 test.txt
[root@host test]# ln -s cc/test.txt test2.txt
[root@host test]# ll -i -R
.:
total 8
528553 drwxr-xr-x 2 root root 4096 Nov  7 04:19 cc
528559 lrwxrwxrwx 1 root root   11 Nov  7 04:21 test2.txt -> cc/test.txt
528556 -rw-r--r-- 2 root root   14 Nov  7 03:23 test.txt

./cc:
total 4
528556 -rw-r--r-- 2 root root 14 Nov  7 03:23 test.txt
[root@host test]# 
  • 文件打包与压缩
    • tar:打包不压缩
    • zip,gzip,bzip2,xz:一般仅对一个文件进行压缩
    • .tar.gz:tar程序打包后,gzip压缩
代码语言:javascript
复制
[root@host test]# tar cvf test.tar test.txt
test.txt
[root@host test]# ll
total 36
drwxr-xr-x 2 root root  4096 Nov  7 04:19 cc
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
-rw-r--r-- 2 root root 10240 Nov  7 21:28 test.txt
[root@host test]# rm -f test.txt
[root@host test]# gzip -v test.tar
test.tar:     99.5% -- replaced with test.tar.gz
[root@host test]# ll
total 8
drwxr-xr-x 2 root root 4096 Nov  7 04:19 cc
lrwxrwxrwx 1 root root   11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root  132 Nov  7 21:28 test.tar.gz
[root@host test]# zcat test.tar.gz 
test.txt0000644000000000000000000002400013370717510011274 0ustar  rootroot[root@host test]# 
[root@host test]# gzip -d test.tar.gz 
[root@host test]# ll
total 24
drwxr-xr-x 2 root root  4096 Nov  7 04:19 cc
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
[root@host test]# tar xf test.tar 
[root@host test]# ll
total 36
drwxr-xr-x 2 root root  4096 Nov  7 04:19 cc
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
-rw-r--r-- 1 root root 10240 Nov  7 21:28 test.txt
[root@host test]# tar tvf test.tar
-rw-r--r-- root/root     10240 2018-11-07 21:28 test.txt
[root@host test]# 
  • vi文本编辑器,vim程序编辑器
    • 一般模式:打开文件后即进入此模式,可以进行方向键移动,删除、复制、粘贴等操作
      • gg:移到首行
      • G:移至尾行
      • n+Enter:光标向下移动n行
      • /word:向下寻找word字符串
      • dd:删除整行
      • yy:复制整行
      • p:将复制内容粘贴到光标下一行
      • P:将复制内容粘贴到光标上一行
      • u:撤销
      • Ctrl+r:前进
    • 编辑模式:进行编辑,按键i、o、a都可进入此模式,ESC退出模式
    • 命令模式:从一般模式下按冒号进入
      • [:w] :编辑内容写入
      • [:q] :退出vi
      • [:q!]、[ZZ] :不保存退出
      • [:wq]、[ZZ] :保存退出
  • ~/.bash_history 记录本次登录以前执行的命令(本次登录执行的命令暂存在内存中,注销后记录到文件里)
代码语言:javascript
复制
[root@host ~]# cat ~/.bash_history
cd /
ls
free
passwd root
clear
pwd
ll
yum install java
java
java -version
python
ls
sudo yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest                   docker-latest-logrotate                   docker-logrotate                   docker-selinux                   docker-engine-selinux                   docker-engine
sudo yum install -y yum-utils   device-mapper-persistent-data   lvm2
sudo yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
service docker start
docker ps
docker images
docker ps
sudo docker run hello-world
clear
docker ps
docker imagwees
clear
docker images
docker run hello-world
docker pull oddrationale/docker-shadowsocks
docker run -d -p 1991:1991 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 1991 -k 123456 -m aes-256-cfb
docker ps
....
  • 命令及文件名补齐:TAB键
  • 命令别名设定:alias
代码语言:javascript
复制
[root@host ~]# alias eo='echo'
[root@host ~]# eo hello linux
hello linux
[root@host ~]# 
  • 通配符*,匹配任意字符
代码语言:javascript
复制
[root@host test]# ll
total 28
drwxr-xr-x 2 root root  4096 Nov  7 04:19 cc
-rw-r--r-- 1 root root    44 Nov  7 22:13 test
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
[root@host test]# ll te*
-rw-r--r-- 1 root root    44 Nov  7 22:13 test
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
[root@host test]# ll te*.tar
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar
[root@host test]# ll *
-rw-r--r-- 1 root root    44 Nov  7 22:13 test
lrwxrwxrwx 1 root root    11 Nov  7 04:21 test2.txt -> cc/test.txt
-rw-r--r-- 1 root root 20480 Nov  7 21:28 test.tar

cc:
total 12
-rw-r--r-- 1 root root 10240 Nov  7 21:28 test.txt
[root@host test]# 
  • 查询命令是否是系统内建命令:type
代码语言:javascript
复制
[root@host test]# type -a ll
ll is aliased to `ls -l --color=auto'
[root@host test]# type pwd
pwd is a shell builtin
[root@host test]# 
  • 变量赋值时等号两边不能有空格
代码语言:javascript
复制
[root@host test]# varA = 123
-bash: varA: command not found
[root@host test]# varA=123
[root@host test]# echo ${varA}
123
[root@host test]# 
  • 使用反引号 ` (键盘上Esc键下面那个)括起的命令会执行
代码语言:javascript
复制
[root@host ~]# echo `echo a`
a
[root@host ~]# echo echo a
echo a
[root@host ~]# 
  • 使用unset取消变量
代码语言:javascript
复制
[root@host ~]# kusy=wangjz
[root@host ~]# echo $kusy
wangjz
[root@host ~]# unset kusy
[root@host ~]# echo $kusy

[root@host ~]# 
  • 不同用户的环境变量值不同
代码语言:javascript
复制
[root@host ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@host ~]# su - kusy
Last login: Thu Nov  8 01:52:32 EST 2018 on pts/0
-bash-4.2$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin
-bash-4.2$ 
  • export把程序中的变量输出,在子shell中可以使用
代码语言:javascript
复制
[root@host shl]# cat test1.sh 
export kusy=wangjz
./test2.sh
[root@host shl]# cat test2.sh
echo $kusy
[root@host shl]# ./test1.sh
wangjz
[root@host shl]# 
---------------------------------------------------------
[root@host shl]# cat test1.sh test2.sh 
kusy=wangjz
./test2.sh
echo $kusy
[root@host shl]# ./test1.sh

[root@host shl]# 
  • env:列出环境变量及值
代码语言:javascript
复制
[root@host shl]# env
XDG_SESSION_ID=268
HOSTNAME=host.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
...
  • set:查看环境变量及自定义变量信息
代码语言:javascript
复制
[root@host shl]# set
BASH=/bin/bash
...
_=
colors=/root/.dircolors
kusy=wangjz
  • PS1:设置提示字符内容
代码语言:javascript
复制
[root@host shl]# PS1='[\u@\h \W]__\$'
[root@host shl]__#
  • $:打印当前shell的PID
代码语言:javascript
复制
[root@host shl]#echo $$
2336
[root@host shl]#cat test1.sh
echo $$
[root@host shl]#./test1.sh
2432
[root@host shl]#
  • ?:命令执行返回的状态码
代码语言:javascript
复制
[root@host shl]#echo a
a
[root@host shl]#echo $?
0
[root@host shl]#xxss
-bash: xxss: command not found
[root@host shl]#echo $?
127
[root@host shl]#
  • history:显示历史命令
代码语言:javascript
复制
[root@host shl]#history 1
    4  history 1
[root@host shl]#history
    1  history
    2  history -1
    3  clear
    4  history 1
    5  history
[root@host shl]#history -c
[root@host shl]#history
    1  history
[root@host shl]#
  • source:读入环境配置文件,无需注销登入
  • /dev/null:空设备,把不要的信息丢进去
代码语言:javascript
复制
[root@host shl]#xxx>11.txt 2>22.txt
[root@host shl]#ll
total 12
-rw-r--r-- 1 root root  0 Nov  8 03:54 11.txt
-rw-r--r-- 1 root root 30 Nov  8 03:54 22.txt
-rwxrwx--- 1 root root  8 Nov  8 02:52 test1.sh
-rwxrwx--- 1 root root 11 Nov  8 02:21 test2.sh
[root@host shl]#xxx>11.txt 2>/dev/null
[root@host shl]#ll
total 12
-rw-r--r-- 1 root root  0 Nov  8 03:55 11.txt
-rw-r--r-- 1 root root 30 Nov  8 03:54 22.txt
-rwxrwx--- 1 root root  8 Nov  8 02:52 test1.sh
-rwxrwx--- 1 root root 11 Nov  8 02:21 test2.sh
[root@host shl]#
  • 将正确信息与错误信息写入同一个文件时: 2>&1(设备号:0=stdin1=stdout2=stderr
代码语言:javascript
复制
[root@host shl]#echo aaa>aa 2>&1
[root@host shl]#bbb>bb 2>&1
[root@host shl]#cat aa
aaa
[root@host shl]#cat bb
-bash: bbb: command not found
[root@host shl]#
  • 输入/输出重定向 :<、<<; >、>>  PS:单箭头覆盖内容,双箭头追加内容
代码语言:javascript
复制
[root@host shl]#cat aa
aa
[root@host shl]#echo bb>aa
[root@host shl]#cat aa
bb
[root@host shl]#echo cc>>aa
[root@host shl]#cat aa
bb
cc
[root@host shl]#cat >bb <aa
[root@host shl]#cat bb
bb
cc
[root@host shl]#
  • &&与||
    • &&:命令1执行正确才执行命令2
    • ||:命令1执行错误才执行命令2
代码语言:javascript
复制
[root@host shl]#echo a && xxx
a
-bash: xxx: command not found
[root@host shl]#xxx && echo a
-bash: xxx: command not found
[root@host shl]#echo a || xxx
a
[root@host shl]#xxx || echo a
-bash: xxx: command not found
a
[root@host shl]#
  • 管道 |:仅处理stout,且能接收成为stdin继续处理的命令才支持,例如:less、more、head、tail命令
代码语言:javascript
复制
[root@host shl]#echo aaaaaaaaaaaaaaaaaa|tail
aaaaaaaaaaaaaaaaaa
  • cut:切取字符,-d代表分隔符,-f指分割后的第几段
代码语言:javascript
复制
[root@host shl]#echo aa-bb-cc | cut -d '-' -f 1
aa
[root@host shl]#echo aa-bb-cc | cut -d '-' -f 1,3
aa-cc
  • grep:查找
代码语言:javascript
复制
[root@host shl]#echo abcdefg|grep 'ef'
abcdefg
[root@host shl]#cat aa
bb
cc
[root@host shl]#grep 'bb' aa
bb
[root@host shl]#
  • wc:查看文件行数,字符数信息
代码语言:javascript
复制
[root@host shl]#cat aa
bb
cc
[root@host shl]#cat aa |wc
      2       2       6(依次是行数、字数、字符数)
[root@host shl]#wc aa
2 2 6 aa
[root@host shl]#wc aa -l
2 aa
[root@host shl]#
  •  tee:将数据同时输出到文件和屏幕
代码语言:javascript
复制
[root@host shl]#echo aa>aa
[root@host shl]#echo bb|tee bb
bb
[root@host shl]#ll
total 16
-rw-r--r-- 1 root root  3 Nov  8 04:51 aa
-rw-r--r-- 1 root root  3 Nov  8 04:52 bb
-rwxrwx--- 1 root root  8 Nov  8 02:52 test1.sh
-rwxrwx--- 1 root root 11 Nov  8 02:21 test2.sh
[root@host shl]#
  • tr:删除或替换文字
代码语言:javascript
复制
[root@host shl]#echo abcdef|tr -d 'cd'
abef
[root@host shl]#echo abcdef|tr 'cd' 'ee'
abeeef
[root@host shl]#

~~ 待续 ~~

PS:结合《鸟哥的linux私房菜》学习笔记

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档