Linux学习报告
一.Linux系统简介
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
二.文件系统
2.1文件类型
普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx]。另外,依照文件的内容,又大致可以分为:
2.1.1、纯文本文件(ASCII):这是Unix系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到的数据,例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说,使用命令“cat ~/.bashrc”就可以看到该文件的内容(cat是将文件内容读出来)。
2.1.2、二进制文件(binary):系统其实仅认识且可以执行二进制文件(binary file)。Linux中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令cat就是一个二进制文件。
2.1.3、数据格式的文件(data):有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。举例来说,Linux在用户登入时,都会将登录数据记录在 /var/log/wtmp文件内,该文件是一个数据文件,它能通过last命令读出来。但使用cat时,会读出乱码。因为它是属于一种特殊格式的文件。
2.1.4目录文件(directory):就是目录,第一个属性为 [d],例如
[drwxrwxrwx]。
2.1.5连接文件(link):类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]。
2.1.6设备与设备文件(device):与系统外设及存储等相关的一些文件,通常都集中在 /dev目录。通常又分为两种:
2.1.7块设备文件:就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]。
2.1.8字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]。
2.1.9套接字(sockets):这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为
[s],最常在 /var/run目录中看到这种文件类型。
2.1.10管道(FIFO,pipe):FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]。[3]
2.2文件结构
2.2.1/:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
2.2.2/bin:bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
2.2.3/boot:Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管
理器也位于这个目录。
2.2.4/cdrom:这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom /cdrom
2.2.4/dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
2.2.5/etc:etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下。
2.2.6/home:如果建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录。
2.2.7/lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。
2.2.8/lost+found:在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。
2.2.9/mnt:这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom等目录。可以参看/etc/fstab的定义。
2.2.10/media:有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
2.2.11/opt:这里主要存放那些可选的程序。
2.2.12/proc:可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。
2.2.13/root:Linux超级权限用户root的家目录。
2.2.14/sbin:这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或
/usr/local/sbin目录是相似的,凡是目录sbin中包含的都是root权限才能执行的。
2.2.15/selinux :对SElinux的一些配置文件目录,SElinux可以让linux更加安全。
2.2.16/srv 服务启动后,所需访问的数据目录,举个例子来说,www服务启动读取的网页数据就可以放在/srv/www中
2.2.17/tmp:临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的。/var/tmp目录和这个目录相似。
2.2.18/usr
这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具
2.2.19/usr/local:这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面、。
2.2.20/usr/share :系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
2.2.21/var:这个目录的内容是经常变动的,看名字就知道,可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/ www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。[4]
2.3文件管理
1.重定向
许多命令可以产生输出,输出结果会显示在屏幕上。
当执行ls命令时,运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
a1.txt test1 test2 test3
Linux系统将所有的项目都当做文件处理,上述例子中ls命令将输出传送到“标准输出”文件,即STDOUT。使用重定向符号">"或">>"可以将输出重定向到文件,">>"符号可以将新的输出结果追加在文件末尾。
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls >retult.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cat retult.txt
a1.txt
retult.txt
test1
test2
test3
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls -l >>retult.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cat retult.txt
a1.txt
retult.txt
test1
test2
test3
总用量 20
-rw-rw-r-- 1 huihui huihui 1 6
-rw-r--r-- 1 huihui huihui 36 6
drwxrwxr-x 2 huihui huihui 4096 6
drwxrwxr-x 2 huihui huihui 4096 6
drwxrwxr-x 2 huihui huihui 4096 6
月 11 16:30 a1.txt 月 11 19:04 retult.txt 月 11 16:29 test1 月 11 16:28 test2 月 11 16:29 test3
2.使用cp复制文件
用法:
cp [OPTION] {source} {TARGET}
cp [OPTION] {source...} {DIRECTORY}
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls test3
a1.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cp -r test1 test3/
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls test3
a1.txt test1
3.使用mv移动或重命名文件
使用mv命令可以将文件从一个目录移动到另一个目录,或重命名文件。
用法:
mv [option...] {source} {target}
mv [option...] {source...} {directory}
第一种形式将source文件重命名为target,第二种形式将一个或多个文件同时移动到某个目录下。
运行结果如下(重命名):
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cat a2.txt
a1.txt
retult.txt
test1
test2
test3
总用量 20
-rw-rw-r-- 1 huihui huihui 1 6月 11 16:30 a1.txt
-rw-r--r-- 1 huihui huihui 36 6月 11 19:04 retult.txt
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:29 test1
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:28 test2
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:29 test3
huihui@huihui-Rev-1-0:~/CommandWorkplace$ mv a2.txt a3.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a1.txt a3.txt test test1 test2 test3 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cat a3.txt
a1.txt
retult.txt
test1
test2
test3
总用量 20
-rw-rw-r-- 1 huihui huihui 1 6月 11 16:30 a1.txt
-rw-r--r-- 1 huihui huihui 36 6月 11 19:04 retult.txt
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:29 test1
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:28 test2
drwxrwxr-x 2 huihui huihui 4096 6月 11 16:29 test3
运行结果如下(移动文件):
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls test5
test3
huihui@huihui-Rev-1-0:~/CommandWorkplace$ mv a1.txt test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls test5
a1.txt test3
4.使用rm命令删除文件
rm [options] {file...}
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test test2 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ rm -d test
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test2 test5
2.4目录管理
1.创建新的目录mkdir
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test2 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ mkdir test1
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test1 test2 test5
2.列表显示目录树ls
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test1 test2 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls -R
.:
6 a3.txt test1 test2 test5
./6:
./test1:
./test2:
./test5:
a1.txt test3
./test5/test3:
a1.txt test1
./test5/test3/test1:
3.删除目录rmdir
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test1 test2 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ rmdir test2
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test1 test5
4.复制目录树cp -r
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls -R test1
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cp -r test5 test1
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls -R test1
test1:
test5
test1/test5:
a1.txt test3
test1/test5/test3:
a1.txt test1
test1/test5/test3/test1:
5.删除目录树rm -r
运行结果如下:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test1 test5
huihui@huihui-Rev-1-0:~/CommandWorkplace$ rm -r test1
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls
6 a3.txt test5
2.5文件名和文件名匹配
*:匹配零个或多个字符(开头的"."除外)
?:匹配一个字符(开头的"."除外)
[...]:匹配给出的列表或范围内的任意字符
[^...]匹配给出的列表或范围外的任意字符
运行示例:
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls *.txt
a2.txt a3.txt b1.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ ls a?.txt
a2.txt a3.txt
2.6检查文件
1.file命令识别文件类型
huihui@huihui-Rev-1-0:~/CommandWorkplace$ file *
6: directory
a2.txt: very short file (no magic)
a3.txt: UTF-8 Unicode text
b1.txt: very short file (no magic)
test5: directory
2.使用head快速浏览文件
当只需要浏览文件的前几行时用head命令
huihui@huihui-Rev-1-0:~/CommandWorkplace$ head -n 3 a3.txt
a1.txt
retult.txt
test1
3.使用head将多个文件合并成一个文件
当需要查看的文件较多时,可以把所有的文件合并成一个文件以便浏览。
huihui@huihui-Rev-1-0:~/CommandWorkplace$ head -100 *.txt>result.txt
huihui@huihui-Rev-1-0:~/CommandWorkplace$ cat result.txt
==> a2.txt <==
asdfasdfasf
asdfasf
asdf
sadf
asdfasfd
==> a3.txt <==
a1.txt
retult.txt
test1
test2
test3
总用量 20
-rw-rw-r-- 1 huihui huihui 1 6
-rw-r--r-- 1 huihui huihui 36 6
drwxrwxr-x 2 huihui huihui 4096 6
drwxrwxr-x 2 huihui huihui 4096 6
drwxrwxr-x 2 huihui huihui 4096 6
==> b1.txt <==
asdfasdfasdfsadfasdfsadf
sadfasdfaaaaaaaaaa
sdsssssssssssssssssss
月 11 16:30 a1.txt 月 11 19:04 retult.txt 月 11 16:29 test1 月 11 16:28 test2 月 11 16:29 test3
4.使用tail监控文件
当文件发生内容发生改变时,可以用tail命令监控文件的改变,tail命令可以输出文件的后10行。
三.用户和组
3.1Linux用户和/etc/passwd文件
系统有一个数据库,存放着用户名与用户ID的对应关系,这个数据库保存在配置文件/etc/passwd中。
同时为了保护密码,将密码保存在/etc/passwd文件中,不允许用户查看。
用户类型分为普通用户.根用户和系统用户
ps aux命令可以查看系统的正在使用的进程。
ls -l命令可以列出每个文件的所有者用户名信息
ls -ln命令可以列出每个文件的所有者ID而不是用户名
3.2Linux组和/etc/group文件
基本上,一个组就是一个整数组ID(gid),每个在系统上运行的进程都是属于一个组的集合(gids),/ect/group文件把组ID映射到组名称和组成员身上,文件系统中的每个文件都有唯一的组ID,用户有一个在/etc/passwd文件中定义的主要组,用户可以是在/etc/group文件中定义的多个次要组的成员。
3.3检查用户信息
id命令向运行它的用户返回成员身份的概要信息,如果只想知道用户组ID,可以使用-g选项来使用这个命令。
huihui@huihui-Rev-1-0:~$ id
uid=1000(huihui) gid=1000(huihui) 组
=1000(huihui),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
huihui@huihui-Rev-1-0:~$ id huihui
uid=1000(huihui) gid=1000(huihui) 组
=1000(huihui),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
huihui@huihui-Rev-1-0:~$ id -g huihui
1000
user和w命令可以查看当前登录用户的列表
huihui@huihui-Rev-1-0:~$ users
huihui huihui
huihui@huihui-Rev-1-0:~$ w
12:51:44 up 58 min, 2 users, load average: 0.53, 0.72, 0.85
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
huihui tty7 :0 11:53 58:29 5:46 0.26s init --user
huihui pts/0 :0 12:49 0.00s 0.08s 0.00s w
finger命令可以调查用户,不仅查看用户是否登录,还查看登陆的时间以及是否读取邮件和其他信息
huihui@huihui-Rev-1-0:~$ finger
Login Name Tty Idle Login Time Office Office Phone
huihui huihui tty7 1:00 Jun 12 11:53 (:0)
huihui huihui pts/0 Jun 12 12:49 (:0)
3.4改变身份
su命令切换用户
huihui@huihui-Rev-1-0:/media/huihui$ su yang
密码:
yang@huihui-Rev-1-0:/media/huihui$ id
uid=1001(yang) gid=1001(yang) 组=1001(yang)
上述登录并不是完全登陆,称作非完全登陆Shell。若完全登陆可以使用 "-"符号
yang@huihui-Rev-1-0:/media/huihui$ su - yang
密码:
yang@huihui-Rev-1-0:~$ ls
examples.desktop
四.文件所有者及权限
1.权限类型和访问级别
r可读,w写入以及x可执行
u用户所有者,g组所有者及o其他
当用户访问一个文件时,系统会按顺序判断用户是否是文件拥有者,如果是则启用用户权限;用户是否是组所有成员,如果是则启用组权限;如果都不是,启用其他权限。
huihui@huihui-Rev-1-0:~$ echo "aaaaaa">/tmp/test1.txt
huihui@huihui-Rev-1-0:~$ cat /tmp/test1.txt
aaaaaa
huihui@huihui-Rev-1-0:~$ echo "sssss">>/tmp/test1.txt
huihui@huihui-Rev-1-0:~$ cat /tmp/test1.txt
aaaaaa
sssss
用户huihui创建一个文件test1.txt该用户是文件的拥有者,可以对文件读写;其他用户只能对文件读。
huihui@huihui-Rev-1-0:~$ su - yang
密码:
yang@huihui-Rev-1-0:~$ cat /tmp/test1.txt
aaaaaa
sssss
yang@huihui-Rev-1-0:~$ echo "asdasdasds">>/tmp/test1.txt
-su: /tmp/test1.txt: 权限不够
yang@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r--r-- 1 huihui huihui 13 6月 12 20:55 /tmp/test1.txt
其他用户只可以读该文件。
2.更改文件权限
使用chmod可以更改文件的读写权限,某用户创建的文件默认情况下其他用户可以读,可以改变文件权限不让其他用户读自己的文件。
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r--r-- 1 huihui huihui 13 6月 12 20:55 /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ chmod o-r /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r----- 1 huihui huihui 13 6月 12 20:55 /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ chmod o+r /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r--r-- 1 huihui huihui 13 6月 12 20:55 /tmp/test1.txt
可以看到使用chmod o-r命令之后其他用户不可以读这个文件,然后再使用chmod o+r命令重设使其他用户可以读这个文件。
3.使用chgrp和chown命令改变文件所有者
使用chown改变文件的拥有者:
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r--r-- 1 huihui huihui 13 6月 12 20:55 /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ sudo -s -H
[sudo] password for huihui:
root@huihui-Rev-1-0:/home/huihui# chown yang /tmp/test1.txt
root@huihui-Rev-1-0:/home/huihui# ls -l /tmp/test1.txt
-rw-r--r-- 1 yang huihui 13 6月 12 20:55 /tmp/test1.txt
使用chgrp命令改变文件组所有者:
root@huihui-Rev-1-0:/home/huihui# ls -l /tmp/test1.txt
-rw-r--r-- 1 yang huihui 13 6月 12 20:55 /tmp/test1.txt
root@huihui-Rev-1-0:/home/huihui# chgrp yang /tmp/test1.txt
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test1.txt
-rw-r--r-- 1 yang yang 13 6月 12 20:55 /tmp/test1.txt
4.目录所有者及权限
新建目录的默认状态是drwxrwxr-x,任何用户都可以在目录内搜索文件,任何用户都可以将目录内的文件列表,只有目录的拥有者才能从目录中删除或添加文件。
5.chmod命令:八进制计数法
每种权限以一个值表示:r是4,w是2,x是1。
例如:755=rwxr-xr-x,740=rwxr-----,600=rw-------
huihui@huihui-Rev-1-0:~$ ls -ld /tmp/Linuxworkspace/
drwxrwxr-x 2 huihui huihui 4096 6月 13 08:29 /tmp/Linuxworkspace/
huihui@huihui-Rev-1-0:~$ chmod 740 /tmp/Linuxworkspace/
huihui@huihui-Rev-1-0:~$ ls -ld /tmp/Linuxworkspace/
drwxr----- 2 huihui huihui 4096 6月 13 08:29 /tmp/Linuxworkspace/
6.控制默认权限
新建文件的默认权限可以通过umask的标准UNIX概念来改变,umask 的默认值是002,因此新建文件的默认权限就是664,用内核通用默认模式减去umask:
kernek default: 666--->rw-rw-rw-
umask: 002--->-------w-
default permissions:664--->rw-rw-r--
huihui@huihui-Rev-1-0:~$ umask
0002
huihui@huihui-Rev-1-0:~$
huihui@huihui-Rev-1-0:~$ umask 007
huihui@huihui-Rev-1-0:~$ umask
0007
huihui@huihui-Rev-1-0:~$ echo "asdasdasd">/tmp/test4.txt
huihui@huihui-Rev-1-0:~$ ls -l /tmp/test4.txt
-rw-rw---- 1 huihui huihui 10 6月 13 09:22 /tmp/test4.txt
五.Linux文件系统
1.每个文件系统由逻辑块的序列组成,一个逻辑盘空间一般划分为几个用途各不相同的部分,即引导块、超级块、inode区以及数据区等。引导块:在文件系统的开头,通常为一个扇区,其中存放引导程序,用于读入并启动操作系统;超级块:用于记录文件系统的管理信息。特定的文件系统定义了特定的超级块;inode区(索引节点):一个文件或目录占据一个索引节点。第一个索引节点是该文件系统的根节点。利用根节点,可以把一个文件系统挂在另一个文件系统的非叶节点上;数据区:用于存放文件数据或者管理数据。
2.硬链接和软链接
硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red]任意一个[/color]其余的
文件将不受影响。
软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。
运行示例:
huihui@huihui-Rev-1-0:~$ cat CommandWorkplace/f1.txt
asdasdasd
huihui@huihui-Rev-1-0:~$ ln CommandWorkplace/f1.txt f2.txt
huihui@huihui-Rev-1-0:~$ cat f2.txt
asdasdasd
huihui@huihui-Rev-1-0:~$ echo "love">>f2.txt
huihui@huihui-Rev-1-0:~$ cat f2.txt
asdasdasd
love
huihui@huihui-Rev-1-0:~$ cat CommandWorkplace/f1.txt
asdasdasd
love
huihui@huihui-Rev-1-0:~$ ln -s CommandWorkplace/f1.txt f3.txt
huihui@huihui-Rev-1-0:~$ cat f3.txt
asdasdasd
love
huihui@huihui-Rev-1-0:~$ rm CommandWorkplace/f1.txt
huihui@huihui-Rev-1-0:~$ cat f2.txt
asdasdasd
love
huihui@huihui-Rev-1-0:~$ cat f3.txt
cat: f3.txt: 没有那个文件或目录
3.磁盘 文件系统与挂载
通过mount 来挂载磁盘分区或自动挂载
mount的用法其实也简单,我们说几个常用的;
挂载文件系统的命令格式:
[root@localhost beinan]# mount [-t 文件系统 ] [-o 选项] 设备 目录
注:
-t 通过这个参数,我们来指定文件系统的类型,一般的情况下不必指定有时也能识加,-t 后面跟 ext3 、ext2 、reiserfs、vfat 、ntfs 等,其中 vfat 是fat32和fat16分区文件系统所所用的参数;如果您忘记了文件系统,也可以在-t 后面加auto;
-o 这个选项,主要选项有权限、用户、磁盘限额、语言编码等,但语言编码的选项,大多用于vfat和ntfs文件系统;由于选项太多,还是请您看看 man mount ;这里不多说;
设备 指存储设备,比如/dev/hda1, /dev/sda1 ,cdrom 等...至于您的系统中有哪些存储设备,主要通过 fdisk -l 或者查看 /etc/fstab 或 dmesg ;一般的情况下光驱设备是/dev/cdrom ;软驱设备是/dev/fd0 ;硬盘及移动硬盘以 fdisk -l 的输出为准。
用户可以使用df命令查看分区的空间的使用状态:df [option..] [ file]
4.使用locate和find命令查找文件
locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
huihui@huihui-Rev-1-0:/$ locate a.jpg
/home/huihui/.eclipse/org.eclipse.platform_3.8_155965261/configuration/org.eclipse.osgi/bundles/385/1/.cp/images/Idea.jpg
/home/huihui/MyEclipse/Common/binary/com.sun.java.jdk.linux.x86_1.6.0.013/demo/jfc/SwingSet2/src/resources/images/ImageClub/food/banana.jpg
...
find命令:find <起始目录><搜索条件><动作>
huihui@huihui-Rev-1-0:~$ find 桌面/Pytest/ 1.jpg
桌面/Pytest/
桌面/Pytest/内建函数.py
桌面/Pytest/picture14
桌面/Pytest/picture14/10.jpg
桌面/Pytest/picture14/12.jpg
桌面/Pytest/picture14/3.jpg
桌面/Pytest/picture14/22.jpg
桌面/Pytest/picture14/21.jpg
桌面/Pytest/picture14/5.jpg
桌面/Pytest/picture14/0.jpg
...
huihui@huihui-Rev-1-0:~$ find 桌面/Pytest/ -size +900k
桌面/Pytest/abc.tar.bz2
5.文件压缩:gzip和bzip2
gzip命令的命令选项有:
-c 将输出重定向到标准输出
-d 解压缩文件
-r 对目录递归,将里面的文件分别压缩
-1...-9 指定压缩比,即cpu占用与压缩效率
bzip2命令的命令选项有:
-c 将输出重定向到标准输出
-d 解压缩文件
huihui@huihui-Rev-1-0:~$ gzip 桌面/QQ图片20140609045108.jpg
huihui@huihui-Rev-1-0:~$ ls -sh 桌面/QQ图片20140609045108*
60K 桌面/QQ图片20140609045108.jpg.gz
huihui@huihui-Rev-1-0:~$ ls -sh 桌面/QQ图片20140609045108*
68K 桌面/QQ图片20140609045108.jpg
huihui@huihui-Rev-1-0:~$ bzip2 桌面/QQ图片20140609045108.jpg
huihui@huihui-Rev-1-0:~$ ls -sh 桌面/QQ图片20140609045108*
56K 桌面/QQ图片20140609045108.jpg.bz2
huihui@huihui-Rev-1-0:~$ bzip2 -d 桌面/QQ图片20140609045108.jpg.bz2
6.文件归档
使用tar命令可以对文件进行归档,命令行选项有:
-c 创建归档文件
-x 释放归档文件
-t 列出归档文件内容