কমান্ড প্রম্পটে ফিরে কীভাবে রেঞ্জার ফাইল এক্সপ্লোরার থেকে প্রস্থান করবেন তবে বর্তমান ডিরেক্টরিটি রাখবেন?


28

আমি একটি লিনাক্স টার্মিনাল থেকে রেঞ্জার টার্মিনাল ফাইল এক্সপ্লোরার ব্যবহার করছি ।
বলুন আমি হোম ডিরেক্টরিতে কমান্ড প্রম্পট থেকে শুরু করি এবং রেঞ্জার চালু করি

user@/home/user $ ranger

রেঞ্জার খোলে ..... এবং রেঞ্জার প্রোগ্রামের মধ্যে আমি এটিতে ঘুরে দেখি:

/media/ubuntu/sdf675d7sf5sdfs7/some_directory

আমি যদি তখন রেঞ্জার ছাড়ার জন্য কিউ চাপি তবে আমি যে ফোল্ডারে রঞ্জারটি চালু করেছি সেগুলিতে আমাকে আবার ফেলে দেওয়া হবে। অর্থাত

user@/home/user $

রঞ্জারটি ছেড়ে দেওয়া এবং আমি যে রেঞ্জারটির সাথে ছিলাম সেই ডিরেক্টরিতে থাকা কি সম্ভব, i।

user@/media/ubuntu/sdf675d7sf5sdfs7/some_directory $  

উত্তর:


29

এর ম্যানুয়াল অনুসারে

--choosedir=targetfile    
    Allows you to pick a directory with ranger. When you exit ranger, it will write the last visited directory into targetfile.

সুতরাং আপনাকে যা করতে হবে তা হ'ল এইরকম একটি উপকরণ তৈরি করুন:

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"'

এবং আপনার পছন্দসই শেলের আরসিতে এই উপন্যাসটি লেখার পরামর্শ দেওয়া হচ্ছে।


2
বাহ বেশ চালাক, এটি আমার কাছে কখনও ঘটেনি আপনি কোনও প্রোগ্রামে একটি কমান্ড জারি করতে পেরেছিলেন ;এবং এটি দিয়ে শেষ করতে পারেন এবং তারপরে সেমি-কোলনের পরে আরও কমান্ড নির্দিষ্ট করতে পারেন যা - আমি ধরে নিচ্ছি যে আপনি যে বিন্দুতে এসে পৌঁছেছেন ranger, ধন্যবাদ!
the_velour_fog

1
.rangerdirএটি লুকিয়ে রাখার পরিবর্তে ব্যবহারের কথা বিবেচনা করুন । বা শেষে মুছে ফেলুন rm -d $HOME/rangerdir,।
মতিন উলহাক

এটি দুর্দান্ত তবে এটি যদি আমি সঠিকভাবে বুঝতে পারি তবে এর অর্থ হ'ল স্থায়ীভাবে আপনার সেই আচরণ রয়েছে। যদি বর্তমান রেঞ্জার ডিরেক্টরিটি বা আপনি যখন রেঞ্জার শুরু করেছিলেন তখন আপনি যে ডিরেক্টরিটিতে ছিলেন সেগুলি থেকে বেরিয়ে আসার বিকল্প থাকলে যদি ভাল হত nice
নেভারফক্স

neverfox একবার আপনি একটি উপনাম তৈরি করার পরে, আপনি যদি সেই উচ্ছ্বাসের ভিতরে ডিরেক্টরিটি বেছে নেওয়ার প্রস্তাব দেন তবে এটি আপনার উপর নির্ভর করবে। বাইনারি বলার আগে বা শেষ হওয়ার পরে বাছাই করা যেতে পারে।
গম্বাই স্যান্ডোর

এই দুর্দান্ত সমাধানের জন্য আপনাকে ধন্যবাদ! আমি মাছের শেলটি ব্যবহার করে যাচ্ছি তাই আমার উপন্যাসটি সেট করতে আমি fish_configএকটি সংক্ষিপ্তসার যুক্ত করেছি ranger --choosedir="$HOME/.rangerdir"; cd (cat $HOME/.rangerdir)
Rockzombie2

24

এস

আপনি যদি আঘাত Sকরেন তবে এটি বর্তমান ডিরেক্টরিতে একটি নতুন শেল খোলে।

তারপরে আপনি যদি Ctrl + Dশেলটি আঘাত করেন তবে এটি আবার ফিরে যায় ranger

এই workaround প্রায়শই যথেষ্ট ভাল।


7

আমি একটি সহজ সমাধান খুঁজে পেয়েছি। আপনি যখন রেঞ্জার ইনস্টল করবেন, এটি আপনার বিন ফোল্ডারে একটি স্ক্রিপ্ট স্থাপন করবে যা কার্যকর করা হলে প্রোগ্রামটি শুরু করবে। তবে আপনি যদি এটি উত্স, সঙ্গে

$ উত্স রেঞ্জার

এটি রেঞ্জার চালু করবে এবং প্রস্থান করার সময় আপনাকে সর্বশেষ পরিদর্শন করা ফোল্ডারে ফেলে দেবে।

সুতরাং আপনি যদি এই আচরণটি ডিফল্টরূপে চান তবে ঠিক করুন

$ ওরফে রেঞ্জার = 'সোর্স রেঞ্জার'

বা আরও ভাল এটি আপনার .bashrc ফাইলের মধ্যে রাখুন।

এই বৈশিষ্ট্যের জন্য ডকুমেন্টেশন এবং বাস্তবায়ন দেখতে আপনার বিন ফোল্ডারে রেঞ্জার স্ক্রিপ্টটি পড়ুন।


স্পষ্টতই এই কৌশলটি (যা কেবলমাত্র সম্পাদন করার জন্য সংক্ষিপ্ত করা যেতে পারে . ranger) উইকিতে
সিজউভিন

4

গম্বাই সানডোরের উত্তরের পিগির পিছনে, আমি ওরফে একটি সামান্য সমন্বয় করার পরামর্শ দিচ্ছি:

alias ranger='ranger --choosedir=$HOME/.rangerdir; LASTDIR=`cat $HOME/.rangerdir`; cd "$LASTDIR"'

"$ হোম / রেঞ্জারডির" "" $ হোম / .rangerdir "এ পরিবর্তন করে আপনি ওরফে দ্বারা নির্মিত ফাইলটি গোপন করে রাখবেন। এটিকে কেবল এটি তৈরি করে যাতে এটি বিরক্তিকরভাবে হোম ফোল্ডারটিকে ছড়িয়ে দিতে না পারে। এটি কীভাবে কাজ করে তাতে কোনও কার্যকরী পার্থক্য তৈরি করে না।


2

গাম্বাই এবং এর অন্যান্য প্রস্তাবিত রূপগুলির তুলনায় আমি উত্তরের উত্তর দিয়ে অন্য কোথাও একই রকম প্রশ্নে হোঁচট খেয়েছি । এটা থেকে ভাল।

  1. এটি তৈরি হওয়া ফাইলটিকে টিএমপি ফোল্ডারে রেখে দেবে যাতে এটি সিস্টেমের মাধ্যমে মুছে ফেলা যায়
  2. এটি আরও পরিষ্কার কোড (যদিও গাম্বাইয়ের উত্তর একটি ফাংশনে রূপান্তরিত হতে পারে)

ইতিমধ্যে রেঞ্জারের গিট রেপোতে একটি শেল ফাইলে একটি ফাংশন রয়েছে:

https://github.com/ranger/ranger/blob/master/examples/bash_automatic_cd.sh

function ranger-cd {
    # create a temp file and store the name
    tempfile="$(mktemp -t tmp.XXXXXX)"

    # run ranger and ask it to output the last path into the
    # temp file
    ranger --choosedir="$tempfile" "${@:-$(pwd)}"

    # if the temp file exists read and the content of the temp
    # file was not equal to the current path
    test -f "$tempfile" &&
    if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
        # change directory to the path in the temp file
        cd -- "$(cat "$tempfile")"
    fi

    # its not super necessary to have this line for deleting
    # the temp file since Linux should handle it on the next
    # boot
    rm -f -- "$tempfile"
}

আপনি এই ফাংশনটি আপনার পছন্দের শেল আরসিতে (উদাহরণস্বরূপ ~/.zshrc) ফাইলটিতে রাখতে পারেন এবং হয় উপনাম তৈরি করতে পারেন এবং / অথবা এটি একটি মূল সংমিশ্রণে আবদ্ধ করতে পারেন (আবার উভয়ই আরসি ফাইলে যেতে পারে):

alias nav=ranger-cd

এবং / অথবা

# This will run the function by Ctrl+O through returning
# the string "ranger-cd" in addition to a new-line character
# to act as Enter key-press
bindkey -s "^o" "ranger-cd\n"

দাবি পরিত্যাগী:bindkey ZSH উপরে কাজ করে এবং আপনি আপনার পছন্দসই শেল উপর ভিত্তি করে এটি পরিবর্তন করা উচিত


1

অনুপ্রেরণার জন্য গম্বাইয়ের জন্য ধন্যবাদ, তবে উবুন্টু 14.04 এলটিএস-তে আমি দেখতে পেলাম যে সমাধানটি বেশ কার্যকর হয়নি। এটিকে কিছুটা সংশোধন করে এবং আমার .bashrc- এ একটি উপাধি হিসাবে সংরক্ষণ করে, নিম্নলিখিতগুলি পুরোপুরি কাজ করেছে ( rangerdirফাইলটি তৈরি করার পরে ):

alias ranger='ranger --choosedir=$HOME/rangerdir;cd "$(cat $HOME/rangerdir)"'

আমি যখন বিভিন্ন সমাধানের চেষ্টা করছিলাম সেগুলি কেন কাজ করছে না তা নির্ধারণের চেষ্টা করার সময় জিজ্ঞাসুবুট্টুর নিম্নলিখিত পোস্টটি আমাকে সাহায্য করেছিল: /ubuntu/404141/why-cant-i-pipe-into-cd


1

আমি কি সব করতে পারি? অন্যান্য যুক্তিগুলির মধ্য দিয়ে যাওয়া কার্যকর হতে পারে, সুতরাং এটি আপনার শেলআরকে রাখুন

function ranger () {
    /usr/bin/ranger --choosedir=$HOME/.rangerdir $@
    LASTDIR=`cat $HOME/.rangerdir` 
    cd $LASTDIR
    echo -n > $HOME/.rangerdir
}

0

এখানে একটি ফাংশন র‌্যাপার লিখে আরও মার্জিত উপায়। কেবল কমান্ডটি ব্যবহার করুন rangerএবং আপনি যদি সিঙ্ক ডিরেক্টরিটি মূল শেলটিতে ফিরে যেতে চান তবে মূলধন সহ রেঞ্জারটি প্রস্থান করুন Q

(নীচের কোডগুলি বাশ এবং জেডএসএইচের সাথে পরীক্ষা করা হয়))

function ranger {
  local IFS=$'\t\n'
  local tempfile="$(mktemp -t tmp.XXXXXX)"
  local ranger_cmd=(
    command
    ranger
    --cmd="map Q chain shell echo %d > \"$tempfile\"; quitall"
  )

  ${ranger_cmd[@]} "$@"
  if [[ -f "$tempfile" ]] && [[ "$(cat -- "$tempfile")" != "$PWD" ]]; then
    cd -- "$(cat -- "$tempfile")" || return
  fi
  command rm -f -- "$tempfile" 2>/dev/null
}

এটি আপনাকে চাহিদা অনুসারে ডিরেক্টরি পরিবর্তনটি সিঙ্ক করতে দেয় । আপনার ডিরেক্টরিটি ছেড়ে দিতে এবং পরিবর্তন করতে :qসাধারণত প্রস্থান করতে ব্যবহার করুন Q


(1) দেখে মনে হচ্ছে আপনার উদ্ধৃতি দিয়ে কিছু সমস্যা আছে। (২) '' অন ডিমান্ড '' বলতে কী বোঝ?
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.