নতুন স্ক্রিনে টানুন এবং একটি ফাইল টেনে আনুন Bash


8

আমি নিশ্চিত যে এই প্রশ্নের জন্য আমি আমার গাধাটি আমার কাছে হস্তান্তর করব, তবে আমি এটি বের করে আনতে পারি না। আমি স্ক্রিপ্টিং বাশ করতে নতুন, তাই আমার উপর সহজ যান ...

আমি একটি ফাইল একটি ডেস্কটপ অ্যাপ্লিকেশনটিতে টেনে আনতে এবং ছাড়তে সক্ষম হতে চাই, যার পরে একটি বাশ স্ক্রিপ্ট কল করে যা সেই ফাইলটিকে ব্যাশ স্ক্রিপ্টের মধ্যে মনোনীত স্থানে নিয়ে যাবে। এখানে এখন পর্যন্ত যা আছে তা এখানে।

বাশ স্ক্রিপ্ট

#! /bin/bash

mv $file /path/to/new/directory

যাইহোক, আমি $fileযখন ডেস্কটপ অ্যাপ্লিকেশনটিতে টেনে এনে ফেলে যাই তখন ভেরিয়েবল হিসাবে কীভাবে ইনপুট দেওয়া যায় তা আমি বুঝতে পারি না । কিভাবে আমি এটি করতে পারব?

কারণ: আমার কাছে এমন কাগজপত্র রয়েছে যা আমার একটি ফোল্ডারে পড়তে হবে এবং আমি সেগুলি একবার পড়ার পরে এগুলি অন্য ফোল্ডারে রেখেছি। আমি মূলত এটি এটি করা সহজ করে তুলতে চাই।

ধন্যবাদ, পল


2
আমি বুঝতে পারছি না, আপনি যদি এটাই চান তবে কেন আপনি কেবল এগুলি টেনে এনে ফেলে যাবেন না? আপনি মনে করছেন যে কীভাবে ফোল্ডার 1 এ টেনে আনতে হবে যার ফলে টানা আইটেমটি ফোল্ডার 2 এ সরানো হবে you কেন আপনি কেবল এটিকে প্রথম স্থানে ফোল্ডার 2 এ টানবেন না?
টেরডন

2
আমি এমন কোনও ফাইল ম্যানেজারকে জানি না যা আপনাকে কোনও অ্যাপ্লিকেশনটিতে একটি ফাইল টেনে আনতে এবং ছাড়ার অনুমতি দেয় এবং তারপরে সেই ফাইলটি কিছু করার জন্য অ্যাপ্লিকেশনটিতে দেয়। আমি ব্যবহৃত প্রতিটি ফাইল-ম্যানেজার কেবল ফোল্ডারে ফাইলগুলি টেনে আনতে সহায়তা করে। এটি সম্ভব হতে পারে ভাবার কোনও কারণ আছে কি? আপনি কি এমন কোনও অ্যাপ্লিকেশন দেখেছেন যা এইভাবে কাজ করে? আপনি অবশ্যই এটি কোনও ওয়েব অ্যাপ্লিকেশন (যা তারপরে ব্রাউজারের ড্রাগ এবং ড্রপ এপিআই সরবরাহ করে), বা অন্য আরও জটিল ধরণের অ্যাপ্লিকেশন দিয়ে এটি করতে পারেন তবে এটি আস্কউবুন্টু উত্তরে ব্যাখ্যা করা খুব জটিল হতে পারে।
রবিন উইনস্লো

1
বেশিরভাগ টার্মিনাল এবং ফাইল পরিচালকরা এটি করেন না? এক্সএফসিইতে, থুনার থেকে একটি ফাইল টার্মিনালে টেনে নিয়ে যাওয়া পুরো ফাইলের নাম আটকে দেয়। এবং কোনও ফাইলকে LibreOffice বা Gedit- এর মতো টেনে আনলে এটি খুলবে (কমপক্ষে চেষ্টা করুন)। এটির মতো শোনা যাচ্ছে যে এটি ফাইলের নাম সহ যা যা করতে চায় তা সম্পূর্ণভাবে প্রয়োগ করা যায়।
Xen2050

@terdon। হ্যাঁ, আমি কেবল অন্য একটি ফোল্ডারে টেনে নিয়ে যেতে চাই, তবে আমি যে ডিরেক্টরিটি ছিলাম তা ফিরে না করেই এটি করার একটি দ্রুত উপায় চেয়েছিলাম এবং সমস্ত ডিরেক্টরি একটি নতুন ডিরেক্টরিতে সরিয়ে নিয়ে সেখানে ফাইলটি ফেলে দিতে চাই। এটাই আমার পক্ষে অদক্ষ বলে মনে হচ্ছে। অন্য সকলের কাছে নীচে স্লাগ 45 দ্বারা সরবরাহিত উত্তর দেখুন।
পলফ্রেটার

উত্তর:


24
  1. নিম্নলিখিত বিষয়বস্তু সহ একটি বাশ স্ক্রিপ্টফিল তৈরি করুন:

    #!/bin/bash
    mv "$1" "PATH_TO_NEW_DIRECTORY"
  2. নিম্নলিখিত বিষয়বস্তু সহ একটি .ডেস্কটপ ফাইল তৈরি করুন:

    [Desktop Entry]
    Name=Document Mover
    Exec=PATH_TO_SCRIPT_FILE %U
    Type=Application
  3. আপনার পছন্দ অনুসারে PATH_TO_NEW_DIRECTORY এবং PATH_TO_SCRIPT_FILE পরিবর্তন করুন।

  4. ডু chmod +x script_name

  5. .ডেস্কটপ ফাইলটিতে ফাইলগুলি টেনে আনুন।

  6. সম্পন্ন!.


1
এটির উপর জোর দেওয়া উচিত যে আপনার সবসময় ভেরিয়েবলগুলি উদ্ধৃত করা দরকার, যেমনটি দেখানো হয়েছে। (বা ) এর $fileপরিবর্তে ব্যবহার করা আপনাকে সমস্যার স্তুপে পেতে পারে। "$file""${file}"
ধানের ল্যান্ডাউ

এছাড়াও, bashএখানে ব্যবহার করার প্রয়োজন নেই; #!/bin/shএকই কাজ করার জন্য যথেষ্ট (যদিও এটি bashবেশিরভাগ সিস্টেমে লিঙ্কযুক্ত হতে পারে )।
ckujau

14

স্ক্রিপ্টের দরকার নেই। আপনার যেখানে দরকার সেখানে PATH_TO_NEW_DIRECTORY এর একটি লিঙ্ক তৈরি করুন। তারপরে লিঙ্কটিতে ফাইলটি টানুন


2
এটি একটি সহজ সমাধান হতে পারে (তবে তখন আমি বাশ স্ক্রিপ্টিং সম্পর্কে কিছু শিখতে পারি না :)
পলফ্রেটার

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

3

@ স্লাগ 45 যা বলেছে তা সম্পূর্ণ সঠিক। তবে এর ব্যাখ্যা নেই la

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

তর্কগুলি মোকদ্দমার সাথে মোকদ্দমার সহজ উপায় বাশ। সমস্ত আর্গুমেন্টের একটি অ্যারে পেতে "$@" (উদ্ধৃতি সহ) ব্যবহার করুন ( উদাহরণস্বরূপ..এক লুপের জন্য দরকারী)। $@, "$*"এবং $*অনুরূপ জিনিসগুলি করুন তবে আপনি প্রায় সবসময়ই চান "$@"। সুনির্দিষ্ট সম্পর্কে আরও তথ্যের জন্য এখানে দেখুন ।

এছাড়াও, আপনি $Xযেখানে আরগ নম্বরটি হ'ল সরাসরি নির্দিষ্ট আরগগুলিতে অ্যাক্সেস করতে পারবেন । উদাহরণ স্বরূপ:

$ cat ./args.sh
echo $1
echo $2
echo $3
$ ./args.sh foo bar baz
foo
bar
baz
$

বড় স্ক্রিপ্টগুলিতে, নামযুক্ত ভেরিয়েবলগুলিতে এটি নির্ধারণ করা ভাল:

$ cat music.sh
#!/bin/bash
# Usage: ./music.sh Artist Album Song
ARTIST=$1
ALBUM=$2
SONG=$3

if [ $ARTIST -eq "Nickelback" ]; then exit; fi

mplayer ~/Music/$ARTIST/$ALBUM/$SONG.mp3
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.