开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2022.12.04湖南
到底要如何Linux入门呢?
因为Linux的知识体系非常的庞大,IT行业很多领域都需要使用到Linux,有运维的、有应用程序开发的、有驱动开发的、有系统优化的、有搞单片机的、有做系统移植的、有做网络产品的等等。
总结一句话,IT的很大部分从业者都需要掌握Linux的部分知识,但是由于每个人的从事领域不一样,对Linux的要求也不一样,这就直接导致,网上搜索学习路线有很多种,还有就是推荐的书籍很多都不利于初学者。
为了让初学者更好的学习Linux,入门Linux,一口君特地整理了Linux入门必须掌握的一些基础知识点,掌握这些知识点之后,就可以学习C编程的知识了,后续遇到一些不熟悉的命令和配置,只需要网上搜索下就可以很快上手了。
内核下载的地址:
核心程序,用于管理硬件设备、系统的线程进程、内存、交换空间、文件系统、精灵进程(守护进程)等。主要实现系统程序与硬件之间的控制管理功能。
包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows的cmd。通过Shell将输入的命令与内核通讯,好让内核可以控制硬件并正确无误的操作工作。
Shell有着不同的分类,比如Bourneshell(sh),Kornshell(ksh)、Cshell(csh)、Bourne-againshell(bash)、tcsh。其中最常用的有csh和bash。
ubuntu16.04的terminal如下:
其实一些应用程序当需要访问系统资源的时候,必须通过系统调用,通过一些内核函数将系统资源由内核空间拷贝到用户空间。
多用户、多任务(进程、线程处理),多平台,图形化界面(x-windows)、硬件配置、通信与联网、应用程序的支持(编辑器、编辑工具、数据库、办公软件、图形处理、Internet应用、游戏)。
redhat:企业级的,已经开始收费(商用)。
CentOS是RHEL的克隆版本。RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码重新编译一次,形成一个可使用的二进制版本。由于Linux的源代码是GNU,所以从获得RedHat的源代码到编译成新的二进制,都是合法。只是RedHat是商标,所以必须在新的发行版里将RedHat的商标去掉。通常搭建服务器选用CentOS。
我们通常用快捷键ctrl+alt+t打开一个终端,这个一定要记住。
其中:
peng当前用户ubuntu主机名~当前用户主目录,/home/peng,每一个用户都会在/home下创建一个与用户名同名的目录$普通用户如果切换到管理员用户
Linux中一切皆为文件,文件系统用来组织计算机的文件和资料的系统,是操作系统封装的一个系统服务程序,实际是一个软件程序,用来存储和管理计算机文件和资料。文件系统分类如下:
磁盘文件系统:NTFS,EXT3闪存文件系统:JFFS2,YAFFS数据库文件系统:BFFS,WINFS网络文件系统:NFS虚拟文件系统:VFS(Proc)文件系统的功能:能定义文件的组织方式,文件的结构;提供建立和存取文件的环境(目录和文件)
EXT3:是一个日志方式的文件系统,系统中的每个文件都有索引,用户对文件的每个操作都会记录在日志中,形成一个任务队列。
SWAP:是交换分区的文件系统,类似于windows的虚拟内存,其实现的方式有以下两种:第一种是进行内存排列像内存池一样,进行优化;第二种是把硬盘上的空间模拟成内存。Swap是Linux的虚拟内存,在安装时要设置好大小,一般设置为物理内存的两倍。
目录结构linux的结构是由很多文件块区组成,与Windows分区不同。
Linux文件属性一共7种:
使用ls-l命令后,
第一列第一个字符为'-'的文件为普通文件.
Linux中的目录也是文件,目录文件中保存着该目录下其他文件的inode号和文件名等信息,目录文件中的每个数据项都是指向某个文件inode号的链接,删除文件名就等于删除与之对应的链接。目录文件的字体颜色是蓝色,使用ls-l命令查看,第一个字符为'd'(directory)。
目录文件的权限:
可以使用chmod指令来改变文件的权限。
链接文件一般指的是一个文件的软连接(或符号链接),使用ls-l命令查看,第一个符号为'l',文件名为浅蓝色,如下:
这里,test_softlink就是一个链接文件,从结果上还可以看到它是文件test.txt的软链接,删除原文件test.txt的话,对应的软链接文件test_softlink也会消失。可以使用ln命令来创建一个文件的链接文件:
1)软链接软链接(又称符号链接),使用ln-sfilefile_softlink命令可以创建一个文件的软链接文件:
软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。
2)硬链接硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。使用ls-i命令查看,可以发现硬链接的两个文件的inode号是一样的:
同样的,使用ln命令可以创建一个文件的硬链接:
lntest.txttest_hardlink4、设备文件Linux中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。
设备文件一般存放在/dev/目录下,文件名为黄色,如下:
设备文件分两种:
块设备文件支持以块(block)为单位的访问方式。在EXT4文件系统中,一个block通常为4KB的大小,也就是说每次可以存取4096(或其整数倍)个字节的数据。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、软盘等都是块设备。使用ls-l命令查看,块设备文件的第一个字符是'b'(block)。
字符设备文件以字节流的方式进行访问,由字符设备驱动程序来实现这种特性,这通常要用到open、close、read、write等系统调用。字符终端、串口和键盘等就是字符设备。另外,由于字符设备文件是以文件流的方式进行访问的,因此可以顺序读取,但通常不支持随机存取。使用ls-l命令查看,字符设备文件的第一个字符是'c'(char)。
管道文件主要用于进程间通信,使用ls-l命令查看,第一个字符为'p'(pipe)。可以使用mkfifo命令来创建一个管道文件:
在FIFO中可以很好地解决在无关进程间数据交换的要求,FIFO的通信方式类似于在进程中使用文件来传输数据,只不过FIFO类型的文件同时具有管道的特性,在读取数据时,FIFO管道中同时清除数据。
套接字文件,通常指域套接字文件,使用ls-l命令查看,第一个字符为's'。
域套接字是进程间通信(IPC)的一种方法,是可靠的一种IPC通信,是POSIX标准的一个组件,只能用于同一主机间的通信。
后续学习进程间通信需要学习该知识。
常见的文件颜色如下:
$command[option(s)][argument(s)]命令名空格选项空格参数command:命令名[option(s)]:选项[argument(s)]:参数注意:
遇到一些函数和命令,不知道含义时可以使用命令man来查看帮助信息。
man手册根据内容分为9个手册,可以使用下面命令查看
使用-k参数,man可以在所有的man文档和简介中查找符合条件的命令。
peng@ubuntu:~/test$man-kbashbash(1)-GNUBourne-AgainSHellbash-builtins(7)-bashbuilt-incommands,seebash(1)bashbug(1)-reportabuginbashbuiltins(7)-bashbuilt-incommands,seebash(1)dh_bash-completion(1)-installbashcompletionsforpackagerbash(1)-restrictedbash,seebash(1)有的关键词在系统中对应多个手册,使用-f参数,用于查找同名的手册:
清屏使用命令clear或者使用快捷键:ctrl+l
这是一个非常有用的命令,想知道之前输入过的所有命令,就可以用他。
history:查看最近使用的命令,最多500条historyn:曾经使用的最近n条命令!n:执行最近第n条命令!!:执行最近使用的第一条命令方向上键:执行上一条命令方向下键:执行下一条命令五、文件管理1)查看文件目录下面这几个命令是使用最频繁的命令:
语法:file[-beLvz][-f<名称文件>][-m<魔法数字文件>…][文件或目录…]参数:
补充说明:通过file指令,我们得以辨识该文件的类型。
peng@ubuntu:~/test$filewait.cwait.c:ASCIItextpeng@ubuntu:~/test$filefifo_filefifo_file:fifo(namedpipe)2)文件路径什么是文件的路径?就是文件存放的地方,可以联想为文件的“家”。
在Linux中,存在着绝对路径和相对路径:
路径的写法一定是由根目录/写起的,例如/usr/local/mysql
路径的写法不是由根目录/写起的。
例如首先用户进入到/home,然后再进入到peng,执行的命令为
此时用户所在的路径为/home/peng。
第一个cd命令后紧跟/home,前面有斜杠,是绝对路径;而第二个cd命令后紧跟peng,前面没有斜杠,表示从当前目录下找peng这个目录,这个peng是相对于/home目录来讲的,所以称为相对路径。
功能说明:
参数:
语法:
mkdir[-p][–help][–version][-m<目录属性>][目录名称]补充说明:mkdir可建立目录并同时设置目录的权限。
删除文件或目录。语法:
补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数”-r”,否则预设仅会删除文件。
-d或–directory直接把欲删除的目录的硬连接数据删成0,删除该目录。-f或–force强制删除文件或目录。-i或–interactive删除既有文件或目录之前先询问用户。-r或-R或–recursive递归处理,将指定目录下的所有文件及子目录一并处理。-v或–verbose显示指令执行过程。–help在线帮助。–version显示版本信息。4、删除目录
rmdir(removedirectory)
功能说明:删除目录。
补充说明:当有空目录要删除时,可使用rmdir指令。
-p或–parents删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。–help在线帮助。–ignore-fail-on-non-empty忽略非空目录的错误信息。–verbose显示指令执行过程。–version显示版本信息。3)显示文件内容1.cat功能:
使用权限:
所有使用者语法:
-n或–number由1开始对所有输出的行数编号-b或–number-nonblank和-n相似,只不过对于空白行不编号-s或–squeeze-blank当遇到有连续两行以上的空白行,就代换为一行的空白行-v或–show-nonprinting范例:
功能:
查找文件的前多少行语法:
查找文件的莫问多少行语法:
分屏显示用法
cp源文件目标文件将源文件复制为目标文件或目录。语法:
补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
mv[源文件、目录][目的文件、目录]移动或更名现有的文件或目录。语法:
补充说明:mv可移动文件或目录,或是更改文件或目录的名称。
-b或–backup若需覆盖文件,则覆盖前先行备份。-f或–force若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。-i或–interactive覆盖前先行询问用户。-S<附加字尾>或–suffix=<附加字尾>与-b参数一并使用,可指定备份文件的所要附加的字尾。-u或–update在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。-v或–verbose执行时显示详细的信息。-V=<方法>或–version-control=<方法>与-b参数一并使用,可指定备份的方法。–help显示帮助。–version显示版本信息5)文件目录权限1.权限文件的权限:
以普通文件为例,使用ls-l命令,可以看到结果的第一列是-rwxrwxrwx的形式,其中第一个字符'-'表示这个文件为普通文件,它也可以是其他的字符,不同的字符代表不同类型的文件。其后的一串字符表明了该文件的权限,其中:
文件所有者:生成文件或目录的当前人,权限最高,用u表示。文件所属用户组:系统管理员分配的同组一个或几个人,用g表示。其他人对此文件的权限:除拥有者、用户组以外的人,用o表示。所有人:包括拥有者,所属用户组、其他用户,用a表示
chmod命令用来修改文件目录的访问权限,修改权限的前提条件是在修改权限时具有可操作权限。
(a)用字母表示权限Who(u、g、o、a)+cp(“=”设置权限“+”添加权限“-”删除权限)+permission(“r”读权限“w”写权限“x”操作权限)例如:
chmodg=wr1.c;chmodu+w,g-w,o=wr1.c(b)用八进制数字表示权限
例如:
chown(英文全拼:changeowner)命令用于设置文件所有者和文件关联组的命令。
语法
参数:
Linuxchgrp(英文全拼:changegroup)命令用于变更文件或目录的所属群组。
与chown命令不同,chgrp允许普通用户改变文件所属的组,只要该用户是该组的一员。
chgrp[-cfhRv][--help][--version][所属群组][文件或目录...]或chgrp[-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]参数说明:
Chown、chgroup使用频率较低,了解即可。
Linuxfind命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
findpath-option[-print][-exec-okcommand]{}\;find根据下列规则判断path和expression,在命令列上第一个-(),!之前的部份为path,之后的是expression。
如果path是空字串则使用目前路径,如果expression是空字串则使用-print为预设expression。
expression中可使用的选项有二三十个之多,在此只介绍最常用的部份。
参数说明:
注意find的使用条件所查找的路径必须具有读权限。查找选项通过文件属性来查找。
例如:实例
whereis[-bfmsu][-B<目录>...][-M<目录>...][-S<目录>...][文件...]参数:
实例:
peng@ubuntu:~/test$whereisbashbash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz2.查找标准库头文件stdio.h位置peng@ubuntu:~/test$whereisstdio.hstdio:/usr/include/stdio.h/usr/share/man/man3/stdio.3.gz7)grep过滤和统计功能:查出包含某些字符串的结果,对文件或输出结果进行过滤,对于大小写有一定要求。
grep[option]stringfilename补充说明:grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
举例:
1、在当前目录中,查找后缀有file字样的文件中包含test字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
greptest*file2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi及其子目录(如果存在子目录的话)下所有文件中包含字符串'update'的文件,并打印出该字符串所在行的内容,使用的命令为:
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过'-v'参数可以打印出不符合条件行的内容。
查找文件名中包含test的文件中不包含test的行,此时,使用的命令为:
grep-vtest*test*grep应用非常频繁,经常还会和正则表达式一起使用,常用的正则表达式:
功能:Linuxwc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为'-',则wc指令会从标准输入设备读取数据。
wc[选项]文件名
wc[-clw][--help][--version][文件...]参数:
实例
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
wctestfile8)tar文件压缩解压tar命令可以为linux的文件和目录创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
常用命令参数:
-A新增压缩文件到已存在的压缩-B设置区块大小-c建立新的压缩文件-d记录文件的差别-r添加文件到已经压缩的文件-u添加改变了和现有的文件到已经存在的压缩文件-x从压缩的文件中提取文件-t显示压缩文件的内容-z支持gzip解压文件-j支持bzip2解压文件-Z支持compress解压文件-v显示操作过程-l文件系统边界设置-k保留原有文件不覆盖-m保留文件不被覆盖-W确认压缩文件的正确性常见解压/压缩命令tar
.gz
解压1:gunzipFileName.gz解压2:gzip-dFileName.gz压缩:gzipFileName.tar.gz和.tgz
.bz2
解压1:bzip2-dFileName.bz2解压2:bunzip2FileName.bz2压缩:bzip2-zFileName.tar.bz2
.bz
解压1:bzip2-dFileName.bz解压2:bunzip2FileName.bz压缩:未知.tar.bz
.Z
解压:uncompressFileName.Z压缩:compressFileName.tar.Z
.zip
解压:unzipFileName.zip压缩:zipFileName.zipDirName.rar
实例1:将文件log2021全部打包成tar包
命令:
tar-cvflog.tarlog2021.log仅打包,不压缩!tar-zcvflog.tar.gzlog2021.log打包后,以gzip压缩tar-jcvflog.tar.bz2log2021.log打包后,以bzip2压缩实例2:查阅上述tar包内有哪些文件
由于我们使用gzip压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上z这个参数了。
实例3:将tar包解压缩
一行执行多条命令:在命令与命令之间用“;”隔开
>:将一个命令的输出放入文件中>>:输出重定向但不会把源文件覆盖,在原文件末尾追加举例:将ls的输出结果输出给test.txt
用“>”的输出结果如下:
然后再用“>>”做测试其结果如下
下面再实现以下输入重定向:
管道符“|”:将一个进程的输出作为另一个进程的输入
输入命令:
显示的结果如上图所示。
b)cal:显示日历
功能:ps(英文全拼:processstatus)命令用于显示当前进程的状态,类似于windows的任务管理器。
ps的参数非常多,在此仅列出几个常用的参数并大略介绍含义:
终端的命令行最右边的字符
有很多命令需要管理员权限才能使用,可以输入命令前加sudo,也可以直接切换到管理员再执行。
切换到管理员root
切换用户
功能说明:系统关机指令。
补充说明:shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
补充说明:执行reboot指令可让系统停止运作,并重新开机。
-d重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有”-n”参数的效果。-f强制重新开机,不调用shutdown指令的功能。-i在重开机之前,先关闭所有网络界面。-n重开机之前不检查是否有未结束的程序。-w仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。c)halt功能说明:关闭系统。
补充说明:halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。
-d不要在wtmp中记录。-f不论目前的runlevel为何,不调用shutdown即强制关闭系统。-i在halt之前,关闭全部的网络界面。-nhalt前,不用先执行sync。-phalt之后,执行poweroff。-w仅在wtmp中记录,而不实际结束系统。4、用户管理补充(1)用户密码要求用户的密码要求有6~8个字符,其中至少要包含2个字母、1个数字或特殊字符,而且不能与用户名相同,还要不同于以前的密码,至少要有三个字符不同与以前的密码。
注意:在输入密码过程中机器是没有任何动作的
(3)查找用户
id
查看用户ID(用户名)及其所属组ID(组名)user
who
查看用户的详细信息whoami
whoanmi
显示磁盘使用摘要信息
显示整个文件系统的空间使用磁盘情况
-k以k字节方式显示九、网络配置1、ping查看当前机器与另一台机器的联通情况ping主机名称或者主机的IP:向ping后面的主机发送数据包,若被ping的主机有回复则表示连通的。
补充说明:执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
查看和配置当前机器的网络参数信息
补充说明:ifconfig可设置网络设备的状态,或是显示目前的设置。
add<地址>设置网络设备IPv6的IP地址。del<地址>删除网络设备IPv6的IP地址。down关闭指定的网络设备。
Linux安装包的通常是tar的格式,同时也支持自己定义的格式。在redhat中软件安装包的格式通常是rpm在Ubuntu中软件安装包的格式通常是deb
在Linux中常用的命名格式是:
软件名称版本号-修订版本号体系架构.扩展名3、安装包的离线安装及卸载dpkgdpkg-i安装dpkg-p卸载源文件安装的过程:
配置configure>>编译make>>安装makeinstall4、在线安装及卸载安装:
卸载:
apt-getremove-purge十一、VIM编译工具Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具。
基本上vi/vim共分为三种模式,分别是命令模式(Commandmode),输入模式(Insertmode)和底线命令模式(Lastlinemode)。这三种模式的作用分别是:
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行BACKSPACE,退格键,删除光标前一个字符DEL,删除键,删除光标后一个字符方向键,在文本中移动光标HOME/END,移动光标到行首/行尾PageUp/PageDown,上/下翻页Insert,切换光标为输入/替换模式,光标将变成竖线/下划线ESC,退出输入模式,切换到命令模式3)底行命令模式在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
简单的说,我们可以将这三个模式想成底下的图标来表示:
下图就是赫赫有名的vimcheatsheet,一图包含了大部分常用的vim命令,建议保存
如果你想要使用vim来建立一个名为peng.c的文件时,输入下面命令:
在一般模式之中,只要按下i,o,a等字符就可以进入输入模式了!
在编辑模式当中,你可以发现在左下角状态栏中会出现–INSERT-的字样,那就是可以输入任意字符的提示。
这个时候,键盘上除了Esc这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。
按下ESC按钮回到一般模式
好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下Esc这个按钮即可!马上你就会发现画面左下角的–INSERT–不见了!
在一般模式中按下:wq储存后离开vi
OK,我们要存档了,存盘并离开的指令很简单,输入:wq即可保存离开!
OK!这样我们就成功创建了一个peng.c的文件。
如果你将右手放在键盘上的话,你会发现hjkl是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动30行,可以使用'30j'或'30↓'的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!
使用/word配合n及N是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
这个u与[Ctrl]+r是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
进入输入或取代的编辑模式
上面这些按键中,在vi画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时,一定要在左下角处看到INSERT或REPLACE才能输入。
指令行的储存、离开等指令
vim环境的变更
这些基础知识都是必须掌握的知识点,学会以后,就可以进入到下一步Linux下的C程序开发的学习了!