কীভাবে একটি জিনিস অন্যটি খোলা যায়


4

সুতরাং আমি কমান্ডটি ব্যবহার করে ~ .Bashrc এ একটি কমান্ড তৈরি করেছি alias tunes='...'। সুতরাং আমি এই আদেশটিটি যা করতে চাই তা হল একটি মিউজিক ভিডিও খোলা থাকে তবে একবার সেই ভিডিওটি শেষ হয়ে গেলে পরের ভিডিওটি লাইনে খোল। আমি যে কমান্ডটি ব্যবহার করছি তা হ'ল:

alias tunes='cd /path/; xdg-open musicvideo.wav; xdg-open musicvideo2.wav;...; cd'

এবং তাই এগিয়ে। এটি যা করছে তা কেবল শেষ সঙ্গীত ভিডিওটি খোলার পরে তা শেষ হয়। আমি বাইরে পরিবর্তন করার চেষ্টা করে থাকেন ;সঙ্গে &&এবং এটা আমার একই ফলাফল দেয়। কোন সাহায্য? তুমাকে অগ্রিম ধন্যবাদ.


2
একটি পাশ নোট: cdব্যবহারকারীর হোম ডিরেক্টরিতে যায়। cd -(হাইফেন সহ) পূর্ববর্তী ডিরেক্টরিটিতে আগের cdকমান্ডের ঠিক আগে ছিল ।
চই টি। রেক্স

হ্যাঁ আমি এটি সম্পূর্ণরূপে এটি আমার হোম ডিরেক্টরিতে ফিরে যেতে চাই
পেরেটো

1
এমপি 3 সহ, কিছু খেলোয়াড় কেবল একবারে একটি ফাইল গ্রহণ করেন, যখন আপনি অন্যটি শুরু করেন তখন পূর্ববর্তী এমপি 3 ফেলে দেয়। কোনও নাম না থাকলে দৌড়ানোর কি xdg-open musicvideo.wav; xdg-open musicvideo2.wavএকই সমস্যা আছে?
চই টি। রেক্স

এটির মতো একই সমস্যাটি এটি খেলবে না, তার পরেরটি যেমনটি আমি এটি করতে চাই ঠিক
তেমনভাবে

আপনি কোন মিডিয়া প্লেয়ার ব্যবহার করছেন? প্লে তালিকা ফাইল এবং / অথবা একাধিক কমান্ড-লাইন আর্গুমেন্টের মাধ্যমে অনেকগুলি সমর্থন প্লে তালিকা করে। এই ক্ল্যাডজের পরিবর্তে সেই বৈশিষ্ট্যটি ব্যবহার করা আরও সহজ এবং আরও মার্জিত হবে।
ডেভিড ফোস্টার

উত্তর:


4

যদি xdg-openতাৎক্ষণিকভাবে খোলা হয় এবং অপেক্ষা না করা হয় তবে আপনি যে সঙ্গীত প্লেয়ারটি ব্যবহার করেন তার প্রকৃত নাম ব্যবহার করার কথা বিবেচনা করুন (উবুন্টুর জন্য ডিফল্ট হবে totem) পরিবর্তেxdg-open

বিকল্পভাবে, যা করা যায় তা হ'ল:

xdg-open file.wav ; while pgrep -f "file.wav" >/dev/null ; do : ; sleep 1 ; done

এটি সম্ভবত ওরফে পরিবর্তে কোনও স্ক্রিপ্টে ভাল হবে, সুতরাং আপনার একাধিক লাইন থাকবে। মূলত, এখানে আমরা একটি সময় লুপ রেখেছি যা আমাদের পরবর্তী বিবৃতিতে যেতে বাধা দেয় এবং আমরা বারবার পরীক্ষা করে দেখছি যে file.wavএর কমান্ড-লাইনে কোনও প্রক্রিয়া রয়েছে কিনা । একবার এর মতো কোনও প্রক্রিয়া না হলে আপনি পরবর্তী লাইনে যেতে পারেনxdg-open


আমি মোট বিশেষজ্ঞ নই, তবে sleep 1;সেই লুপটিতেও একটি বা কিছু থাকা ভাল, যাতে শেল স্ক্রিপ্টটি মূলত একটি ব্যাকগ্রাউন্ড টাস্কের জন্য 100% সময় চালাচ্ছে না?
daboross

2
@ ডাবোরোস ওহ, একেবারে! এটি যোগ করতে সঠিক এর sleep একটি পোলিং লুপ মধ্যে ফাংশন, এটা ঠিক যে আমি এটি যোগ করতে ভুলে গেছি আছে। Errare humanum est, বিশেষত ক্লান্ত হয়ে গেলে :)
সের্গেই কলডিয়াজনি

3

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

এম 3 ইউ ফর্ম্যাট , যা বহুলভাবে সমর্থিত, একটি সরল পাঠ্য ফাইল যা প্রতি লাইনে একটি ফাইল থাকে, পুরো পথ বা কেবল ফাইলের নাম সহ (ধরে নেওয়া যায় যে ফাইলটি বর্তমান ডিরেক্টরিতে রয়েছে)। এর অর্থ আপনি একটি সাধারণ কমান্ডের মতো একটি তৈরি করতে পারেন…

ls *.wav > playlist.m3u

… তাহলে দৌড়…

[cd to the relevant directory]
xdg-open playlist.m3u

… তোমার ওরফে আপনি যদি কোনও পরিচিত পরিবেশে এটি করছেন তবে, সম্ভবত আপনি নির্দিষ্ট কোনও প্রোগ্রামটি ফর্ম্যাটটিকে সমর্থন করে এটি চালু করা আরও নির্ভরযোগ্য।


2

সমস্যাটি হ'ল আপনি ব্যবহার করছেন xdg-open। প্রকৃত অ্যাপ্লিকেশন (vlc, mplayer, ইত্যাদি) কল করার পরে প্রক্রিয়াটি শীঘ্রই মারা যায় এবং পরবর্তী কমান্ডটি চালানো হয়।

আপনি যদি এই স্ক্রিপ্টটি চালান তবে এটি কীভাবে হয় তা পরীক্ষা করতে পারেন:

#!/bin/bash
xdg-open /path/to/video &
echo "xdg-open PID is $!."
while [ -e /proc/$! ]; do
    echo "$! is alive."
    sleep 1;
done
echo "$! is not alive anymore."

আপনি মিডিয়া প্লেয়ারটিকে সরাসরি চালু করতে পারেন, উদাহরণস্বরূপ:

vlc /path/to/first/video && vlc /path/to/second/video

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