LINUX
填空题
1、文件的用户类型
Linux用户
- 超级用户
– 拥有最高权限;
– 负责系统的启动、停止,安装新软件,增加、删除用户,保证系统正常运转;
– 用户主目录:/root
- 普通用户
– 通常情况下只能在自己的主目录下进行写操作;
– 主目录通常在/home下,其中包含用户的设置、程序配置文件、文档、数据、邮件等内容。
文件和目录的4种不同类型的用户
– 文件主(owner)
– 同组用户(group)
– 可以访问系统的其他用户(others);
– 超级用户(root),具有管理系统的特权。
2、Linux的目录组织结构
•/:Linux :文件系统的入口,是最高一级的目录。
•/boot:Linux的内核及引导系统程序所需要的文件。一般情况下,GRUB或LILO系统引导管理器也位于这个目录。安装系统时可单独为/boot划分一个100MB左右的分区。
•/bin:基础系统所需要的那些命令位于此目录,如 ls、cp、mkdir等命令。
•/etc:存放系统配置文件的所在地,用户帐号及密码配置文件也存在于此。
•/root:Linux超级权限用户root的主目录。
•/home:普通用户主目录的默认存放位置。可以为/home单独创建一个分区。
•/lib:库文件存放目录。
•/lost+found:在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。
•/media:即插即用型存储设备的挂载点。
•/mnt:一般是用于存放挂载储存设备的挂载目录。
•/opt:表示可选择的意思,有些软件包也会被安装在这里,即自定义软件包。有些用户自己编译的软件包,就可以安装在这个目录中。
•/dev:设备文件存储目录,如声卡、磁盘... ...
•/proc:操作系统运行时,存放进程信息及内核信息。
•/sbin:存放root使用的系统管理命令,普通用户无权限执行这个目录下的命令。
•/tmp 临时文件目录,/var/tmp目录和这个目录相似。
•/usr:存放系统安装的应用程序、命令、帮助文件等。可为此目录专门建一分区。
•/var:此目录的内容经常变动,可为此目录专门建一分区。
/var/log用来存放系统日志的目录
/var/www目录是定义Apache服务器站点存放目录
/var/lib 用来存放一些库文件
3、Linux系统的三种基本文件类型:
1. 普通文件 普通文件是用户最经常面对的文件。它又分为文本文件和二进制文件。 1)文本文件:这类文件以文本的ASCII码形式存储在计算机中。它是以"行"为基本结构的一种信息组织和存储方式。 2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的软件才能将其显示出来。二进制文件一般是可执行程序、图形、图像、声音等等。
2. 目录文件 设计目录文件的主要目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。目录文件往往简称为目录。
3. 设备文件 设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设备文件可以细分为块设备文件和字符设备文件。前者的存取是以一个个字符块为单位的,后者则是以单个字符为单位的。
4、vi的工作方式及切换
命令模式(命令不被看到)、插入模式(文本输入模式)、末行模式(输入wq退出的那个模式)。 命令模式下输入a、i、o、c进入插入模式(a为追加命令,i为插入命令,o为打开命令,c为修改命令)
文本输入模式下按ESC进入指令模式 命令模式下输入:进入末行模式 末行模式下指令错误则返回命令模式
5、挂载卸载文件
/mnt 专门用作挂载点目录
挂载:
在执行mount命令时,要先查看挂载点目录是否存在,如果不存在必须先创建该目录,否则mount命令无法正常执行。
如何查看存储设备的名称:
Fdisk -l 信息更详尽,但需要用户具有root权限。
Cat /proc/partitions 不够详尽,不需要root权限。
若不存在,用mkdir命令建立挂载点,然后再用以下命令挂载:
Mount -t vfat /dev/sdb /mnt/usb
若文件名中出现了乱码,可能是由于U盘中含有中文的文件名或目录名。可用以下命令解决:
Mount -t vfat -o iocharset =cp936 /dev/sdb /mnt/usb
或 Mount -t vfat -o utf8 /dev/sdb /mnt/usb
由于光驱和软驱属于常用设备,Fedora 10 在系统安装时自动为其建立了固定的设备名称/dev/cdrom 和/dev/floppy,因此不需要预先查看设备名,直接操作即可。
卸载:
用户在使用完挂载设备之后,不能直接将挂载设备从系统拔出,否则会导致系统崩溃。必须先执行卸载命令再拔出。
Umount /mnt/usb 卸载已挂载的USB设备
Umount /dev/sda1 卸载USB设备/dev/sda1
Umount /mnt/cdrom 卸载已挂载的光盘设备
Umount /mnt/floppy 卸载已挂载的软盘设备
若挂载的设备还在使用,会出现错误信息:device busy
6、管道命令:可以把一个命令的标准输出连接到另一个命令的标准输入。
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
$ cat sample.txt|grep "High"|wc -l
管道将cat命令(列出sample.txt的内容)的输出送给grep命令。grep命令在输入里查找单词High,grep命令的输出则是所有包含单词High的行,这个输出又被送给wc命令,wc命令统计出输入中的行数。
利用多个管道
7、联机帮助命令
Man <command> (info <command>功能比man强大,但只有在Linux中有)
该命令列出命令〈command〉的所有的使用方法,包括指令的选项与相关的参数说明。在man命令下可以使用的按键包括:
空格键:往下翻一页
PgUp:往上翻一页 PgDn:往下翻一页
Home:回到最前面 End:到达最后
/〈word〉: 搜寻word这个字符串
q:退出man命令
Help <command>
可以显示shell命令的信息。
选择题
1、Linux的版本类型:Fedora、RedHat、redflag、debian
2、Linux提供的4种用户接口
• 命令行接口 • 菜单 • 图形用户界面 • 程序接口
3、Linux的特点和历史:
开放性、多用户性、多任务性、良好的用户界面、可靠的系统安全、、丰富的网络功能、设备独立性可移植性。
是以UNIX为前身,设计初期是想取代minix,基于intel x86系列cpu的计算机操作系统,由linus设计。
4、cd命令(进入目录)
将工作目录切换到别的目录。可以跟绝对路径也可以跟相对路径。
cd ~ 切换到自己的主目录
cd .. 切换到上层目录
5、rm命令(删除文件和目录)
rm -r vv 但是这样会询问你是否真的要删除vv目录 输入y 确认删除 为了不让系统询问,可以强制删除 rm之后加上f就行了 rm -rf vv 这样就强制删除目录vv 如果目录下还有其他文件 也一同删除了
6、vi操作(模式切换)
命令模式(命令不被看到)、插入模式(文本输入模式)、末行模式(输入wq退出的那个模式)。 命令模式下输入a、i、o、c进入插入模式(a为追加命令,i为插入命令,o为打开命令,c为修改命令)
插入模式下按ESC进入指令模式 命令模式下输入:进入末行模式 末行模式下指令错误则返回命令模式
7、cp命令(复制文件和目录)
— 一般格式:cp [选项] 源文件或目录 目标文件或目录
— 说明 :将源文件或目录复制到目标文件或目录中
— 选项 • -a 递归地将源目录下的所有子目录及其文件都复制到目标目录中,并且保留文件链接和文件属性不变。等效于-dpPR。
•-R,-r 递归复制目录,即将源目录下的所有文件及其各级子目录都复制到目标位置。
•-f 若目的地已存在同名文件,则在复制前先删除原有文件再进行复制
8、目录存放文件
/user目录一般用于存放用户安装的软件
/home目录一般存放系统用户自身的数据
/bin目录存放shell命令等可执行文件
/dev目录存放系统设备的信息
/var目录主要存放系统可变信息的内容,如日志、邮件、打印队列等;
/etc目录存放系统配置信息
9、vi的键盘操作
1、指令模式(Command Mode) 指令模式主要使用方向键移动光标位置进行文字的编辑,下面列出了常用的操作命令及含义。 0 -----光标移动至行首 h -----光标左移一格 l -----光标右移一格 j -----光标下移一行 k -----光标上移一行 $+A-----将光标移动到该行最后 PageDn ----- 向下移动一页 PageUp ----- 向上移动一页 d+方向键 -----删除文字 dd -----删除整行 pp -----整行复制 r -----修改光标所在的字符 S -----删除光标所在的列,并进入输入模式
2、文本输入模式(Input Mode) 在指令模式下(Command Mode)按a/A键、i/I键、o/O键进入文本模式,文本输入模式的命令及其含义如下所示。 a -----在光标后开始插入 A -----在行尾开始插入 i -----从光标所在位置前面开始插入 I -----从光标所在列的第一个非空白字元前面开始插入 o -----在光标所在列下新增一列并进入输入模式 O -----在光标所在列上方新增一列并进入输入模式 ESC -----返回命令行模式
3、末行模式(Last line Mode) 末行模式主要进行一些文字编辑辅助功能,比如字串搜索、替代、保存文件等操作。主要命令如下 :q -----结束Vi程序,如果文件有过修改,先保存文件 :q! -----强制退出Vi程序 :wq -----保存修改并退出程序 :set nu -----设置行号 需要注意的是,以上指令都是在英文输入模式下才有效,在linux 终端下有时我们用的是中文输入模式,输入中文的“:”就不能转换模式了。
10、TAB(补全文件名+补全命令)
(1)只需输入文件或目录名的前几个字符,然后按TAB键,如无相重的,完整的文件名立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字。
(2)在命令行下,只需输入例如m,再连续按两次TAB键,系统将列出所有以m开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令特有用。例如输入ftp,将查到ftp,ftpcount,ftpwho,ftpshut等本不熟悉的命令。
11、同9
12、进程管理命令
• 在后台运行程序:命令&
• 把程序挂起到后台:ctrl-z
• 查看当前控制台中的后台命令进程: jobs
• 恢复后台进程到前台: fg后台进程号
• 恢复后台挂起的进程: bg后台进程号
• ps命令 • 一般格式:ps [选项]
• 说明:提供关于进程的信息。
• 常用选项:-a 显示所有用户的进程信息。
• 实时显示系统进程信息 :top
• 查看系统内存使用情况 :free
• kill命令 • 一般格式:kill [-s 信号|-p ] [-a] 进程号… ; kill –l [信号]
• 说明: 通过向进程发送指定的信号来结束相应进程的运行
•选项:-s 指定需要发送的信号,既可以是信号名(如kill),也可以是对应信号的号码(如9)。
-p 指定kill命令只是显示进程的PID(进程标志号),并不真正发出结束信号。
-l 显示信号名称列表。
• 终止指定进程 : kill 进程号 ; kill -9 进程号
• 终止一批同名进程 : killall 进程名称 ; killall -9 进程名称
• sleep命令 • 一般格式:sleep 时间值
• 说明:“时间值”参数以秒为单位,即让进程暂停由时间值所指定的秒数。
13、同12.
14、Shell命令
cat 文件名 输出文件内容到基本输出(屏幕 or 加>fileName 到另一个文件)
cb 格式化源代码
chmod //change mode,改变文件的权限
cp copy
date 当前的时间和日期
echo $abc 在变量赋值之后,只需在变量前面加一个$去引用.
lint语法检查程序
ls dir
man help
more type
du 查看磁盘空间状况
ps 查看当前进程状况
who 你的用户名和终端类型
定义变量 name=abc? (bash/pdksh) || set name = abc (tcsh)
mkdir 创建目录
rmdir 删除目录
cd 进入目录
rm 删除文件
more 显示文件
echo 显示指定文本
mv 改文件名
pwd 显示目录路径命令
15、三组九个权限(r可读(read),w可写(write),x可执行(execute))
拥有者(owners):r,w,x
组群(group):r,w,x
其他(others):r,w,x
三个三个一组看: 1 第一段表示文件所有者对此文件的操作权限 2 第二段表示文件所有者所在组对些文件的操作权限 3 第三段表示除上述两种外的任何用户/组对此文件的操作权限 r读取:4 w写入:2 x执行:1 加起来就好了。 比如rwx rwx rwx是777 rwx ------ 是700
16、通配符
通配符用于模式匹配,如文件名匹配、路经名搜索、字符串查找等。常用的通配符有*、?和括在方括号[ ]中的字符序列。用户可以在作为命令参数的文件名中包含这些通配符,构成一个所谓的“模式串”,在执行过程中进行模式匹配。
* 代表任何字符串(长度可以不等)
例如:“f*”匹配以f打头的任意字符串。但应注意,文件名前的圆点(.)和路经名中的斜线(/)必须显式匹配。例如“*”不能匹配.file,而“.*”才可以匹配.file。
? 代表任何单个字符。
[] 代表指定的一个字符范围,可代替[ ]内的任何单个字符
只要文件名中[ ]位置处的字符在[]中指定的范围之内,那么这个文件名就与这个模式串匹配。方括号中的字符范围可以由直接给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符(-)组成。例如,f [a- d] 与f [abcd]的作用相同。Shell将把与命令行中指定的模式串相匹配的所有文件名都作为命令的参数,形成最终的命令,然后再执行这个命令。
* 当前目录下所有文件的名称。
*Text* 当前目录下所有文件名中包含有Text的文件的名称。
[ab-dm]* 当前目录下所有以a、b、c、d、m开头的文件的名称。
[ab-dm]? 当前目录下所有以a、b、c、d、m开头且后面只跟有一个字符的文件的名称。
/usr/bin/?? 目录/usr/bin下所有名称为两个字符的文件的名称。
17、查找过去几天内被访问的文件名
find /home -atime -n (n为天数)
18、vi的退出
在命令模式下:
连续按两次‘Z’,若修改过则保存并退出;若未修改过,则直接退出。
在末行模式下:
w 保存,不退出;
w <newfile> 另存为,新建一个newfile保存;
w! <newfile> 另存为,若newfile为已存在,则直接覆盖原文件;若不存在,则新建;
q 退出;
q! 放弃所有修改并退出;
wq 保存并退出;
x 若修改过则保存并退出;若未修改过,则直接退出;
view filename 以只读模式打开;
19、如何执行一个脚本
#bash <name>.sh
20、Man
Man <command>
该命令列出命令〈command〉的所有的使用方法,包括指令的选项与相关的参数说明。在man命令下可以使用的按键包括:
空格键:往下翻一页
PgUp:往上翻一页 PgDn:往下翻一页
Home:回到最前面 End:到达最后
/〈word〉: 搜寻word这个字符串
判断题
1、工作目录与用户主目录
用户登录到linux系统后,每时每刻都处于在某个目录之中,此目录称为工作目录或当前目录。工作目录是可以随时改变的。工作目录“.”表示。其父目录用“..”表示。
用户主目录是系统管理员在增加用户时为该用户建立起来的目录,每个用户都有自己的主目录。默认情况下,用户主目录是/home目录下与用户名相同的目录。不同用户的全目录一般互不相同,也可以改变用户的主目录。用户刚登录到系统时,其工作目录便是该用户的主目录。用户可以通过一个“~”字符来引用自己的主目录。
例如,用户cigare的主目录是/home/cigare,那么
ls ~/files = ls /home/cigare/files
2、输入输出重定向
Shell命令是控制台命令,使用标准输入输出设备,即从键盘接受输入,将结果显示在显示器上。可以将shell命令的输入输出重定向到其他文件或设备。这对于需要仔细分析命令处理结果以及需要提前准备大量输入数据的情况都非常有用。
输入重定向符号为“<”,输出重定向符为“〉”和“>>”。
“X”为shell命令
若X〈file:直接从file中读取文件。
若X〉file:将输出结果写入file(清除file中原有数据)。
若X>>file:将输出结果写入file(不清除file中原有数据,在其后附加上新增数据)。
例如,执行命令“ls -l”将列出当前目录下的所有文件,将其显示在屏幕上,而执行命令“ls –l >lsresult”则屏幕上不显示任何执行结果,而是在文件lsresult中存储“ls -l”命令的执行结果。
3、Linux的文件系统(这分我不要了)
分类:Ext2文件系统,虚拟文件系统,/proc文件系统(伪文件系统)
文件系统
在Linux中普通文件和目录文件保存在称为块物理设备的磁盘或者磁带上。一套Linux系统支持若干物理盘,每个物理盘可定义一个或者多个文件系统。(类比于微机磁盘分区)。每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode区以及数据区等。
引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操作系统;超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;inode区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;数据区:用于存放文件数据或者管理数据。
Linux最早引入的文件系统类型是MINIX。MINIX文件系统由MINIX操作系统定义,有一定的局限性,如文件名最长14个字符,文件最长64M字节。第一个专门为Linux设计的文件系统是EXT(Extended File System),但目前流行最广的是EXT2。
第二代扩展文件系统由Rey Card 设计,其目标是为Linux 提供一个强大的可扩展文件系统。它同时也是Linux界中设计最成功的文件系统。通过VFS的超级块(struct ext2_sb_info ext2_sb)可以访问EXT2的超级块,通过VFS的inode(struct ext2_inode_info ext2_i)可以访问EXT2的inode。
文件系统EXT2的源代码在/usr/src/linux/fs/ext2目录下,它的数据结构在文件/usr/src/linux/include/linux/ext2_fs.h以及同一目录下的文件ext2_fs_i.h和ext2_fs_sb.h中定义。
4、Linux的操作系统,硬件,shell的分层关系图
5、shell命令
6、TAB(补全文件名+补全命令)
(3)只需输入文件或目录名的前几个字符,然后按TAB键,如无相重的,完整的文件名立即自动在命令行出现;如有相重的,再按一下TAB键,系统会列出当前目录下所有以这几个字符开头的名字。
(4)在命令行下,只需输入例如m,再连续按两次TAB键,系统将列出所有以m开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令特有用。例如输入ftp,将查到ftp,ftpcount,ftpwho,ftpshut等本不熟悉的命令。
7、vi编辑器的概念
vi在linux中的地位就像edit程序在DOS中的地位一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。但是,vi不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
Vi没有菜单,只有命令,且命令繁多,要使用vi必须记住这些命令。Vi有三种基本工作模式,分别是命令模式、插入模式和末行模式。
8、光标移动操作
上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行 下:j nj:向下移动n行 左:h nh:向左移动n列 右:l nl:向右移动n列
w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上 b:与w相反 e: 光标以单词向前移动 ne:光标向前移动n个单词 光标到单词的最后一个字母上 ge:与e相反
$:移动光标到行尾 n$:移动到第n行的行尾 0(零):移动光标到行首 ^:移动光标到行首第一个非空字符上去
f<a>:移动光标到当前行的字符a上,nf<a>移动光标到当前行的第n个a字符上 F:相反
%:移动到与制匹配的括号上去(),{},[],<>等。
nG:移动到第n行上 G:到最后一行
CTRL+G 得到当前光标在文件中的位置
向前翻页:CTRL+F 向下移动半屏:CTRL+G 向后翻页:CTRL+B
移动光标类命令
h :光标左移一个字符 l :光标右移一个字符
space:光标右移一个字符 Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行
Enter :光标下移一行 w或W :光标右移一个字至字首
b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾
) :光标移至句尾 ( :光标移至句首
}:光标移至段落开头 {:光标移至段落结尾
nG:光标移至第n行首 n+:光标下移n行
n-:光标上移n行 n$:光标移至第n行尾
H :光标移至屏幕顶行 M :光标移至屏幕中间行
L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
9、脚本
1.sh
#!/bin/bash
echo -e "Your name is ==>`whoami`"
echo -e "The current directory is ==>`pwd`"
2.sh
#!/bin/bash
read -p "Please input an integer number:" number
i=0
s=0
while [ "$i" != "$number" ]
do
i=$(($i+1))
s=$(($s+$i))
done
echo "the result of '1+2+3+...$number' is ==> $s"
3.sh
#!/bin/bash
if [ ! -e logical ]; then
touch logical
echo "Just make a file logical"
exit 1
elif [ -e logical ] && [ -f logical ]; then
rm logical
mkdir logical
echo "remove file ==> logical"
echo "and make directory logical"
exit 1
elif [ -e logical ] && [ -d logical ]]; then
rm -rf logical
echo "remove directory ==>logical"
exit 1
else
echo "Does here have anything?"
fi
10、vi的键盘操作(删除,拷贝)
文本删除:
- x:删除光标处的字符
- nx :删除光标位置起的右n个字符
- X :删除光标前的字符
- nX :删除光标位置前的左n个字符
- dd :删除当前行
- ndd :删除当前行起的n 行
- D或 d$:删除光标起到行尾的内容
- d0 :删除光标前一个字符到行首的内容
- dw :删除一个单词
- ndw :删除n个单词
恢复删除
• u、U命令和重复(.)命令
– u:取消上一次的编辑动作(可多次)
– U :取消在本行所有的编辑动作
– 重复命令(.) :再一次执行刚执行过的命令
如:dd. 删除当前行开始的2行
dd.. 删除当前行开始的4行((dd.).)
文本复制和黏贴
• yw 复制(单个字)
• [n] yw 复制N个字
• yy 单行复制
• [n] yy N行复制
• p 黏贴
问答题
1、GNU和linux的关系
GNU项目开始于1984年,是由自由软件基金资助的一个项目,目标是开发一个自由的、UNIX类型的操作系统,统为GNU系统。GNU是“GNU’s Not UNIX”的首字母缩写,目前使用linux内核的各种GNU操作系统应用非常广泛。
GNU项目已经开发了许多高质量的编程工具,包括emacs编辑器、GNU C和C++编辑器,这些编译器可以在任何计算机系统上运行。所有的GNU软件和派生工作均遵循GNU通用公共许可证的规定。Linux系统的许多内容也是GNU项目开发的,其中包括:
符合POSIX标准的操作系统shell和外围工具;
C语言编译器和其他软件开发工具及函数库;
X Window窗口系统;
各种应用软件,包括字处理软件、图像处理软件等;
各种internet软件,包括FTP服务器,www服务器等;
关系数据库管理系统等。
GPL
GPL是一种软件许可证,其主要目标是保证软件对所有的用户来说是自由的,和软件是否免费无关。GPL通过如下途径实现这一目标:
它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户;
它提醒每个用户,对于该软件不提供任何形式的担保;
如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL软件,也就是说必须随应用程序一起发布源代码;
GPL不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件;
遵照GPL的软件并不是可以任意传播的,这些软件通常都有正式的版权。GPL在发布软件或者复制软件时声明限制条件。但是,从用户的角度考虑,这些根本不是算是限制条件,相反用户只会从中受益,因为用户可以确保获得源代码。
尽管linux内核也属于GPL范畴,但GPL并不适用于通过系统调用而使用内核服务的应用程序,通常把这种应用程序看作是内核的正常使用。
如果准备以二进制的形式发布应用软件,则必须确保自己的程序未使用GPL保护的任何软件。当然,如果软件通过函数调用使用了别的软件,则不受这一限制。目前,很多程序库受领一种GNU公共许可证的保护。
Linux系统中关于GPL的声明保存在个目录下的名为COPYING的文件里,打开文件可查看GPL的内容。
2、ls cd pwd 命令
ls : 查看目录命令
选项 -a 查看目录里所有文件和子目录包括隐藏文件
如查看根目录 ls -a /
-l 显示目录里文件和目录的详细信息,会显示目录里文件和子目录的文件类型,所有者、所属组、*人的权限,文件大小,所有者名称,所属组名称,创建时间,目录/文件名称。
如显示根目录的所有文件/子目录的详细信息 ls -l /
-d 显示目录的详细信息
如显示根目录下tmp目录的详细信息 ls -ld /tmp
cd : 切换目录命令
如切换到根目录 cd /
切换到上一级目录 cd ..
pwd: 查看当前所在目录
直接pwd 可以查看当前正在那个目录
3、In命令p34
对于同一文件,出于应用的需要,可以分配不同的名字。例如,在Linux系统中,/etc/rc.d/init.d目录中的文件主要用于引导或关闭系统。同一个文件可用于不同的运行级,因而需要放置到不同的目录中。为了保证文件内容的一致性、文件存储位置的灵活性,同时减少不必要的存储空间浪费,linux系统支持文件的链接。
链接可分为两种:硬链接与软链接。硬链接指一文件是另一个文件的别名,它们不可区分,是同一个文件实体;符号链接则是一个特殊的文件,它的内容不是真正的数据,而是指向另一个文件的路径名,它们的关系与指针和指针所指对象之间的关系有些类似。对符号链接的大部分操作,如删除等则作用在符号链接本身。硬链接必须在同一文件系统中,软链接却可以跨越不同的文件系统,并且可以对目录创建链接。不论是硬链接还是软接都不会复制原文件,因而所占用的磁盘空间非常小。
格式:In <source> <deat>
该命令可以产生一个从dest到source的链接。至于In命令是创建硬链接还是软链接则是由选项-s决定,该命令的主要选项含义如下:
-f:链接时先将与dest同名的文件删除
-d:允许系统管理员创建对目录的硬链接,默认情况下不允许创建目录的硬链接
-i:在删除与dest同名的文件时先进行询问
-n:在进行软链接时,将dest视为一般的文件
-s:创建软链接,在默认情况下创建硬链接
-v:在链接之前显示每个文件的文件名
-b:在链接时将可能被覆盖或删除的文件进行备份
例如,要为文件yy产生一个符号链接zz的命令为: In –s yy zz
为文件yy产生一个硬链接xx的命令为: In yy xx
4、Linux的核心版本
• 序号由三部分数字构成,其形式为:
—主版本号.次版本号.修订次数
—例如:2.6.25表示对核心2.6版本的第25次修订。
• 约定:—次版本号为奇数时,表示该版本加入新内容,但不一定很稳定,相当于测试版;
—次版本号为偶数时,表示这是一个可以使用的稳定版本。
5、ls的用法p31
查看目录命令ls
格式:ls [选项] [<name>]
该命令用于列出文件或者目录的信息。<name>是文件或者目录名,默认情况下列出当前工作目录的信息。如果给定文件或者目录名则列出指定文件或者目录的情况。
主要选项如下:
-a:显示所有文件及目录,ls在默认情况下将名称以“.”开头的文件或目录视为隐藏目录,不会列出
-b:当文件名包含不可打印字符时,以八进制形式列出文件的名字
-d:如果name参数是一个目录,那么默认情况下ls命令仅列出目录的名字,而不列出目录下的文件。-d选项与-l选项一起使用,可列出目录的属性信息
-l:使用长格式,除文件名外,还显示文件的类型(d:目录,c:字符型设备,b:块设备,p:命名惯例,f:一般文件,l:符号链接,s:套接字)、权限、硬链接的个数、所有者名、群组名、文件大小、修改时间等详细信息;如果列表的是一个目录,则在最前面给出“总用量……”表示该目录占用的总块数
-r:将文件以相反顺序显示,默认情况下按文件或目录名的英文字母顺序显示
-t:将文件依修改时间顺序,愈新的愈排前面
-A:同-a,但不列出“.”及“..”文件
-F:在列出的文件名后以符号表示文件类型,一般文件之后不加符号,可执行文件加“*”,目录加“/”,符号链接加“@”,管道加“|”,套接字加“=”
-R:若目录下有文件,则递归地列出目录下的文件
例如,要列出当前目录下所有名称以“s”开头的文件的详细信息,要求愈新修改的文件愈排在前面。此时可使用以下命令:
Ls –lt s*
要将/bin目录下所有目录及文件的详细信息列出,则可使用以下命令:
Ls –lR /bin
列出当前目录下所有文件及目录,目录名后加“/”,可执行文件名后加“*”,命令为:
Ls –AF
补充:
文件概念和文件类型
- 文件的成分 — 索引节点(I 节点)
- 是包含相应文件信息的一个记录:文件权限、所有者、大小……
— 数据
- 文件的实际内容。
- 命名文件
– 文件名最长255个字符
– 不要用斜线(/)和空字符(ASCII字符\0)
– 习惯上允许使用下线符(_)和句点(.)来区别文件的类型,但是应避免使用有特殊含义的字符
– 同类文件应使用同样的后缀或扩展名
– Linux系统区分文件名的大小写
– 以圆点(.)开头的文件名是隐含文件
• 普通文件
- 文本文件、数据文件、可执行的二进制程序
- file 命令可用于确定文件类型
– 目录文件
- 是一种特别文件,利用它可以构成文件系统的分层树状结构。
- 与普通文件的差别:内核对目录文件的数据进行处理。
- 目录文件的数据是由成对的“I节点号/文件名”构成的列表。
- 设备文件
– 是一种特别文件,用来标记各个设备驱动器。
– 字符设备文件:提供与字符I/O设备连接的特别文件,一次处理一个字符。
– 块设备文件 : • 512个字节称为一个数据块,用块工作起来更为有效的设备称为块设备。• 提供与块I/O设备连接的特别文件称为块特别文件。
– 显示当前正在使用的终端文件
• 符号链接文件
- 是一种特殊文件,提供对其他文件的参照。
软件的三种模式
商业软件:是在计算机软件中,指被作为商品进行交易的软件。
共享软件:是以“先使用后付费”的方式销售的享有版权的软件。
自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。
共享软件本身是收费的,其源代码不开放,但是会给予用户试用的权利,试用的方式可以使限制期限或者限制功能,待用户交费后再开放全部工作或者延长(可以至无限期)使用期限并提供技术支持服务。
免费软件是不收费的,不能限制功能或者使用期限,如果不收费但是需要注册才能开放全部功能的软件也属于共享软件而不属于免费软件,但是其源代码是受版权保护得不能随意更改和使用。注意:免费软件和共享软件两者(尤其是源代码)都是受版权保护的,不能随意的更改、使用和公布。
自由软件是全部开放的,不仅可以免费使用全部功能,而且其源代码也是开放的,可以自行更改和使用,但是由其源代码衍生出的新的软件也必须是自由软件,不能用作商业用途或者自行声明知识产权,否则将被视为侵权。