2.Linux下C的开发环境
C的开发环境
编辑器:VI,VIM Vim:tab切换gt :wq :q! 保存
编译器:GNU C/C++编译器gcc
调试器:gdb
函数库:glibc
系统头文件:glibc_header
gcc 是GNU推出的多平台编译器,能将C,C++语言源程序编译,连接成可执行文件。
.i为后缀的文件,是已经预处理的C源代码文件
.O 是编译后的目标文件
.s是汇编语言源代码文件
vim dd删除一行 D:删除光标位置到结尾的东西 dw删除一个词
查询命令:/lxt lxt为查找的字符串
替换字符:命令模式下,替换光标所在的字符,先按r,在按要替换的字符
拷贝一行:帮光标移动到该行,按yy ,然后把光标定位到要黏贴的行,在按p键
拷贝多行 nyy n代表行数
gcc -o hello hello.c
-o 要求编译器给出的输出的可执行文件名为Hello
-c 不产生可执行文件,只要求编译器输出目标代码
-g 要求编译器在编译的过程提供我们以后对程序进行调试的信息。
执行./hello 看到程序输出结果
集成开发坏境IDE:
Kylix:号称Linux 下的dephi
Kdevelop
RHIDE:类似与Turbo C++
Glibc 是必不可少,是Linux下C的主要函数库。
Glibc2 含有几个附加包: LinuxThreads线程,local本地化 ,crypt加密。
Glibc是提供系统调用和基本函数的C库,比如open,malloc ,printf等。所有的动态连接的程序都要用到它。
通过rpm包来安装各种环境包。
gcc包需要依赖binutils和cpp包,make包也是在编译中常用的,一共需要八个包来完成安装。
查看glibc的版本
ls /lib/libc-*
查看gcc编译器的版本号 gcc --version
使用gdb进行调试
对于一个C程序,安装完成后可以分成三个组成部分:
1.可执行文件 2.包含文件 3.库文件
可执行文件就是最终运行的命令,包含文件是该C程序include的一些定义文件,
库文件则是该C程序库自定义的库。
比如RPM安装的MYSQL数据库
可执行文件放在:/usr/bin下
包含文件:/usr/include/mysql
库文件:/usr/lib/mysql
3.Linux基础
shutdown -h now 关机 (推荐)
shutdown -r now 重启 (推荐)
reboot 快速重启 (跳过sync过程)
init 0 关机 init 6重启
halt系统停机
Linux系统结构:
硬件-->Kernel--->Shell-->外层应用程序
Linux目录结构:
/ 根目录包括:/bin包括系统工具 ,/usr ,/etc,/tmp ,/lib ,/var /home 保存用户主目录,/opt
/usr 包括bin ,local,src
/etc rc.d,rc.d包括:rc3.d, rc5.d, init.d
/var 包括:named ,httpd, ftp
ftp下包括:bin ,etc ,pub
存放命令的目录:/bin /sbin ,/usr/bin应用程序的可执行文件 , /usr/sbin/, /usr/local/bin
/boot 内核以及其他系统所需文件
/opt 安装大的应用程序 /tmp 临时文件 /lost+found系统恢复过程中的恢复文件 /root 超级用户的主目录
/dev -device设备目录
b---block块设备 c-character字符设备
Linux的硬件设备对应文件
光驱设备/dev/cdrom
软驱/dev/fd0
/etc配置文件所在目录
启动引导程序/etc/lilo.conf /etc/grub.conf 多系统引导时,可设置默认启动的系统等等。
控制启动模式 /etc/inittab图形/文本登陆 3文本模式,5为图形模式
文件系统配置 /etc/fstab
/etc/profile 增加环境变量等(修改PATH等) 如配置JAVA/J2EE开发环境
/etc/ftp* ftp的配置文件
/etc/httpd web服务器的配置文件
/etc/ssh* ssh的配置文件
对文件/etc/inittab修改如下:
停止系统:init 0 halt poweroff shutdown
文字界面启动init 3
图形界面启动init 5
单用户模式init 1 init single
/home用户主目录
useradd username 创建新用户
passwd username 添加密码
/etc/passwd:系统能识别的用户清单,注:纯文本显示加密了的口令,普通用户可读
/etc/shadow:超级用户才能读,用于保护加密口令的安全,即隐藏口令
/lib根目录下的目录
/lib系统所用的库 如C 程序库
/lib/modules/2.4.20-8/kernel/drivers 驱动模块
/usr/lib/应用程序使用的库 如MySql的API
/mnt目录
光驱的装载: mount -t iso9660 /dev/cdrom/mnt/cdrom
mount -t 文件类型 设备文件 挂装目录
卸载 unmount /mnt/cdrom
软驱的使用: mount -t fstype /dev/fd0 /mnt/floppy
/usr 用户目录
/usr/doc /usr/share/doc帮助文档
man命令 查看命令的手册页
info 命令 查看命令的帮助
命令 --help
/usr/src/linux-2.4.20-8/ Linux 源代码
了解所用硬盘信息
mount所挂装分区
fdisk -l [/dev/had]硬盘分区情况
df -h 硬盘分区的使用情况
du -sh目录占用空间
uname -a 所使用Linux的版本号.
Linux常用命令
mkdir 创建目录
rm -r -f为提示选项,加为不提示 递归删除目录 ,并且不提示
rmdir 删除空目录
pwd 查看当前目录
cd 切换目录
ls(list)-->dir
格式:ls [参数][路径或文件名]
参数:-a -l显示文件的详细信息 -R递归显示所有目录和文件 -d不递归
more/less 文件:查看文件内容
cat 显示所指文件的内容
mv (move)
cp (copy) -f 直接覆盖 -I 提示是否覆盖 —R递归的拷贝
Linux文件类型
特殊文件 设备文件(b,c) 和管道文件(p)
连接文件(l), 目录文件(d) 普通文件(--)
ls -l 查看文件的类型
文件类型对应颜色配置文件:/etc/DIR-COLORS
检查文件系统
fsck 修复磁盘 ,当系统非正常关机,无法进入系统,可以执行fsck修复磁盘。
fsck -p -t ext2 /dev/hda2
改变文件的访问权限
符号标记法 chmod (ugoa)(+-)(rwx) filename /filelist
例子:chmod g+w o-x /usr/local/*
数字标记法:4(100)读 , 2(010)写,1(001)执行,0(000)无权限
例子:chmod 755 /usr/local/*
标准文件
标准输入文件:键盘,所有的打开文件,包括标准文件,以0标志。
标准错误文件:监视器,文件描述符2赋给标准错误文件
标准输出文件:监视器称为标准输出文件,用1来描述
tar打包工具
.tar.gz 表示打包了并且进行压缩.tar.gz
rmp包:RedHat 公司提供的软件包封装格式.rpm
dpkg包:Debian 提供的软件包封装格式.deb
rpm -ivh rpm包 安装rpm包
rpm -Uvh rpm包 升级rpm包
rpm -e rpm包 删除rpm包
rpm -qi 包名称 列出信息 查包信息
rpm -qf 'which 命令' 显示命令所在包
rpm -ql 包名称 列出包中的文件列表
tar cvf home.tar /home 创建tar包,查看详细信息 ,f包的名
tar czvf home.tar.gz /home 打包进行压缩
bzip2 filename -->filename.bz2
bunzip filename.bz2
gzip和gunzip
zip和unzip
rar
cd /进入根目录
cd ..返回上层目录
创建一个用户就会在home目录下创建一个文件夹
Shell脚本基础
Shell 可以读取一个文件并执行其中的命令。这个文件被称为脚本文件
执行Shell 脚本:要创建一个shell脚本,你要使用任何编辑器编写
为了使用bash shell 来执行脚本magic ,其命令是: bash magic 或 ./magic
echo命令:用与在屏幕上显示消息
echo " This is an example of the echo command".
#符号:用于在shell脚本中可以包含注解入口
创建变量:语法:<variable name>=<value> Linux中所有的变量都被当做字符串
引用变量:$符号用于引用一个变量的内容,variable1=${variable2}
读入值给变量:使用read命令,读取用户的输入 ,$ read fanme 从键盘中输入一个值给变量
局部变量:当引用shell时,只有创建它的shell能够知道变量的存在
全局变量:称为子shell,shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。
环境变量:通过改变这些变量的值,用户能够定制此坏境。如:HOME,PATH,PS1,PS2,LOGNAME,SHLVL,SHELL
echo $HOME 输出当前用户的主目录
PATH:搜索可执行程序的目录
PS1:为提示变量
PS1="HELLO>" 回车 提示符变了
PS2:是为第二个提示符设置值的环境变量。
LOGNAME变量:包含用户注册的名字。
SHLVL变量:该变量包含你当前工作的Shell
SHELL变量:环境变量存储了用户的缺省的shell
env命令:查看现有的环境变量。
命令替换:echo "The date is `date`"
expr命令:用于求值算术表达式 expr 4 + 5 将9显示屏幕上,4前后都有空格。
算术展开:$(())
条件执行:test和[]命令
求值表达式,并返回true(1)或false(0)
串测试test 文件的状态测试都可以用test
exit命令:用户终止shell脚本的执行并返回到$提示符下。
数值测试:-eq:等于则为真 -ne 不等于为真
-gt:大于为真: -ge:大于等于为真
-lt:小于为真
字符串测试: =:等于为真 ,!=:不等于为真
文件测试:-e 文件名:如果文件存在则为真
-r 如果文件存在并且可读为真
。。。
-a并且, -o或者,!非
终止后台进程:kill 278
查看一个命令所花的时间:
time find /etc -name "passwd" 2> /dev/null
管道的介绍
垂直跳(|)是管道字符
它指示shell:'|'前面的命令的输出作为'|'之后命令的输入发送
例如:ls -l |more 分页显示
chmod a+x First.sh为所有的用户为文件First.sh添加执行权限
ps查看当前运行的进程
C的开发环境
编辑器:VI,VIM Vim:tab切换gt :wq :q! 保存
编译器:GNU C/C++编译器gcc
调试器:gdb
函数库:glibc
系统头文件:glibc_header
gcc 是GNU推出的多平台编译器,能将C,C++语言源程序编译,连接成可执行文件。
.i为后缀的文件,是已经预处理的C源代码文件
.O 是编译后的目标文件
.s是汇编语言源代码文件
vim dd删除一行 D:删除光标位置到结尾的东西 dw删除一个词
查询命令:/lxt lxt为查找的字符串
替换字符:命令模式下,替换光标所在的字符,先按r,在按要替换的字符
拷贝一行:帮光标移动到该行,按yy ,然后把光标定位到要黏贴的行,在按p键
拷贝多行 nyy n代表行数
gcc -o hello hello.c
-o 要求编译器给出的输出的可执行文件名为Hello
-c 不产生可执行文件,只要求编译器输出目标代码
-g 要求编译器在编译的过程提供我们以后对程序进行调试的信息。
执行./hello 看到程序输出结果
集成开发坏境IDE:
Kylix:号称Linux 下的dephi
Kdevelop
RHIDE:类似与Turbo C++
Glibc 是必不可少,是Linux下C的主要函数库。
Glibc2 含有几个附加包: LinuxThreads线程,local本地化 ,crypt加密。
Glibc是提供系统调用和基本函数的C库,比如open,malloc ,printf等。所有的动态连接的程序都要用到它。
通过rpm包来安装各种环境包。
gcc包需要依赖binutils和cpp包,make包也是在编译中常用的,一共需要八个包来完成安装。
查看glibc的版本
ls /lib/libc-*
查看gcc编译器的版本号 gcc --version
使用gdb进行调试
对于一个C程序,安装完成后可以分成三个组成部分:
1.可执行文件 2.包含文件 3.库文件
可执行文件就是最终运行的命令,包含文件是该C程序include的一些定义文件,
库文件则是该C程序库自定义的库。
比如RPM安装的MYSQL数据库
可执行文件放在:/usr/bin下
包含文件:/usr/include/mysql
库文件:/usr/lib/mysql
3.Linux基础
shutdown -h now 关机 (推荐)
shutdown -r now 重启 (推荐)
reboot 快速重启 (跳过sync过程)
init 0 关机 init 6重启
halt系统停机
Linux系统结构:
硬件-->Kernel--->Shell-->外层应用程序
Linux目录结构:
/ 根目录包括:/bin包括系统工具 ,/usr ,/etc,/tmp ,/lib ,/var /home 保存用户主目录,/opt
/usr 包括bin ,local,src
/etc rc.d,rc.d包括:rc3.d, rc5.d, init.d
/var 包括:named ,httpd, ftp
ftp下包括:bin ,etc ,pub
存放命令的目录:/bin /sbin ,/usr/bin应用程序的可执行文件 , /usr/sbin/, /usr/local/bin
/boot 内核以及其他系统所需文件
/opt 安装大的应用程序 /tmp 临时文件 /lost+found系统恢复过程中的恢复文件 /root 超级用户的主目录
/dev -device设备目录
b---block块设备 c-character字符设备
Linux的硬件设备对应文件
光驱设备/dev/cdrom
软驱/dev/fd0
/etc配置文件所在目录
启动引导程序/etc/lilo.conf /etc/grub.conf 多系统引导时,可设置默认启动的系统等等。
控制启动模式 /etc/inittab图形/文本登陆 3文本模式,5为图形模式
文件系统配置 /etc/fstab
/etc/profile 增加环境变量等(修改PATH等) 如配置JAVA/J2EE开发环境
/etc/ftp* ftp的配置文件
/etc/httpd web服务器的配置文件
/etc/ssh* ssh的配置文件
对文件/etc/inittab修改如下:
停止系统:init 0 halt poweroff shutdown
文字界面启动init 3
图形界面启动init 5
单用户模式init 1 init single
/home用户主目录
useradd username 创建新用户
passwd username 添加密码
/etc/passwd:系统能识别的用户清单,注:纯文本显示加密了的口令,普通用户可读
/etc/shadow:超级用户才能读,用于保护加密口令的安全,即隐藏口令
/lib根目录下的目录
/lib系统所用的库 如C 程序库
/lib/modules/2.4.20-8/kernel/drivers 驱动模块
/usr/lib/应用程序使用的库 如MySql的API
/mnt目录
光驱的装载: mount -t iso9660 /dev/cdrom/mnt/cdrom
mount -t 文件类型 设备文件 挂装目录
卸载 unmount /mnt/cdrom
软驱的使用: mount -t fstype /dev/fd0 /mnt/floppy
/usr 用户目录
/usr/doc /usr/share/doc帮助文档
man命令 查看命令的手册页
info 命令 查看命令的帮助
命令 --help
/usr/src/linux-2.4.20-8/ Linux 源代码
了解所用硬盘信息
mount所挂装分区
fdisk -l [/dev/had]硬盘分区情况
df -h 硬盘分区的使用情况
du -sh目录占用空间
uname -a 所使用Linux的版本号.
Linux常用命令
mkdir 创建目录
rm -r -f为提示选项,加为不提示 递归删除目录 ,并且不提示
rmdir 删除空目录
pwd 查看当前目录
cd 切换目录
ls(list)-->dir
格式:ls [参数][路径或文件名]
参数:-a -l显示文件的详细信息 -R递归显示所有目录和文件 -d不递归
more/less 文件:查看文件内容
cat 显示所指文件的内容
mv (move)
cp (copy) -f 直接覆盖 -I 提示是否覆盖 —R递归的拷贝
Linux文件类型
特殊文件 设备文件(b,c) 和管道文件(p)
连接文件(l), 目录文件(d) 普通文件(--)
ls -l 查看文件的类型
文件类型对应颜色配置文件:/etc/DIR-COLORS
检查文件系统
fsck 修复磁盘 ,当系统非正常关机,无法进入系统,可以执行fsck修复磁盘。
fsck -p -t ext2 /dev/hda2
改变文件的访问权限
符号标记法 chmod (ugoa)(+-)(rwx) filename /filelist
例子:chmod g+w o-x /usr/local/*
数字标记法:4(100)读 , 2(010)写,1(001)执行,0(000)无权限
例子:chmod 755 /usr/local/*
标准文件
标准输入文件:键盘,所有的打开文件,包括标准文件,以0标志。
标准错误文件:监视器,文件描述符2赋给标准错误文件
标准输出文件:监视器称为标准输出文件,用1来描述
tar打包工具
.tar.gz 表示打包了并且进行压缩.tar.gz
rmp包:RedHat 公司提供的软件包封装格式.rpm
dpkg包:Debian 提供的软件包封装格式.deb
rpm -ivh rpm包 安装rpm包
rpm -Uvh rpm包 升级rpm包
rpm -e rpm包 删除rpm包
rpm -qi 包名称 列出信息 查包信息
rpm -qf 'which 命令' 显示命令所在包
rpm -ql 包名称 列出包中的文件列表
tar cvf home.tar /home 创建tar包,查看详细信息 ,f包的名
tar czvf home.tar.gz /home 打包进行压缩
bzip2 filename -->filename.bz2
bunzip filename.bz2
gzip和gunzip
zip和unzip
rar
cd /进入根目录
cd ..返回上层目录
创建一个用户就会在home目录下创建一个文件夹
Shell脚本基础
Shell 可以读取一个文件并执行其中的命令。这个文件被称为脚本文件
执行Shell 脚本:要创建一个shell脚本,你要使用任何编辑器编写
为了使用bash shell 来执行脚本magic ,其命令是: bash magic 或 ./magic
echo命令:用与在屏幕上显示消息
echo " This is an example of the echo command".
#符号:用于在shell脚本中可以包含注解入口
创建变量:语法:<variable name>=<value> Linux中所有的变量都被当做字符串
引用变量:$符号用于引用一个变量的内容,variable1=${variable2}
读入值给变量:使用read命令,读取用户的输入 ,$ read fanme 从键盘中输入一个值给变量
局部变量:当引用shell时,只有创建它的shell能够知道变量的存在
全局变量:称为子shell,shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。
环境变量:通过改变这些变量的值,用户能够定制此坏境。如:HOME,PATH,PS1,PS2,LOGNAME,SHLVL,SHELL
echo $HOME 输出当前用户的主目录
PATH:搜索可执行程序的目录
PS1:为提示变量
PS1="HELLO>" 回车 提示符变了
PS2:是为第二个提示符设置值的环境变量。
LOGNAME变量:包含用户注册的名字。
SHLVL变量:该变量包含你当前工作的Shell
SHELL变量:环境变量存储了用户的缺省的shell
env命令:查看现有的环境变量。
命令替换:echo "The date is `date`"
expr命令:用于求值算术表达式 expr 4 + 5 将9显示屏幕上,4前后都有空格。
算术展开:$(())
条件执行:test和[]命令
求值表达式,并返回true(1)或false(0)
串测试test 文件的状态测试都可以用test
exit命令:用户终止shell脚本的执行并返回到$提示符下。
数值测试:-eq:等于则为真 -ne 不等于为真
-gt:大于为真: -ge:大于等于为真
-lt:小于为真
字符串测试: =:等于为真 ,!=:不等于为真
文件测试:-e 文件名:如果文件存在则为真
-r 如果文件存在并且可读为真
。。。
-a并且, -o或者,!非
终止后台进程:kill 278
查看一个命令所花的时间:
time find /etc -name "passwd" 2> /dev/null
管道的介绍
垂直跳(|)是管道字符
它指示shell:'|'前面的命令的输出作为'|'之后命令的输入发送
例如:ls -l |more 分页显示
chmod a+x First.sh为所有的用户为文件First.sh添加执行权限
ps查看当前运行的进程