Linux程序设计知识点整理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)形式:find [path] [options] [tests] [actions]
Options
Tests
可以用操作符进行组合测试:!(-not);-a(-and);-o(-or)
可以用圆括号来强制测试和操作符的优先级,需要用到转义字符\
例:
find . \(-name "_*" -or -newer while2\) -type f–print
(2)进程树:进程树是一种进程关系表示方法。由父进程和子进程两部分组成。
(3)Shell的工作步骤:打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令
2)独立的程序设计语言解释器
(1)KISS (Keep It Small and Stupid)
(2)Reusable tools
(3)Redirection and pipe
例如:service httpd stop
本身就是执行:/etc/rc.d/init.d/httpd stop。由httpd脚本去控制httpd服务的停止动作(stop)。
文件系统
1、
1、基本定义
-u当执行时使用到未定义过的变量,则显示错误信息。
-v显示shell所读取的输入值。
-x执行指令后,会先显示该指令及所下的参数。
+<参数>取消某个set曾启动的参数。
3、环境变量(Shell环境提供的变量。通常使用大写字母做名字)
4、参数变量和内部变量
调用脚本程序时如果带有参数,对应的参数和额外产生的一些变量。
Unalias[别名]
(3)环境变量:
export [-fnp][变量名称]=[变量设置值]
-f代表[变量名称]中为函数名称。
-n删除指定的变量。变量实际上未删除,只是不会输出到后续指令的执行环境中。
-p列出所有的shell赋予程序的环境变量。
env:显示当前用户的环境变量;
set:用set命令可以设置各种shell选项或者列出shell变量
二、创建和执行
1、编写脚本文件(注释、退出码(exit 0))
2、执行脚本文件
方法1:$ sh script_file
方法2:chmod +x script_file (chown, chgrp optionally)
./script_file
方法3:source script_file, or. script_file
actions
3、grep命令(用于在文件中查找字符串)
(1)形式:grep [OPTIONS] PATTERN [FILES]
(2)正则表达式:广泛用于Linux和许多其他编程语言中,基本原理都是一样的
注:上表中的括号需要使用转移字符’\’,如grep –E [a-z]\{10\} words2.txt
2
1、字符串比较
2、算数比较
3、与文件有关的条件测试
4、逻辑操作
5、条件语句
(1ቤተ መጻሕፍቲ ባይዱ形式:(紧凑形式;(同一行上多个命令的分隔符))
if [ expression ]
then
statements
elif [ expression ]
then
statements
elif …
else
statements
fi
2、Shell的双重角色
1)、命令解释程序
(1)Linux的开机启动过程:加载BIOS;读取MBR(Master Boot Record);Boot Loader;加载内核;用户层init依据inittab文件来设定运行等级;init进程执行rc.sysinit;启动内核模块;执行不同运行级别的脚本程序;执行/etc/rc.d/rc.local;执行/bin/login程序,进入登录状态
.bashrc:启动一个新的shell时读取并执行
.bash_logout:登录退出时读取执行
(2)Alias:alias[别名]=[指令名称],若不加任何参数,则列出目前所有的别名设置。
alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。
done
4、Select语句:生成菜单列表
(1)形式:
select item in itemlist
do
statements
done
4
1、命令表
(1)命令组合
分号串联:command1 ; command2 ; …
条件组合:
AND命令表:只有在&&左边的命令返回真,&&右边的命令才会被执行
格式:statement1 && statement2 && statement3 &&…
-a标示已修改的变量,以供输出至环境变量。
-b使被中止的后台程序立刻回报执行状态。
-C转向所产生的文件无法覆盖已存在的文件。
-d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。-d参数可取消。
-e若指令传回值不等于0,则立即退出shell。
-f取消使用通配符。
-h自动记录函数的所在位置。
1、在当前bash环境下新建一个子shell来执行这个脚本,继承父Shell的环境变量,用于执行刚修改的初始化文档,
2、这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。由于是在子shell中执行,脚本设置的变量不会影响当前shell。
3、source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效
#!/bin/bash
cat << !CATINPUT!
Hello, this is a here document.
!CATINPUT!
8、shell脚本调试
*sbin/service:
它本身是一个shell脚本程序,作用就是获取传递给它的两个参数:$1 $2,分别是服务名和对该服务的动作。然后调用/etc/rc.d/init.d/服务名称($1),并给该服务脚本传递你指定的动作($2)。
4、捕获命令输出
(1)语法:
$(command)
`command`
(2)例:
#!/bin/sh
echo “The current directory is $PWD”
echo “The current directory is $(pwd)”
exit 0
5、算数扩展
(1)expr命令(支持的operator包括)
-s:默读、在输入密码时用的到
-t:计时输入,后接等待秒数
(4)引号的用法:
双引号作用:$ ,\ ,`这些字符的特殊含义还是存在
单引号:忽略所有的特殊字符
2、用户环境
(1).bash_profile, .bash_logout, .bashrc files
.bash_profile:用户登录时被读取,其中包含的命令被bash执行
-amin<n>、-anewer<file>、-atime<n>
-cmin<n>、-cnewer<file>、-ctime<n>
-empty、-gid<n> or -group<name>、-pid<n>
-name<name>, -iname<name>
-size<n单位>、-type<c>
-ipath<p>, -path<p>路径名符合p的文件,ipath表示忽略大小写
-H Shell可利用"!"加<指令编号>的方式来执行history中记录的指令。
-k指令所给的参数都会被视为此指令的环境变量。
-l记录for循环的变量名称。
-m使用监视模式。
-n只读取指令,而不实际执行。
-p启动优先顺序模式。
-P启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
-t执行完随后的指令,即退出shell。
编译、链接:gcc(GNU C Compiler -> GNU Compiler Collection)
调试:gdb
make命令
版本控制工具:CVS等
三、编程语言
1、High-level Language:C/C++, Java, Fortran…
2、ELF binary format:Excutable and Linkable Format(工具接口标准委员会(TIS)选择了正在发展中的ELF体系上不同操作系统之间可移植的二进制文件格式)
-Ldir:指定额外的库文件搜索路径
-lname:链接时搜索指定的库文件
-DMACRO[=DEFN]:定义MACRO宏
Gcc过程:预处理、编译、汇编、链接
GDB
设置断点、监视变量值、单步执行、修改变量值
make [-f filename] [targetname]
Shell
一、
1、Shell
用户和操作系统之间的接口、作为核外程序而存在
{
statements
[return int]
}
(2)局部变量:局部变量只适用于当前shell,local关键字
(3)函数的调用:func para1 para2 …
6
1、杂项命令:
break:从for/while/until循环退出
continue:跳到下一个循环继续执行
exit n:以退出码”n”退出脚本运行
三、
1
1、用户变量:
(1)定义:用户在shell脚本里定义的变量
(2)赋值和使用:
var=value
echo $var
(3)read命令:(read -p "Enter your name:" name)
read var或read
REPLY variable(环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY,当然,在引用的时候不要忘记$)
6、case语句
(1)形式:
case str in
str1 | str2) statements;;
str3 | str4) statements;;
*) statements;;
Esac
3
1、for语句:适用于对一系列字符串循环处理
(1)形式:
for var in list
do
statements
done
例:
#!/bin/sh
for file in $(ls f*.sh); do
lpr $file
done
exit 0
2、while语句
(1)形式:
while condition
do
statements
done
3、until语句(不推荐使用)
(1)形式:
until condition
do
statements
其它: pwd, cd, ar, file, grep, tar, more, less, head, tail, cat
2、进程操作
ps, kill, jobs, fg, bg, nice
3、其它
who, whoami, passwd, su, uname, …
man
二、
编辑工具:vi, emacs
Prerequisite
一、
1、文件操作
列出目录内容: ls, dir, vdir
创建特殊文件: mkdir, mknod, mkfifo
文件操作: cp, mv, rm
修改文件属性: chmod, chown, chgrp, touch
查找文件: locate, find
字符串匹配: grep(egrep)
OR命令表:只有在||左边的命令返回假,||右边的命令才会被执行。
格式:statement1 || statement2 || statement3 ||…
2、语句块
(1)形式
{
statement1
statement2
…
}
或{ statement1; statement2 ;…; }
5
(1)形式
[function] funcname()
四、
-E:只对源程序进行预处理(调用cpp预处理器)
-S:只对源程序进行预处理、编译
-c:执行预处理、编译、汇编而不链接
-o output_file:指定输出文件名
-g:产生调试工具必需的符号信息
-O/On:在程序编译、链接过程中进行优化处理
-Wall:显示所有的警告信息
-Idir:指定额外的头文件搜索路径
expr argument operator argument
(2)$((…))扩展
例:x=$(($x+1))
6、参数扩展
#!/bin/sh
i=0
while [ “$i” –ne 10 ]; do
touch “${i}_tmp”
i=$(($i+1))
done
exit 0
7、即时文档
在shell脚本中向一条命令传送输入数据
return:函数返回
export:将变量导出到shell,使之成为shell的环境变量
set:为shell设置参数变量
unset:从环境中删除变量或函数
trap:指定在收到操作系统信号后执行的动作
“:”(冒号命令):空命令
“.”(句点命令)或source:在当前shell中执行命令
2、find命令
Options
Tests
可以用操作符进行组合测试:!(-not);-a(-and);-o(-or)
可以用圆括号来强制测试和操作符的优先级,需要用到转义字符\
例:
find . \(-name "_*" -or -newer while2\) -type f–print
(2)进程树:进程树是一种进程关系表示方法。由父进程和子进程两部分组成。
(3)Shell的工作步骤:打印提示符;得到命令行;解析命令;查找文件;准备参数;执行命令
2)独立的程序设计语言解释器
(1)KISS (Keep It Small and Stupid)
(2)Reusable tools
(3)Redirection and pipe
例如:service httpd stop
本身就是执行:/etc/rc.d/init.d/httpd stop。由httpd脚本去控制httpd服务的停止动作(stop)。
文件系统
1、
1、基本定义
-u当执行时使用到未定义过的变量,则显示错误信息。
-v显示shell所读取的输入值。
-x执行指令后,会先显示该指令及所下的参数。
+<参数>取消某个set曾启动的参数。
3、环境变量(Shell环境提供的变量。通常使用大写字母做名字)
4、参数变量和内部变量
调用脚本程序时如果带有参数,对应的参数和额外产生的一些变量。
Unalias[别名]
(3)环境变量:
export [-fnp][变量名称]=[变量设置值]
-f代表[变量名称]中为函数名称。
-n删除指定的变量。变量实际上未删除,只是不会输出到后续指令的执行环境中。
-p列出所有的shell赋予程序的环境变量。
env:显示当前用户的环境变量;
set:用set命令可以设置各种shell选项或者列出shell变量
二、创建和执行
1、编写脚本文件(注释、退出码(exit 0))
2、执行脚本文件
方法1:$ sh script_file
方法2:chmod +x script_file (chown, chgrp optionally)
./script_file
方法3:source script_file, or. script_file
actions
3、grep命令(用于在文件中查找字符串)
(1)形式:grep [OPTIONS] PATTERN [FILES]
(2)正则表达式:广泛用于Linux和许多其他编程语言中,基本原理都是一样的
注:上表中的括号需要使用转移字符’\’,如grep –E [a-z]\{10\} words2.txt
2
1、字符串比较
2、算数比较
3、与文件有关的条件测试
4、逻辑操作
5、条件语句
(1ቤተ መጻሕፍቲ ባይዱ形式:(紧凑形式;(同一行上多个命令的分隔符))
if [ expression ]
then
statements
elif [ expression ]
then
statements
elif …
else
statements
fi
2、Shell的双重角色
1)、命令解释程序
(1)Linux的开机启动过程:加载BIOS;读取MBR(Master Boot Record);Boot Loader;加载内核;用户层init依据inittab文件来设定运行等级;init进程执行rc.sysinit;启动内核模块;执行不同运行级别的脚本程序;执行/etc/rc.d/rc.local;执行/bin/login程序,进入登录状态
.bashrc:启动一个新的shell时读取并执行
.bash_logout:登录退出时读取执行
(2)Alias:alias[别名]=[指令名称],若不加任何参数,则列出目前所有的别名设置。
alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。
done
4、Select语句:生成菜单列表
(1)形式:
select item in itemlist
do
statements
done
4
1、命令表
(1)命令组合
分号串联:command1 ; command2 ; …
条件组合:
AND命令表:只有在&&左边的命令返回真,&&右边的命令才会被执行
格式:statement1 && statement2 && statement3 &&…
-a标示已修改的变量,以供输出至环境变量。
-b使被中止的后台程序立刻回报执行状态。
-C转向所产生的文件无法覆盖已存在的文件。
-d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。-d参数可取消。
-e若指令传回值不等于0,则立即退出shell。
-f取消使用通配符。
-h自动记录函数的所在位置。
1、在当前bash环境下新建一个子shell来执行这个脚本,继承父Shell的环境变量,用于执行刚修改的初始化文档,
2、这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。由于是在子shell中执行,脚本设置的变量不会影响当前shell。
3、source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效
#!/bin/bash
cat << !CATINPUT!
Hello, this is a here document.
!CATINPUT!
8、shell脚本调试
*sbin/service:
它本身是一个shell脚本程序,作用就是获取传递给它的两个参数:$1 $2,分别是服务名和对该服务的动作。然后调用/etc/rc.d/init.d/服务名称($1),并给该服务脚本传递你指定的动作($2)。
4、捕获命令输出
(1)语法:
$(command)
`command`
(2)例:
#!/bin/sh
echo “The current directory is $PWD”
echo “The current directory is $(pwd)”
exit 0
5、算数扩展
(1)expr命令(支持的operator包括)
-s:默读、在输入密码时用的到
-t:计时输入,后接等待秒数
(4)引号的用法:
双引号作用:$ ,\ ,`这些字符的特殊含义还是存在
单引号:忽略所有的特殊字符
2、用户环境
(1).bash_profile, .bash_logout, .bashrc files
.bash_profile:用户登录时被读取,其中包含的命令被bash执行
-amin<n>、-anewer<file>、-atime<n>
-cmin<n>、-cnewer<file>、-ctime<n>
-empty、-gid<n> or -group<name>、-pid<n>
-name<name>, -iname<name>
-size<n单位>、-type<c>
-ipath<p>, -path<p>路径名符合p的文件,ipath表示忽略大小写
-H Shell可利用"!"加<指令编号>的方式来执行history中记录的指令。
-k指令所给的参数都会被视为此指令的环境变量。
-l记录for循环的变量名称。
-m使用监视模式。
-n只读取指令,而不实际执行。
-p启动优先顺序模式。
-P启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
-t执行完随后的指令,即退出shell。
编译、链接:gcc(GNU C Compiler -> GNU Compiler Collection)
调试:gdb
make命令
版本控制工具:CVS等
三、编程语言
1、High-level Language:C/C++, Java, Fortran…
2、ELF binary format:Excutable and Linkable Format(工具接口标准委员会(TIS)选择了正在发展中的ELF体系上不同操作系统之间可移植的二进制文件格式)
-Ldir:指定额外的库文件搜索路径
-lname:链接时搜索指定的库文件
-DMACRO[=DEFN]:定义MACRO宏
Gcc过程:预处理、编译、汇编、链接
GDB
设置断点、监视变量值、单步执行、修改变量值
make [-f filename] [targetname]
Shell
一、
1、Shell
用户和操作系统之间的接口、作为核外程序而存在
{
statements
[return int]
}
(2)局部变量:局部变量只适用于当前shell,local关键字
(3)函数的调用:func para1 para2 …
6
1、杂项命令:
break:从for/while/until循环退出
continue:跳到下一个循环继续执行
exit n:以退出码”n”退出脚本运行
三、
1
1、用户变量:
(1)定义:用户在shell脚本里定义的变量
(2)赋值和使用:
var=value
echo $var
(3)read命令:(read -p "Enter your name:" name)
read var或read
REPLY variable(环境变量REPLY中包含输入的所有数据,可以像使用其他变量一样在shell脚本中使用环境变量REPLY,当然,在引用的时候不要忘记$)
6、case语句
(1)形式:
case str in
str1 | str2) statements;;
str3 | str4) statements;;
*) statements;;
Esac
3
1、for语句:适用于对一系列字符串循环处理
(1)形式:
for var in list
do
statements
done
例:
#!/bin/sh
for file in $(ls f*.sh); do
lpr $file
done
exit 0
2、while语句
(1)形式:
while condition
do
statements
done
3、until语句(不推荐使用)
(1)形式:
until condition
do
statements
其它: pwd, cd, ar, file, grep, tar, more, less, head, tail, cat
2、进程操作
ps, kill, jobs, fg, bg, nice
3、其它
who, whoami, passwd, su, uname, …
man
二、
编辑工具:vi, emacs
Prerequisite
一、
1、文件操作
列出目录内容: ls, dir, vdir
创建特殊文件: mkdir, mknod, mkfifo
文件操作: cp, mv, rm
修改文件属性: chmod, chown, chgrp, touch
查找文件: locate, find
字符串匹配: grep(egrep)
OR命令表:只有在||左边的命令返回假,||右边的命令才会被执行。
格式:statement1 || statement2 || statement3 ||…
2、语句块
(1)形式
{
statement1
statement2
…
}
或{ statement1; statement2 ;…; }
5
(1)形式
[function] funcname()
四、
-E:只对源程序进行预处理(调用cpp预处理器)
-S:只对源程序进行预处理、编译
-c:执行预处理、编译、汇编而不链接
-o output_file:指定输出文件名
-g:产生调试工具必需的符号信息
-O/On:在程序编译、链接过程中进行优化处理
-Wall:显示所有的警告信息
-Idir:指定额外的头文件搜索路径
expr argument operator argument
(2)$((…))扩展
例:x=$(($x+1))
6、参数扩展
#!/bin/sh
i=0
while [ “$i” –ne 10 ]; do
touch “${i}_tmp”
i=$(($i+1))
done
exit 0
7、即时文档
在shell脚本中向一条命令传送输入数据
return:函数返回
export:将变量导出到shell,使之成为shell的环境变量
set:为shell设置参数变量
unset:从环境中删除变量或函数
trap:指定在收到操作系统信号后执行的动作
“:”(冒号命令):空命令
“.”(句点命令)或source:在当前shell中执行命令
2、find命令