一、Linux介绍
1、操作系统的发展
其中Uninx只针对大型主机或服务器,Minix->Linux适用于x86的个人计算机
2、Linux的不同版本
<1>Linux内核版本:内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
<2>Linux发行版本:也被叫做 GNU, 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
二、文件和目录
1、Windows和Linux文件系统区别
在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符:
每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:
在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
就比如我们用的Ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面:
/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
/lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
/lost fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员root的家目录。
/sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
2、用户目录
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user
~
3、相对路径和绝对路径
绝对路径:从/目录开始描述的路径为绝对路径,如:/home
相对路径:从当前位置开始描述的路径为相对路径,如:../../
.和.. :每个目录下都有.和..(可用ls -a查看);. 表示当前目录;.. 表示上一级目录,即父目录;根目录下的.和..都表示当前目录
4、文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
在 Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
<1>访问用户
通过设定权限可以从以下三种访问方式限制访问权限:
只允许用户自己访问(所有者) 所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
允许一个预先指定的用户组中的用户访问(用户组) 用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
允许系统中的任何用户访问(其他用户) 用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是 other 用户类。
<2>访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
读权限(r) 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
写权限(w) 对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
可执行权限(x) 对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
<3>示例说明:利用ls -lh查看
第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、“c” 代表硬件字符设备、“b” 代表硬件块设备、“s”表示管道文件、“l” 代表软链接文件。 后 9 个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
代码语言:javascript复制
handy@ubuntu:~$ ls -l total 44 drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Desktop drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Documents drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Downloads -rw-r--r-- 1 handy handy 8980 Aug 29 06:39 examples.desktop drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Music drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Pictures drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Public drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Templates drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Videos handy@ubuntu:~$ ls -lh total 44K drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Desktop drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Documents drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Downloads -rw-r--r-- 1 handy handy 8.8K Aug 29 06:39 examples.desktop drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Music drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Pictures drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Public drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Templates drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Videos handy@ubuntu:~$
每一个用户都有它自身的读、写和执行权限。
第一组权限控制访问自己的文件权限,即所有者权限。
第二组权限控制用户组访问其中一个用户的文件的权限。
第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。
Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。Linux 发行版本最少的命令也有 200 多个,这里只介绍比较重要和使用频率最多的命令。
1、命令使用方法
Linux命令格式:
command [-options] [parameter1] …
命令 选项 参数
说明:
command: 命令名,相应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选 parameter1 …:传给命令的参数:可以是零个一个或多个.
2、查看帮助文档
<1>--help
一般是linux命令自带的帮助信息,如:ls --help
<2>man
man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明
该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。
例:man ls ; man 2 printf
man中各个section意义如下:
1: Standard commands(标准命令)
2: System calls(系统调用,如open,write)
3: Library functions(库函数,如printf,fopen)
4:Special devices(设备文件的说明,/dev下各种设备)
5: File formats(文件格式,如passwd)
6:Games and toys(游戏和娱乐)
7:Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
8: Administrative Commands(管理员命令,如ifconfig)
man是按照手册的章节号的顺序进行搜索的。
man设置了如下的功能键:
例如:
3、自动补全
在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令
4、历史命令
当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来。
四、文件、磁盘管理的常用命令
<1>查看文件信息:ls
ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。
Linux文件或者目录名称最长可以有265个字符,“.”代表当前目录,“..”代表上一级目录,以“.”开头的文件为隐藏文件,需要用-a参数才能显示。
ls -l
与DOS下的文件操作类似,在Unix/Linux系统中,也同样允许使用特殊字符来同时引用多个文件名,这些特殊字符被称为通配符。
<2>输出重定向命令:>
Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容 )
注意: >输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。
<3>分屏显示:more
查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,每次只显示一页,按下空格键可以显示下一页,按下q键退出显示,按下h键可以获取帮助。
more 示例
<4>管道:|
管道:一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
管道示例
<5>清屏:clear
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl l ( “l” 为字母 )。
<6>切换工作目录: cd
在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感。
cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
cd 示例
注意:如果路径是从根路径开始的,则路径的前面需要加上 “ / ”,如 “ /mnt ”,通常进入某个目录里的文件夹,前面不用加 “ / ”。<7>显示当前路径:pwd
使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。
<8>创建目录:mkdir
通过mkdir命令可以创建一个新的目录。参数-p可递归创建目录。
示例
需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。<补>创建文件:touch
命令格式:touch 文件名
如果文件不存在,可以创建一个空白文件。
如果文件存在,可以修改文件的末次修改日期。
<9>删除目录:rmdir
可使用rmdir命令删除一个目录。必须离开目录,并且目录必须为空目录,不然提示删除失败。
<10>删除文件:rm
可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。
常用参数
注意递归删除文件夹要加-r,而删除文件可以不加。
示例
<11>建立链接文件:ln
Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接(有-s)和硬链接。
软链接:软链接不占用磁盘空间,源文件删除则软链接失效,源文件要用绝对路径。ln -s 源文件 链接文件
硬链接:硬链接只能链接普通文件,不能链接目录,相当于文件“小名”,日常是不用的,只有文件的硬链接数(用ls -l查看)为0时,文件才被真正删除。 ln 源文件 链接文件
硬链接示例及软链接的tree示意
文件软硬链接示意图
在Linux中,文件数据和文件名是分开存储的。
<12>查看或者合并文件内容:cat
对应英文是concatenate,用于查看文件内容(适合内容较少的,较多的用more)、创建文件、文件合并、追加文件内容等。
常用参数
Linux中还有一个nl命令,和cat -b效果等价。
示例
<13>文本搜索:grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:grep [-选项] ‘搜索内容串’文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep‘a ’1.txt。
常用选项
grep搜索内容串可以是正则表达式,也就是模式查找。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
grep示例
<14>查找文件:find
find支持文件名的正则表达式查找,按文件修改时间查找,按文件大小查找,按文件权限查找,按文件类型查找等,查找到以后还支持直接对查找到的文件使用命令,功能非常强大。
典型的find命令的写法是:find 查找路径 查找的标准 查找到之后的动作。
比如: find /home -type d -ls,意思是: 找出/home/下所有的目录,并显示目录的详细信息。
后继命令(查找到之后的动作):
代码语言:javascript复制
-print: 显示 -ls:类似ls -l的形式显示每一个文件的详细 -quit:查找到一个就退出 -delete:删除匹配到的行 -ok COMMAND {} :每一次操作都需要用户确认,{}表示引用找到的文件,是占位符,对于(find等输出的一个列表的内容)依次循环每一个;是表示 -exec 命令终结的的符号。 -exec COMMAND {} :每次操作无需确认
常用用法
<15>拷贝文件:cp
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
常用选项
<16>移动文件:mv
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
常用选项
<17>归档管理:tar
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式tar [选项] 打包文件名 文件
tar命令很特殊,其选项前面可以使用“-”,也可以不使用。
常用选项
注意:除了f需要放在参数的最后,其它参数的顺序任意。
- 一般来说,我们的选项主要要用cvf和xvf。文件打包:tar -cvf ***.tar 1.py 2.py 3.txt *.c
- 文件解包:tar -xvf ***.tar -C ~/Desktop
<18>文件压缩解压:gzip
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式:gzip [选项] 被压缩文件
常用选项:-d解压、-r压缩所有子目录
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
- 压缩用法:tar -zcvf 压缩包包名 文件1 文件2 ...
- -z :指定压缩包的格式为:file.tar.gz
- 解压用法: tar -zxvf 压缩包包名
- 解压到指定目录:-C (大写字母“C”)
<19>文件压缩解压:bzip2
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
- 压缩用法:tar jcvf 压缩包包名 文件...(tar jcvf bk.tar.bz2 *.c)
- 解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
- <20>文件压缩解压:zip、unzip 通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
- 压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
- <21>查看命令位置:which