linux 介绍

Linux 是一种开源的类 Unix 操作系统,广泛应用于服务器、个人电脑和嵌入式系统,因其稳定性和灵活性而受到欢迎。

Linux的特点:

  • 开源:Linux 的源代码是公开的,任何人都可以自由获取、修改和分发,这使得它拥有庞大的开发者社区,推动了其不断发展和创新。
  • 稳定性:Linux 被认为是一个性能稳定的操作系统,尤其适合用于服务器环境。
  • 多样性:Linux 有许多不同的发行版,如 Ubuntu、Red Hat、CentOS、Debian 等,每个发行版都有其特点和适用场景
  • 安全性:Linux 系统通常被认为比其他操作系统更安全,尤其是在服务器和网络环境中,因其权限管理和用户管理机制较为严格。

其中linux与windows最大的区别之一就是windows是开箱即用的能用纯ui使用的,但用linux你就不得不与命令行打交道,
但好消息是linux提供了比windows乐色一样的命令行强大的多的命令行工具帮住我们管理文件、目录、软件、配置和系统。

查询命令的使用方法

你不可能完整的记住所有命令的使用方法和参数,最好的方法就是知道如何去查询命令该如何使用,以下介绍两种查询方法

{command} --help:

大多数命令都会提供一个--help的flag项,如果你不清楚一个命令有什么用,那就大胆的--help你就能得到你需要的细节

例如对ls进行查询:

1
ls --help

输出:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
用法:ls [选项]... [文件]...
列出 <文件>(默认为当前目录)的信息。
如果既没有指定 -cftuvSUX 中任何一个,也没有指定 --sort,则按字母排序项目。

长选项的必选参数对于短选项也是必选的。
-a, --all
不要隐藏以 . 开头的项目
-A, --almost-all
列出除 . 及 .. 以外的所有项目
--author
与 -l 同时使用时,列出每个文件的作者
-b, --escape
以 C 风格的转义序列表示不可打印的字符
--block-size=大小
与 -l 同时使用时,打印大小前将其除以 <大小>;
例如:"--block-size=M";参见下方的 <大小> 格式
-B, --ignore-backups
不要列出以 ~ 结尾的项目
-c
与 -lt 一起使用时:按照 ctime 排序,并显示 ctime
(文件状态信息最后修改的时间);
与 -l 一起使用时:显示 ctime 并按照名称排序;
其它情况:按照 ctime 排序,最新的最前
-C
逐列列出项目
--color[=何时]
指定 <何时> 使用彩色输出;更多信息请见下文
-d, --directory
列出目录本身,而不是目录的内容
-D, --dired
产生适合 Emacs 的 dired 模式使用的输出
-f
等于 -a -U
-F, --classify[=何时]
指定 <何时> 在项目后追加指示符号(*/=>@| 中的一个)
--file-type
类似 -F,但不追加 "*" 字符
--format=关键字
across,horizontal (-x), commas (-m), long (-l),
single-column (-1), verbose (-l), vertical (-C)
--full-time
等于 -l --time-style=full-iso
-g
类似 -l,但不列出所有者
--group-directories-first
将目录排在文件前面
-G, --no-group
使用长列表格式时,不输出组名
-h, --human-readable
同时使用 -l 或 -s 时,将大小表示为 1K 234M 2G 等
--si
类似,但是使用 1000 的幂,而不是 1024
-H, --dereference-command-line
跟随命令行中列出的符号链接
--dereference-command-line-symlink-to-dir
跟随命令行中列出的、指向目录的符号链接
--hide=模式
隐藏符合 shell <模式> 的项目
(-a 或 -A 使此选项失效)
--hyperlink[=何时]
指定 <何时> 使用超链接显示文件名
--indicator-style=关键字
指定在项目名称后追加的指示符号的风格:none(默认)、slash(同 -p)、
file-type(同 --file-type)、classify(同 -F)
-i, --inode
显示每个文件的索引编号(inode 号)
-I, --ignore=模式
隐藏符合 shell <模式> 的项目
-k, --kibibytes
显示文件系统使用量时,默认使用 1024 字节的块大小;
只用于 -s 和每个目录的总计
-l
使用长列表格式
-L, --dereference
当显示符号链接的文件信息时,显示符号链接指向
的文件的信息,而非符号链接本身的信息
-m
所有项目以逗号分隔,并填满整行行宽
-n, --numeric-uid-gid
类似 -l,但列出用户和组的 ID 号
-N, --literal
输出不加引号的项目名称
-o
类似 -l,但不列出有关组的信息
-p, --indicator-style=slash
对目录追加 "/" 作为指示符号
-q, --hide-control-chars
以 "?" 字符代替不可打印的字符
--show-control-chars
原样显示无法打印的字符;
这是默认行为,除非程序名是 "ls" 且在终端中进行输出
-Q, --quote-name
在项目名称两侧加上双引号
--quoting-style=关键字
使用指定的加引号方式显示项目名称:
literal、locale、shell、shell-always、
shell-escape、shell-escape-always、c、escape
(该选项的优先级高于 QUOTING_STYLE 环境变量)
-r, --reverse
排序时逆序排列
-R, --recursive
递归地列出子目录
-s, --size
显示给每个文件分配的大小,单位为块
-S
根据文件大小排序,最大的最前
--sort=关键字
按照 <关键字> 而非默认值 "名称 (name)" 进行排序:
none(同 -U)、size(同 -S)、time(同 -t)、
version(同 -v)、extension(同 -X)、name、width
--time=关键字
选择用于显示或排序的时间戳;
访问时间(同 -u):atime、access、use;
元数据变更时间(同 -c):ctime、status;
修改时间(默认):mtime、modification;
创建时间:birth、creation;
和 -l 同时使用时,<关键字> 指定要显示的时间类型;
和 --sort=time 同时使用时,按照 <关键字> 进行排序(最新的最前)
--time-style=时间风格
使用 -l 时显示的时间/日期格式;参见下文 <时间风格>
-t
按时间排序,最新的最前;参见 --time
-T, --tabsize=列数
指定制表符宽度为 <列数>,而非默认的 8
-u
与 -lt 同时使用时:显示访问时间且按访问时间排序;
与 -l 同时使用时:显示访问时间但按名称排序;
其他情况:按访问时间排序,最新的最前
-U
不对目录项目进行排序
-v
对文本中的数字(或版本号)进行自然排序
-w, --width=列数
设置输出宽度为 <列数>。0 表示无限制
-x
逐行列出项目而不是逐列列出
-X
按照扩展名的字母顺序排序
-Z, --context
输出每个文件的所有安全上下文信息
--zero
以 NUL 字符而非换行结束每个输出行
-1
每行只列出一个文件
--help
显示此帮助信息并退出
--version
显示版本信息并退出

<大小> 参数是一个整数,后面可以跟一个单位(例如:10K 指 10*1024)。
可用的单位有 K、M、G、T、P、E、Z、Y、R、Q(1024 的幂),
以及 KB、MB、...(1000 的幂)。
也可以使用二进制前缀:KiB=K、MiB=M,以此类推。

<时间风格> 参数可以是 full-iso、long-iso、iso、locale,或者 +格式。
<格式> 的解析方式同 date(1)。如果 <格式> 是 格式1<换行符>格式2 的话,
则 <格式1> 将应用于时间较久远的文件,<格式2> 将应用于时间较近的文件。
<时间风格> 如果带有 "posix-" 前缀,则它只会在区域设置非 POSIX 时生效。
另外,可以使用 TIME_STYLE 环境变量设置默认使用的风格。

<何时> 参数的默认值是 "always",也可以设为 "auto" 或 "never"。

使用颜色来区分文件类型的功能默认禁用,也可以使用 --color=never 禁用。
若使用 --color=auto 选项,ls 只在标准输出连接至终端时才生成颜色代码。
LS_COLORS 环境变量可以改变颜色设置。可以使用 dircolors(1) 命令来设置它。

退出状态:
0 表示正常,
1 表示小问题(例如:无法访问子目录),
2 表示严重问题(例如:无法使用命令行参数)。

请向 <[email protected]> 报告软件错误。
GNU coreutils 的主页:<https://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<https://www.gnu.org/gethelp/>
完整文档 <https://www.gnu.org/software/coreutils/ls>
或者在本地使用:info '(coreutils) ls invocation'

man {command}:查看完成的使用手册

man命令是manual的缩写,用来查看各种命令、函数和配置的完整手册,一般会比--help查到的信息更加完整

使用方法:man [选项] [节号] 命令

主题:

  • -f:显示与指定关键字相关的手册页面。
  • -k:搜索手册页中与关键字匹配的条目。
  • -a:显示所有匹配的手册页面。
  • -w:仅显示手册页的位置,而不显示其内容。

常见的节号包括:

  1. 用户命令
  2. 系统调用
  3. C库函数
  4. 设备和特殊文件
  5. 文件格式和约定
  6. 游戏和演示
  7. 杂项
  8. 系统管理命令

例如:

1
2
3
4
5
6
7
8
# 查看ls的用法
man ls

# 要查看 C 语言标准库函数 printf 的手册页面,可以执行:
man 3 printf

# 要搜索包含特定关键字的手册页面条目,可以使用 -k 选项:
man -k keyword

man的显示会调用分页器,其的具体使用教程会在查看内容部分讲解,此处只需要知道man的用法即可

文件与目录相关命令

ls:列出目录命令

ls的语法是ls [选项] [目录/文件]

最核心的显示格式选项:

  • -l(长格式)是使用频率最高的选项,输出包含权限、链接数、所有者、组、大小、修改时间和文件名。

  • -h(人类可读)必须配合-l或-s使用,把字节数转成1K、234M这类易读单位。

  • -a/-A控制隐藏文件:-a显示所有包括.和..;-A显示隐藏文件但不显示这两个特殊目录。

  • -F/--classify在文件名后追加类型指示符:目录加/,可执行文件加*,符号链接加@,管道加|。

排序与时间相关:

  • -t按修改时间排序,最新的在前。-S按文件大小排序,大的在前。-r反转排序顺序。-X按扩展名排序。

  • -c配合-lt时按状态变更时间排序并显示;-u配合-lt时按访问时间排序并显示。

递归与目录处理:

  • -R递归列出所有子目录内容,不推荐使用,更推荐使用tree命令,能更直观的展示目录层级。

信息增强选项:

  • -i显示inode号(linux文件或目录唯一的标识码)。
  • -g让目录排在文件前面。
  • -L对符号链接显示其指向目标的信息,而非链接本身。

常用组合速查:

组合 效果
ls -lh 详细列表+易读大小(最常用)
ls -lht 详细列表+易读大小+按时间排序
ls -la 详细列表+包含隐藏文件
ls -lha 上述两者的结合

pwd: 当前目录命令

这是一个相当简单的命令,就两种使用方法

  • pwd/pwd -L(Logical):显示环境变量的逻辑目录
  • pwd -P(Physical):解析符号链接,显示真实的底层的物理目录

cd: 切换目录命令

cd的语法:cd [目录]

参数也和pwd一样只有-L/-P,且用法一致,-P会额外将pwd当前目录重置为真实的物理目录

常见的特殊参数:

  • 不带参数/cd ~:直接回到当前用户的home目录
  • ..:回到上一级目录
  • -: 回到上一个工作目录,在两个工作目录间切换成很常用
  • ~{username}: 回到某个用户的home目录