①. . 使用方式 :ln [option] source_file dist_file (source_file是待建立链接文件的文件,dist_file是新创建的链接文件)
-f 建立时,将同档案名删除.
-i 删除前进行询问.
ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,
对于一个文件来说,有唯一的索引接点与之对应,而对于一个索引接点号,却可以有多个文件名与之对应.所以呢,在磁盘上的同一个文件可以通过不同的路径去访问该文件.注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊.
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接.符号连接相当于Windows下的快捷方式.
不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多.
eg:
ln -s source dist # 建立软连接
ln source dist # 建立硬连接
软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬联接为文件开设一个新的目录 项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的.由于这个原因,硬链接不能连接两个不同文件系统上的文件.
(1)软连接可以 跨文件系统 ,硬连接不可以 .实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 .ln aa.txt /root/bb 失败 .
最后 删除符号链接,有创建就有删除
rm -rf symbolic_name 注意不是rm -rf symbolic_name/
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问.
链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法.Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link).符号连接相当于Windows下的快捷方式.
硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode.可以用:ln命令来建立硬链接.
语法:
ln [options] existingfile newfile(sexistingfile 待建立链接文件的文件,newfile是新创建的链接文件)
ln [options] existingfile-list directory
用法:
第一种:为"existingfile"创建硬链接,文件名为"newfile".
第二种:在"directory"目录中,为"existingfile-list"中包含的所有文件创建一个同名的硬链接.
常用可选[options] –f 无论"newfile"存在与否,都创建链接.-n 如果"newfile"已存在,就不创建链接.
下面举一些例子:
总计 0
如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件.
尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:
(1)不可以在不同文件系统的文件间建立链接
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接.因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接.
建立软链接,只要在ln后面加上选项 –s,下面举个例子
都说到这里了大家应该明白,建立软链接就是建立了一个新文件.当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件.
在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的.
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径.
补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习.
第三段:删除链接
有创建就有删除
rm -rf symbolic_name 注意不是rm -rf symbolic_name/
————————————
linux 软连接和硬链接的区别:
(1)软连接可以 跨文件系统 ,硬连接不可以 .
实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt
/root/bb 连接成功 .ln aa.txt /root/bb 失败 .
源文件还是 连接的文件 .只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点). 当你修改源文件或者连接文件
任何一个的时候 ,其他的 文件都会做同步的修改 .软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针.所以 删除连接文件 对源文件无影响,但
是 删除 源文件,连接文件就会找不到要指向的文件 .软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信 息,包括文件数据块在
【软连接】
软连接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接.相当于window系统中的快捷方式
具体用法是:ln -s 源文件 目标文件 或者 ln -s 源目录 目标目录
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的 目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间.
例如:ln -s /home/test1 /data/test1
这样我们就对/home/test1目录创建了软连接 ,在/data/test1中打开看到的就是/home/test1目录下的文件
使用方式
创建软链接
ln -s [源文件或目录] [目标文件或目录]
例:当前路径创建test 引向/var/www/test 文件夹
ln –s /var/www/test ./test (此处建议一定要写绝对路径,最好写到根目录,而且当前目录中药删除test)
例:创建/var/test 引向/var/www/test 文件夹
ln –s /var/www/test /var/test
修改软链接
这将会修改原有的链接地址为新的地址
ln –snf [新的源文件或目录] [目标文件或目录]
例如:
创建一个软链接
修改指向的新路径
ln –snf /var/www/test1 /var/test
删除软链接
和删除普通的文件是一样的,删除都是使用rm来进行操作,
例:删除test
rm –rf test
正确的删除方式(删除软链接,但不删除实际数据)
rm -rf ./test
错误的删除方式
rm -rf ./test/ (这样就会把原来test下,源文件的内容也删除)
建议使用rm test 待显示删除确认提示的时候
页面出现 rm: remove symbolic link test yes等字样 说明你正在操作的是软连接,而不是目录.
一定要注意啊.乱用rm 还删除目录下的全部文件,还循环,后果很严重,要再三确认
ln常用参数:
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本
【硬连接】
硬连接指通过索引节点来进行连接.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index).在Linux中,多个文件名指向同一索引节点是存在的.一般这种连接就是硬连接.硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止"误删"的功能.其原因如上所述,因为对应该目录的索引节点有一个以上的连接.只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放.也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除.
Linux下取消软连接,做个案例来说明:
①先建立一个软连接
总计?0
#建立file1和file1soft软连接
#删除软连接
权限--引用计数 所有者 -- 所属组--- 大小-- 文件修改时间 文件名
ls [选项] [文件名或目录名]
选项:
-a :显示所有文件
--color=when:支持颜色输出
-d :显示目录信息,而不是目录下的文件
-h :人性化显示﹐按照我们习惯的显示文件大小
-i :显示文件的i节点号
-l:长格式显示
pwd 命令是查询当前所在的目录的绝对路径
选项:
-L (默认值)打印环境变量"$PWD"的值,可能为符号链接.
-P 打印当前工作目录的物理位置.
mkdir 是创建目录的命令
-Z:设置安全上下文,当使用SELinux时有效;
-m或--mode:建立目录的同时设置目录的权限;
-p或--parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
rmdir 是删除空目录的命令
-p: 递归删除目录
touch 是 创建空文件或修改文件的时间戳
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:时间日期 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:参考文件或目录 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:日期时间 使用指定的日期时间,而非现在的时间;
--help:在线帮助;
--version:显示版本信息.
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间戳
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
cat 命令用来查看文件内容
-A: 相当于-vET 选项的整合,用于列出所有隐藏符号
-E: 列出每行结尾的回车符$
-n: 显示行号
-T: 把 Tab 键用^I显示出来
-v: 列出特殊字符
more 是分屏显示文件的命令
less 是分行显示文件的命令
用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页.要退出less程序,应按Q键.
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x数字:将TAB字符显示为指定个数的空格字符.
head 是用来显示文件开头的命令
-c --bytes=[-]NUM 显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容.
-n, --lines=[-]NUM 显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行.
-q, --quiet, --silent 不打印文件名行.
-v, --verbose 总是打印文件名行.
-z, --zero-terminated 行终止符为NUL而不是换行符.
tail 是用来显示文件末尾的命令
-c, --bytes=NUM 输出文件尾部的NUM(NUM为整数)个字节内容.
-f, --follow[={name|descript}] 显示文件最新追加的内容."name"表示以文件名的方式监视文件的变化.
-F 与 "--follow=name --retry" 功能相同.
-n, --line=NUM 输出文件的尾部NUM(NUM位数字)行内容.
--pid=进程号 与"-f"选项连用,当指定的进程号的进程终止后,自动退出tail命令.
-q, --quiet, --silent 当有多个文件参数时,不输出各个文件名.
--retry 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件.使用此选项时需要与选项"--follow=name"连用.
-s, --sleep-interal=秒数 与"-f"选项连用,指定监视文件变化时间隔的秒数.
-v, --verbose 当有多个文件参数时,总是输出各个文件名.
ln 是用来为文件创建链接的命令
-s: 建立软链接文件.如果不加"-s"选项,则建立硬链接文件
-f: 强制.如果目标文件已经存在,则删除目标文件后再建立链接文件
-d, -F, --directory 创建指向目录的硬链接(只适用于超级用户)
-f, --force 强行删除任何已存在的目标文件
-i, --interactive 覆盖既有文件之前先询问用户
-L, --logical 取消引用作为软链接的目标
-n, --no-dereference 把软链接的目的目录视为一般文件
-P, --physical 直接将硬链接到软链接
-r, --relative 创建相对于链接位置的软链接
-s, --symbolic 对源文件建立软链接
硬链接特征:
源文件和硬链接文件拥有相同的 Inode 和 Block
修改任意一个文件,另一个都改变
删除任意一个文件,另一个都能使用
硬链接标记不清,很难确认硬链接文件位置,不建议使用
硬链接不能链接目录
硬链接不能跨分区
软链接特征:
软链接和源文件拥有不同的 Inode 和 Block
两个文件修改任意一个,另一个都改变
删除软链接,源文件不受影响;删除源文件,软链接不能使用
软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变
软链接的权限是最大权限 lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文
件权限
软链接可以链接目录
软链接可以跨分区
软链接特征明显,建议使用软连接
rm 是强大的删除命令,不仅可以删除文件,也可以删除目录
d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程.
cp 是文件或目录用于复制的命令
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制软链接时,把目标文件或目录也建立为软链接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-s:对源文件建立软链接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀"SUFFIX"代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作.
mv 是用来对文件或目录重新命名,或者将文件移动至其他目录
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件.用户输入"y",表示将覆盖目标文件;输入"n",表示取消对源文件的移动.这样可以避免误将文件覆盖.
--strip-trailing-slashes:删除源文件中的斜杠" / ";
-S后缀:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=目录:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作.
第一列的权限位如果不计算最后的".",则共有 10 位.
chmod 用来变更文件或目录的权限
-c, --changes:当文件的权限更改时输出操作信息.
--no-preserve-root:不将'/'特殊化处理,默认选项.
--preserve-root:不能在根目录下递归操作.
-f, --silent, --quiet:抑制多数错误消息的输出.
-v, --verbose:无论文件是否更改了权限,一律输出操作信息.
--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限.
-R, --recursive:对目录以及目录下的文件递归执行更改权限操作.
用户身份
首先,读、写、执行权限对文件和目录的作用是不同的.
目录的可用权限其实只有以下几个.
chown 是修改文件和目录的所有者和所属组的命令
-c或——changes:效果类似"-v"参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对软链接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--reference=参考文件或目录:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
普通用户不能修改文件的所有者,哪怕自己是这个文件的所有者也不行
普通用户可以修改所有者是自己的文件的权限
chgrp 是修改文件和目录的所属组的命令
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的软链接,则遍历软链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L:遍历每一个遇到的通到目录的软链接
-P:不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
--reference=参考文件或目录:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
umask 是显示或设置创建文件的权限掩码.我们需要先了解一下新建文件和目录的默认最大权限.