1 | 用户命令 | 主要是shell命令和可执行程序的文档 |
---|---|---|
2 | 系统调用 | 主要包含系统调用和系统相关函数的文档(以C语言风格对外暴露的接口函数) |
3 | 库调用 | 主要包含与C语言函数库相关的文档,包括ISO-C和POSIX标准的C语言库函数。 |
4 | 特殊文件 | 描述系统上的特殊文件,通常指的是位于 /dev 目录下的设备文件和接口 |
5 | 文件格式和规范 | 包含各种文件格式、配置文件、协议等的文档。 |
6 | 游戏 | 包含游戏等娱乐软件的文档。 |
7 | 杂项 | 包含不易分类的各种文档,如宏包、约定等。 |
8 | 系统管理命令 | 包含系统管理员用于管理整个系统的命令和守护进程的文档。这些命令通常需要较高的权限才能执行。 |
9 | 内核例程 | 和内核开发相关的文档与手册(非标准,有时没有) |
卷数 | 卷名称 | 解释 |
1man [手册编号] 待查询指令/函数名等字符串
xxxxxxxxxx
31man man #查看man命令本身的帮助手册
2man mkdir #默认查询手册1中的shell命令mkdir
3man 3 printf #查看库调用卷中的mkdir
xxxxxxxxxx
51d(down) #往下翻半页
2u(up) #往上翻半页
3f(forward) #往下翻一整页
4b(backward) #往上翻一整页
5q(quit) #退出
xxxxxxxxxx
71shutdown
2 # 挂起,关机或重启计算机
3常用选项:
4 -H, --halt: 挂起
5 -P, --poweroff: 关机(默认)
6 -r, --reboot: 重启
7 -c(cancel): 取消
xxxxxxxxxx
31sudo shutdown #广播关机消息给所有用户,并于一分钟后关机。
2sudo shutdown now #立刻关机
3sudo shutdown -r now #立刻重启
xxxxxxxxxx
11grep sudo /etc/group #查询sudo组的用户,该组用户就是sudoer
xxxxxxxxxx
31sudo adduser test sudo #将test用户添加为sudoer
2sudo whoami #显示当前正在执行该命令的用户的用户名,如果当前用户是sudoer,会输出root
3sudo deluser test sudo #将test用户移除sudo组
xxxxxxxxxx
91格式:
2 useradd [选项] username
3常用选项:
4 -m, --create-home
5 #如果不添加该选项,则不会自动创建家目录文件夹
6 #添加上该选项,则会在创建用户时自动创建家目录文件夹
7 -s, --shell SHELL程序路径
8 #如果不添加该选项,新建用户的默认为/bin/sh
9 #添加上该选项,则可以指定用户登录的shell程序,比如/bin/bash
xxxxxxxxxx
31sudo useradd test1 #创建用户test1,但不会创建它的家目录文件夹,使用的shell默认为sh
2sudo useradd -m test2 #创建用户test2,会创建它的家目录文件夹,使用的shell默认为sh
3sudo useradd -m -s /bin/bash test3 #创建用户test3,会创建它的家目录文件夹,并且指定登录shell是/bin/bash
xxxxxxxxxx
61格式:
2 userdel [选项] username
3常用选项:
4 -r, --remove
5 #如果不添加该选项,删除用户时不会连带删除家目录文件夹以及邮箱
6 #添加上该选项,删除用户时会连带删除家目录文件夹以及邮箱
xxxxxxxxxx
21sudo userdel test1 #删除用户test1,不会删除用户的家目录和用户的邮箱。
2sudo userdel -r test2 #删除用户test2,会把用户的家目录和用户的邮箱一起删除。
xxxxxxxxxx
41格式:
2 passwd [选项] [username]
3 #该指令没什么比较常用的选项,所以这里就不列出了
4 #username也是可选的,如果不填用户名,默认就是修改当前登录用户的密码
xxxxxxxxxx
31passwd #修改当前登录用户的密码
2sudo passwd test1 #修改用户test1的密码
3sudo passwd root #修改超级用户root的密码
xxxxxxxxxx
41格式:
2 su [选项] [username]
3 #该指令没什么比较常用的选项
4 #username也是可选的,如果不填用户名,默认会切换到root用户
xxxxxxxxxx
31sudo su #切换到root用户
2sudo su test1 #切换到test1用户
3su test2 #不带sudo一般需要输入密码才能够登录
xxxxxxxxxx
11exit #退出当前登录用户
xxxxxxxxxx
11pwd #查看当前工作目录
xxxxxxxxxx
71$ man cd
2 cd — change the working directory
3 #切换当前工作目录
4格式:
5 cd [选项] [directory]
6 #该命令没有什么常用的选项。
7 #directory也是可选的,如果不输入,则回到家目录
xxxxxxxxxx
71$ cd # 什么都不输入,切换到用户家目录
2$ cd /usr/lib # 切换到/usr/lib目录
3$ cd / # 切换到 / 目录
4$ cd ~ # 切换到用户家目录
5$ cd . # 切换到当前工作目录(不切换)
6$ cd .. # 切换到父目录,上级目录
7$ cd - # 切换到上一次目录
xxxxxxxxxx
101$ man mkdir
2 mkdir - make directories
3 #复数形式,表示它可以创建多级目录
4格式:
5 mkdir [选项] directory...
6 #...表示可以写多个目录,表示创建多个新目录
7常用选项:
8 -p, --parents
9 #如果父目录不存在,则创建父目录
10 #该选项添加后,可以用于创建多级目录
xxxxxxxxxx
31$ mkdir dir #在当前工作目录下创建一个新文件夹dir
2$ mkdir dir1 dir2 dir3 #在当前工作目录下创建一个新文件夹dir1、dir2以及dir3
3$ mkdir -p a/b/c #允许创建多级目录a/b/c,即便上级目录不存在
xxxxxxxxxx
91$ man rmdir
2 rmdir - remove empty directories
3 #复数形式,表示它可以删除多级空目录
4格式:
5 rmdir [选项] dirctory...
6 #...表示可以写多个目录,表示删除多个空目录
7常用选项:
8 -p, --parents
9 #表示递归的删除空目录和空的父目录
xxxxxxxxxx
31$ rmdir dir #删除空目录dir
2$ rmdir dir1 dir2 dir3 #删除空目录dir1、dir2以及dir3
3$ rmdir -p a/b/c #递归地删除目录a/b/c
xxxxxxxxxx
191$ man ls
2 ls - list directory contents
3格式:
4 ls [选项] [FILE]...
5 #如果不添加任何选项、目录/文件名的话,默认展示当前工作目录的内容
6 #如果输入目录名,会展示该目录下的内容
7 #如果输入文件名,会展示该文件的相关信息
8 #[FILE]...意味着可以输入多个文件/目录名,展示多个内容,但基本不会这么用
9
10常用选项:
11 -a, --all
12 #显示所有的内容,包括以.开头的文件和目录,也就是Linux系统下的隐藏文件
13 -i, --inode
14 #显示文件的inode编号(inode是物理文件系统中文件的唯一标识)。
15 -l, --long format
16 #以长格式的形式显示目录中的内容
17 -h, --human-readable
18 #一般和-l选项一起使用,以人类可读的方式显示文件的大小。
19 #默认以字节展示文件大小, 添加该选型后会自动换算成kb, Mb等
xxxxxxxxxx
51$ ls # 查看当前工作目录下的内容和信息
2$ ls dir # 查看指定dir目录下的内容和信息
3$ ls dir1 dir2 dir3 # 查看dir1,dir2,dir3
4$ ls -a dir # 查看dir中的所有内容,包括以.开头的文件和目录
5$ ls -alh dir # 显示包含隐藏文件在内的详细信息,并以人类更好理解的方式显示文件的大小
xxxxxxxxxx
81$ man tree
2 tree - list contents of directories in a tree-like format.
3 #以树状格式展示出目录的内容。
4
5格式:
6 tree [选项] [directory]...
7 #该指令没什么比较常用的选项
8 #可以什么选项目录都不加表示展示当前工作目录
xxxxxxxxxx
31tree # 以树状结构显示当前工作目录的内容
2tree dir # 以树状结构显示目录dir中的内容
3tree dir1 dir2 dir3 # 以树状结构显示目录dir1, dir2, dir3中的内容
xxxxxxxxxx
171$ man cp
2 cp - copy files and directories
3 #可以同时复制多个文件/目录
4格式:
5 cp [选项] SOURCE DEST
6 #将一个目录复制到另一个目录下或者将源文件复制到目的文件中,这里DEST可以是文件也可以是目录
7 cp [选项] SOURCE... DEST
8 #将多个文件或者目录复制到目标目录下,此时DEST只能是目录
9常用选项:
10 -n, --no-clobber
11 #若在复制的过程中发现文件已存在,则不会覆盖。不添加该选项,默认会覆盖已存在文件
12 -i, --interactive
13 #若在复制的过程中发现文件已存在,则会询问用户是否覆盖,选择权力交给用户。
14 #输入y/Y表示覆盖,其它任意字符表示不覆盖
15 -R, -r, --recursive
16 #当SOURCE是一个目录时,添加该选项,用于递归复制目录下所有的内容,即包括所有子目录和文件。
17 #复制目录时,应该总是添加上该选项
xxxxxxxxxx
51$ cp text1 text2 # 将text1复制到text2中;如果text2存在,则覆盖。
2$ cp text1 text2 dir # 将text1,text2复制到目录dir中;如果文件已存在,则覆盖。
3$ cp -n text1 text2 # 将text1复制到text2中;如果text2存在,不覆盖。
4$ cp -i text1 text2 text3 dir # 将text1,text2,text3复制到目录dir中;如果文件已存在,则提示用户是否覆盖。
5$ cp -r dir1 dir2 # 递归地将目录dir1复制到目录dir2
xxxxxxxxxx
151$ man mv
2 mv - move (rename) files
3格式:
4 mv [选项] SOURCE DEST
5 mv [选项] SOURCE... DEST #若使用这种格式,则DEST只能是目录
6 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
7 #如果DEST是一个普通文件,那么mv的作用就都是重命名。
8 #如果DEST是一个目录且SRC也是一个已存在的目录或文件,那么mv的作用是将文件/目录移动到DEST目录下。
9 #如果DEST是一个不存在的目录且SRC是一个目录,那么mv的作用是重命名目录。
10常用选项:
11 -n, --no-clobber
12 #若在复制的过程中发现文件已存在,则不会覆盖。不添加该选项,默认会覆盖已存在文件
13 -i, --interactive
14 #若在复制的过程中发现文件已存在,则会询问用户是否覆盖,将选择权力交给用户。
15 #输入y/Y表示覆盖,其它任意字符表示不覆盖
xxxxxxxxxx
51$ mv text1 text2 # 将text1重命名为text2;如果text2存在,则覆盖。
2$ mv dir1 dir2 # 将dir1重命名为dir2
3$ mv -n text1 text2 # 将text1重命名为text2;如果text2存在,则不覆盖。
4$ mv text1 text2 text3 dir # 将text1,text2,text3移动到目录dir中;如果文件已存在,则覆盖。
5$ mv -i text1 text2 text3 dir # 将text1,text2,text3移动到目录dir中;如果文件已存在,则提示用户是否覆盖。
xxxxxxxxxx
121$ man rm
2 rm - remove files or directories
3格式:
4 rm [选项] FILE...
5 #可以用于删除多个文件或目录
6常用选项:
7 -f, --force
8 #忽略不存在的文件,永远不提示
9 -i, --interactive
10 #在每次删除前,都询问用户是否删除
11 -r, -R, --recursive
12 #递归删除目录
xxxxxxxxxx
41$ rm text1 # 删除文件text1
2$ rm text1 text2 text3 # 删除文件text1, text2, text3
3$ rm -i *.txt # 删除当前目录下所有以.txt结尾的文件,并提示用户是否删除
4$ rm -rf dir # 递归删除目录dir, 不给出任何提示
xxxxxxxxxx
61$ man alias
2 alias — define or display aliases
3 #定义或显示别名
4格式:
5 alias [别名=命令]...
6 #若直接使用alias命令则会打印当前会话的指令别名有哪些
xxxxxxxxxx
81$ alias # 查看别名
2 #一般会打印以下内容
3 #alias g++11='g++ -std=c++11'
4 #alias ll='ls -alF'
5 #alias ls='ls --color=auto'
6 #...
7$ alias h=history # 设置别名
8$ alias la='ls -a' # 设置别名
xxxxxxxxxx
11chmod 用户类别[+=-][rwx] file
xxxxxxxxxx
31$ chmod o+w text1 #表示将文件text1的其他用户(Others)的写权限设置为开启
2$ chmod a-r dir1/ #表示将目录dir1/的所有用户的读权限(Read)设置为关闭。
3$ chmod u=rwx,g=rx,o=r text1
xxxxxxxxxx
51r --read
2
3w --write
4
5x --execute
xxxxxxxxxx
21$ chmod 664 text1
2#将text1文件的权限设置为:rw-rw-r--
xxxxxxxxxx
11$ echo "Hello World!" > text # 创建文件text, 并且文件中包含内容"Hello World!" >表示重定向输出流
xxxxxxxxxx
11$ touch text1 text2 text3 # 创建空文件text1, text2, text3 (要求text1,text2,text3不存在)
xxxxxxxxxx
11$ vim hello.c # 编辑hello.c, 按:wq退出。
xxxxxxxxxx
71$ man which
2 which - locate a command
3格式:
4 which [-a] cmd...
5选项:
6 -a, --all
7 #显示所有匹配的路径
xxxxxxxxxx
31$ which bash # 查看bash的路径
2$ which ls tree # 查看命令ls和tree的路径
3$ which -a vim # 查看vim的所有路径 (我们可能装了多个版本的vim)
xxxxxxxxxx
41$ env
2...
3PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
4...
x1$ man find
2 find - search for files in a directory hierarchy
3 #在目录层次结构中搜索文件
4格式:
5 find [起始点...] 查找条件选项
6 # 起始点表示查找文件从哪个目录开始,或者哪几个目录开始
7 # 起始点是可以省略的,省略后会从当前工作目录开始进行查找工作
8 # 建议不要省略起始点,若从当前目录开始查找时,可以使用 . 来表示当前目录
9常用选项:
10 -name pattern
11 #查找符合pattern名字的文件或目录
12 #pattern名字最好要使用""包裹起来,这样可读性更好也能避免执行出错
13 #可以使用我们以往学习的通配符,使用通配符时必须用""包裹
14
15 -type c
16 #查找类型为c的文件
17 #常见的文件类型表示字符如下:
18 #b(block): 块设备文件
19 #c(character): 字符设备文件
20 #d(directory): 目录
21 #p(named pipe): 有名管道
22 #f(file): 普通文件(和ls -l时用-表示有区别,这里要记住)
23 #l(symbolic link): 符号链接
24 #s(socket): 套接字
25
26 -size n[单位]
27 #根据一个文件的大小进行查找
28 #n必须是一个非负数
29 #单位即内存大小的单位,如下:
30 #c: 字节
31 #w: 两个字节,即1个字
32 #b: 512个字节 (注意如果不添加单位的话,b是默认值)
33 #k: kb, 1024个字节
34 #M: Mb, 1024kb
35 #G: Gb, 1024Mb
36 #当仅填入一个非负数时,表示文件大小必须精确匹配指定的大小.如: -size 100c 表示精确查找100个字节的文件
37 #当填入一个非负数且在n前面添加正负号时, +正号表示查找大于指定大小的文件, -负号表示查找小于指定大小的文件
38 # -size +1k 表示文件大小必须大于1kb
39 # -size -100M 表示文件大小必须小于100Mb
40 #不要用这个选项查找目录, 目录文件的大小不是目录下所有文件和子目录大小之和,这一点上面已经讲解过了
41
42 -empty
43 #查找空的文件或空的目录文件
44
45 -user username
46 -uid uid
47 #根据用户名或者UID查找
48 #可以通过 cat /etc/passwd 命令来查看Linux用户信息,如UID
49 #也通过组名和组ID也可以查找, 但目前组基本上没人用, 这里就不赘述了
50
51 -perm(permission) 权限数字
52 #根据权限查找
53 #比较常见的权限数字,比如775,664等
54
55 #根据时间查找的选项
56 -(时间类型)(min/time) 正整数
57 #时间类型指查找依据的时间类型
58 #a(access): 文件访问的时间
59 #c(change): 文件元数据发生改变的时间
60 #m(modify): 文件内容发生改变的时间
61 #min:时间以分钟为单位
62 #time: 以天为单位
63 #n是一个整数表示对应时间,可以在n前面添加'+'和'-',表示大于和小于
64
65 -maxdepth n
66 #指定递归搜索的深度为n
67 #若只想在当前目录下搜索,可以设定-maxdepth 1
68
69 #组合查找:
70 -a(and), -o(or), !(not)
71 #分别表示组合查找的与(并且)、或、非
72 #注意当find指令中出现多个选项需要进行条件组合时,-a即并且是默认的选择,此时-a可加可不加!
xxxxxxxxxx
141$ find /usr/include -name "stdio.h" # 在/usr/include目录下查找stdio.h文件
2$ find . -name "*.c" # 在当前工作目录下查找所有以.c结尾的文件
3$ find /dev -type b # 在/dev目录下查找所有的块设备文件
4$ find . -size 5M # 在当前工作目录下查找所有大小为5M的文件
5$ find . -size +5M # 在当前工作目录下查找所有大于5M的文件
6$ find dir1 dir2 dir3 -empty # 在dir1,dir2,dir3目录下查找所有空的文件和空的文件夹
7$ find . -user he # 在当前工作目录下查找he用户拥有的文件
8$ find . -gid 0 # 在当前工作目录下查找root组(gid=0)拥有的文件
9$ find . -perm 664 # 在当前工作目录下查找权限为664(rw-rw-r--)的文件
10$ find . -mtime 1 # 在当前工作目录下查找在[1, 2)天前内容发生修改的文件 (find会省略小数部分)
11$ find . -mtime +2 # 在当前工作目录下查找在[3, +)天前内容发生修改的文件
12$ find /dev -type c -a -name "tty*" # 在/dev目录下查找以tty开头的字符设备文件
13$ find /dev -type b -o -name "tty*" # 在/dev目录下查找块设备文件或者是以tty开头的文件
14$ find /dev -type c -a ! -name "tty*" # 在/dev目录下查找不以tty开头的字符设备文件
xxxxxxxxxx
111$ man cat
2 cat - concatenate files and print on the standard output
3 #cat指令并不是猫的意思,它和strcat函数名一样,是拼接的意思
4 #该指令会拼接文件的所有内容并输出到标准输出(默认是屏幕)上打印
5格式:
6 cat [选项] [file]...
7 #可以将多个文件的内容拼接到一起然后打印输出
8 #允许不输入文件名,此时cat将从标准输入(默认是键盘)中读取数据打印,但这种做法一般没有实际意义
9常见选项:
10 -n number
11 #对每一行进行编号,若不添加该选项默认不会进行行编号
xxxxxxxxxx
31$ cat /etc/passwd #在屏幕上打印用户相关的信息
2$ cat -n /etc/passwd #在屏幕上打印用户相关的信息,显示行数
3$ sudo cat /etc/passwd /etc/shadow #在屏幕上打印用户的密码,但密码也都是加密存储的
xxxxxxxxxx
101$ man head
2 head - output the first part of files
3 #该指令会找到文件的前几行并输出到标准输出(一般是屏幕)中打印
4 #默认输出文件内容的前十行
5格式:
6 head [选项] [file]...
7 #允许不输入文件名,此时head将从标准输入(默认是键盘)中读取数据打印,但这种做法没有实际意义
8常见选项:
9 -n NUM
10 #显示前NUM行;若在NUM前面添加'-'号,则显示除了后NUM行的所有行
xxxxxxxxxx
41$ head text1 #显示text1的前10行
2$ head text1 text2 text3 #显示text1,text2,text3的前10行
3$ head -n 5 text1 #显示text1的前5行
4$ head -n -5 text1 #显示除了最后5行外的所有行
xxxxxxxxxx
121$ man tail
2 tail - output the last part of files
3 #该指令会找到文件的后几行并输出到标准输出(一般是屏幕)中打印
4 #默认输出文件内容的后十行
5格式:
6 tail [选项] [file]...
7 #允许不输入文件名,此时tail将从标准输入(默认是键盘)中读取数据打印,但这种做法没有实际意义
8常见选项:
9 -n NUM
10 #显示后NUM行;若在NUM前面添加'+'号,则从第NUM开始显示到末尾
11 -F FOLLOW
12 #显示后十行内容,但会实时显示追加的数据。这个选项经常用于查看日志文件。
xxxxxxxxxx
51$ tail text1 # 显示text1的后10行
2$ tail text1 text2 text3 # 显示text1,text2,text3的后10行
3$ tail -n 5 text1 # 显示text1的后5行
4$ tail -n +5 text1 # 从第5行开始显示,直到文件末尾
5$ tail -F error.log # 查看错误日志文件,显示后10行,并且会实时显示后续追加的数据
xxxxxxxxxx
61$ man less
2 less - file perusal filter for crt viewing
3 #说人话就是单页浏览一个文件的内容
4格式:
5 less [选项] file...
6 -N, --line-numbers:显示行号。
xxxxxxxxxx
71f/空格(forward) #往后翻一页
2b(backward) #往前翻一页
3d: (down) #向下翻半页。
4u: (up) #向上翻半页。
5g: (go) #跳转到文件的第一行。
6G: (GO) #跳转到文件的最后一行。
7q(quit) #退出浏览界面
xxxxxxxxxx
71who -a (all) #显示所有信息
2
3who -b (boot) #显示上次系统启动的时间
4
5who -r (runlevel) #显示当前运行级别
6
7who -H (HEADING) #显示列标题
xxxxxxxxxx
51wc -l (lines) file.txt # 统计file.txt中的行数
2
3wc -w (words) file.txt # 统计file.txt中的单词数
4
5wc -c (characters) file.txt # 统计file.txt中的字节数
xxxxxxxxxx
261$ man grep
2 grep - print lines matching a pattern
3 #逐行遍历文件内容,然后打印那些能够匹配正则表达式的行
4
5格式:
6 grep [选项] pattern [file]...
7常见选项:
8 -E, --extended-regexp
9 #使用扩展的正则表达式语法
10 #建议使用正则表达式搜索时加上该选项
11 -n, --line-number
12 #显示匹配数据在源数据中的行号
13 -i, --ignore-case
14 #搜索时忽略大小写
15 -v, --invert-match
16 #显示不匹配正则表达式的行
17 -c, --count
18 #不再展示匹配行的内容,而是单单统计匹配行的行数
19 -o, --only-matching
20 #只输出匹配到的部分,而不是整行内容
21 -C(CONTEXT) num
22 #显示匹配行及其周围的行(上下文)。num 指定要显示的上下文行数。
23 #该选项常用于展示日志内容
24 -r, --recursive
25 #如果不添加该选项那么grep只能直接搜索文件内容,只能在后面添加普通文件名作为参数。
26 #添加-r选项后表示在指定目录及其子目录中递归地搜索文件。
xxxxxxxxxx
61grep -nE "firmament" The_Holy_Bible.txt # 显示包含"firmament"的所有行内容,并显示行号
2grep -niE "GOD" The_Holy_Bible.txt # 忽略大小写的显示包含"GOD"的所有行内容,并显示行号。
3grep -nvE "god" The_Holy_Bible.txt # 显示不包含"god"的所有行内容,并显示行号。
4grep -cE "god" The_Holy_Bible.txt # 统计文件中包含"god"的总行数,打印出来。不打印任何文件内容
5grep -cvE "god" The_Holy_Bible.txt # 统计文件中不包含"god"的总行数,打印出来。不打印任何文件内容
6grep -rnE "恐怖如斯" . # 在当前目录下,递归查找文本"恐怖如斯"
xxxxxxxxxx
11ln target_file link_name #创建一个目标文件的硬链接
xxxxxxxxxx
11ln test link_test #创建test文件的硬链接link_test
xxxxxxxxxx
11ln -s(soft) target_file slink_name #添加一个选项-s,表示soft软链接
xxxxxxxxxx
11ln -s test slink_test
xxxxxxxxxx
91$ man scp
2 scp -- secure copy (remote file copy program)
3 #远程的安全的加密复制
4格式:
5 scp [选项] SRC... DEST
6 #本地路径:可以用绝对路径,也可以用相对路径
7 #远程路径:用户名@IP:路径
8常用选项:
9 -r (recursive)#递归复制整个目录
xxxxxxxxxx
21scp wgd@IP:~/text1 . # 将wgd用户家目录下的text1文件下载到当前工作目录, 在Windows的cmd命令行中执行
2scp ./file wgd@IP:~ # 将当前工作目录下的file文件上传到wgd用户的家目录下, 在Windows的cmd命令行中执行
xxxxxxxxxx
91# 主选项(有且只能选择其中一个):
2 1. c(create): 创建:创建新的归档文件。如果归档文件已存在,则此选项将覆盖原有文件。
3 2. r(append): 追加:追加文件到已存在的归档文件末尾。如果归档文件不存在,则会报错。**注意若归档文件已压缩,需要先释放再追加。**
4 3. x(extract): 释放:释放(解压)归档文件中的内容。这会根据归档中的结构恢复文件和目录。
5 4. t(table/list): 查看:查看归档内容,列出归档文件中包含的文件和目录,但不提取它们。
6# 辅选项:
7 1. f(file): 指定包文件的名称:**该辅助项选择一般是必加的**,用于指令下一个参数是归档文件的名字。否则tar无法得到哪些属于被归档文件,哪个是归档的结果。
8 2. v(verbose): 显示处理过程的详细信息。如果是查看归档文件,则显示文件的详细信息。**该指令一般也建议都加上。**
9 3. z(gzip): 使用gzip算法压缩或解压缩归档文件。
如果希望从普通模式切换到插入模式,按键有:
xxxxxxxxxx
61i(insert): 在光标前面插入
2I(INSERT at beginning): 在行首插入
3a(append): 在光标后面插入
4A(APPEND at end): 在行尾插入
5o(open below): 在下面另起一行,并在行首插入
6O(OPEN above): 在上面另起一行,并在行首插入
如果希望从普通模式切换到视图模式,按键有:
xxxxxxxxxx
21v(visual): 进入行选模式
2Ctrl + v(visual block): 进入竖选模式,或者块选模式。
当你处在插入模式或视觉模式下时,只需要按退出ESC键,就可以立刻回到普通模式。
xxxxxxxxxx
11vim [文件名]
命令 | 含义 |
---|---|
:w //write | 将buffer里面的内容写入文件,即保存文件 |
:q //quit | 退出 |
:q! | 不保存退出 |
:wq | 保存退出 |
命令 | 含义 | 备注 |
---|---|---|
h | 往左移动一个字符 | 相当于小键盘方向键,向左 |
j | 往下移动一个字符 | 相当于小键盘方向键,向下 |
k | 往上移动一个字符 | 相当于小键盘方向键,向上 |
l | 往右移动一个字符 | 相当于小键盘方向键,向右 |
命令 | 含义 | 备注 |
---|---|---|
[n]- | 往上移动n行 | 不太常用,了解即可 |
[n]+ | 往下移动n行 | 不太常用,了解即可 |
:[n] 或 [n]G | 移动到第n行 | :[n]这个建议记一下 |
命令 | 含义 | 备注 |
---|---|---|
gg | 移动光标到第一行 | 一局游戏打出“gg”,表示再来一把。所以是移动到文件开头 |
G | 移动光标到最后一行 | 这个也比较常用,要记住它。 |
命令 | 含义 | 备注 |
---|---|---|
^ | 移动光标到当前行的第一个非空白字符处 | 更常用一些 |
0 | 移动光标到当前行的行首 | 知道即可 |
$ | 移动到行尾 | 谈钱伤感情,所以谈钱就表示行结束了,行尾 |
w //word | 光标移动到下一个单词的词首 | 多练强行记住,很有用 |
b //back | 光标移动到上一个单词的词首 | 多练强行记住,很有用 |
命令 | 含义 |
---|---|
t) //to | 向后查找,将光标移动到)的前一个字符 |
f) //find | 向后查找,将光标移动到) |
T" //TO的反向 | 向前查找,将光标移动到"的后一个字符 |
F" //FIND的反向 | 向前查找,将光标移动到" |
命令 | 含义 |
---|---|
x //excise | 删除一个字符 |
db //delete back | 从光标的下一个元素删除到上一个单词的词首(上一个单词的词首会被删除) |
dw //delete word | 从光标元素开始删除到下一个单词的词首(下一个单词的词首不会被删除) |
diw //delete inside word | 删除光标所在的整个单词,但不包括单词周围的空格。 |
di" //delete inside quotes | 删除光标所在""范围内的所有内容 |
dd //delete delete | 删除当前这一行 |
[n]dd | 删除当前和下面的(n-1)行,共n行被删除 |
:[m],[n]d | 删除文本的[m,n]行 |
d^ | 删除到行首(不删除光标位置的字符) |
d$ | 删除到行尾(删除光标位置的字符) |
df) | 向后删除直到),同时删除)和光标位置字符 |
dt) | 向后删除直到)同时删除光标位置字符,但不删除) |
dT" | 向前删除直到“但不删除”和光标位置字符 |
dF" | 从光标位置元素(不包含)开始向前直到“(包含)全部删掉 |
命令 | 含义 | 备注 |
---|---|---|
p //paste | 粘贴到下一行(如果复制的是行的话) | 如果复制的不是行,那就粘贴到光标后面 |
P //PASTE的反向 | 粘贴到上一行(如果复制的是行的话) | 如果复制的不是行,那就粘贴到光标的前面 |
u | 撤销(undo) | 相当于Windows中的Ctrl + Z |
Ctrl + r | 重做(redo) | 相当于Windows中的Ctrl + Shift + Z |
命令 | 含义 |
---|---|
cc 或 S //change | 删除当前行,并进入编辑模式 |
[n]cc 或 [n]S | 删除n行,并进入编辑模式 |
cw //change word | 删除一个单词,并进入编辑模式 |
[n]cw 或 c[n]w | 删除n个单词,并进入编辑模式 |
c^ | 删除到行首,并进入编辑模式 |
c$ | 删除到行尾,并进入编辑模式 |
ct) | 删除到),并进入编辑模式 |
ct" | 删除到",并进入编辑模式 |
c[n]G | 删除到第n行,并进入编辑模式 |
cG | 删除到文件末尾,并进入编辑模式 |
ci" | 当光标处在""当中时,删除整个""内容并进入编辑模式 |
ciw | 删除光标所在的整个单词,但不包括单词周围的空格,并进入编辑模式 |
命令 | 含义 | 备注 |
---|---|---|
yy //yank yank | 复制当前行(包括换行符) | yyp可实现快速复制当前行到下一行,非常常用! |
[n]yy | 复制从当前行开始的下面n行,包括当前行自身 | 一共复制了n行 |
:[m],[n]y | 复制[m,n]行 | 长命令,输入命令后要按回车执行(常用!) |
yw //yank word | 复制直到下一个单词词首 | 包含光标位置字符,不包含下一个单词的词首 |
yf) | 复制到) | 包含光标位置字符,也包含) |
命令 | 含义 | 备注 |
---|---|---|
/pattern | 从光标所在位置向后查找匹配pattern的内容,pattern为正则表达式 | /pattern指令输入后要回车表示开始搜索 |
?pattern | 从光标所在位置向前查找匹配pattern的内容,pattern为正则表达式 | ?pattern指令输入后要回车表示开始搜索 |
n //next | 移动到下一个匹配项 | 上面指令回车后,才可以开始移动 |
N //NEXT的反向 | 移动到上一个匹配项 | 上面指令回车后,才可以开始移动 |
自动代码对齐:gg = G
使用 gi
命令快速返回到上次插入文本的地方并进入插入模式。
[[
和 ]]
:移动到代码的上一个或下一个函数(假设每个函数由大括号定义并且大括号会换行)。
使用 ~
可以改变当前光标字符的大小写,或者在可视模式中选择多个字符后按 ~
来批量改变大小写。
使用 q:
打开命令行窗口,这样可以浏览历史命令并进行编辑。这对于修改或重用长命令特别有用。然后再q会退出
使用 %
可以在匹配的括号之间跳转,如 (
和 )
,{
和 }
,或 [
和 ]
。这在编程时检查代码块的开始和结束非常有用。
复制当前行到下一行:"yyp"
删除当前行:dd
撤销和重做:u表示撤销,重做Ctrl + r
移动到文件开头和末尾:gg移动到文件开头、G表示移动到文件的末尾
移动到当前行首和行尾:0或者表示移到到行首,$移动到末尾(移到行首第一个非空字符,0是真正意义上的行首)
全文清空:推荐ggdG,也可以用ggcG,这样会直接进入编辑模式。
光标快速到达某一行开头:推荐执行长指令:n
回车,表示到达某行的开头
光标快速到达某一行末尾:推荐执行长指令:n
回车,表示到达某行的开头,然后再按$
表示跳到行尾
清空""内的内容:推荐将光标移到""内部,然后使用ci"
清空()内的内容:推荐将光标移到()内部,然后使用ci(
或者ci)
从当前光标字符开始,删除到目标字符:
推荐使用指令df目标字符
这个指令的好处在于,你可以直接记住:该指令的删除包含光标字符以及目标字符!
复制整个函数的代码到下面,这个操作实际上就是复制[m, n]内的代码,然后粘贴到下面。具体的操作步骤如下:
先复制[m, n]内的代码,使用长指令:m,ny
回车复制
然后将光标移动到函数体的}行首,}一般会单独占一行,所以可以直接使用长指令:n
回车跳转
按p将内容复制到下面
注:如果你希望整个函数复制到上面,那就跳到函数声明行的行首,然后按P
删除[m, n]行内的代码,推荐使用长指令:m,nd
回车删除
快速单行注释,释放单行注释:快速到达某行的开头或末尾,添加//或删除//,你可以自行测试一下。
搜索[m,n]行的某个内容,然后全部替换。推荐使用长指令:m,ns/旧字符串/新字符串/g
全文替换。推荐使用长指令:%s/旧字符串/新字符串/g
。这些替换如果希望能够逐个选择,可以添加标记/c
。
自动代码对齐:gg = G
,跳回上一次编辑的位置,使用 gi
命令。
使用 ~
可以改变当前光标字符的大小写,或者在可视模式中选择多个字符后按 ~
来批量改变大小写。
快速多行注释,方式有很多,但推荐以下方式,更简单易操作:
先跳到希望多行注释的起始行的行首,这可以使用长指令:n
回车来完成。
Ctrl + V: 进入竖选视图模式。
移动光标选中要注释的范围行。
输入大写字母"I"(i的大写,一定要大写)。
视图模式输入大写I将进入插入模式
此时输入的任何文本将在每行选中的同一列位置插入
这样就能够实现多行注释了。
输入注释的格式//
按退出键位ESC
快速释放多行注释:
先跳到希望释放的多行注释的起始行的行首,这可以使用长指令:n
回车来完成。
Ctrl + v: 进入竖选视图模式。
移动光标选中要释放注释的范围行,选中所有的//
。
直接按d
将所有的//
全部删除。
x
1$ vimtutor
2$ vimtutor zh_CN # 中文版
3$ vimtutor us_en # 英文版