Ubuntuでは、同じ場所に「MyFile」という名前のフォルダーと「MyFile」という名前のドキュメントを配置できないのはなぜですか?私が取得item already used in this location
エラー。Ubuntu / Linuxはフォルダーとファイルを同じオブジェクト(ディスクへのポインター)として扱いますか?
blog
、ブログの投稿で呼び出されるフォルダーと、ブログの投稿blog
のリストで呼び出されるhtmlページを持つローカルバージョンを作成できません。
Ubuntuでは、同じ場所に「MyFile」という名前のフォルダーと「MyFile」という名前のドキュメントを配置できないのはなぜですか?私が取得item already used in this location
エラー。Ubuntu / Linuxはフォルダーとファイルを同じオブジェクト(ディスクへのポインター)として扱いますか?
blog
、ブログの投稿で呼び出されるフォルダーと、ブログの投稿blog
のリストで呼び出されるhtmlページを持つローカルバージョンを作成できません。
回答:
Linuxでは、ほとんどすべてがファイル記述子です。ディレクトリは、ユーザーの観点から他のファイルを保持できる特殊なタイプのファイルです。
そのため、同じディレクトリに同時に同じ名前で両方を持つことはできません。
可能であれば、コーダーにとって人生は悲惨なものになるでしょう。誰かがディレクトリを作成して存在することを確認したい場合、コマンド「isDir」は何を返しますか。isDir( "/ home / shrodingers / cat")はtrue、false、または両方を返す必要がありますか?そして、誰かが何らかのコードでファイルのディレクトリを開きたい場合はどうなりますか?
そして、何かを開くように指示したとき、システムは何をすべきでしょうか?ファイルが必要だと仮定しますか?それはトラブルを綴る;)
ところで、これはLinuxだけでなく、すべてのオペレーティングシステムに当てはまります。デスクトップの観点からは、オペレーティングシステムはファイルまたはディレクトリに一意の識別子を追加し、リストから削除することができます。ただし、コマンドラインの観点からは問題があります。
Windowsには、大文字と小文字を区別する名前を使用することがあります。したがって、「MYFILE」と「myfile」は異なるものです。
同じ場所に同じ名前の2つのエンティティを含めることはできません。ファイルをcatまたはviにしたい場合はどうなりますか?OSが選択するのは魔女エンティティですか?混乱の可能性があるため、同じ場所にあるファイルとフォルダーに同じ名前を付けることはできません。ちなみに、フォルダは他のファイルをホストするファイルです。
cat
またはvi
その名前がある場合、OSは明らかにファイルを選択する必要があります。なぜそれが機能しないのですか?
vi
には通常vim
Ubuntu上にありますが、ディレクトリを開いて表示し、編集することもできます。それを試してみてください: vi .
cat
またはvi
その名前宛てであります、論理的な解釈は、サブディレクトリではなくファイルで呼び出すことです。(主に)ファイル指向のコマンド(vi
)が(サブ)ディレクトリでも機能するという事実は、そのステートメントとは無関係です。
vim
サブディレクトリの引数を単純に処理していません。ファイルを処理するのと同じコードで。 vim
(非常に単純なレベルで)2つのプログラムが1つになっているようです。ファイルで呼び出されると、テキストエディタのように機能し、サブディレクトリで呼び出されると、ファイルマネージャのように機能します。
vi
。乾杯。
私はこれが古いトピックであることを知っていますが、同じ問題を抱えていたので、共有したいと思いました。
これが私の話です(辛抱強く、幸せな終わりがあります)。
環境:
ReiserFS上のGentooカーネル4.12.5 64ビット
これはどのように起こりましたか?
syncthingを使用して共有されたフォルダーを持つ複数のマシンがあります。過去のある時点で、「。stfolder」という名前のファイルを削除し、代わりにその名前でディレクトリを作成しました。そのため、おそらくバグは、この操作を別のマシンで同期するsyncthingによるものです。
バグを調べてみましょう:(ここではルートとして動作しています)
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
drw-rw---- 2 stopi syncthing 48 3 sept. 18:24 .stfolder
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
find -type f -name .stfolder
(<= no output there)
find -type f -name ".*"
./.stignore
./.stfolder
find -type f -name ".s*"
./.stignore
ファイルはゴーストのように見えますが、フォルダは正常に応答しています(検索あり)
file .*
.: directory
..: directory
.stfolder: directory
.stfolder: empty
.stignore: C source, ASCII text
file .s*
.stfolder: directory
.stignore: C source, ASCII text
私は知っている、非常に奇妙な...
rm -r .stfolder
ls -lahd .*
drwxrwx--- 5 stopi syncthing 656 3 sept. 18:24 .
drwxr-xr-x 5 stopi stopi 240 3 sept. 18:21 ..
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
-rw-rw---- 1 stopi syncthing 23 28 oct. 2017 .stignore
rm .stfolder
rm: impossible de supprimer '.stfolder': Aucun fichier ou dossier de ce type
そのゴーストファイルは削除できません。
しかし、最終的には、tmpfsマウントポイントに移動することで正常に削除しました。
mv .stfolder /elsewhere/
mv: impossible d'évaluer '.stfolder': Aucun fichier ou dossier de ce type
mv .* /elsewhere/
バグはtmpfsにまだ存在しているため、reiserfsとは関係がないと言わなければなりません。
cd /elsewhere
ls -lahd .*
-rw-rw---- 1 stopi syncthing 0 29 août 12:51 .stfolder
ls -lahd .s*
ls: impossible d'accéder à '.s*': Aucun fichier ou dossier de ce type
このbashの出力でわかるように、ファイルは同時に存在しますが、存在しません。このシュレディンガー猫の能力により、同じ名前のフォルダーを作成できます。
しかし、待ってください、もっとあります(そして、これは明らかです):同じ名前の別のファイルを作成することもできます。
touch .stfolder
ls -lahdQ
total 0
drwxrwxr-x 3 root users 100 3 sept. 19:13 "."
drwxrwxrwt 18 root root 440 3 sept. 17:35 ".."
-rw-r--r-- 1 root root 0 3 sept. 19:13 ".stfolder"
-rw-r----- 1 root root 0 3 sept. 19:09 ".stfolder"
ゴーストはコピーできるので(バグを複製できます)、chown、chmodなどで操作できます。唯一の制限は名前を付けられないため、空のディレクトリに配置して "。*"を使用する必要があることです。それらのコマンドの引数...しかしそれは動作します!
その性質上、このファイルは最初から空でした(これは単なる同期のフラグです)。
そのため、そのファイルにデータを入れることができるかどうか興味がありました。
そして、ここで、解決策が私に来ました:
vi .*
" ============================================================================
" Netrw Directory Listing (netrw v162)
" /elsewhere
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
.<200b>stfolder
はい、そのファイルのドットの直後に目に見えない文字があります。
これがすべてを説明します。
神に感謝、私は「エコーテスト>>。*」と猫を使用しませんでした...
U+200b
ちなみに、「ゼロ幅スペース」です。私はこの逸話が好きですが、答えとして完全に数えられないかもしれないと思います。
うわー、これは本当に奇妙ですが、著者が尋ねたとおりにしただけです。これが方法なので、本当の答えです:P
charles@charles-MacBook ~ $ cd /usr/share
charles@charles-MacBook /usr/share $ ls -ld pix*
drwxr-xr-x 13 root root 4096 Oct 22 21:04 pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:07 pixmaps
charles@charles-MacBook /usr/share $ mv pixmaps pixmaps
mv: cannot move ‘pixmaps’ to a subdirectory of itself, ‘pixmaps/pixmaps’
charles@charles-MacBook /usr/share $ ls -ld pix*
drwxr-xr-x 13 root root 4096 Oct 22 21:04 pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:07 pixmaps
charles@charles-MacBook /usr/share $ file pix*
pixmaps: directory
pixmaps : X pixmap image, ASCII text
これは以下によって行われました:
charles-MacBook MaSSH # ls
instMaSSH.sh MaSSHandra MaSSHandra.desktop MaSSHandraMesh.xpm
MaSSHandra.xpm mime-MaSSHandra.xml
charles-MacBook MaSSH # cat instMaSSH.sh
cp -i MaSSHandra.desktop /usr/share/applications
cp -i MaSSHandra.xpm /usr/share/pixmaps
cp -i MaSSHandraMesh.xpm /usr/share/pixmaps
xdg-icon-resource install --context mimetypes --size 48 /usr/share/pixmaps/MaSSHandra.xpm application-x-MaSSHandra
xdg-icon-resource install --context mimetypes --size 48 /usr/share/pixmaps/MaSSHandraMesh.xpm application-x-MaSSHandraMesh
setcap cap_net_raw+ep /opt/MaSSHandra/bin/MaSSHandra
charles-MacBook MaSSH # ./instMaSSH.sh
cp: overwrite ‘/usr/share/applications/MaSSHandra.desktop’? y
xdg-icon-resource: file '/usr/share/pixmaps/MaSSHandra.xpm' does not exist
xdg-icon-resource: file '/usr/share/pixmaps/MaSSHandraMesh.xpm' does not exist
whoah代替応答と同じ名前を持つ2つのファイルではなく、さらに、ディレクトリやファイルはもう???上で何が起こっていますか_
charles-MacBook share # ls -ld pi*
drwxr-xr-x 13 root root 4096 Oct 22 21:08 pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:09 pixmaps
charles-MacBook share # mv pixmaps /tmp
charles-MacBook share # mv pixmaps /tmp/pixmaps/
charles-MacBook share # ls -ld pix*
-rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps
charles-MacBook share # ls -li pix*
1849351 -rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
1841386 -rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps
charles-MacBook share # file pix*
pixmaps: X pixmap image, ASCII text
pixmaps : X pixmap image, ASCII text
charles-MacBook share # ls -liF pix*
1849351 -rw-r--r-- 1 root root 21535 Oct 22 21:26 pixmaps
1841386 -rw-r--r-- 1 root root 17626 Oct 22 21:26 pixmaps
全く奇妙な行動
charles-MacBook MaSSH # ls -l /usr/share/pixmaps
pixmaps pixmaps
charles-MacBook MaSSH # rm -i /usr/share/pixmaps
rm: remove regular file ‘/usr/share/pixmaps’? y
charles-MacBook MaSSH # ls -l /usr/share/pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:26 /usr/share/pixmaps
charles-MacBook MaSSH # rm -i /usr/share/pixmaps
rm: cannot remove ‘/usr/share/pixmaps’: No such file or directory
charles-MacBook MaSSH # ls -l /usr/share/pixmaps
-rw-r--r-- 1 root root 17626 Oct 22 21:26 /usr/share/pixmaps
charles-MacBook MaSSH # cd /usr/share
charles-MacBook share # rm pixmaps
charles-MacBook share #
.myfile
?