+ -
当前位置:首页 → 问答吧 → 关于文件名后面的“/”的问题

关于文件名后面的“/”的问题

时间:2008-11-08

来源:互联网

不知道大家在做LFS的时候有没有觉得,手册上面常用的目录/tools,比如--prefix=/tools ,如果用命令自动补齐的话,出现的是/tools/,关于文件名后面的“/”,到底会不会对安装产生影响呢?就我知道的mv命令,有没有“/”就会涉及到是移动到目录下,还是改名,所以“/”不能乱加。
那在配置的时候的 --prefix=/tools 加上“/”有没有什么关系呢?进一步说,对其他的命令执行结果有没有什么影响?

作者: tzfox   发布时间: 2008-11-08

有影响。

大多数的configure脚本,后面都不能加/,
这是因为在脚本中已经定义自动加上。所以如果你加了这个/,就有可能会编译出错,它会提示:
''找不到/usr//bin''等内容。你会看到出现了两个/,这当然是非法的目录名。

所以在configure 的时候,不要在路径最后加上/。

作者: ti8er   发布时间: 2008-11-08

引用:
作者: tzfox
就我知道的mv命令,有没有“/”就会涉及到是移动到目录下,还是改名,所以“/”不能乱加。
关于这个问题,其实是你的错觉,根本不会存在这个问题的。

Linux下一切都是文件,所以mv命令绝对不会因为你加不加/而搞乱。

比如当前目录下有个普通文件temp
那么你想
mkdir temp

另外建立一个temp目录,根本不行。因为目录就是文件,这两个“文件”重名了。

你想把temp改为temp目录更加不行
mv temp temp/
上述命令就是非法的。

你可以试试,mv命令是不会因为在最后加不加/而导致结果的不同的。

作者: ti8er   发布时间: 2008-11-08

引用:
作者: ti8er
关于这个问题,其实是你的错觉,根本不会存在这个问题的。

Linux下一切都是文件,所以mv命令绝对不会因为你加不加/而搞乱。

比如当前目录下有个普通文件temp
那么你想
mkdir temp

另外建立一个temp目录,根本不行。因为目录就是文件,这两个“文件”重名了。

你想把temp改为temp目录更加不行
mv temp temp/
上述命令就是非法的。

你可以试试,mv命令是不会因为在最后加不加/而导致结果的不同的。
一切皆文件~好东西~~~

作者: grissiom   发布时间: 2008-11-09

引用:
作者: ti8er

Linux下一切都是文件,所以mv命令绝对不会因为你加不加/而搞乱。

Window下实际上也是如此

作者: think365   发布时间: 2008-11-09

有时候还是有点关系的
譬如在FC8中:
引用:
[root@localhost /]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 11-02 22:44 /var/mail -> spool/mail
引用:
[root@localhost /]# ls -l /var/mail/
总计 8
-rw-rw---- 1 ghost mail 0 11-03 04:27 ghost
-rw-rw---- 1 lofeng mail 0 11-02 23:08 lofeng
-rw-rw---- 1 rpc mail 0 11-02 22:50 rpc
在这种情况下分清是否有"/"很重要的

作者: lofeng410   发布时间: 2008-11-10

引用:
作者: lofeng410
有时候还是有点关系的
譬如在FC8中:


在这种情况下分清是否有"/"很重要的
可是我的就没有区别
很怪 难道 我shell配置设定有问题???
ppluer [ ~ ]$ ls firefox -l
总计 8
drwx------ 10 ppluer ppluer 4096 11-04 17:08 okqespov.default
-rw-r--r-- 1 ppluer ppluer 94 11-03 17:10 profiles.ini
ppluer [ ~ ]$ ls firefox/ -l
总计 8
drwx------ 10 ppluer ppluer 4096 11-04 17:08 okqespov.default
-rw-r--r-- 1 ppluer ppluer 94 11-03 17:10 profiles.ini

作者: ppluer   发布时间: 2008-11-10

符号链接才会在 ls -l 时出现那种区别

作者: remote fish   发布时间: 2008-11-10

在后面加不加/,有没有区别,用老外的原话来说,就是:取决于实现。

我可没有说“任何情况下”目录后面加不加/是完全没有区别,我在上面不是正好说明了:

configure 脚本配置的路径不能在后面加/,
而mv加不加/都没有区别。

其实这根本不是关键,我们最重要的是明白“一切皆文件”的概念,也要明白,目录和加不加/根本没有关系。

至于在使用上,目录后加不加/,会不会有区别,就要看使用的程序是怎么设计的,这就是“取决于实现”。

ls程序在实现上就会区别后面的/。比如:

列出当前目录下的目录,但是不列出普通文件:

ls -d */

这后面的/就一定要加。这说白了只是ls这个程序的“用法”,可不要混淆了认为目录就一定要加/才是目录,那样就本末倒置了。

作者: ti8er   发布时间: 2008-11-10

我有个同学LFS之后他的usr目录很搞笑~在编译软件的时候总是显示 /usr//bin.... /usr//lib...
很神奇~不知道是怎么回事~尽管如此做很多事情也没出过错误~

作者: simdiak   发布时间: 2008-11-10

引用:
作者: simdiak
我有个同学LFS之后他的usr目录很搞笑~在编译软件的时候总是显示 /usr//bin.... /usr//lib...
很神奇~不知道是怎么回事~尽管如此做很多事情也没出过错误~
莫非又是 BLFS 的 Bash Shell Startup Files 作怪?

作者: d00m3d   发布时间: 2008-11-11

谢谢ti8er兄的指教,对这个问题有了进一步的理解。
但我还是不同意你说的mv加不加“/”的说法

举例
mv file1 /file2 :这样会将当前目录下的file1文件移动到/目录下,并且改名为file2
mv file1 /file2/:这样会把当前目录下的file1文件移动到/file2目录下,文件名仍然是file1

这不就说明对mv的话加不加“/”是有区别的吗?

作者: tzfox   发布时间: 2008-11-11

引用:
作者: tzfox
谢谢ti8er兄的指教,对这个问题有了进一步的理解。
但我还是不同意你说的mv加不加“/”的说法

举例
mv file1 /file2 :这样会将当前目录下的file1文件移动到/目录下,并且改名为file2
mv file1 /file2/:这样会把当前目录下的file1文件移动到/file2目录下,文件名仍然是file1

这不就说明对mv的话加不加“/”是有区别的吗?
如此偏颇很多 估计这两条指令是先后执行的
在执行第一条指令时,由于file2不存在,所以是重命名
在执行第二条指令时由于file2已经存在,所以是把file1移动到file2目录下

作者: lofeng410   发布时间: 2008-11-11

引用:
作者: tzfox
谢谢ti8er兄的指教,对这个问题有了进一步的理解。
但我还是不同意你说的mv加不加“/”的说法

举例
mv file1 /file2 :这样会将当前目录下的file1文件移动到/目录下,并且改名为file2
mv file1 /file2/:这样会把当前目录下的file1文件移动到/file2目录下,文件名仍然是file1

这不就说明对mv的话加不加“/”是有区别的吗?
这个例子,你要设置好相同的前提,那就是:

/file2目录之前是否存在?

只要这个前提一样,那么结果肯定是一样的,你可以试试。

作者: ti8er   发布时间: 2008-11-11

Linux在命令的实现上是相当有考虑的,那就是,可能涉及到严重误操作的,它都会做好严格的限制;如果结果不是很严重的,它就会考虑得宽松。

比如mv/rm/rmdir这类移动和删除命令,一旦搞错是相当严重的结果,所以,这类命令都是经过仔细设计的,你可以试试,后面无论加不加/其结果都是一样的。否则,要是不一样的话,那加在后面的一个/的区别就可以删错东西,岂不是相当不安全?(注意是加在后面的/,加在前面的那是绝对不一样的,我就搞错过,删除了根目录)

那些比如ls/cat等这样的查看命令,就算是查看错了,问题也不是很大,所以这类程序就设计得比较宽松,在一些情况下就要区分后面的/,以提供更多更灵活的功能。

作者: ti8er   发布时间: 2008-11-11

引用:
作者: ti8er
Linux在命令的实现上是相当有考虑的,那就是,可能涉及到严重误操作的,它都会做好严格的限制;如果结果不是很严重的,它就会考虑得宽松。

比如mv/rm/rmdir这类移动和删除命令,一旦搞错是相当严重的结果,所以,这类命令都是经过仔细设计的,你可以试试,后面无论加不加/其结果都是一样的。否则,要是不一样的话,那加在后面的一个/的区别就可以删错东西,岂不是相当不安全?(注意是加在后面的/,加在前面的那是绝对不一样的,我就搞错过,删除了根目录)

那些比如ls/cat等这样的查看命令,就算是查看错了,问题也不是很大,所以这类程序就设计得比较宽松,在一些情况下就要区分后面的/,以提供更多更灵活的功能。
同意,受教了,^_^

作者: tzfox   发布时间: 2008-11-12

引用:
作者: remote fish
符号链接才会在 ls -l 时出现那种区别
原来如此 !!!!谢谢

作者: ppluer   发布时间: 2008-11-12

引用:
作者: remote fish
符号链接才会在 ls -l 时出现那种区别
不好意思 是我误导大家了

作者: lofeng410   发布时间: 2008-11-12

引用:
作者: lofeng410
不好意思 是我误导大家了
呵呵 我也因为这个帖子才弄明白心里的一个疑惑
我有一个/source是符号链接 指向/mnt/lfs/source目录
我cd /sour然后点一次[tab]只会匹配到/source不会出来后面的"/"
再点[tab]才能出来
但是如果是别的目录
比如cd /bi 点一次[tab]就会自动匹配成 /bin/
看了这个帖子我才明白 原来符号链接的原因

作者: ppluer   发布时间: 2008-11-13

引用:
作者: ppluer
呵呵 我也因为这个帖子才弄明白心里的一个疑惑
我有一个/source是符号链接 指向/mnt/lfs/source目录
我cd /sour然后点一次[tab]只会匹配到/source不会出来后面的"/"
再点[tab]才能出来
但是如果是别的目录
比如cd /bi 点一次[tab]就会自动匹配成 /bin/
看了这个帖子我才明白 原来符号链接的原因
没有碰上这样的事情的阿
在这种情况下我也是一次[tab]就能出来source后面的/的,而不是需要两次[tab]的

作者: lofeng410   发布时间: 2008-11-13

看完几位的导论,对"/"多了一些认识.

作者: tlze   发布时间: 2008-11-13

热门下载

更多