Linux 软连接「建议收藏」

Linux 软连接「建议收藏」1.Linux链接概念Linux链接分两种,一种被称为硬链接(HardLink),另一种被称为符号链接(SymbolicLink)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r–r–  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r–r–  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

[oracle@Linux]$ echo “I am f1 file” >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

 

完!

作者:iTech

出处:http://itech.cnblogs.com/

更改Ubuntu gcc、g++默认编译器版本

升级Ubuntu到11.10,但在编译Android的时候出错了。这个Android在升级系统之前编译是没有错误的,对比发现升级到Ubuntu 11.10后gcc、g++的版本都是4.6.1。而升级之前的版本是4.4.6。我想多半原因就在这里了。要想解决问题需要更改Ubuntu gcc、g++默认编译器版本。google一把发现有两种方法可以更改。

方法一:

首先,看一下你的Ubuntu都装了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l  我的显示是

lrwxrwxrwx 1 root root      7 2011-08-14 15:17 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 237072 2011-09-17 17:25 /usr/bin/gcc-4.5

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

由上面显示可以看出默认安装的是gcc-4.6,现在来改成gcc-4.4

删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接)

命令:sudo rm /usr/bin/gcc

然后建一个软连接,指向gcc-4.4。

命令:sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

ok了,www.linuxidc.com 现在用命令:gcc -v  显示如下:

使用内建 specs。

目标:i686-linux-gnu

配置为:../src/configure -v –with-pkgversion=’Ubuntu/Linaro 4.4.6-11ubuntu2′ –with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –program-suffix=-4.4 –enable-shared –enable-linker-build-id –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –with-gxx-include-dir=/usr/include/c++/4.4 –libdir=/usr/lib –enable-nls –with-sysroot=/ –enable-clocale=gnu –enable-libstdcxx-debug –enable-objc-gc –enable-targets=all –disable-werror –with-arch-32=i686 –with-tune=generic –enable-checking=release –build=i686-linux-gnu –host=i686-linux-gnu –target=i686-linux-gnu

线程模型:posix

gcc 版本 4.4.6 (Ubuntu/Linaro 4.4.6-11ubuntu2)

用同样的方法更改g++的默认版本。

方法二:

修改默认gcc和g++为4.4的版本

sudo update-alternatives –remove-all gcc

sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.4 40

sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.4 40

配置默认的gcc和g++

sudo update-alternatives –config gcc

sudo update-alternatives –config g++


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187636.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学习Java好书及视频推荐

    学习Java好书及视频推荐要想在java领域成为大牛,除了不断进行项目实战以外,还要不断的进行进修和学习,以下将本人学习java多年使用的好书和一些好的视频推荐给大家,这些书和视频都是本人在网络找了很久,后来又经过实践证明的好书和视频。希望对大家学习java有帮助首先,是书的推荐:1学习java,java基础,1.0入门:HeadFirstJava(中文版)这本书,我没看过,但是在当当网的评价是5颗星,…

    2022年6月29日
    32
  • webstorm必装十大插件_vscode webpack

    webstorm必装十大插件_vscode webpack前言作为一个FE开发者,在日常工作中用的最多的可能就是WebStorm与VsCode,我在工作的这几年一直使用的是WebStorm进行开发,今天为大家带来我工作中使用的一些Webstorm插件以及一些可以提效的配置方法,希望能够帮助使用WebStorm的朋友们更加高效工作,多余时间可以多摸摸????!最终效果展示插件推荐下面会详细介绍每一个插件的安装、使用建议,推荐指数✨.ignore:版本管理工具的忽略文件插件插件描述:支持创建多种.ignore文件,会默认设置到需要忽略的文件

    2025年10月1日
    3
  • Java设计模式之创建型:原型模式

    Java设计模式之创建型:原型模式

    2021年10月4日
    38
  • pytest 执行用例_python 分布式计算

    pytest 执行用例_python 分布式计算前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

    2022年7月31日
    7
  • 关于RecyclerView的notifyDataSetChanged

    关于RecyclerView的notifyDataSetChanged在很久以前,总觉得ListView的notifyDataSetChanged之类的方法很神奇,数据更新后,调用一下,视图就变了…不过自从知道观察者模式以后就没感觉么神奇了,反而对View的绘制测量一系列精细的计算叹为观止—虽然从某种程度上来说,Android的源代码其实挺臃肿的。后面推出了RecyclerView,但其实更新机制并无不同。就如调用notifyDataSetChanged方法:…

    2022年6月29日
    28
  • ddns dnspod_dns和ddns的区别

    ddns dnspod_dns和ddns的区别NBNS——–NetBIOS漏洞【询问主机名】NBNS是网络基本输入/输出系统(NetBIOS)名称服务器的缩写。它也是TCP/IP协议的一部分。它负责将计算机名转化为对应的IP。其中,NamequeryNB是请求包,NamequeryresponseNB是响应包。双方的端口号均为137。NBNS在WIndows用的较少,Windows普遍采用LLMNR协议。在一个局域网中的两台主机,主机A的ip是:10.30.59.77,Mac地址为:HonHaipr_81:74:8A。主

    2022年8月31日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号