Betriebssystem Agnostic Symlink / Alias ​​/ Shortcut

3

Ich habe einen Ordner, den ich mit Onlinediensten wie Dropbox synchronisiere und den ich mit anderen Computern mit unterschiedlichen Betriebssystemen synchronisiere. Ein Teil meiner Datei- / Ordnerorganisation in diesem Ordner verwendet Symlinks / Aliase (mein Heimcomputer ist ein Mac). Wenn der Ordner mit einem Windows-Computer synchronisiert wird, werden Symlinks und Aliase leider nicht erkannt, aber Verknüpfungen.

Gibt es eine Möglichkeit, einen Symlink / eine Verknüpfung einmal auf einem Mac oder Windows mit plattformübergreifender Kompatibilität zu erstellen? Ansonsten muss ich zwei Links pro Datei erstellen, einen für Mac / Linux und einen für Windows.

HINWEIS: Der Zweck dieses Ordners ist, da ich weiß, dass jemand danach fragt, viele Dateien in einer Ordnerhierarchie zu organisieren und zu speichern. Gelegentlich scheint eine Datei oder ein Ordner an zwei oder mehr Stellen zu passen, daher der Symlink. Dies ist eine sehr verbreitete Praxis unter Mac / Linux.

tralston
quelle
1
Betriebssysteme und Dateisysteme sind unterschiedlich. Wie können die Symlinks identisch sein? Erstellen Sie separate Symlinks für OS X und Windows.
Karan,
Solange ich die entsprechenden Dateisystemtreiber wie NTFS-3G auf meinem Mac habe, kann er auf einem NTFS-Laufwerk so ziemlich alles außer Verknüpfungen ausführen. Auf einen Ordner kann beispielsweise über die NTFS-Treiber zugegriffen werden, ebenso wie auf eine Textdatei. Warum keine Abkürzung?
Tralston
Sprechen Sie zunächst über Windows-Symlinks oder Verknüpfungsdateien (.LNK)? Ich glaube nicht, dass NTFS-3G das erstere erkennt. Zweitens sind Verknüpfungen natürlich unter Linux wie jede andere Datei zugänglich, aber ohne dass ein Programm ausgeführt wird, um sie zu interpretieren. Wie werden sie Ihrer Meinung nach funktionieren?
Karan
Dies ist keine Lösung, aber es funktioniert gut genug für meine Zwecke. Wenn ich den Mac ausgewählt habe, um meinen Alias ​​eines Ordners / einer Datei zu erstellen und dann mit Windows zu synchronisieren, funktioniert die Datei in Windows nicht. Sie können es jedoch als Textdatei öffnen und zumindest den Pfad zu der Datei anzeigen, für die ein Alias ​​erstellt wurde. Zumindest auf diese Weise ist es halb lesbar, wenn Sie die Alias-Datei später von einem PC aus suchen.
Tralston

Antworten:

4

Hier ist eine dumme, aber möglicherweise nützliche Lösung: Sie könnten ein kleines Python-Skript schreiben, das ein agnostischer Link ist (Code hier ).

#!/usr/bin/python
import subprocess
import sys

if sys.platform == 'darwin':
    def openFolder(path):
        subprocess.check_call(['open', '--', path])
elif sys.platform == 'linux2':
    def openFolder(path):
        subprocess.check_call(['gnome-open', '--', path])
elif sys.platform == 'win32':
    def openFolder(path):
        subprocess.check_call(['explorer', path])

openFolder("relative/path")

this will, of course, always open a new window. Not a great solution, but it may be all you get. (Keep praying that one day windows will be linux based... or just die.)

EDIT: New answer

According to this How-to-geek post, you can use mklink from cmd (Windows Vista - 10) to make symlinks that also work in linux. The guide also has a way to install an tool that can make linking easier (by adding it to the right-click menu.)

The command-line syntax is:

mklink /prefix link_path file/folder_path 

where prefix can be:

/D – creates a soft symbolic link, which is similar to a standard folder or file shortcut in Windows. This is the default option, and mklink will use it if you do not enter a prefix.

/H – creates a hard link to a file

/J – creates a hard link to a directory or folder

An example that I just did:

mklink /J D:\Dropbox\school\archive\14Winter\cs355 D:\Dropbox\school\classes\cs355

Which makes a link in 14Winter called cs355 to the cs355 in classes

After creating the link on windows, the link worked on my linux box, too. I have not tried Mac. If you find it doesn't work for mac, let me know.

Cory-G
quelle
Should the sentence "After creating the link on linux, the link worked on my linux box, too" changed into "After creating the link on Windows, the link worked on my linux box, too"?
Paolo