আমি কি টার্মিনাল থেকে কোনও ফোল্ডারে একটি ডেস্কটপ শর্টকাট / এলিয়াস তৈরি করতে পারি?


17

আমি নির্দিষ্ট ফোল্ডারে একটি ডেস্কটপ শর্টকাট তৈরি করতে চাই, এর ভিতরে গভীরভাবে কবর দেওয়া ~/Library/। লাইব্রেরিটি সিংহটিতে ডিফল্টরূপে লুকানো থাকে এবং আমি বিভিন্ন কারণে এটি সেভাবেই রাখতে চাই। প্রদত্ত পথে ডেস্কটপ শর্টকাট তৈরি করতে আমি কি একটি পদক্ষেপ, কমান্ড লাইন ক্রিয়াটি ব্যবহার করতে পারি? আমি এমন সমাধানগুলি এড়াতে চাই যেগুলিতে লাইব্রেরিটি লুকোচুরি করা, ফাইন্ডার ব্যবহার করে উপন্যাস তৈরি করা এবং এটি পুনরায় লুকানো জড়িত। আমি জানি কীভাবে এটি করতে হয় তবে আমার উদ্দেশ্যগুলির জন্য, একটি একক লাইন যা টার্মিনালটিতে আটকানো যায় এবং এটি দিয়ে করা ভাল be

উত্তর:


10

টার্মিনালে এটি ব্যবহার করে দেখুন:

cd ~/Desktop
ln -s ~/Library/path/to/folder

5
আমার মনে হয় আপনি বোঝানো ln -s ~/Library/path/to/folder folder। এই পদ্ধতির একটি ছোট অসুবিধা (অর্থাত্ সিমলিংকিং) হ'ল লিঙ্কটি "মূল" (অর্থাত্ লক্ষ্য) সরানো বা পুনরায় নামকরণ করা হলে তা ভাঙা হবে।
কেলভিন 20'12

2
দ্বিতীয় যুক্তির folderপ্রয়োজন নেই। যদি আপনি এটি বাদ দেন lnতবে মূল ফোল্ডারের মতো একটি লিঙ্ক তৈরি করুন।
বোজ

আহ, আপনি ঠিক বলেছেন। আমি এর আগেও একটি ত্রুটি পেয়েছি তবে আমি অবশ্যই কিছু ভুল করেছি।
কেলভিন

1
আমি জানি এটি কী ছিল - আপনার কোনও পিছনে স্ল্যাশ থাকতে পারে না!
কেলভিন 20'12

12
ওএসএক্স alias লেখা হয় না সিম্বলিক লিঙ্ক। দেখুন stackoverflow.com/questions/11165799/...
bfontaine

13

এটি টার্মিনালের এক লাইনে করা সম্ভব। ধরা যাক আপনি "/ ব্যবহারকারীর / মাই / লাইবারি / প্রিফারেন্সস / অর্গ .herf.Flux.plist" ফাইলটির উপাধি দিতে চান।

osascript -e 'tell application "Finder"' -e 'make new alias to file (posix file "/Users/me/Library/Preferences/org.herf.Flux.plist") at desktop' -e 'end tell'

আপনি প্রতিস্থাপন করা উচিত to fileসঙ্গে to folderআপনি একটি ফোল্ডার আছে।

এখানে একটি শেল স্ক্রিপ্ট রয়েছে যা আপনাকে একটি ফাইল বা ফোল্ডার পাথটি অ্যালাম তৈরি করতে দেয়:

#!/bin/bash

if [[ -f "$1" ]]; then
  type="file"
else
  if [[ -d "$1" ]]; then 
    type="folder"
  else
    echo "Invalid path or unsupported type"
    exit 1
  fi
fi

osascript <<END_SCRIPT
tell application "Finder"
   make new alias to $type (posix file "$1") at desktop
end tell
END_SCRIPT

আপনি এই স্ক্রিপ্ট নাম যদি make-alias.sh, chmod u+x make-alias.shএবং এটি রাখা /usr/local/bin, আপনি যেমন চালাতে পারেন make-alias.sh ~/Library/Preferences


হবে ~/Library/Preferences/org.herf.Flux.plist"কাজ, বা স্পষ্টভাবে টার্মিনাল কমান্ড অন্তর্ভুক্ত করার ব্যবহারকারীর নাম প্রয়োজন?
লেসারপপ_মোরফিজ 20'12

আমি কেবল ব্যবহারের চেষ্টা করেছি ~এবং এটি ও-লাইন osascriptকমান্ডের সাথে কাজ করে না । আমি পরিবর্তে স্ক্রিপ্ট ফাইলটি ব্যবহার করার পরামর্শ দিচ্ছি, কারণ ~স্বয়ংক্রিয়ভাবে রূপান্তরিত হয়।
কেলভিন 20'12

হুম। ফাঁকা জায়গাগুলির সাথে ফাইলের নামগুলি ভাঙ্গার মতো মনে হচ্ছে/Library/Application Support/
লেসারপপ_মোরফিজ

আপনি যদি ব্যাশ স্ক্রিপ্টটি ব্যবহার করে থাকেন তবে ফাইলটির একটি একক উদ্ধৃতিতে রাখা উচিত যদি এর কোনও স্পেস বা বিশেষ অক্ষর থাকে। তবে ~এটি প্রসারিত হতে বাধা দেবে । সর্বোত্তম জিনিস হ'ল উদ্ধৃতি ব্যবহার না করা, এবং ফাইলের নাম সম্পূর্ণ করতে ট্যাব করা যাতে বাশ সঠিকভাবে বিশেষ অক্ষরগুলি "পলায়ন" করে। উদাহরণস্বরূপ ~/Library/Applicationতারপরে ট্যাব টিপুন। যদি Application Supportএকমাত্র ম্যাচ হয় তবে শেলের স্থানটির আগে একটি ব্যাকস্ল্যাশ haveোকানো উচিত ছিল। আপনি পালাতে ম্যানুয়ালি একটি ব্যাকস্ল্যাশও ব্যবহার করতে পারেন।
কেলভিন 20'12

মনে রাখবেন যে কোনও সমাধানে স্পেস / বিশেষ অক্ষরের সমস্যা উপস্থিত থাকবে - শেলটি জানতে পারে না যে আপনি 2 পৃথক পৃথক পরিবর্তে 1 পরামিতিটি পাস করেছেন to
কেলভিন

1

আপনার যদি কোনও নির্দিষ্ট ফোল্ডারে লিঙ্কটি টার্গেট করার প্রয়োজন হয় (বা এটি একটি নির্দিষ্ট নাম দিন), আপনি set name of result to "…"হিসাবে হিসাবে ব্যবহার করতে পারেন

#!/bin/bash

if [[ $# -ne 2 ]]; then
    echo "mkalias: specify 'from' and 'to' paths" >&2
    exit 1
fi

from="$(realpath $1)"
todir="$(dirname $(realpath $2))"
toname="$(basename $(realpath $2))"
if [[ -f "$from" ]]; then
    type="file"
elif [[ -d "$from" ]]; then
    type="folder"
else
    echo "mkalias: invalid path or unsupported type: '$from'" >&2
    exit 1
fi

osascript <<EOF
tell application "Finder"
   make new alias to $type (posix file "$from") at (posix file "$todir")
   set name of result to "$toname"
end tell
EOF

1
#!/bin/bash

get_abs() {
  # $1 : relative filename
  echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
}


if [[ $# -ne 2 ]]; then
    echo "mkalias: specify 'from' and 'to' paths" >&2
    exit 1
fi

from=$(eval get_abs $1)  
todir=$(dirname $(eval get_abs $2))
toname=$(basename $(eval get_abs $2))
if [[ -f "$from" ]]; then
    type="file"
elif [[ -d "$from" ]]; then
    type="folder"
else
    echo "mkalias: invalid path or unsupported type: '$from'" >&2
    exit 1
fi

osascript <<EOF
tell application "Finder"
   make new alias to $type (posix file "$from") at (posix file "$todir")
   set name of result to "$toname"
end tell
EOF

স্ক্রিপ্টটি কীভাবে কাজ করবে তার একটি ব্যাখ্যা
ব্যবহারকারীর 151019

উপরের স্ক্রিপ্ট হিসাবে একই তবে রিয়েলপথের প্রয়োজন ছাড়াই
অ্যান্ড্রু ম্যাকক্লিউর

0

অজগর সমাধান চান এমন লোকদের জন্য, এখানে অ্যাপ্লিক্রিপ্ট মোড়ানো একটি ফাংশন রয়েছে, তারপরে সাবপ্রসেসক্লা কল করুন:

def applescript_finder_alias(theFrom, theTo):
    """
    (theFrom, theTo)
    create a short/alias
    theFrom, theTo: relative or abs path, both folder or both file
    """
    # /apple/51709
    applescript = '''
    tell application "Finder"
       make new alias to %(theType)s (posix file "%(theFrom)s") at (posix file "%(todir)s")
       set name of result to "%(toname)s"
    end tell
    '''
    def myesp(cmdString):
        import os, inspect, tempfile, subprocess
        caller = inspect.currentframe().f_back
        cmd =  cmdString % caller.f_locals

        fd, path = tempfile.mkstemp(suffix='.applescript')
        try:
            with os.fdopen(fd, 'w') as tmp:
                tmp.write(cmd.replace('"','\"').replace("'","\'")+'\n\n')
            subprocess.call('osascript ' + path, shell=True, executable="/bin/bash")
        finally:
            os.remove(path)
        return None
    import os
    theFrom = os.path.abspath(theFrom)
    theTo = os.path.abspath(theTo)
    if os.path.isfile(theFrom): 
        theType = 'file'
    else:
        theType = 'folder'
    todir = os.path.dirname(theTo)
    toname = os.path.basename(theTo)
    myesp(applescript)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.