linux课件完整汇总 您所在的位置:网站首页 linux学习课件 linux课件完整汇总

linux课件完整汇总

2022-05-11 11:44| 来源: 网络整理| 查看: 265

第一章 Linux历史与系统安装

Linux是一个开源的操作系统内核,发布与GPL协议,全称是GNU/Linux

Linux参考了Unix的设计思想

重启网络服务: sudo /etc/init.d/networking restart

查看IP地址:ip addr 或ifconfig

重启: reroot

 

第二章 目录结构与磁盘管理

文件系统是操作系统用于在外部存储设备(主要是硬盘)上组织文件的机制。Ubuntu 16.04默认Ext4

Linux没有“盘符”的概念,通过一个整体的目录树来组织文件

目录            说明

/                    系统根目录

/usr               用户的程序,配置等信息

/bin              存放常用命令的目录,和/sbin目录存放系统最核心的命令

/home           主目录,所有用户主目录都会在此目录下,以用户名命名

/sbin              超级用户root才能使用的命令所在目录

/lib                系统动态链接共享库

/boot             root用户的主目录

/etc                系统配置文件以及一些程序的配置文件都在此目录

/dev              外接设备会映射为此目录下的一个文件

/media           把系统自动识别的u盘,光盘等挂载到此目录下

/proc             一个虚拟目录,是系统内存的映射,可以获取系统以及进程的信息

/sys               一个虚拟目录,把硬件设备映射成文件,可以通过文件控制硬件

/lost+found   一般为空,系统异常关机时会有一些信息存入此目录

/var              存放一些不断变化增长的东西(如日志文件)

/usr/bin         用户程序目录

/usr/sbin        需要超级用户权限运行的程序所在的目录

/tmp              存放临时文件的目录

 

命令              说明

ls                   显示目录/文件

cd                  切换工作目录

df                  查看磁盘使用情况

fdisk              磁盘格式化

mkfs              创建文件系统

mount           挂载设备

umount         卸载设备

 

ls -a              显示目录下的所有内容,包括以 . 开头的隐藏文件

ls -l               以详细方式显示目录内容信息

ls -R             递归显示目录内容

ls -S              按文件大小排序,大的在前

使用man is可查看ls命令帮助手册

 

cd (changedirectory)

cd ..              回到上一层目录,在根目录/下使用还是根目录

cd ~              在任何目录下使用

cd -               进入上一次使用的目录

/dev /sd[a-z]  表示硬盘设备(老式的IDE硬盘用hd表示)

sda1, sad2…   表示分区

/dev下cdrom、dvd等表示光盘存储设备

 

df -h             以易于读取的方式显示空间使用情况

df -T              显示文件系统的类型

 

fdisk -l           列出已安装的所有磁盘的分区

fdisk-l 列出指定磁盘的分区

运行sudo fdisk/dev/sda,根据提示,输入m可获取帮助信息

d                   进入删除分区的子步骤

l                    显示所有Ubuntu支持的文件系统格式

n                   进入创建分区的子步骤,其中p用来创建主分区,e用来创建扩展分区

p                   打印修改后的分区表。这个分区表还没有写入硬盘,只是保存在内存中

w                   把分区表写入硬盘,q放弃修改

 

mkfs (makefilesystem)

mkfs -f

mkswap /dev/sda5       创建交换文件系统

 

mount -r /dev/sdb2/media/c                                 只读模式挂载

mount -t ext4/dev/sdb2 /media/c                          指定ext4文件系统,一般不用,mount会自动识别文件系统类型

mount -t iso9660 -oloop ./Ubuntu.iso /media/iso  挂载ISO文件

umount /media/c                                                   卸载挂载点

 

注意

U盘对应/dev 目录下的sdx文件。这个时候,可以使用fdisk进行分区等操作,但是若想读取U盘中的文件,必须进行挂载:       sudo mount /dev/sdb1/media/u

使用完毕,要用umount/media/u 进行卸载

而要使用fdisk对U盘/硬盘等其他已挂载的存储设备进行分区操作,则必须要先卸载才可以。

 

配置双网卡

安装ssh服务: sudo apt-get install openssh-server

终端命令:sudo printf“\nauto enp0s8 \n iface enp0s8 inet dhcp \n” >>  /etc/network/interfaces (可能失败)

或者进入文件页面修改:修改网卡配置:sudonano /etc/network/interferes

在下面面直接输入:autoenp0s8

iface enp0s8 inet dhcp

ctrl+x退出,提示保存Y,然后按enter确认

重启网络服务:sudo/etc/init.d/networking  restart

 

第三章 命令终端基础

终端:也称终端设备,是计算机最外围的设备,主要获取用户信息的输入以及处理结果的输出等

终端是一个设备。而shell是一个程序、主要就是获取用户输入的命令并运行,把结果返回给用户。终端最重要的事情是输入和输出,程序运行的结果要通过shell显示在终端上以此和用户产生交互

Linux命令分类

内部命令:属于Shell解释器的一部分,是shell程序自带的命令

外部命令:独立与Shell解释器之外的程序文件,是在系统的某个路径下的可执行程序,由shell依照事先设定好的路径查找,找到后才能执行

type查找是内部命令还是外部命令。hash表会缓存外部命令所在位置。刚开机时,hash表为空,每次运行命令,hash表会缓存此命令的路径,提高命令查找效率

which/whereis查找命令所在的路径

Linux命令格式

 Linux命令的通用格式为:命令 [选项] [参数]

 选项的含义:

       选项:用于调节命令的具体功能

              以”-”引导短格式选项(单个字符),例如”-l”

              以”—“引导长格式选项(多个字符),例如”--color”

       多个短格式选项可以写在一起,例如”-al”,但是这和程序设计方式有关,如果程序不支持这种格式则不能这样使用

 参数:命令操作的对象,如文件、目录名等

 选项和参数都是人为划分的,对程序来说,比如C语言的main(int argc, char *argv[])函数,后面的选项和参数都会传递到argv,都是作为main函数的参数传递的。

获得命令帮助

使用help查看Bash内部命令的帮助信息

命令的”—help”选项适用于大多数外部命令

使用man命令阅读手册页:man [COMMAND] ,↑↓滚动,PgUp PgDn翻页,q退出,按/后查找内容

命令搜索路径

bash会根据PATH变量的设置自动寻找输入的命令。如果有同名的命令,按照路径顺序找到后返回执行,不再继续寻找。有同名的命令可以输入路径运行

profile记录了bash会在哪些目录查找命令

默认的路径搜索顺序(用;隔开)

  ~/bin  ;~/.local/bin /usr/local/sbin ;

/usr/local/bin ; /usr/sbin ; /usr/bin

/sbin ; /bin ; /usr/games ; /usr/local/games

添加其他路径

  如果在用户主目录下存在ins目录,并希望添加到PATH环境变量中,可以在用户主目录下找到。profile文件,使用文本编辑器打开

PATH=后面的双引号中的字符串末尾添加 :/home/brave/in,保存文件

其中/home/brave是用户主目录,个人使用应换成自己的用户名

或者是直接使用$HOME/ins,$HOME会自动替换为当前用户的主目录

然后运行source  .profile

这样就可以直接在shell中输入ins目录下存在的程序名称被shell执行了

可以使用env命令显示系统中已存在的环境变量

shell使用小技巧

Tab键可以自动补全命令名称以及参数

命令历史:bash中可以使用↑↓逐条翻看,允许编辑并重复执行,history命令显示所有缓存在 .bash_history中的命令,history -c清空历史命令

快捷键

Ctrl+a 跳转行首,Ctrl+e 跳转行尾

Ctrl+l 清屏

Ctrl+c 终止程序执行

Ctrl+d 退出shell,回到登录界面

Ctrl+w 按单词删除,空格隔开的作为一个独立的词。

终端常用命令

命令              说明

ls                   列出文件、目录的信息

cd                  切换当前工作目录

mkdir            创建目录

rmdir             删除空目录

touch             创建空文件

rm                 删除给定的文件和目录。如果不为空,需要使用rm -rf

cp                  将一个或多个源文件或者目录复制到指定的目的文件或目录

mv                对文件或目录重新命名,或者将文件从一个目录转移到另一个目录中

cat                 连接文件并打印到标准输出设备上。cat经常用来显示文件的内容

more less       以全屏幕的方式按页显示文本文件的内容,less功能比more更强大

find               在指定目录下查找文件

常用命令使用示例

ls /usr            显示/usr的目录内容

ls -R /usr       递归显示目录内容

ls -l /usr        显示目录/文件详细信息

mkdir abc      在当前目录下创建abc目录

rmdir abc/      删除当前目录下的abc目录,abc必须是空目录

rm tmp/a.sh   删除tmp目录下的a.sh文件

rm -rf tmp/    删除tmp目录,目录可以不为空,会删除目录下所有的内容

cp tmp/a,sh sh/            复制tmp/a.sh文件到sh目录,tmp和sh都是当前目录的子目录

cp tmp/a.sh /tmp         复制tmp/a.sh到/tmp,/tmp是绝对路径

cp tmp/a.sh sh/b.sh     复制tmp/a.sh到sh/目录并为b.sh

cp mariadb/ -R /usr/local           递归复制mariadb目录到/usr/local

mv tmp/a.sh sh/                         移动文件

mv tmp/a.sh sh/b.sh                  移动文件并重命名

mv tmp/a.sh tmp/c.sh                重命名文件

touch tmp/test.sh                       在tmp目录创建test.sh空文件

cat /etc/passwd                          显示/etc/passwd文件的内容

find /usr -name gcc                   查找名称为gcc的文件,大小写敏感

find /usr -name gcc*                  查找名称gcc开头的文件,大小写敏感

find /usr/ -iname gcc*                查找名称开头gcc的文件,大小写不敏感

env                                            显示环境变量

 

第四章 IO重定向与管道 标准输入输出

       每个进程都至少有3个信道:标准输入-STDIN、标准输出-STDOUT、标准错误-STDERR

              标准输入:文件描述符为0,默认指向终端(在虚拟终端中即为键盘)

              标准输出:文件描述符为1,默认指向终端(在虚拟终端中即为屏幕)

              标准错误:文件描述符为2,默认指向终端(在虚拟终端中即为屏幕)

       在Linux中一切皆文件,所以标准输入、标准输出、标准错误都有对应的文件,而这种对应关系是通过文件描述来实

现的,我们在重定向的时候还会用到它们

    对于一个进程来说,它从描述符0指向的文件读取输入信息,把执行结果送到描述符1指向的文件,把出错信息送到

描述符2指向的文件,而不关心这些文件具体是什么

    关于文件描述符:一个进程有一个结构保存一组打开的文件,每个打开的文件用一个数字标识,此数字一般被称为文

件描述符,而在Linux/Unix上设备也被映射为文件,数字0,1,2都会分别关联到键盘,屏幕,屏幕

IO重定向

       在shell中输入命令运行程序,程序的正常输出信息(标准输出)和一些出错信息(标准错误)会通过shell显示在屏

幕上。有时候我们并不需要把这些输出信息(包括标准输出和标准错误)显示在屏幕上,或需要把这些输出信息保存在

一个文件中,这时就需要进行输出重定向。如果一个命令要获取的输入来自文件,或者是在shell脚本编程中,需要从

文件获取输入,则需要进行输入重定向

    重定向示例:echo‘abc’会输出abc到屏幕。echo ‘abc’ >tmp/buff会把abc输出到tmp/buff这个文件。如果没有此

文件则会创建这个文件并写入。但是如果文件存在并且不为空,则重定向会导致之前的数据丢失,只保存重定向的数据。

echo ‘abc’ >> /tmp/buff会把abc追加到文件末尾,之前的数据不会丢失

    谁控制重定向:在shell中使用>,>等重定向符号时,执行重定向操作的是shell,而不是程序。shell把重定向符号解释成指令,将标准输入、输出、错误输出指向其他文件,而不是所关联的设备。手动编写的程序也是可以进行重定向的,但是在shell中输入命令,shell会创建子进程去执行命令,此时进行重定向操作的是shell

    重定向符号:shell将>,>解释成指令,用来把一条命令的输入或输出重定向到一个文件。重定向STDERR的话,则用2>

类型                  操作符                                用途

重定向标准输入                    以替换的方式将命令的执行结果输出到指定的文件,而不是直接显示在屏幕上

                                  >>             将命令执行的结果追加输出到指定文件

重定向标准错误         2>              清空指定文件的内容,并将标准错误信息保存到该文件中

                                 2>>             将标准错误信息追加输出到指定的文件中

重定向标准输出   &>或>&         将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上

和标准错误

重定向示例:

    wc -l newfile 与 wc -l < newfile

           wc是一个计算行数的程序,第一个是对文件进行操作;第二个是对文件内容进行操作,把文件的内容作为输入

    find / -iname gcc* >find_tmp

           标准输出重定向到find_tmp文件,但是错误信息会显示在屏幕上,如果需要把错误信息也重定向到文件,可以

运行:find / -iname gcc* &> find_tmp

       1>等同于>,0  &> >> |

 

第十一章 shell脚本基础-变量 Shell在系统的角色

shell是用户和系统交互的桥梁:

shell是Linux的一个程序,实现版本有多种。shell的主要工作就是运行命令。

sh是shell的简写,shell的实现版本有:sh,bash,csh,tcsh,zsh。

多数Linux默认的shell是bash。Linux启动登录以后,会运行一个shell等待用户输入命令。

用户通过shell和系统交互。

Shell环境变量

当前shell运行时保存的信息,包括终端类型,当前目录,主目录,语言编码,默认命令搜索路径等信息。运行env命令可以查看当前环境变量。

环境变量是一个名称和值的对应列表。一种是shell启动时解析配置文件生成,还有一种临时的环境变量是在shell中使用export生成。

PATH变量记录了要查找命令的路径顺序;HOME记录当前用户主目录; PWD是当前工作目录,每次切换目录都会变化。使用$取值:echo $PWD,而echo PWD仅仅是输出PWD字符串。

Shell运行命令的基本过程

Shell运行命令的文字描述

输入一条命令并确认后,实际shell获取的是一行字符串,shell要对字符串进行解析,并确定命令名称,参数等信息。shell支持从文件读取文本逐 条解释执行。

然后,shell要根据配置文件的搜索路径,从每个路径寻找命令,没有找到则提示错误信息,找到就调用Linux提供的系统调用运行命令。

比如:输入 ls -l,shell要解析成‘ls’ ,‘-l’,’ls’就是命令名称,并在PATH设置的路径中寻找,找到/bin/ls这个命令,fork一个子进程调用 execv等系统调用传递参数运行命令。并等待结束。

注意:真正运行命令的不是shell,而是内核,shell去调用内核提供的接口,shell是调用fork创建子进程去运行命令。

Shell中的通配符

shell支持通配符,使用*表示匹配任意长度的字符,?匹配任意一个字符。

shell在遇到通配符会进行扩展,比如输入ls  ./a*,会匹配a开头的所有文件并显示,如果存在ab.txt,ac.txt,则会扩成ls  ./ab.txt ./ac.txt。

注意:扩展通配符的是shell,不是命令自身,如果是命令本身实现的,那就每个命令都要实现。

通配符在使用时会带来很多便利,但是有些特殊情况也要注意。

Shell脚本

shell可以从一个文件读取命令并逐条执行。文件一般被称为脚本。

大多数Linux发行版的默认shell都是bash。

文件第一行使用#!/bin/bash表明这是一个bash脚本,注意有些脚本程序使用 #!/bin/sh表示。

在Ubuntu/Debian上,sh是一个符号链接指向dash,dash是一个专为执行脚本而设计的shell程序,执行速度快,语法遵循POSIX标准,但是功能比bash 少很多。

一个简单的脚本:开头声明这是一个bash脚本,然后是主要操作代码,最后 以exit 0退出。

脚本的可执行权限

执行脚本可以使用 bash [SCRIPT NAME],此时bash读取脚本文件并执行, #!/bin/bash是被解释为注释。

另一种方式就是给脚本添加可执行权限:chmod +x [SCRIPT NAME]

给脚本添加执行权限,脚本开头的#!/bin/bash声明这是一个脚本文件,要用 /bin/bash执行。

变量

shell运行a=123就定义了a变量。shell中的变量就是为某些需要保存的数据用一个名称标记,方便以后使用。变量的名称以字母或是下划线符号开头,后可跟任意长度的字母、数字、下划线。

=左右不能有空格,否则会按照运行命令的方式去执行。

a=`ls` 会把ls运行的结果赋值给a。注意ls不是被单引号包含,而是反 引号。

获取变量的值要用$,echo $a可以输出变量的值。

shell中的变量就是键值对(key-value)的列表,都是以文本的形式存储的。a=1+2不会进行计算把3赋值给a,而是a的值就是‘1+2’这段文本。变量的值可以用双引号/单引号括起来,包含空格的变量就必须要这么做。

变量查看与清除

用set命令可以查看所有的变量。

可以使用 set | grep linux 进行搜索

unset VAR命令可以清除变量VAR,相当于没有定义过。使用空格分隔多个变量。

只读变量

变量设置后,是可以修改值的:a=12; a=13,此时a的值就是13

readonly把变量设置为只读:readonlya

但是设置之后,只读变量就无法更改和清除。除非重置shell环境。

 

算术运算

shell支持算术运算,并且shell会对$((····))里的算数表达式进行运算。 a=12;b=14

x=$(($a+$b))

echo  $x

如果b=12a,此时会报错,但是如果以字母开头的文本,比如b=a12, 则x=$(($a+$b))则直接就计算为a的数值,b转成数字为0。

逻辑运算

逻辑运算:&&,||, !。分别是AND,OR,NOT。

对逻辑运算来说,任何非0值都是真。

示例:echo $((1&&0))  ;  echo $(( 2 || 0))

非数字格式逻辑运算:

b=abc

echo  $(( 1 && $b ))  //输出是0

/*************/

b=12a

echo $(( 1&& $b)) //提示错误

放进环境变量

环境变量是全局存在的,在任何shell脚本中都可以直接使用。

使用env查看环境变量。

export a:把变量放到环境变量,环境变量是一个名称与值的简单列表。

使用示例,shell中执行:

$ env | greplinux

$ linux=1

$ export linux

$ env | greplinux

变量的引用

${#var}   返回变量值(字符串)的长度

${var:start_index}   返回从start_index开始一直到字符串结尾的字符串

${var:start_index:length}  返回从start_index开始的length个字符

${var:-newstring}  如果var未定义或为空值,则返回newstring;否则返回var 的值

${var:=newstring}  如果var未定义或为空值,则返回newstring,并把 newstring赋给var;否则返回var的值

${var:+newstring}  如果var不为空,则返回newstring;否则返回空值(其实也是var的值)

${var:?newstring}  如果var未定义或为空值,则将newstring写入标准错误,本语句失败;否则返回var的值

脚本的特殊变量

$0:当前脚本的文件名/当前执行的进程/程序名

$n:n为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数(从${10}开始参数号需要用花括号括起来)

$#:传入脚本的参数的个数

$*:所有的位置参数(作为单个字符串)

$@:所有的位置参数(每个都作为独立的字符串)。

$?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则

$? 的值为0,否则为其他非零值,常用做if语句条件

$$:当前shell进程的pid

$!:后台运行的最后一个进程的pid

 

本节课任务

创建脚本文件:varstudy.sh

赋予可执行权限

脚本运行时输出参数个数

并输出参数个数,以及程序的名称和参数字符串

显示当前工作目录以及用户主目录

 

第十二章 shell脚本基础-逻辑判断与循环 Test

test是shell内建命令,可以处理脚本里的各类工作,产生的不是一般形式的输出,而是可用的退出状态。使用help test查看帮助文档。

test命令有其他形式:[······],[[······]]。当在[ ]中使用&&|| 会出错,这时候要使用[[ ]]。

test返回true或false,但是test返回的true是0,false是1,这和通常的编程语言定义的true是1(或非0值),false是0有所区别。(Linux/Unix上程序退出 状态为0表示0错误正确执行,而非0值表示有错。)

例:test “abc”=“abc” ; test -f ~/tmp/a.sh ; [-f ~/tmp/a.sh ]

If,else,elif

if ,else,elif的语法结构:

写在一行要使用分号分隔:if [COMMAND] ; then [COMMAND] ;fi

示例:

if ,else,elif的用法:

file=~/sh/a.sh

dbin=~/bin

if test -f“$file” ; then

    cat “$file”

elif [ -d“$dbin” ] ; then

    ls “$dbin”

else

    echo “file not found”

fi

if [[ -f “sh/a.sh” && -f “sh/h.sh”]] ; then cat sh/a.sh sh/h.sh ; fi

case

多个判断值可以使用if,elif,else组合。更简洁的形式是使用case语句实现, 就像普通编程语言的switch。语法结构:

case WORD in

    VALUE1)

        [COMMANDS] ;;

    VALUE2)

        [COMMANDS] ;;

    *)

        [COMMANDS]

        ;; //esac之前的;;可以省略

Esac

• )是必须要加的,每个逻辑块执行到;;结束。*)是默认情况,并非必须。

示例:

创建shell脚本casetest.sh,写入一下代码并运行:

case $1 in

“hello”)

        echo “hey!”

        ;;

“time”)

        Date

        ;;

*)

echo “nothing to do”

esac

选项可以写成不带引号的形式:time hello

For

for循环用于重复整个列表对象,基本用法

 forNAME in WORDS; do COMMANDS; done

for NAME in WORDS

do

    COMMANDS

Done

While与until

while与until循环的结构一致,不同的是对待条件退出的状态,while是 成功则执行,until是不成功则执行。结构使用如下:

while CONDITION; do #do写在单独一行,;可以不写

    COMMANDS

done

本节课任务

在当前用户主目录创建bin目录(如果bin目录不存在)。

在bin/创建脚本文件pse

要求脚本运行时检测参数个数是否>0,大于0则使用第一个参数作为筛选条 件。否则直接运行ps -e -ouser,pid,ppid,tty,comm,args

 

第十三章 Vim和Linux C编程环境 vim配置文件

安装vim后,配置文件:/etc/vim/vimrc, vim启动时会读取此文件。除此之 外,在用户主目录下如果存在.vimrc,也会读取此文件,如果存在相同的配置,则.vimrc文件配置会覆盖/etc/vim/vimrc的配置。

/usr/share/vim/vim74/colors是vim的配色主题文件所在目录,在用户主目录 下的.vim/colors也可以保存主题文件,此目录通常需要自己创建。

通用的配置可以写在/etc/vim/vimrc,个性化设置可以放在~/.vimrc

vim配置文件使用 ” 标记注释。

基本配置

set mouse=a “ 启用鼠标支持,a表示所有模式都支持

set t_Co=256  “ 256颜色支持

set number “ 显示行号

set backspace=2 “ 设置退格键删除

set fileencodings=utf-8 “设置写入文件编码为

utf-8 set encoding=utf-8 “ 设置vim缓冲区编码utf-8

set termencoding=utf-8 ” 设置终端显示编码为utf-8

set autoindent “ 自动缩进

set shiftwidth=4 “缩进4空格宽度

set tabstop=4 “ tab缩进4空格宽度

set expandtab “ tab转换为空格

颜色主题配置

设置暗色背景和暗色主题

setbackground=dark

colorschemetomorrow-night

设置亮色主题和亮色背景

setbackground=light

colorschemetomorrow

gcc基本介绍与安装

gcc不是一个软件,全名是GNUCompiler Collection,是一个编译器 集合。

gcc支持C, C++,Objective-C, Fortran, Ada, Go语言的编译。

gcc是GNU的一个项目,发布于GPL开源协议。

UbuntuServer版本都自带gcc,如果没有则运行: sudo apt install gcc。

gcc基本使用

使用vim test.c创建文件并编写一段C程序。

gcc test.c即可编译,编译后的文件是a.out。

./a.out运行编译的程序。

gcc编译后的默认名称是a.out

gcc –o test test.c :编译后的文件是test,-o参数后面跟输出文件的名称。

ELF文件

gcc test.c编译后的输出文件是ELF格式的。

而扩展名和文件类型并没有关系,Windows是设计必须使用扩展名和对应的运行程序去关联。Windows上采用的PE格式作为可执行文件格式,.exe是 Windows上的可执行文件的扩展名。

在Linux上采用的ELF格式不必在文件名中体现出来。但是如果使用vim打开 编译后的文件,在最开始会看到ELF三个字符表明是ELF文件。

readelf -h ./test可以查看test程序的ELF文件头信息。

glibc

glibc是Linux上标准C的函数库实现。

.so文件是Linux上的共享库文件,相当于Windows上的.dll文件。

glibc的实现库文件是/lib/x86_64-linux-gnu/libc.so.6链接到 /lib/x86_64-linux-gnu/libc-***.so;星号表示版本,比如,在 UbuntuServer16.04上是2.23,UbuntuServer18.04上是2.27。

gcc在编译C语言代码的时候要用到glibc。

main函数的参数和返回值

int main (int argc, char* argv[]) { /* ………… //something code */ return 0; }

main函数的返回值是程序的退出状态表示程序是否正确执行。

argc是传递给程序参数的个数,argv是每个参数的值,argv[0]永远都是程序文件的名称。但是这个名称是带有路径信息的。

支持参数的程序

输出传递给程序的参数:

#include

int main(int argc, char* argv[]) {

    printf(“programname: %s\n”, argv[0]);

    for (int i=1;i1)

        printf(“\n”);

    return 0;

}

编程训练

编写一个对整数排序的程序,通过参数获取数字,并输出排序结果。

使用插入排序即可,插入排序示例(nms是数字数组):

int k,j,tmp;

for (k=1;k



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有