一、计算机语言的发展
机器语言:
是计算机唯一执行的语言
指令有0与1组成,就机器码
不同类型机器有不同机器码 所有不具有移植性
汇编语言:
使用 助记符 代替机器码
不具备移植性
高级语言:
移植性好
4L
面向问题的语言
仅需要告诉计算机做什么, 不需要指挥计算机如何做
如 SQL语言以及各种查询
自然语言
运用人工智能,以接近口语的指令指挥计算机,如语音
还没有成熟
二、C语言的特性
语言简洁、紧凑
预算符丰富
生成目标代码质量搞,程序执行效率高
移植性好(较之汇编语言)
可以直接操作硬件、 内存
使用范围广
C语言现状
LINUX内核开发
基于LINUX嵌入式开发
开发环境构成
编辑器:VI
编译器:gnu c/c++ 编译器gcc
调试器:gdb
函数库:glibc
系统头文件:glibc_header
查看glibc版本
ls /lib/libc-*
查看GCC版本
gcc --version
文件目录介绍
/-
存放命令的目录
/bin 系统工具
/sbin 系统管理员服务的工具命令
/usr/bin 普通应用程序的可执行文件
/usr/sbin 普通应用程序的可执行文件
/usr/local/bin 本地的可执行文件
/boot 内核和其他系统启动所需要文件
/opt 安装大的应用程序
/tmp 临时文件
/lost + found 系统修复过程在的恢复的文件
/root 超级用户的主目录
/dev 设备文件
b -- block 块设备
c --- character字符设备
linux的硬件设备对应的文件
光驱设备 /dev/cdrom
软驱:/dev/fd0
/etc配置文件目录
/etc/lilo.conf /etc/grub.conf 多系统引导时 , 可设置默认启动的系统等
控制启动模式: /etc/initab (图形/文本登录) init 0 halt poweroff shutdown 重新启动 init 6 reboot 文字界面启动 init 3 图形界面启动 init 5 单用户模式 init 1 init single
文件系统配置 /etc/fstab
/etc/profile增加环境变量等(修改PATH等)
如配置JAVA/JEE开发环境
/etc/ftp* ftp配置文件
/etc/httpd web服务器配置文件
/etc/ssh* ssh配置文件
/home目录
/home/username 用户的默认的主目录
useradd username 创建用户
passwd username 添加密码
/etc/passwd:系统能识别的用户清单
纯文本显示加密里的口令,普通用户可读
/etc/shadow:超级用户才能读 用于保存加密的安全
隐藏口令
/lib 系统所用的库 如C程序库
/lib/modules/2.6.32-41-generic/kernel/drivers 驱动模块
/usr/lib/ 应用程序使用的库 如MySql的API
/mnt目录
光驱的装载
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t 文件类型 设备文件 挂载目录
卸载 umount /mnt/cdrom
软驱的使用
mount -t fstype /dev/fd0 /mnt/floppy
/usr用户目录
/usr/doc /usr/share/doc 帮助文档
man 命令 查看命令的手册页
info 命令 查看命令的帮组
命令 -- help
/usr/src/linux-header-2.6.32-41
Linux源代码
X11 用于X Windows
bin 几乎所有的命令程序
sbin 系统管理员命令
include c 语言头文件
lib 库文件和数据文件
local 本地安装的软件
share 共享文件和数据
/var文件系统目录部分
www apache的文档目录
lib 系统运行时随时改变的文件
local /usr/local程序的可变数据
log 日志文件
spool 邮件,新闻等队列的脱机目录
tmp 临时文件
了解 所用的硬盘的信息
mount 所挂装分区
fdisk -l [/dev/had] 硬盘分区状况
df -h 硬盘分区的使用情况
du -sh 目录占用空间
uname -a查看linux版本号
Linux常用的文件操作命令
rm -r -f 递归删除目录,并且不提示
rmdir 删除空目录
ls -R递归显示目录
more/less 文件 查看文件内容
检查文件系统
当系统非正常关机,可能无法进入系统这时可以执行fsck修复磁盘
fsck -p -t ext2 /dev/hda2
应先卸载文件系统,再检查
文件查找
find 路径 【选项】
find /etc -name passwd
-size
-type
locate -u &
grep [参数] 'str' filelist
-n 显示匹配的行号
-I 忽略大小写
-r 递归查找
索引节点
每个文件对有一个索引节点 使用 ls -i 查看索引节点号
类似通过创建的快捷方式
硬链接 与 符号连接
符号连接:
查看文件/目录的inode : ls -i
ln (link)
ln [参数] 《dst> <link name>
硬连接 同一个文件系统,不能指向目录文件
ln 源文件 目标文件
符号连接 (软链接)
用 -s 参数创建 l
ln -s 源文件 目标文件
ln -s /usr/local local
linux用户类类型
文件目录的权限
rwx rwx rwx
owner group other
rwx r-x ---
111 101 000
7 5 0
chmod 750 文件/目录名
chmod u+x g+w o-x hello 拥有者添加执行权限 组添加写权限 其他者去掉执行权限
文件比较
diff 找出两个文本文件的差异
diff [参数] 文件
-w 忽略所有的空格差别
-I 忽略大小写
cmp 比较任意两个文件
cmp [para] <file> <file>
重定向
cat < test1 输入重向定
cat > log 输出重定向
常用网络命令
ifconfig
route -n
netstat
软件分发格式
tar 包
rpm 包
dpkg包
备份格式介绍
tar cvf home.tar /home
bzip2 filename -> filename.bz2
bunzip filename.bz2
gzip gunzip
zip unzip
rar
添加用户
useradd test1
passwd test1
Shell 记录
echo "HEllo"
# this is a comment
echo "world"
变量
创建变量
variable name = value
LInux种所有的变量值度当作字符串
引用变量
$用于引用一个变量的内容
v2=${v1}
读入值给变量
在执行SHell脚本时 , shell 允许用户键盘输入一个值给变量, 可以使用read
read fname: 输入的值放到变量 fname
本地 全局 shell 变量
echo $PATH
echo $HOME
echo $SHELL
echo "the date is `date`"
expr 4 + 5 注意之间的空格
echo $((3+4)) 算数
test和[] 命令
求值表达式 并返回true (0) 或者 false
if 构造
-eq -ne -gt -ge - lt -le
字符串测试 :
= , != ,
-z 字符串长度为0 为真
-n 字符串长度不为0 为真
文件测试
-e 文件存在为真
-r 存在可读为真
-w
-x
-s 存在并且至少一个字符
-d 目录文件
-f
-c 字符型文件 为真
-b 块特殊文件为真
-a 并且 -o 或者 ! 非
if
then
elif
the
else
控制进程的执行
请求后台处理
用于请求后台进程的符号是 (&)
wc tempfile &]
ps命令
kill 278 终止后台进程
time 命令来查看一个命令从开始到结束所花的时间
time find /etc -name "passwd" 2>/dev/null
管道的介绍
垂直条 (|)是管道字符
它指示 shell : " | " 前面的命令的输出作为 后面命令的输入发送
ls -l | more
shell的事例
#my test shell
echo "the date is `date`"
echo "enter you name :"
read fname
echo "welcome to here " $fname
echo "plz input pwd "
read passwds
if [ "$passwds" = "123" ]; then
echo "密码正确"
elif test "$passwds" = 'exit' ; then
echo "exit la"
exit 1
elif [ "$passwds" -eq "456" ]; then
echo "you input 456"
else
echo "please input max value: "
read maxValue
echo "please input min value: "
read minValue
echo -n "diff value is " "$((maxValue - minValue))"
case $((maxValue - minValue)) in
1)
echo "diff 1"
;;
2)
echo "diff 2"
;;
*)
echo "diff nether 1 nor 2"
exit 1
;;
esac
fi
exit 0