টার্মিনাল থেকে ওরফে কীভাবে যাবেন?


9

ওরফে, আমার অর্থ ফোল্ডারের শর্টকাটটি তৈরি করা যখন আপনি ফাইন্ডারে কোনও ফোল্ডারে ডান ক্লিক করেন এবং "উপকরণ তৈরি করুন" নির্বাচন করেন। আমি টার্মিনাল মধ্যে সিম্বলিক লিংক তর্ক করতে পারেন cd, কিন্তু এটা alias লেখা কাজ করে না: bash: cd: example-alias: Not a directory। টার্মিনালের কোনও উপনামের গন্তব্যে ডিরেক্টরিটি পরিবর্তন করা সম্ভব?


আমি আমার উত্তর আপডেট করেছি
মার্খুন্তে

উত্তর:


5

ফোল্ডার ওরফে সিডিিং সক্ষম করতে আমি ম্যাক ওএস এক্স ইঙ্গিতগুলিতে নিম্নলিখিতটি পেয়েছি ।

নিম্নলিখিত কমান্ডের সাহায্যে নীচের উত্স কোডটি সংকলন করুন:

gcc -o getTrueName -framework Carbon getTrueName.c

এটি উত্স হিসাবে একই ডিরেক্টরিতে এক্সিকিউটেবল 'getTrueName' তৈরি করবে। আপনি এটিকে আপনার রাস্তায় যুক্ত করতে পারেন বা এটি সরাসরি / ইউএসআর / বিন বা / ইউএসআর / স্থানীয় / বিনে অনুলিপি করতে পারেন যাতে এটি অ্যাক্সেস করা সহজ।

GetTrueName এর জন্য সি উত্স কোড (পাঠ্যটি অনুলিপি করুন এবং আপনার হোম ডিরেক্টরিতে getTrueName.c হিসাবে ফাইলটি সংরক্ষণ করুন):

// getTrueName.c
// 
// DESCRIPTION
//   Resolve HFS and HFS+ aliased files (and soft links), and return the
//   name of the "Original" or actual file. Directories have a "/"
//   appended. The error number returned is 255 on error, 0 if the file
//   was an alias, or 1 if the argument given was not an alias
// 
// BUILD INSTRUCTIONS
//   gcc-3.3 -o getTrueName -framework Carbon getTrueName.c 
//
//     Note: gcc version 4 reports the following warning
//     warning: pointer targets in passing argument 1 of 'FSPathMakeRef'
//       differ in signedness
//
// COPYRIGHT AND LICENSE
//   Copyright 2005 by Thos Davis. All rights reserved.
//   This program is free software; you can redistribute it and/or
//   modify it under the terms of the GNU General Public License as
//   published by the Free Software Foundation; either version 2 of the
//   License, or (at your option) any later version.
//
//   This program is distributed in the hope that it will be useful, but
//   WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
//   General Public License for more details.
//
//   You should have received a copy of the GNU General Public
//   License along with this program; if not, write to the Free
//   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
//   MA 02111-1307 USA


#include <Carbon/Carbon.h> 
#define MAX_PATH_SIZE 1024
#define CHECK(rc,check_value) if ((check_value) != noErr) exit((rc))

int main ( int argc, char * argv[] ) 
  { 
    FSRef               fsRef; 
    Boolean             targetIsFolder; 
    Boolean             wasAliased; 
    UInt8               targetPath[MAX_PATH_SIZE+1]; 
    char *              marker;

    // if there are no arguments, go away
    if (argc < 2 ) exit(255); 

    CHECK( 255,
      FSPathMakeRef( argv[1], &fsRef, NULL ));

    CHECK( 1,
      FSResolveAliasFile( &fsRef, TRUE, &targetIsFolder, &wasAliased));

    CHECK( 255,
      FSRefMakePath( &fsRef, targetPath, MAX_PATH_SIZE)); 

    marker = targetIsFolder ? "/" : "" ;
    printf( "%s%s\n", targetPath, marker ); 

    exit( 1 - wasAliased );
  }

নিম্নলিখিত বিষয়বস্তু সহ নিম্নলিখিতগুলি ~ / .bash_ প্রোফাইলে অন্তর্ভুক্ত করুন বা একটি নতুন ফাইল ~ / .bash_profile তৈরি করুন:

function cd {
  if [ ${#1} == 0 ]; then
    builtin cd
  elif [ -d "${1}" ]; then
    builtin cd "${1}"
  elif [[ -f "${1}" || -L "${1}" ]]; then
    path=$(getTrueName "$1")
    builtin cd "$path"
  else
    builtin cd "${1}"
  fi
}

আপনার পরিবর্তিত .bash_profile লোড করার জন্য আপনাকে সম্ভবত টার্মিনালটি পুনরায় চালু করতে হবে।

ইয়োসেমাইট 10.10.2 এবং জিসিসি 4.2 (এক্সকোড 6.2) এ পরীক্ষিত এবং এটি কাজ করে।

অনুরূপ পন্থা superuser.com এ উপলব্ধ


3

আমি @ ক্ল্যানোমাথের দ্বারা উত্তরটি পরীক্ষা করে দেখিনি, তবে একটি উলামের লক্ষ্য অর্জনের জন্য পাইথন লাইব্রেরি থাকত, তবে কার্বন সমর্থন অ্যাপল ফ্রেমওয়ার্কগুলি থেকে সরিয়ে দেওয়া হয়েছিল। এটি উদ্দেশ্য সিতে করা যেতে পারে https://stackoverflow.com/a/21151368/838253 দেখুন

সেরা বাজি হ'ল সিমলিংক ব্যবহার করা, তবে দুর্ভাগ্যক্রমে ফাইন্ডার আপনাকে এগুলি তৈরি করতে দেয় না।

আমি একটি ওএস এক্স পরিষেবা লিখেছি যা সিমলিঙ্ক তৈরি করে (যা উভয় ফাইন্ডার এবং টার্মিনাল দ্বারা সমর্থিত)। এটি ফাইন্ডার ওয়ার্কফ্লোতে নিম্নলিখিত ব্যাশ স্ক্রিপ্টটি চালায়। (দুর্ভাগ্যক্রমে অটোম্যাটর কোডটি পঠনযোগ্য ফর্ম্যাটে পোস্ট করা সম্ভব হবে বলে মনে হয় না)।

for f in "$@"
do
 fileSuffix="link"
 fileExists=`ls -d "$f $fileSuffix"`
 fileNumber=0

 until [ $fileExists=="" ]; do
  let fileNumber+=1
  fileSuffix="link $fileNumber"
  fileExists=`ls -d "$f $fileSuffix"`
 done

 echo "$f $fileSuffix"
 ln -s "$f" "$f $fileSuffix"
done

1
একটি বাক্যে আপনি বলেছেন "সিমলিংক ব্যবহার করা সবচেয়ে ভাল বাজি, তবে দুর্ভাগ্যক্রমে ফাইন্ডার এটি সমর্থন করে না।" এবং তারপরে "... যা সিমলিংকগুলি তৈরি করে (যা ফাইন্ডার এবং টার্মিনাল উভয় দ্বারা সমর্থিত)" এবং এগুলি একে অপরের বিরোধিতা করে বলে মনে হয়, সুতরাং এটি " পুনরুদ্ধারকারী এটি সমর্থন করে না" হিসাবে এটি পুনর্নির্মাণ বিবেচনা করুন উচ্চাভিলাষী। এছাড়াও curFolderএবং linkFileভেরিয়েবল তাই অব্যবহৃত হয় তারা সেখানে কেন? তুলনা অপারেটরের চারপাশে ফাঁকা জায়গা থাকা উচিত $fileExists == ""এবং $(..)লিগ্যাসি ব্যাকটিকগুলির পরিবর্তে ব্যবহার বিবেচনা করুন ।
ব্যবহারকারী 3439894

@ ব্যবহারকারী 3439894 শব্দগুচ্ছ পরিবর্তন করেছে। আপনি কোড সম্পর্কে সঠিক। আমি ম্যাক পেয়েছিলাম তার খুব শীঘ্রই ২০১১ সালে এটি লিখেছিলাম এবং এটি তখন থেকে কাজ করেছে এবং এর পর থেকে আমি এর দিকে নজর দিইনি। অব্যবহৃত ভেরিয়েবলগুলি সম্ভবত টেস্টিং থেকে বাদ পড়েছে।
মিলিওয়েজ

3

এই আমার গ্রহণ এখানে।

আপনার। প্রোফাইলে এই ফাংশনটি যুক্ত করুন এবং লোড করুন।

function cd  {
  thePath=`osascript <<EOD
set toPath to ""
tell application "Finder"
    set toPath to (POSIX file "$1") as alias
    set theKind to kind of toPath
    if theKind is "Alias" then
        set toPath to  ((original item of toPath) as alias)
    end if
end tell
return posix path of (toPath)
EOD`
  builtin cd "$thePath";
}

হালনাগাদ.

আমি builtin cd @ ক্লোনামথ উত্তরে প্রদর্শিত লাইনটি ব্যবহার করেছি যা আপনাকে সিডি কমান্ডকে ওভাররাইড করতে দেয়। সুতরাং আমরা এখন ব্যবহার করতে পারি:

cd /path/to/example-alias

অথবা

cd /path/to/example

ফাংশনটি ফিরে আসতে হবে এবং সিডিয়াসের মূল বা স্বাভাবিক পথে আসল পথে যেতে হবে।


1

যখন একটি প্রতীকী লিঙ্ক (ইউএনআইএক্স ওরফে) ফাইন্ডারের অভ্যন্তরে ফাইন্ডার ওরফে হিসাবে একই দেখায়, তারা দুটি সম্পূর্ণ ভিন্ন ধরণের উপকরণ।

প্রতীকী লিঙ্কটি কেবলমাত্র সেই পথটিকেই ধরে রাখবে যেখানে উত্সটি সরানো হয় বা সংযোগ বিচ্ছিন্ন ড্রাইভে বা যথাক্রমে ভাগ করা হয় তবে স্থায়ী বা অস্থায়ীভাবে ভেঙে যাবে।

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

সুতরাং, আপনি যদি ফাইন্ডার ওরফে ফাইলটি পড়ার জন্য কোনও স্ক্রিপ্ট বা প্রোগ্রাম না লিখে থাকেন তবে এটি এটি ডিরেক্টরি হিসাবে ব্যবহার করবে না, টার্মিনালে ফাইল হিসাবে।

বিকল্পভাবে, আপনি বর্তমান সন্ধানকারী ওরফে মুছে ফেলতে এবং তার জায়গায় একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন। কমান্ডটি ln -s /path/to/originalহ'ল বর্তমান ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক তৈরি করা হবে । পথটি একটি পূর্ণ বা আপেক্ষিক পথ হতে পারে।


1
  1. @ মারখান্তে অ্যাপলস্রিপ্ট কাজ করেছিল তবে একটি সতর্কতা বার্তা ছিল: osascript[9807:7154723] CFURLGetFSRef was passed an URL which has no scheme (the URL will not work with other CFURL routines)

এই সাহায্যে দ্বারা ডগা , আমি সতর্কতামূলক বার্তা উপরে সরানোর জন্য markunte এর applescript পরিবর্তিত @

  1. @ মারখুন্তের অ্যাপলসক্রিপটি কিছুটা ধীর গতিযুক্ত কারণ এটি সর্বদা অ্যাপ্লিক্রিপ্টের আবেদন করে। সুতরাং উপরে ক্লিক করুন যা ক্লোনামথের টিপ অনুসরণ করেছে, আমি লক্ষ্য স্ক্রিনটি কেবলমাত্র ওরফে থাকলে কেবল অ্যাপ্লিক্রিপ্ট শুরু করতে স্ক্রিপ্টটি পরিবর্তন করেছি।
# Overriding cd to enable make alias available in CLI

function cd  {
    if [ ${#1} == 0 ]; then
        builtin cd
    elif [ -d "${1}" ]; then
        builtin cd "${1}"
    elif [[ -f "${1}" || -L "${1}" ]]; then
        thePath=`osascript <<EOD
set toPath to ""
tell application "Finder"
    set toPath to (POSIX file ((do shell script "pwd")&"/$1")) as alias
    set theKind to kind of toPath
    if theKind is "Alias" then
        set toPath to  ((original item of toPath) as alias)
    end if
end tell
return posix path of (toPath)
EOD`
        builtin cd "$thePath";
    else
        builtin cd "${1}"
    fi
}

-2

বেশিরভাগ অপারেটিং সিস্টেমের মতো (উইন্ডোজ ছাড়াও) ওএস এক্স বাশ স্ক্রিপ্টগুলি সমর্থন করে। প্রথমে আপনার ডেস্কটপে ফাইল তৈরি করুন (বা যে কোনও অবস্থান আপনি চান):

~ / ডেস্কটপ / প্লেক্সকনেক্ট.শ স্পর্শ করুন এরপরে, ফাইলের অনুমতিগুলি সেট করুন যা এটি কার্যকর হয়:

chmod + x ~ / ডেস্কটপ / প্লেক্সকনেক্ট.শ আপনি তারপরে আপনার পছন্দসই পাঠ্য সম্পাদক দ্বারা স্ক্রিপ্টের বিষয়বস্তু সম্পাদনা করতে পারেন, কেবল নিশ্চিত করুন যে এটি নীচের লাইনের সাথে শুরু হয়েছে যাতে শেল (বাশ) ব্যবহার করে সিস্টেম এটি চালাতে জানে:

! / বিন / ব্যাশ

তারপরে ফাইলটি ডাবল-ক্লিক করা যায়, টার্মিনাল আরম্ভ করে এটি কার্যকর করা যায়।

তবে এর জন্য আরও মার্জিত সমাধান হতে পারে একটি অ্যাপলস্ক্রিপ্ট অ্যাপ্লিকেশন তৈরি করা যা আপনার জন্য কমান্ডটি চালায়। "স্ক্রিপ্ট সম্পাদক" অ্যাপ্লিকেশনটি খুলুন এবং নিম্নলিখিতগুলিতে পেস্ট করুন:

প্রশাসকের সুবিধাসহ শেল স্ক্রিপ্ট "/ অ্যাপ্লিকেশনস / প্ল্লেসকনেক্ট- মাস্টার / প্ল্লেসকনেক্ট.পি" করুন এটি আপনার পছন্দসই নামকরণ করে এটির নামকরণ "অ্যাপ্লিকেশন" হিসাবে সংরক্ষণ করুন। এটি খোলার সময়, এটি আপনাকে ওএস এক্সের স্ট্যান্ডার্ড পাসওয়ার্ড প্রম্পট দেবে, স্ক্রিপ্টটি কার্যকর করবে, তারপরে নিজেই বন্ধ হবে।


শীর্ষে জিজ্ঞাসা করা প্রশ্নের উত্তরটি কীভাবে দেয়? স্পষ্ট করার সময় আপনি কি দয়া করে আপনার পোস্টের বিন্যাসটি ঠিক করতে পারেন?
nohillside

প্রশ্নে যেমন জিজ্ঞাসা করা হয়েছে সেভাবে এই
এলিয়াসগুলির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.