Linux基础知识 - Go语言中文社区

Linux基础知识


第一章


1.Linux是一套免费使用自由传播类UNIX操作系统,它可以基于Intel x86系列处理器以及Cyrix,AMD的兼容芯片的计算机上运行。

Linux是一个诞生于网络、成长于网络且成熟于网络的奇特的操作系统,是一个由全世界的电脑高手们自愿地自制出的,类似于Unix风格的操作系统。

POSIX 表示可移植操作系统接口(Portable Operating System Interface)

POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。


2.Linux的诞生和发展与UNIX系统Minix系统InternetGNU计划密不可分,1971年,Unix操作系统诞生于AT&T公司的贝尔实验室。它的产生与美国国防计划署的MULTICS项目密切相关。

Unix的出现源于贝尔实验室的两位软件工程师Ken Thompson(肯.汤姆森)Dennis Ritchie(丹尼斯.里奇)。在Linux出现之前,Unix操作系已经得到广泛的应用。Linux和Unix的设计有很多相似之处。

Unix系统内核短小精悍,但性能优异。在20世纪70年代,源代码公开,因此,它的应用范围变得十分广泛,遍布与科研院所、高校、工作站、PC、服务器等。Unix具有高安全性与稳定性、良好的伸缩性、强大的TCP/IP支持功能、良好的可移植性。Unix的优秀的设计思想和理念深深影响着Linux的开发。

Minix系统:20世纪70年代,Unix系统是免费的。但随着它的广泛应用,它由一个免费软变成一个商用软件。因此,需要花费高昂的源码许可证费用才能获得Unix系统的源代码,并且Unix对硬件性能的要求也较高。

1987年,荷兰教授Andrew S.Tanenbaum(安德鲁.坦尼鲍姆)利用业余时间开发了一个微型的Unix系统-Minix,主要用于教学和研究。

Minix系统:与Unix系统不同,它对硬件的要求不高,可以运行在廉价的PC上。Linux就是在Minix的基础上开发和设计的。

Internet:20世纪80年代中期,Internet形成,所有用户可以通过互联网相互交流和获取信息。

无数的程序员通过互联网参与了Linux的技术改进与测试工作。

GNU计划:Linux的发展史和GNU计划(GNU Is Not Unix)紧密联系在一起。Linux内核从一开始就大量使用了来自麻省剑桥自由软件基金会的GNU的软件。20世纪80年代,自由软件运动兴起。

自由软件:任何人都有共享和修改自由软件的自由。

任何人有权取得、修改和重新发布自由软件的源代码,并且规定在不增加附加费用的条件下可以得到自由软件的源代码。

“自由软件”的独特之处在于不受任何商品化软件的版权制约,全世界都能自由使用。


3.GNU计划:自由软件“四大自由”即运行软件的自由获得源代码修改软件的自由发布软件的自由发布后修改软件的自由。GNU计划是自由软件基金会的一个项目,该项目的目标是开发一个自由的类Unix操作系统,包括内核、软件开发工具和各种应用程序。

4.Linux的诞生:起源于一个芬兰赫尔辛基大学计算机系的学生——芬兰人(李纳斯·托沃兹

Linux操作系统特点:开放性,高效性,遵循POSIX标准,多用户多任务,良好的用户界面,X-Window图形界面,设备独立性,提供丰富的网络功能,支持Internet,文件传输,远程访问,可靠的系统安全性, 良好的可移植性。

5.设备独立性:是指操作系统把所有外部设备统一当作成文件来看待。

6.Linux系统组成:基本组成包括Linux内核Linux ShellLinux文件系统Linux应用程序等几部分。

Linux版本

内核版本:(kernel)版本号:3.19

发行版本:(distribution)=内核+tools

常见套件:Red Hat Linux,Red Flag Linux,SuSE Linux,Fedora Linux,Dedian Linux,Ubuntu

第二章

1.什么是虚拟机?虚拟机是指通过软件来模拟具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。

第三章

1.操作系统的接口分为用户接口程序接口两大类。用户接口中又包括命令行用户接口图形用户接口

2.Shell命令接口由一组命令命令解释程序Shell组成。

3.X Window是Linux系统的视窗系统,著名的桌面环境GNOMEKDE也都是以X Window系统为基础建构成的。X Window系统的核心概念,是客户/服务器架构。只要组成成分是X Server、X Client和X Protocol,即X服务器、X客户端和X协议。

4.X Window系统组成

X Server:是X系统的核心,其运行在有显示设备的主机上,是服务器端。

X Client:凡是需要在屏幕上进行图形界面显示的程序都可看做X Client,其是以请求的方式让X Server管理图形化界面。

X Protocol:即X协议,它是X Client和X Server之间通信时所遵循的一套规则,规定了通信双方交互信息的格式和顺序。

分区命名

Linux系统使用字母和数字的组合来指代磁盘空间。

命名方案基于文件的,格式为/dev/xxyN。

/dev/:所有设备文件所在的目录名。

xx:分区名的前两个字母标明分区所在设备的类型。hd(IDE磁盘Integrated Drive Electronics )或sd(SCSI磁盘Small Computer System Interface )

y:标明分区所在的设备。/dev/hda (第一个IDE磁盘)

N:代表分区。主分区或扩展分区用数字1-4表示,逻辑分区从5开始。例如/dev/hda3;/dev/sdb5

系统调用接口是由一系列的系统调用函数构成的“特殊”接口。程序员或应用程序通过这个特殊的接口取得操作系统内核提供的服务,它是专为程序员编程时使用,是应用程序与系统内核通讯的桥梁。

API(Application Programming Interface),即应用程序接口。通过该接口,程序员可以间接地访问到系统硬件和操作系统资源。

第四章

1.ls命令 ls -l /etc  | head -5

功能:列出当前目录下的所有内容。格式:ls选项 文件名或目录名

选项:

-s显示每个文件的大小

-S按文件的大小排序

-a显示目录中全部文件,包括隐藏文件

-l使用长列表格式,显示文件详细信息

-t按文件修改的时间排序显示

黑:普通文件。绿:可执行文件。红:代表tar包文件,即Linux下的压缩打包文件。蓝:目录文件。水红:图像文件。青:链接文件。黄:设备文件。

drwxr-xr-x  2  ubuntu  ubuntu  100  2012-10-24  Desktop了解7部分含义(P60)

第一行“total 4”:当前目录下文件的总和为4KB。

每一行可以分为7部分来解释(第二行开始)。

“drwxr-xr-x”的含义

第一个字符有3中情况,“-”表示普通文件,d代表目录,b代表设备文件。

后面的9个字符每3个字符为一组,分别代表文件所有者、文件所有者所在的用户组、其他用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限。

“2”:代表当前目录下的目录文件的数目。

“ubuntu”:代表这个文件(目录)的属主是用户“ubuntu”。

“ubuntu”:代表这个文件(目录)所属的用户组为组ubuntu。

“100”:代表文件(目录)的大小为100字节。

“2012-10-24 15:17”:文件(目录)修改时间。

“Desktop”:代表文件(目录)的名字。

目录:/root:启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。

/home:存储普通用户的个人文件 。

/bin:执行文件(二进制)的目录

/sbin :可执行程序的存放目录,但大多存放涉及系统管理的命令。只有root权限才能执行

/usr:应用程序存放目录

/lib :支持位于/bin和/sbin下的二进制文件的库文件

/dev :设备文件的存放目录

/etc :配置文件的存放目录

/var:放置系统执行过程中经常变化的文件


2.cd命令

功能:转换用户所在的目录。格式:cd路径名(Cd ..代表回退到上一层)“..代表上层目录”、“~代表当前用户的宿主目录”、“/代表回到根目录”、“-代表前一目录”

3.pwd命令

功能:显示当前工作目录的绝对路径。格式:pwd

4.mkdir命令

功能:创建一个新目录。格式:mkdir选项 目录名

-m权限 对新建目录设置存取权限。权限777,744,755等

-p 一次性建立多级目录,即以递归形式建立目录

rmdir命令

功能:删除一个空目录

格式:rmdir [-p]目录名

5.touch命令

功能:创建一个空文件。格式:touch文件名

6.cat命令

用法1:功能:显示某文件的内容。格式:cat 选项 文件名

-n对文件中所有的行进行编号并显示行号

-s将连续的空行压缩为一个空行

在一个命令中执行显示多个文件的内容,可以用“;”隔开。cat 文件名1;文件名2

用法2:功能:重复刚刚输入的行。即显示标准输入内容。按Ctrl+D退出新文件的制作。

用法3:功能:制作一个新文件。格式:cat >新文件名

用法4:功能:cat实现文件的合并。格式:cat 文件名1 文件名2 > 文件名3

用法5:功能:给文件追加内容。格式:cat 文件名2  >> 文件名1

7.cp命令

功能:实现文件的复制。格式:cp选项 源文件 目标

(1)cp –r    /home/ubuntu       /home/ubuntu1

(2)cp –r   /home/ubuntu/      /home/ubuntu1

(3)cp –r /home/ubuntu/*     /home/ubuntu1

8.rm命令

功能:删除指定文件。格式:rm选项 文件或目录名

-i以安全询问的方式进行删除操作

-r/R递归处理,将指定目录下的所有文件及子目录一并处理

-f强制删除文件或目录

-v显示指令执行过程

-d直接把欲删除的目录的硬连接数据删成,删除该目录

rm命令可以结合通配符“*”实现删除一类文件。

rm命令可以使用一条语句一次性删除多个文件或目录,文件名或目录名之间用空格隔开。

9.mv命令

功能:实现文件的转移。格式:mv文件名 路径名

(1)mv /home/ubuntu/dir /home/ubuntu1

(2)mv /home/ubuntu/dir/ /home/ubuntu1

(3)mv /home/ubuntu/dir/* /home/ubuntu1

功能:实现文件夹或文件的重命名格式:mv目录名或文件名 新目录名或文件名

(1)mv /home/picture/pict.png /home/picture/pict1.png

(2)mv /home/picture  /home/picture1

10.chmod命令

功能:修改文件的权限和文件的属性。格式:chmod 文件使用者+/-/=权限类型 文件1…

文件使用者有四种类型:u:文件主,文件或目录的所有者,g:文件主所在组群的用户,o:其他用户,a:所有用户。

操作符号包括三种类型:+:代表增加权限,-:代表删除取消权限,=:代表赋予给定的权限,并取消其他权限。

权限类型包括三种基本类型:r:代表只读权限,w:代表写权限,x:代表可执行权限。

(1)chmod a=rwx filename

          chmod 777 filename

(2)chmod ug=rwx,o=x filename

          chmod 771 filename

11.压缩解压命令

1.压缩文件: bzip2文件名1 [文件名2] …

解压文件:bunzip2文件名1 [文件名2] …

多个文件的压缩,文件之间用空格隔开。

2.压缩格式:gzip [-选项] 文件名

解压gzip -d hello.txt

3.解压.zip文件。它能够将经过winzip压缩的文件进行解压操作。

格式:unzip [选项] 文件名.zip

-d 将文件解压到指定目录中

-v 查看文件目录列表但不解压

-n 不覆盖原来已经存在的文件

-o 以默认方式覆盖已经存在的文件

举例:将当前目录的file.zip文件进行解压 unzip file.zip

举例:只查看压缩文件里的文件目录,但不解压。unzip–v file.zip

举例:将file.zip文件解压到/home/ubuntu/dir目录下。 unzip –n file.zip –d /home/ubuntu/dir

zcat命令专门针对.gz后缀的压缩文件进行查看。

bzcat是针对.bz2后缀的压缩文件进行查看。

tar命令

功能:对文件或目录进行打包备份或者解包操作。格式:tar–选项备份包的文件名要打包或解包的文件或目录

-c创建新的打包文件

-x抽取.tar文件里的内容

-z打包后直接用gzip命令进行压缩或解压文件

-j打包后直接用bzip2命令进行压缩或解压文件

-t查看一个打包文件里的文件目录

-f使用文件或设备

-v在打包压缩或解包解压后将文件的详细清单显示出来

举例:将当前目录下的文件hell.txt、number.txt打包后压缩成new.tar.gz。

tar–czf new.tar.gz hell.txt number.txt

举例:将当前目录下的文件hell.txt、number.txt打包后压缩成new.tar.bz2

tar–cjf new.tar.bz2 hell.txt number.txt

解压缩

-xzf   -xjf

12.mount命令

功能:挂载。格式:mount–t vfstype  –o选项  device dir

举例:挂载U盘

对Linux系统而言,把U盘当做SCSI设备对待。

插入U盘之前,应先用fdisk –l或more /proc/partitions命令查看系统的硬盘和硬盘分区情况。 fdisk -l

插入U盘后,再用fdisk –l或more /proc/partitions命令看系统的硬盘和硬盘分区情况。

会看到系统多了一个SCSI硬盘/dev/sdx(例如sdd)和一个磁盘分区/dev/sdx1 (例如sdd1) ,即为即将挂载的U盘。

建立一个目录用来作挂载点。

mkdir–p /mnt/usb

使用挂载命令如下:

mount–t vfat /dev/sdd1 /mnt/usb

2.对Linux系统而言,USB接口的移动硬盘也是当做SCSI设备。

插入移动硬盘之前,应先用fdisk–lmore /proc/partitions查看系统的硬盘和硬盘分区情况。fdisk -l

接好移动硬盘后,再用fdisk–l或more /proc/partitions查看系统的硬盘和硬盘分区情况。

可以发现多了一个SCSI硬盘/dev/sdx和它的两个磁盘分区/dev/sdx1和/dev/sdx2,其中/dev/sdx5是/dev/sdx2的逻辑分区。

建立目录用来建立挂载

mkdir–p /mnt/usbhd1

mkdir–p /mnt/usbhd2

用mount命令建立挂载

mount–t ntfs /dev/sdc1 /mnt/usbhd1

mount–t vfat /dev/sdc5 /mnt/usbhd2

3.功能:卸载一个文件系统,它的使用权限是超级用户。

格式:umount <挂载点|设备>

举例:umount  /mnt/usb

13.关机启用命令

1)shutdown命令 功能:安全关机 格式:shutdown 选项 时间 警告信息

-h:将系统服务停掉然后安全关机

-r:将系统服务停掉然后安全重启

-k:不真正关机,只是发出警告信息

-t:在规定的时间后关机

2)halt命令 功能:关机 格式:halt 选项(常用-f,用于控制强行关机)

3)poweroff命令 功能:关机 格式:poweroff

4)reboot命令 功能:重新启动系统 格式:reboot

5)init命令 功能:切换Ubuntu的运行级别 格式:init 运行级别

init共有7个运行级别

0-停机

1-单用户模式

2-多用户,没有NFS

3-完全多用户模式(标准的运行级)

4-没有用到

5-X11(x window)

6-重新启动

init进程是系统启动进程,它是系统启动后的由内核创建的第一个进程,进程号为1。

举例:系统在22:00关机

shutdown–h 22:00

举例:系统在1min后重启,并通知用户进行保存操作。

shutdown–r +1 “system will be reboot after 1 minute”


14.su命令:转换用户sudo命令:超级管理员的身份执行某种操作:sudo passwd root

重新锁定root用户sudo passwd –l root

useradd命令:创建一个新用户adduser zhang  passwd命令:修改用户密码

15.ifconfig命令功能:查看IP地址。 ifconfig eth0 192.168.0.1 netmask 255.255.255.0

ping命令功能:测试网络是否畅通。ping -c5 127.0.0.1

16.more命令和less命令

功能:对文件内容或者查询结果分屏显示

格式:more选项 文件名 less 选项 文件名

Ls -l /bin | more

第五章

1.目录是文件系统维护所需的特殊文件,它包含了一个项目列表。一个计算机系统中有成千上万的文件,为了便于对文件进行存取和管理,计算机系统建立文件的索引,即文件和文件物理位置之间的映射关系,这种文件的索引称为文件目录

文件系统是操作系统用于明确磁盘或分区上的文件的存储方法和数据结构,即文件在磁盘上的组织方法。

文件系统由三部分组成:与文件管理有关的软件、被管理的文件,以及实施文件管理所需数据结构。

2.Linux文件系统架构

1)设备驱动程序

2)实际文件系统

3)虚拟文件系统

4)缓存机制

3.Ext2的核心是两个内部数据结构,即超级块i结点

4.Ubuntu的目录结构 (详细参考P111)

/:Linux文件系统的根目录

/bin:存放系统中的最常用的可执行文件(二进制文件)。系统所需要的那些命令位于此目录,也是最小系统所需要的命令;例如 ls、cp、mkdir等命令。功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。

/boot:存放Linux内核和系统启动文件,包括Grub、lilo启动程序。

/dev:存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等。

/etc:存放系统所有配置文件,例如passwd存放用户账户信息,hostname存放主机名等。/etc/fstab实现开机自动挂载,在里面写入一些分区的信息,就能实现开机挂载分区。

/home:用户主目录的默认位置。

/lib:存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件。

/media:即插即用型存储设备的挂载点自动在这个目录下创建。例如USB盘系统自动挂载后,会在这个目录下产生一个目录;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,存放临时读入的文件。

/mnt:此目录通常用于作为被挂载的文件系统的挂载点。

/opt:作为可选文件和程序的存放目录,有些软件包也会被安装在这里,也就是自定义软件包;有些用户自己编译的软件包,就可以安装在这个目录中。

/proc:存放所有标志为文件的进程,它们是通过进程号或其它的系统动态信息进行标识。例如cpu、硬盘分区、内存信息等存放在这里。

/root:根用户(超级用户)的主目录。

/sbin:超级权限用户root的可执行命令存放地。

/srv:/tmp:临时文件目录,有时用户运行程序的时候,会产生临时文件。/var/tmp目录和这个目录相似。

/usr:用于存放于系统用户直接有关的文件和目录,如应用程序及支持系统的库文件。

/var:通常用于存放长度可变的文件,例如日志文件和打印机文件。

存放系统所提供的服务数据。

绝对路径:指文件的准确位置且以根目录为起点。

相对路径:相对路径是相对于用户当前的位置的一个文件或目录的位置。

5.挂载与卸载文件系统(P113全看)

文件系统

文件系统是文件存放在磁盘等存储设备上的组织方式。Linux系统能支持多种目前流行的文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660等。

Linux中文件是如何保存的?

硬盘先进行分区,然后进行格式化称为文件系统,格式化后才能够存储资料。

格式化的过程就是将硬盘分割为一个一个的小单位(block),并依序编号。

block是资料存储的最小单位,也就是存储文件的地方。默认情况,其大小是4K。

如果一个文件是13k,那么这个文件就会占用4个block

当一个分区被格式化的时候,会产生inode编号,这些编号决定了这个分区可以存储多少个文件,这是因为一个文件或者是目录都会对应到一个inode。

这些inode会对应到一个表,这个表称为:inode table。

inode table中记录了这个inode所对应的文件的元数据(metadata)。

元数据的主要作用用来描述资料的属性

这些属性包括文件类型,权限、链接、UID、GID、文件大小、时间、 pointer值等,这些只是用来描述文件的属性,而不是文件的内容。

如果要存取文件的内容,必须靠属性中的pointer的值,才能存取到文件的内容,pointer就是指向这个属性里面的值记录了这个文件用到了那几个block。

所以存取一个文件前,所以系统会先找到这个文件所对应的inode-no,然后读取inode table,然后根据pointer的值得知这个文件存储在那几个block中。才能存取这个文件。

当我们存取文件的时候,我们是靠文件的名称来存取这个文件的,但是电脑看不懂文件名称,必须靠inode才能找到这个文件。

第六章

1.vi编辑器的工作模式:命令模式插入模式转义模式。

三种模式转换方式:P128

在命令模式下,输入的任何字符vi都把它当作相应的命令执行。因此,输入的字符并不在屏幕上显示。

命令模式用于完成各种文本的修改工作。例如,可以对文件内容中的字符串进行剪切、复制、粘贴、替换等。

vi启动之后首先进入命令模式,用户可以使用编辑命令进入插入模式,进行文本的编辑。

在插入模式下,输入的字符都是作为文件的内容显示在屏幕上。

输入完毕后,按Esc就可以回到命令模式。

在转义模式下,光标停留在屏幕的最末行,以接受输入的命令并执行。

该模式用于执行一些全局性的操作,如查找、替换、保存、退出文本等。

按Esc键后,回到命令模式,再输入转义字符 “:” ,就进入转义模式。执行完相应的命令后,返回命令模式或退出vi编辑器。

2.在命令模式下,光标的移动命令。h、j、k、l:光标向左、下、上、右移动一个字符

常用的插入命令:

a:在光标位置后开始接收输入。

A:在行尾后开始接收输入。

i:在光标位置前开始接收输入。

I:在行首后开始接收输入。

o:在光标所在行之后开辟一个新的空行,并开始接收输入。

O:在光标所在行之前开辟一个新的空行,并开始接收输入。

添加文本:P128

删除文本:x:删除光标处的单个字符;X:删除光标左边的单个字符;D:删除一行文本;dd:删除光标所在行的文本,包括硬回车。2x:删5dd:删除5行。在命令模式下,可以按Delete键实现删除光标处的字符,与x命令相同。

常用的替代命令:s:用输入的新文本替换光标处的字符;S:用输入的新文本替换光标所在行;r:用输入的新字符替换光标处的字符;R:用输入的新文本逐个替换从光标处开始的各个字符。

3.文本的剪切复制粘贴:yy:复制光标所在的行;y0:复制光标左边的文本内容;y$:复制光标右边的文本内容;p:粘贴文本到光标处;dd:剪切光标所在行的文本。5yy:复制五行

m,ny:复制m到n行

4.关键字的查找  :/my

字符串的替换(P137)执行替换命令s。基本格式如下

[替换起始处,替换结束处]   s/要被替换的字符串/替换的字符串/[g][c]

执行:1,$ s/is/are/g

5.保存与退出命令

:q:如果原文本未修改,不保存文件,直接退出vi。

:q !:不保存文件,强制退出。

:wq!:强制保存文件并退出。

:e!:放弃修改,编辑区恢复为文件原样。

:w:保存当前文件。

在vi中依次打开两个文件

输入命令vi文件名1,打开一个文件1

在一打开的文件1中,按Esc键回到命令模式。

进入末行模式,输入命令:sp文件名2

如果当前光标处于下面窗口的文件中,按Esc键,Ctrl+W键,键入k(j),是光标定位到上(下)面的窗口

区域复制打开某个文件,光标移动到需要复制的第一行

按Esc键,确保当前处于命令模式,在按Ctrl+V键。

使用小键盘上的上、下、左、右方向键,进行区域选取。

键入y,结束区域选取。

光标移至目标位置,键入p,实现区域复制

第八章

1.Linux系统中的用户可以分为三种:超级用户(root)管理用户普通用户

超级用户是一个特殊用户(UID=0),它可以访问任何程序和文件。

管理用户用于运行一定的系统服务程序,支持和维护相应的系统功能。这些用户ID号位于1-999的范围内。例如ftp就是一个管理用户,用作FTP匿名用户,维护匿名用户的文件传输,同时提供匿名用户的默认主目录。

2.在了解Ubuntu系统用户的添加与删除前,首先了解两个重要的系统文件,它们分别是/etc/passwd/etc/shadow

3.命令行方式下增加用户

命令:useradd

sudo useradd–u 1001 –d /home/jack –m –s /bin/bash jack

增加成功后,还需要设置密码,才能登陆。

命令行方式下删除用户

命令:userdel格式:userdel  –r  login

sudo userdel–r jack

Linux的组有私有组、系统组、标准组之分。

私有组:建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,私有组只容纳了一个用户。

标准组:可以容纳多个用户,组中的用户都具有组所拥有的权利。

系统组:是Linux系统自动建立的。

4.组的添加与删除(P169)

1)系统文件/etc/group

2)命令行方式添加组

3)命令行方式删除组

4)图形界面方式添加删除组

groupadd—添加组名

添加user组

   root@Ubuntu:~# groupadd user

添加组名可以手工编辑/etc/group文件来完成组的添加。

groupmod—修改组属性

修改user组的GID。

root@Ubuntu:~# groupadd–g 1005 user

修改user组的名为user1。

root@Ubuntu:~# groupadd–n  user1 user

gpasswd—改变组中的成员用户;还可以修改组密码,而且可以添加、删除组成员。

修改user1组密码

   root@Ubuntu:~# gpasswd user1

添加student用户到user1组

   root@Ubuntu:~# gpasswd  -a  student user1

从user1组删除student用户

   root@Ubuntu:~# gpasswd  -d  student user1

groupdel—删除组

[if !supportLists]5.[endif]软件包包括了源程序软件包二进制软件包Ubuntu软件包的主要格式是DEB格式。

源程序软件包主要是源代码以及二进制软件包的制作方法。

二进制软件包是经过封装的可执行程序以及相关文档和配置文件等,其提供格式通常是一种压缩文档,其中包含了软件信息、程序文件、配置文件、帮助文档、内容启动脚本和控制信息等内容

apt-get、aptitude和synaptic等软件管理工具都支持deb软件包。

6.APT是Ubuntu软件包管理系统的高级界面,是一个客户/服务器系统。APT包括apt-get、apt-cache、apt-cdrom等处理软件包的命令行工具组成。

aptitude是Debian GBU/Linux系统中的软件包管理,它基于APT机制,整合了apt-get的所有功能。

新立德软件包管理工具起源于Debian,它是dpkg命令的图形化前端。

第九章

1.IP地址配置/etc/network/interfaces

查看到活动的接口,不显示down掉的

ifconfig

查看所有网卡的配置,包括down掉的

ifconfig–a

查看特定网卡的配置

ifconfig eth0

配置eth0的IP地址

ifconfig eth0 192.168.84.132

使用ifconfig更改网卡地址和子网掩码

ifconfig eth0 192.168.1.223 netmask 255.255.255.0

禁用特定网卡

ifdown eth0

ifconfig eth0 down

启用特定网卡

ifup eth0  

ifconfig eth0 up

2.Ubuntu中的DNS基础配置 /etc/resolv.conf

3.hosts文件 /etc/hostname

netstat–r 也可以查看路由表信息。

[if !supportLists]6.[endif]Ubuntu中安装DHCP服务

使用hostname查看服务器名称

hostname

使用ping测试网络,ctrl+C中断

ping 202.99.160.68

使用traceroute跟踪数据包路径

apt-get install traceroute

traceroute 202.99.160.68

使用nslookup测试域名解析

nslookup www.inhe.net

[if !supportLists]4.[endif]配置FTP服务器

FTP是TCP/IP网络上的两台计算机互相传送文件的协议。

FTP客户机可以给服务器发出命令来下载文件、上传、创建或改变服务上的目录。

FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流。

5.DHCP简介:是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网路管理员作为对所有计算机作中央管理的手段。

设置DHCP

FTP是TCP/IP网络上的两台计算机互相传送文件的协议。

FTP客户机可以给服务器发出命令来下载文件、上传、创建或改变服务上的目录。

FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流。

    auto eth0iface eth0 inet dhcp

用下面的命令使网络设置生效:sudo /etc/init.d/networking restart

配置文件

/etc/dhcp3/dhcpd.conf

启动与停止命令

/etc/init.d/hdcp3-server start

/etc/init.d/hdcp3-server stop

第十章

shell变量

本地变量(用户自定义变量 )

位置变量即 shell script之参数

预定义变量(特殊变量)

环境变量

目前流行的shell有ash、bash、ksh、csh、zsh等,bash是Linux系统默认使用的shell。

cat  /etc/shells

echo $SHELL

使用echo命令输出单个变量的值,此时要在变量名前加$

    WEEK=Satur

echo Today is $WEEKday

输出:Today is

使用花括号来告诉shell我们要显示的变量:

      echo Today is ${WEEK}day

输出:Today is Saturday

环境变量用于所有用户进程(经常称为子进程)。环境变量应用于用户进程前,必须用export命令导出。

举例:先定义一个环境变量,编写一个脚本引用

export A2=123

一个脚本中如果有

echo $A2

 位置变量参数如果要向一个shell脚本传递信息,可以使用位置参数完成此功能。传入脚本的参数数目可以任意多,但只有前9个可以被访问。

$0     $1     $2       $3    $4      $5        $6      $7    $8    $9

脚本名字Did   You    See   The   Full    Moon


测试两个文件是否均可写

[ -w a.txt–a –w b.txt ]

       echo $?

测试两个数是否相等

NUMBER=130

[ $NUMBER–eq 130 ]

echo $?

let  a=8  b=13

let c=a+b

echo“The value of c is $c.”

输出结果:The value of c is 21.

语法:expr   args

功能:计算args的值,并返回它的值到标准输出

 var1=10

var1=‘expr $var1 + 1’

 echo $var1

输出结果:11

注意:单引号‘ 应该用大键盘上TAB键上方1键的左边的那个键,并且+两边要加空格

if…else…fi语句

#!/bin/bash

echo–n “please input a score:”

read SCORE

echo–n “you input score is $SCORE”

if [ $SCORE–ge 60 ]; then

echo–n “you pass the exam”

else

echo–n “you fail the exam”

Fi

if…elif…fi语句

1.#!/bin/bash

if [ $1–lt 0 ] ; then

echo“error: invalid grade”

elif [ $1–lt 60 ] ; then

echo“no pass”

elif [ $1–lt 70 ] ; then

echo“pass”

elif [ $1–lt 80 ] ; then

echo“good”

elif [ $1–le 100 ] ; then

echo“excellent”

else

echo“error: invalid grade”

fi

2.#!/bin/bash

read–p “input your score:” score

if [ $score–lt 60 ] ; then

echo“not pass”

elif [ $score–ge 60 –a $score –lt 70 ] ; then

echo“pass-D”

elif [ $score–ge 70 –a $score –lt 80 ] ; then

echo“pass-C”

elif  [ $score–ge 80 –a $score –lt 90 ] ; then

echo“pass-B”

elif [ $score–ge 90 –a $score –le 100 ] ; then

echo“pass-A”

else

echo“error: invalid score”

Fi

嵌套的if语句

#!/bin/bash

read–p “input your name:” name

if [ $name =“user” ]; then

read–p “input you password:” password

if [ $password =“123456” ];then

echo“hello ubuntu $name”

    else

echo“your password is not right”

    fi

else

echo“sorry,your name is not right”

Fi

case语句

1.#!/bin/bash

echo–n "Do you want to continue this operation? y or n"

read YESNO

case $YESNO in

y | Y | Yes | yes)

echo "system will continue this operation“;;

n | N | no | NO)

echo "system will skip this operation";;

*)

echo "Incorrect input";;

esac

2.#!/bin/bash

hour=`date +%H`

case $hour in

08|09|10|11|12) echo“good morning”;;

13|14|15|16|17) echo“good afterning”;;

18|19|20|21|22) echo“good evening”;;

*) echo“hello”;;

Esac

for语句

#!/bin/bash

read–p “input a directory:” dire

if [ -e $dire–a –d $dire ]; then

    file=`ls $dire`

    for filename in $file

    do

        if[ -r $dire/$filename ];then

echo“$filename can be read!”

ls–l $dire/$filename

        fi

    done

else

echo“sorry, $dire can not be exists!”

Fi

while

#!/bin/bash

While [ 1 ]

do

read–p “input login name:” username

if [ $username =“ubuntu” ];then

echo“hello $username”

       break

    if

echo“sorry, name failed!”

Done

2.#! /bin/bash

count=1

while [-n "$*"]

do

     echo "This is parameter number $count $1"

     shift

     let count=count+1

done

注:-n比较字符串的长度是否大于0,如果大于0,为真。

3.#! /bin/bash

loopcount=0

result=0

while [ $loopcount–lt 5 ]

do

read–p “input a number:” num

declare–i loopcount =$loopcount +1

declare–i result =$result+$num

done

echo“result is $result”

until语句

1.#! /bin/bash

read–p “login name:” username

until [ $username=“ubuntu” ]

do

echo“sorry,name failted!”

read–p “login name:” username

done

echo“hello ubuntu”

2.#! /bin/bash

loopcount=0

result=0

until [ $loopcount–ge 5 ]

do

read–p “input a number:” num

declare–i loopcount =$loopcount +1

declare–i result =$result+$num

done

echo“result is $result”



硬链接是把许多个不同的文件对应到同一个inode上,由于对应到同一个inode,所以这些文件会有相同的inode-table.这么作的目的在于:避免重要的资料被误删,因为当原本的文件被删除时,可以通过硬链接找到inode-table,并找到这些文件被存储在那些block中。

每一个分区的inode都是独立的,所以不能把硬链接建立在其他的分区中。也不能建立目录的链接(如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统会陷入无限循环当中)。

软链接在使用上与硬链接相似,但是意义完全不同,软链接的文件名只是一个符号,指向原文件,与Windows中的快捷方式一样。

如果硬链接的原文件删除,建立的硬链接可以使用。

如果软链接的原文件删除,建立的软链接就会失效。

第十一章

[if !supportLists]1. [endif]Eclipse的搭建(P233)

[if !supportLists]2. [endif]GCC对源文件进行处理的具体过程(P246)

GCC的安装sudo  apt-get  install   build-essential

GCC编译分为四个步骤:

预处理gcc -E c1.c -o c.i

GCC调用cpp程序进行预处理,即分析像#include、#define之类的命令。

编译gcc -S c.i

GCC是调用ccl程序进行编译的,它根据源代码生成汇编语言。

汇编gcc -c c.s -o c.o

GCC调用as程序将上一步的结果生成扩展名为o的目标文件

连接gcc c.o -o c

GCC调用ld程序将目标文件进行连接,最后生成可执行文 件。

GNU的调试器称为 GDB(GNU debuger),该程序是一个交互式工具,工作在字符模式,可用于源代码级调试,以及跟踪没有源代码的程序或检查某个终止的程序留下的核心文件。

gcc -g test.c -o test

g++ -g test.cpp -o test


[if !supportLists]3. [endif]make命令是UNIX下重要的编译命令

Make通过读入配置好的文本文件,并根据文本文件中预先定义的规则和步骤,完成代码的编译和链接工作,最终生成所需要的项目文件。这个文本文件在缺失情况下为makefile或Makefile。

Make在对项目文件进行编译时, 会判断文件的修改和生成时间。如果某源代码文件在上次编译后再次被修改,则make将只编译该文件,而不会对整个重新编译

c1.c程序为例,使用vi编写makefile文件,内容如下:

    c.1:c1.c

[tab键]gcc –o c.1 c1.c

1.ls -al /etc = cd /home/yang = mkdir -p dir/dir1/dir2=cat a.txt b.txt > c.txt =cat d.txt >> c.txt

2.mkdir newdir1,mkdir newdir2,cd newdir1,touch file.txt,mkdir newdir11

3.cp -r /home/yang/newdir1 /home/yang/newdir2,cd ..,ls newdir2,cd newdir1,ls

4.cp -r /home/yang/newdir1/* /home/yang/newdir2,cd ..,ls newdir2

5.cat > d.txt,hello boy,ls,cat d.txt,cat d.txt >> c.txt ,cat -n c.txt

6.cat > a.txt,hello,cat > b.txt,world,cat -n a.txt,cat -n b.txt,cat a.txt b.txt > c.txt ,ls,cat -n c.txt

7.cd dir/dir1 , touch file.txt , ls , rmdir -p dir2 , ls ,rmdir -p dir1, cd .., ls

8.cat > file.txt,hello world,hello everyone,end,cat file.txt,grep hello file.txt

9.touch 1.txt,touch 2.txt,ls,tar–czf 3.tar.gz 1.txt 2.txt,tar –cjf 4.tar.bz2 1.txt 2.txt,ls,rm 1.txt,rm 2.txt,ls,gzip -d 3.tar.gz

10.用ubuntu用户登录Linux,在宿主目录下创建目录perm,在该目录下创建文件newfile,授予所有用户对perm目录都有rwx权限;切换到普通用户ubuntu1,执行“rm /home/ubuntu/perm/newfile”是否可以执行。

fdisk -l,mkdir–p /mnt/usb,mount –t vfat /dev/sdd1 /mnt/usb,su root,umount  /mnt/usb,exit

11.mkdir perm,cd perm,touch newfile,ls ,cd ..,ls,chmod a=rwx perm,ls,su ubuntu,ls,rm /home/yang/perm/newfile,ls,ls perm

12.用ubuntu用户登录Linux,在宿主目录下创建文件newfile2,移动文件newfile2到perm目录下同时改名为file01,然后,改变file01的文件权限为“rwxrw-r--”。

ls,touch newfile2,ls,mv newfile2 perm/file01,ls perm,chmod 764 /home/yang/perm/file01,ls perm

1.系统调用的意义:

a.系统调用接口是由一系列的系统调用函数构成的“特殊”接口。程序员或应用程序通过这个特殊的接口取得操作系统内核提供的服务,它是专为程序员编程时使用,是应用程序与系统内核通讯的桥梁。

b.通过系统调用来提供给用户程序的根本原因是为了对系统进行“保护”。用户可以通过和文件系统相关的系统调用,请求系统打开文件、关闭文件或读写文件等。

2. API与系统调用的关系:

a.通过API接口,程序员可以间接地访问到系统硬件和操作系统资源。操作系统保护系统资源不被外界破坏,因此,当用户需要对系统资源进行访问时,就必须通过操作系统向用户提供的接口才能实现用户对系统资源的访问,取得内核的服务。

b. API一般以函数定义的形式出现,如read()、abs()、malloc()等。但是API并不需要和系统调用一一对应,它们之间的关系可以是一对一、一对多、多对一或者无关系。

c.一对一关系,即API和系统调用的形式一致,如read()函数和read系统调用对应。

多对一关系,即几种不同的API内部使用同一个系统调用,如malloc()、free()利用brk系统调用来扩大或缩小进程的堆。

无关系,某些API不需要任何系统调用,如abs()。

[if !supportLists]3.[endif]文件系统挂载

步骤1:打开虚拟机,查看当前磁盘信息: sudo fdisk –l。

步骤2: 关闭终端,添加一块新硬盘,使用命令查看磁盘信息。

步骤3: 建立一个目录,挂着硬盘,做一些文件操作。

sudo makedir /yyy

sudo mount /dev/sdb /yyy

步骤4: 卸载新挂载的硬盘,再查看相关目录和文件,已经无法查看。

4.sudo useradd -u 1003 -d /home/newuser1 -m -s /bin/bash newuser1

5.DHCP是一个局域网得网络协议,使用UDP协议工作,主要得两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机中央管理得手段。主要工作流程:(1)发现阶段;(2)提供阶段;(3)选择阶段;(4)确认阶段;(5)重新登录;(6)更新租约。

安装命令:sudo apt-get install dhcp3-server

启动命令:sudo /etc/init.d/dhcp3-server start

停止命令:sudo /etc/init.d/dhcp3-server stop

6.touch hello.sh

vi hello.sh

#! /bin/bash

echo“hello shell”

增加执行权限

      chmod u+x hello.sh

开始运行程序:

      ./hello.sh

7.#/bin/bash

read -p "Enter a full path:" MYPATH

if [ -d $MYPATH ]; then

echo -e "yes!"

HERE="$(ls $MYPATH)"

#分割为数组

ARR=($HERE)


for X in ${ARR[@]}; do

  CHILDPATH=$MYPATH/$X

  if [ -f $CHILDPATH -a -r $CHILDPATH ]; then

   echo "$(ls -l $CHILDPATH)"

  fi

done

Fi

8.#!/bin/bash

sum=0

I=0

while :

do

echo -n "input a score:"

read score

let sum=sum+score

let I=I+1

if [ $I -gt 4 ] ;then

break

fi

done

echo "sum: $sum"

1。下载操作系统的镜像ISO文件

2.下载虚拟机并安装

3.通过ISO文件安装操作系统

4.执行相关配置即可

40.简述在虚拟机中安装Red Hat Linux 9.0 的过程

答;1。下载操作系统的镜像ISO文件

2.下载虚拟机并安装

3.通过ISO文件安装操作系统

4.执行相关配置即可

2.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。

答:$ mkdir back

  $ cd back

$ touch  test1 test2

$ mv  test2   ../file2

5.若给需要将/home/zheng目录下的所有文件打包压缩成/tmp/zheng.tar.gz,你准备怎么做?当需要从压缩包中恢复时,又该如何处理?

答:#tar–zcvf  /tmp/zheng.tar.gz  /home/zheng

  #tar -zxvf /tmp/zheng.tar.gz

2. vi编辑器有哪几种工作模式?如何在这几种工作模式之间转换?

答:Vi的工作模式有三种:命令模式、输入模式、末行模式。3分

在命令模式下输入a、A、i、I、o、O等命令之一可以进入输入模式,在输入模式下按Esc键回到命令模式;在命令模式下输入:进入末行模式,末行命令执行完后回到命令模式。

3.什么是位置变量?shell的变量类型有哪些种?

位置变量是指命令行上传递给程序的参数。1分

Shell变量可以分为:用户自定义变量、环境变量、位置变量、特殊变量 4分

1.在其父目录不存在时先创建父目录的命令。   mkdir   –p

2.要使得名为fido的文件具有如下权限-r-xr-x—x的命令。chmod   551   fido

3.在/root文件夹下查找后缀为.cpp的文件。find   /root   –name   *.cpp

4.关闭linux系统(不重新启动)使用的命令  halt

5.将光盘/dev/hdc卸载的命令 。umount   /dev/hdc

1.若下达rmdir命令来删除某个已存在的目录,但无法成功,请说明可能的原因。

此目录可能不存在,

或者目录不为空,或者目录中有隐含文件存在,

或者目录被设置了权限,

解决方法就是先修改权限,在使用rm–r   命令删除。

1.在/home目录下查找文件名为。Profile的文件,找到后删除

2.将test.tar.gz文件解压缩

3.升级安装wu-ftpd软件包

4.创建一个用户,用户名为user02,所属私有组和标准组为stuff,用户家目录为/home/user2,用户登陆shell为/bin/bash。

5.赋予所有用户读和写backup.tar.gz文件的权限:

参考答案:

1.find   /home–name  .profile  -exec   rm{  } ;

2.tar  -xzvf   test.tar.gz

3.rpm–Uvh   wu-ftpd-2.6.2-8.i386.rpm

4.useradd–g  stuff  –G  stuff  -d /home/user2  -s  /bin/bash  user02

5.Chmod a+rw   back.tar.gz

1.叙述Linux操作系统的三个主要部分及其功能。(6分)

内核:内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。

命令解释层:是系统的用户界面,提供了用户与内核进行交互操作的一种接口。

文件结构:是文件存放在磁盘等存储设备上的组织方法,文件结构的相互关联性使共享数据变得容易。

2. 分别叙述linux对IDE硬盘和usb接口的移动硬盘的各个分区如何表示?(6分)

hdxx,sdxx,

3.叙述什么是shell? 什么是X window?Redhat的默认shell和X window是什么?(6分)

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。是一个命令解释器,它可以用来启动、挂起、停止、甚至编写程序。

Xwindow选择shell如何进行任务控制。是否支持命令行编辑。是否支持命令行历史记录,环境变量有哪些,什么是它的开机启动文件或者配置文件,支持什么样的编程框架?

是UNIX和Linux系统上的图形用户界面系统。

3 Linux的默认shell是bash,默认XWindow是XFree86

6. 利用vsftp配置FTP服务器,要求:(1)匿名用户可以下载上传文件;(2)本地用户不允许登陆。写出详细的配置过程和配置选项。(8分)

(1)主要配置文件是/etc/lvsftpd/vsftpd.conf;将vsftpd.conf文件中的#anon-upload-enalle=Yes 前的“#“删掉,并将/var/ftp/pub目录设为同组和其它可写权限。chmod go+w /var/ftp/pub↓

(2)用service  vsftpd  start(stop)(restart)命令启动(关闭)(重启)服务器。

8. 假设linux分配给光驱的设备名是/dev/cdrecord,叙述Linux如何在这个光驱上使用光盘。写出详细的命令步骤解释。(7分)

(1) 插好U盘,用fdisr –l  /dev/sda/ 命令查看U盘分区情况

(2) 建立挂袋目录:mkdir  /mnt/usb

(3) 挂载U盘:mount  –tvfat  /dev/sda1  /mnt/usb

(4) 用文件管理器或命令行方式浏览文件

(5) 卸载U盘:umount/mnt/usb

(6) 卸去U盘。

挂载

Mount /dev/cdrecord /mnt/cdrom

卸载umount /mnt/cdrom

9.叙述Linux如何使用Windows系统硬盘(设备名为/dev/hda3,分区类型为fat32)上的文件,如何实现开机自动挂载windows硬盘。写出详细的步骤。(8分)

(1) 用fdisk  -l  /dev/had 命令查看硬盘分区中情况及文件系统情况,决定要挂装Windows分区

(2) 建立挂装目录  mkdir  /mnt/dos

(3) 挂装Windows系统 mount –tvfat  /dev/had/  /mnt/dos

(4) 浏览Windows文件系统  ls  /mnt/dos

(5) 卸载:umount  /mnt/dos

(6)   打开/etc/fstab 添加一行

      /dev/hda3 /mnt/hd vfat defaults 0 0

1.什么是Linux?其创始人是谁?Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱都有哪些?

答:Linux是一个功能强大的操作系统,同时它是一个自由软件,是免费的、源代码开放的,可以自由使用的类UNIX产品。其创始人是Linus。Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱有以下几点:(1)UNIX操作系统;(2)MINIX操作系统;(3)GNU计划;(4)POSIX标准;(5)Internet网络。

2.试述如何创建一个用户。

答:可使用命令useradd创建新用户,但不能在系统中随便创建用户,需经相关部分批准后方能创建。对于长期或暂时不使用的用户,应将其从系统中删除或锁定起来,以防非法使用。创建新用户时可以使用命令useradd -d home newuser指定用户家目录,若不指定则使用默认的家目录/home/newuser。一般情况下,当一个用户被创建之后,只有超级用户为它设置密码后才能被启用或登录使用。

3. Linux系统有几种类型文件?它们分别是什么?有哪些相同点和不同点?

答:3类。分别是普通文件,目录文件和设备文件。相同是它们都是文件,都有一个文件名和i节点号。不同点是,普通文件的内容为数据,目录文件的内容为目录项或文件名与i节点对应表,设备文件不占用磁盘空间,通过其i节点信息可建立与内核驱动程序的联系。

4.综述Linux系统的文件权限及其管理。

答:Linux用文件存取控制表来解决存取权限的控制问题。存取控制表以文件为单位,把用户按某种关系画分为若干组,同时规定每组用户的存取权限。每个文件都有一张存取控制表。在实现时,该表存放在文件说明中,也就是i节点的文件权限项。

就某个文件而言,它只对三类用户(文件主,同组人,其它人)分配权限。权限的修改或分配可通过命令chmod来实现。当然chmod和chgrp等命令也有着权限控制作用,因为文件的主和组变了,它相应的权限也会随之改变。

5.在UNIX/Linux系统中,环境变量是非常重要,在字符界面下试说明:

(1) PATH变量的作用,如何得到PATH的值?

(2)在UNIX/Linux系统的超级用户的环境变量PATH中允许包含当前目录吗?

(3)若在超级用户的当前目录内有可执行文件mypro,如何执行它(写出执行时键盘输入内容)?

(4)如何使用该命令在后台执行(写出执行时键盘输入内容)?

答:(1) PATH为命令搜索路径,可用echo $PATH命令显示;(2)UNIX/Linux的PATH变量内不允许包含当前路径(.);(3)./mypro;(4)./mypro &

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/3f1d0aeaff8f
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:11:28
  • 阅读 ( 1235 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢