Linux是一个多用户多任务的操作系统,可以有多个用户同时登陆系统
用户分为超级管理员(root)和一般用户,root具有最高权限
Linux的文件系统基础
Linux使用标准的目录结构——树型结构,无论操作系统管理几个磁盘分区,这样的目录树只有一个,树根为/ (斜杠:/ slash, 反斜杠:\ backslash)。
Linux的目录树
v /bin 这个目录存放着最经常使用的命令。
v /boot 存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。
v /dev 该目录下存放的是Linux的外部设备,称为设备文件
v /etc 这个目录用来存放所有的系统管理所需要的配置文件和子目录。
v /home 用户的主目录
v /lib 这个目录里存放着系统最基本的动态链接共享库
v /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文 件。
v /mnt 系统提供这个目录是为了让用户临时挂载别的文件系统。
v /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
v /root 超级管理员的主目录。
v /sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
v /tmp 这个目录是用来存放一些临时文件的。
v /usr 要用到的很多应用程序和文件几乎都存放在该目录下。
v /var 这个目录中存放着在不断扩充着的东西,习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件,电子邮件。
工作目录(Working Directory)或当前目录(CurrentDirectory)。
工作目录用“.”表示,其父目录用“..”表示
“~”引用自己的主目录
绝对路径是指从“根”开始的路径;
相对路径是指从用户工作目录开始的路径。
内部命令和外部命令
当shell接收到一个命令后,它首先判断是否是内部命令,
若是则在当前进程中执行该命令;——当前进程执行
否则根据被打通的路径($PATH环境变量)判断是否是外部命令,若是则创建一个新进程执行该命令。——新进程执行
补充:一般的外部命令是那些功能较强大、占用空间较大的扩展命令,他一般不包含在shell中,因此在系统启动时并不装入内存。只有外部命令需要时才调入内存,用完后释放所占用的内存空间。外部命令是需要生成子进程来执行程序的!
Linux常用命令
v 多用户管理:adduser, deluser, passwd,su, who,id
v 目录相关的:pwd,cd, mkdir, rmdir, ls
v 文件相关的:cp, mv, rm, chmod, chown, whereis(确定文件所在位置),touch
v 注销及关机:logout, halt(只能root使用), reboo(只能root使用)t,exit
v 查看和编辑文本:less, more, cat, vi
v 其他命令:man, startx, history , tar, gzip,echo, bc, wc, cut, grep, sort, head, tail等
pwd (print working directory)、cd (change directory)
ls (list) -l 长格式显示, -a 显示所有文件, -i显示索引节点号,例: ls –l *.c
cat “catenate” 连接 –b 标注行号 , -A显示所有控制字符
cat a b > c
Linux下的主要文件类型
v 常规文件(-) :文本文件和二进制文件
v 目录文件(d) :将文件的名称和它的索引节点号结合在一起的一张表(记住:目录也是文件)
v 设备文件(c or b) :每种I/O设备对应一个设备文件
v 管道文件(p) :主要用于在进程间传递数据,又称先进先出(FIFO)文件
v 链接文件(L) :又称符号链接文件,它提供了共享文件的一种方法
访问权限和文件模式
用户类型:u——用户,g——宿主用户的同组用户,o——除文件宿主和同组用户外的所有其他用户,a——表示所有用户。
“—”表示撤销某种权限,“+”表示增加某种权限,“=”表示赋予某种访问权限
文本编辑器
Linux下的文本编辑器(Editor)主要有:
v ed
v edit
v vi (visual interpreter)
v vim (Vi IMproved)
v Emacs
vim 简介
vim的三种工作方式及相互切换:
v 命令行方式 ——默认进入
v 插入编辑方式 ——命令行方式中输入“i ”
v 末行命令方式 ——插入编辑方式中输入Esc 或者“Ctrl+C”
注:Ubuntu下默认安装的不是vim,用命令:
$apt-get install vim
命令行方式下的常用命令
H j k l ; x ; dw ; d$ ; dd ; y2w ; y3y ; p; u
末行命令方式下的常用命令
/word ; ?word ;搜索word
:s(substitute) 查找和替换
如 :1,$s/word/newword/g
:wq ; :q! ; :set nu ; :set ai 文本的每一新行均与上行对齐
其他命令
1、Echo 显示一行文本;
2、tar 打包(归档),选项-zcvf、解包,-zxvf
tar –zcvf dir.tar.gz dir
tar –zxvf dir.tar.gz
3、gzip,gunzip 压缩、解压文件
4、bc 计算工具
echo“scale=3;4/3+2” | bc
或者直接使用文本中的公式,然后bc file
进制转换
echo “obase=2;7” |bc
echo “ibase=2;1111110”| bc
过滤器(Filters)
5、wc (Word Count)计数函数
-l:统计文件的行数; –w:统计单词个数; –c统计字节个数
6、sort 排序。常用选项:
-d 按字典中字母的正序排序; -r 反序排序; -n 按数字表示的数值大小进行排序
7、uniq 删除连续重复行,常用选项: -c 重复数前置
8、head 输出文本的前十行(默认),常用选项:-n 指定行数
9、tail 输出文本的后十行(默认),常用选项: -n指定行数
10、cut 按列或按域截取输入行中所指出的内容,常用选项:
-d 制定定界符, 定界符默认空格和Tab ; -f 按域截取
Ubuntu默认为Tab键
11、tr 用来从标准输入中通过替换或删除操作进行字符转换,tr 只能进行字符的替换、缩减和删除,不能用来替换字符串
–d:删除字符集中的字符 ;–s:将连续出现的字符压缩成一个;-c 取字符串中字符集的补集
字符替换:
字符缩减:
Cat file | tr a-z A-Z 与tr a-z A-Z
12、grep 全程查找正则表达式并打印,选项 -v 筛选出不包含匹配模式的行
格式:grep pattern file
13、sed是流编辑器(stream editor)的缩写,常用来文本替换和删除
替换:sed ‘s/pattern/replace_string/g’ file
删除:sed ‘/pattern/d’ file
Awk
awk的名字来源于Bell实验室的三名开发者Aho ,Weinberger和Kernighan姓氏的首字母组合,它主要完成字符串查找、替换、加工等操作,它还包含有可以进行模式装入、流控制、数学运算、进程控制等语句,是一个功能强大的模式扫描和处理工具。
awk工作时,从输入流中一次读取一行,将该行与指定模式比较,对于匹配该行的模式执行相应的动作。每行的不同字段依次命名为$1,$2,….$NF.默认字段分隔符为空格或制表符。
格式:awk [-F char] ‘program’ filename 或 awk –fprogramfile filename
下面成绩保存在一个文本中:
zhao Physics 77
wang Mathematics 86
zhang Chemistry 98
zhao Mathematics 83
wang Physics 57
zhang Physics 89
1)用awk计算出每个同学的总分
zhang@chenchao-Inspiron-5423:~$ awk '{sum[$1]+=$3} END{for(name insum) print name,sum[name]}' grade
zhao 160
wang 143
zhang 187
2)用awk计算出每个同学的平均分
zhang@chenchao-Inspiron-5423:~$ awk '{sum[$1]+=$3} END{for(name insum) print name,sum[name]/(NF-1)}' grade
zhao 80
wang 71.5
zhang 93.5
GCC简介
GCC (the GNU Compiler Collection),是GNU推出的功能强大、性能优越的多平台编译器。它能将C、C++源程序、汇编程序和目标程序进行编译或链接成可执行文件。
GCC常用选项-S, -c, -o
例如当前有个hello.c源程序:
$ gcc hello.c //生成a.out可执行程序
$ gcc –S hello.c //只编译,生成hello.s汇编程序
$ gcc –c hello.c //编译及汇编,但不链接,生成hello.o目标文件
$ gcc –o hello hello.c //编译汇编及链接,生成hello可执行程序
C语言编译系统