টার্মিনাল থেকে কোনও ফাইলের নামটি না দিয়ে ফোল্ডারে তার (নম্বর) অবস্থান দ্বারা খোলা সম্ভব? নাকি অন্য কোন বিকল্প?
কারণ নামটি অনেক দীর্ঘ।
Tab
কী টিপতে চেষ্টা করেছেন ?
টার্মিনাল থেকে কোনও ফাইলের নামটি না দিয়ে ফোল্ডারে তার (নম্বর) অবস্থান দ্বারা খোলা সম্ভব? নাকি অন্য কোন বিকল্প?
কারণ নামটি অনেক দীর্ঘ।
Tab
কী টিপতে চেষ্টা করেছেন ?
উত্তর:
আপনি সম্ভবত- Tabকমপ্লিট আবিষ্কার করেন নি ( এখানে দেখুন )।
টার্মিনালে একটি ফাইলের নাম টাইপ করার সময় প্রথম কয়েকটি অক্ষর টাইপ করুন Tabএবং জাদুটি দেখুন এবং দেখুন!
*
, যদি আপনি কোনও কারণে ট্যাব-সমাপ্তি ব্যবহার করতে না চান। অথবা এমনকি *abc*
ফাইলের নামটি abc
কোথাও অন্তর্ভুক্ত থাকলেও (যে ফাইলটি চান তা অনন্য যা সাবপ্যাটার ব্যবহার করার চেষ্টা করুন)। অথবা মাউস ব্যবহার করে কেবল ফাইলের নাম অনুলিপি / পেস্ট করুন।
আক্ষরিকভাবে প্রশ্নের উত্তর দেওয়ার জন্য, মজা করার জন্য:
#!/usr/bin/env python3
import os
import subprocess
show_hidden = False
currfiles = os.listdir("./")
if not show_hidden:
currfiles = [f for f in currfiles if not f.startswith(".")]
n = 1
for f in currfiles:
print(str(n) + ". " + f)
n = n + 1
picked = int(input("Quick, quick, give me a number:\n"))
subprocess.run(["xdg-open", currfiles[picked - 1]])
বর্তমান ডিরেক্টরি সামগ্রীর তালিকাভুক্ত, নাম্বারযুক্ত। নম্বরটি ধরুন এবং আইটেমটি খোলা হবে:
...সহজ:
লগ আউট এবং পিছনে এবং কেবল টাইপ করে কমান্ডটি ব্যবহার শুরু করুন
$ o
টার্মিনাল মধ্যে
আপনি যদি লুকানো ফাইলগুলিও দেখতে চান তবে পরিবর্তন করুন
show_hidden = False
মধ্যে:
show_hidden = True
~/bin
আপনার পাথ ইতিমধ্যে না হয় তবে আপনি এটি যোগ করতে (উদাহরণস্বরূপ, মত একটি লাইন বসিয়ে হবে export PATH="$PATH:~/bin"
মধ্যে .bashrc
বা .profile
।)
source ~/.profile
।
~/bin
কিছুতেই তৈরি হয় না। ~/.profile
লাইন রয়েছে এমন কাস্টম সহ উবুন্টু এবং ডিবিয়ান শিপ if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi
। ম্যাক ওএস এক্স এবং সেন্টস-এ আপনাকে নিজেরাই এটি কনফিগার করতে হবে। একটি ভাল সুযোগ হ'ল যদি উবুন্টু কোনও ব্যক্তিকে আইটি বিভাগ দ্বারা সরবরাহ করা হয় তবে সম্ভাবনা হ'ল ~/.profile
ডিফল্ট উবুন্টুর মতো হবে না, তাই সর্বদা ~/bin
মানক না হওয়ার বিষয়ে সতর্ক হওয়া ভাল অভ্যাস । ~/.profile
আপনি --no-profile
বিকল্পটি দিয়ে শেলটি চালু করলে
বাশের একটি অল্প পরিচিত বৈশিষ্ট্য রয়েছে যা আপনাকে অজগর বা অন্য কোনও তৃতীয় পক্ষের সরঞ্জামকে কল না করে এবং একক লাইনের সাহায্যে এটি করতে দেয়:
select file in *; do open "$file"; break; done
open
সাধারণত কাজ করবে না, যদিও (আপনি ম্যাক ওএসে না থাকলে); xdg-open
বেশিরভাগ জিএনইউ / লিনাক্স সিস্টেমে সম্ভবত কৌশলটি করা হবে।
খাঁটি বাশে, select
বিবৃতিটি ব্যবহার করে :
PS3='Quick, quick, give a number: '
select file in *
do
xdg-open "$file"
break
done
PS3 সেট করা কেবল আইক্যান্ডি। যদি আপনি এটি ছেড়ে যান তবে আপনি কেবলমাত্র ডিফল্ট প্রম্পট পাবেন। যদি আপনি ব্রেক স্টেটমেন্টটি ছেড়ে দেন তবে আপনি সিটিআরএল-ডি বা সিটিআরএল-সিতে আঘাত না করা পর্যন্ত বাছাই করা বিবৃতিটি লুপ হয়ে যাবে।
অবশ্যই আপনি এটি ওয়ান-লাইনার হিসাবে চালাতে পারেন:
select file in *; do xdg-open "$file"; break; done
আপনি ইনস্টল এবং ব্যবহার করতে পারেন mc
, মিডনাইট কমান্ডার। এটি পুরানো নর্টন কমান্ডার দ্বারা অনুপ্রাণিত মেনু ইত্যাদির সাথে একটি পাঠ্য ব্যবহারকারী ইন্টারফেস, এটি তখন জনপ্রিয় ছিল যখন লোকেরা এমএসডিওএস ব্যবহার করেছিল (উইন্ডোজের আগে)।
sudo apt update
sudo apt install mc
এবং এটি একটি টার্মিনাল উইন্ডো বা একটি পাঠ্য স্ক্রিনে শুরু করুন,
mc
$ ls
results.log
string
Templates
textfile
time
time.save
vegetables
vegetablesbsh
কেমন বাউট
ls | sed -n 3p
3 য় ফাইলের নাম মুদ্রণ করে
Templates
ইহা খোল-
xdg-open "$(ls | sed -n 3p)"
সাধারণত কাজ করে।
এটি একটি স্ক্রিপ্টে রাখুন
#!/bin/bash
xdg-open "$(ls | sed -n "$1"p)"
লিপির নাম: খোলা
এটি হোম ফোল্ডারে সংরক্ষণ করুন। চালান:
./open file_number
লিনাক্স ফাইল সিস্টেমে ফাইলনামগুলির একটি খুব আকর্ষণীয় সম্পত্তি থাকে যা ইনোড বলে : একটি ডিরেক্টরি (বা ফোল্ডার) ইনোডের তালিকা এবং কোন ফাইলনামগুলি সেই ইনোডগুলিকে নির্দেশ করে। সুতরাং, যদি আপনি ইনোড নম্বরটি জানেন তবে আপনি find
ইউটিলিটি ব্যবহার করে ফাইলটি সনাক্ত করার চেষ্টা করতে পারেন এবং এটিতে কিছু নির্দিষ্ট অপারেশন করতে পারেন। এটি বিশেষত কার্যকর যখন বিভিন্ন লোকালে ফাইল বিশেষের সাথে সম্পর্কিত , বিশেষ অক্ষরগুলি , বা যখন আপনি ঘটনাক্রমে ডিরেক্টরি ডাকা ডিরেক্টরি তৈরি করেছিলেন~
।
উদাহরণ স্বরূপ,
$ ls -i1
1103993 crs.py
1103743 foobar.txt
1147196 __pycache__
1103739 'with'$'\n''newline.png'
1103740 yellowstone.jpg
$ find . -type f -inum 1103743 -exec xdg-open {} \; -and -quit
এই কি আছে ঢুকা সাম্প্রতিক কাজ করা (দ্বারা প্রতিনিধিত্ব করা হয় .
) এবং ডিরেক্টরির এন্ট্রি inode সংখ্যা 1103743. যদি ফাইলটি পাওয়া যায়, সঙ্গে একটি ফাইল যে জন্য বর্ণন xdg-open
ডিফল্ট অ্যাপ্লিকেশন সাহায্যে ফাইল খুলবে এবং find
পরে প্রস্থান করা হবে। অতিরিক্ত হওয়ার কারণ -and
এবং ফাইলটির শক্ত লিঙ্কগুলি উপস্থিত থাকলে (যা একই ফাইলটি দু'বার খোলার সমতুল্য) ফাইলটি পুনরায় খোলা -quit
রোধ করা xdg-open
।
কিছু ফাইল তৈরি করুন:
$ for i in $(seq -w 0 20); do echo "This is file $i." > $i.txt; done
$ ls
00.txt 03.txt 06.txt 09.txt 12.txt 15.txt 18.txt
01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt
02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt
$ cat 16.txt
This is file 16.
ফাইলগুলিকে একটি ভেরিয়েবলের মধ্যে রাখুন এবং একটি সূচী দ্বারা ফাইলটি খুলুন।
$ files=(*)
$ xdg-open "${files[12]}"
# Opens 12.txt in a text editor, which reads "This is file 12."
12
আপনি যে সূচকটি খোলার চেষ্টা করছেন তা প্রতিস্থাপন করুন ।
এটি সম্ভবত সবচেয়ে সহজ উত্তর যা সরাসরি প্রশ্নের উত্তর দেয়। নিম্নলিখিত চেষ্টা করুন:
touch file-1 file-2 file-3
ধরা যাক আমরা দ্বিতীয় ফাইলটি খুলতে (বা সম্পাদনা করতে) চাই, আমরা নিম্নলিখিতটি করতে পারি:
echo `ls` | cut -d' ' -f2
এটি দ্বিতীয় ফাইলটির নাম আউটপুট দেবে, যা আমরা সম্পাদন করতে চাইলে যে কমান্ডটি ইনপুট হিসাবে ব্যবহার করতে পারি, উদাহরণস্বরূপ:
cat $( echo `ls` | cut -d' ' -f2 )
দ্বিতীয় ফাইলের বিষয়বস্তু আউটপুট হবে।
নোট করুন যে ফাইলগুলি যেভাবে ls দ্বারা মুদ্রিত হয়েছে সেগুলি পরিবর্তন করতে পারেন, ls আর্গুমেন্ট টুইট করে, বিশদর
man ls
জন্য দেখুন।
[আপডেট] এটি ধরে নিয়েছে যে ফাইলের নামগুলিতে আপনার কোনও সাদা স্পেস নেই,
আপনার পর্যবেক্ষণের জন্য @ wjandrea ধন্যবাদ।
ls
। এছাড়াও ব্যাকটিকগুলি হ্রাস করা হয়। $()
পরিবর্তে ব্যবহার করুন।