টার্মিনাল থেকে একটি ডক খুলুন, তবে এটির নাম নয় by


19

টার্মিনাল থেকে কোনও ফাইলের নামটি না দিয়ে ফোল্ডারে তার (নম্বর) অবস্থান দ্বারা খোলা সম্ভব? নাকি অন্য কোন বিকল্প?

কারণ নামটি অনেক দীর্ঘ।


5
দয়া করে সম্পাদনা করুন এবং আপনি যা করতে চান তার একটি উদাহরণ দিন।
মিষ্টান্ন

7
না, এটি কোডিং ছাড়াই নয়। তবে আপনি "ট্যাব" সমাপ্তি ব্যবহার করতে পারেন।
রিনজুইন্ড

2
কিসের জন্য খুব দীর্ঘ?
কার্ল উইথহফট

2
আপনি কি ফাইলের নামের প্রথম দুটি বা তিনটি অক্ষর টাইপ করে Tabকী টিপতে চেষ্টা করেছেন ?
হেনরিক

উত্তর:


44

আপনি সম্ভবত- Tabকমপ্লিট আবিষ্কার করেন নি ( এখানে দেখুন )।

টার্মিনালে একটি ফাইলের নাম টাইপ করার সময় প্রথম কয়েকটি অক্ষর টাইপ করুন Tabএবং জাদুটি দেখুন এবং দেখুন!


7
অথবা কেবলমাত্র ফাইলনামের প্রথম কয়েকটি অক্ষর টাইপ করুন এবং ক *, যদি আপনি কোনও কারণে ট্যাব-সমাপ্তি ব্যবহার করতে না চান। অথবা এমনকি *abc*ফাইলের নামটি abcকোথাও অন্তর্ভুক্ত থাকলেও (যে ফাইলটি চান তা অনন্য যা সাবপ্যাটার ব্যবহার করার চেষ্টা করুন)। অথবা মাউস ব্যবহার করে কেবল ফাইলের নাম অনুলিপি / পেস্ট করুন।
গুট্রাম ব্লহম

4
@ গুন্ট্রাম বা আপনি টার্মিনালে ফাইলগুলি টেনে এনে ফেলে দিতে পারেন।
পমস্কি

6
@ গুট্রামব্লহম আপনার উত্তরটি দেওয়া উচিত। আমি মনে করি এটি নিজের পক্ষে দাঁড়িয়ে থাকা এই উত্তর থেকে যথেষ্ট পৃথক।
ডিকিউডিএলএম

32

আক্ষরিকভাবে প্রশ্নের উত্তর দেওয়ার জন্য, মজা করার জন্য:

এখানে চিত্র বর্ণনা লিখুন

#!/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]])

এটি বাস্তবে কীভাবে কাজ করে

  1. টার্মিনালে, কার্যক্ষম দিরগুলিতে, "ও" চালান (কমান্ড হিসাবে)
  2. বর্তমান ডিরেক্টরি সামগ্রীর তালিকাভুক্ত, নাম্বারযুক্ত। নম্বরটি ধরুন এবং আইটেমটি খোলা হবে:

    এখানে চিত্র বর্ণনা লিখুন

সেট আপ করুন

...সহজ:

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

    $ o
    

    টার্মিনাল মধ্যে

বিশেষ দ্রষ্টব্য

আপনি যদি লুকানো ফাইলগুলিও দেখতে চান তবে পরিবর্তন করুন

show_hidden = False

মধ্যে:

show_hidden = True

1
যদি ~/binআপনার পাথ ইতিমধ্যে না হয় তবে আপনি এটি যোগ করতে (উদাহরণস্বরূপ, মত একটি লাইন বসিয়ে হবে export PATH="$PATH:~/bin"মধ্যে .bashrcবা .profile।)
নিক Matteo

দেখুন b0fh এর উত্তর - এই একটি বিল্ট-ইন থেকে ব্যাশ মনে করা হয়
mgarciaisaia

1
@ কুন্দোর নাপ, উবুন্টুতে নয়। লগ আউট এবং কাজটি সহজভাবে বা সহজভাবে করে source ~/.profile
জ্যাকব ভিলিজম

@ জ্যাকবভিলিজম ~/binকিছুতেই তৈরি হয় না। ~/.profileলাইন রয়েছে এমন কাস্টম সহ উবুন্টু এবং ডিবিয়ান শিপ if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi। ম্যাক ওএস এক্স এবং সেন্টস-এ আপনাকে নিজেরাই এটি কনফিগার করতে হবে। একটি ভাল সুযোগ হ'ল যদি উবুন্টু কোনও ব্যক্তিকে আইটি বিভাগ দ্বারা সরবরাহ করা হয় তবে সম্ভাবনা হ'ল ~/.profileডিফল্ট উবুন্টুর মতো হবে না, তাই সর্বদা ~/binমানক না হওয়ার বিষয়ে সতর্ক হওয়া ভাল অভ্যাস । ~/.profileআপনি --no-profileবিকল্পটি দিয়ে শেলটি চালু করলে
বাশও

@mgarciaisaia মূল মন্তব্য, আপনার জন্য অভিপ্রেত ছিল আসলে ^
Sergiy Kolodyazhnyy

28

বাশের একটি অল্প পরিচিত বৈশিষ্ট্য রয়েছে যা আপনাকে অজগর বা অন্য কোনও তৃতীয় পক্ষের সরঞ্জামকে কল না করে এবং একক লাইনের সাহায্যে এটি করতে দেয়:

select file in *; do open "$file"; break; done

8
অসাধারণ! openসাধারণত কাজ করবে না, যদিও (আপনি ম্যাক ওএসে না থাকলে); xdg-openবেশিরভাগ জিএনইউ / লিনাক্স সিস্টেমে সম্ভবত কৌশলটি করা হবে।
নিক মাত্তিও

1
তবে বাশ একমাত্র অস্তিত্বের শেল নয়, আপনি জানেন :-)
জেমসেকফ

16

খাঁটি বাশে, 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

একটি সমাধান যথেষ্ট সহজ এবং যথেষ্ট ভাল কাজ করে। আপনি এক পা এগিয়ে যান এবং বেনামী বা বাইরে ফাংশন করতে পারেন
Sergiy Kolodyazhnyy

7

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

sudo apt update
sudo apt install mc

এবং এটি একটি টার্মিনাল উইন্ডো বা একটি পাঠ্য স্ক্রিনে শুরু করুন,

mc

5

$ 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



3

লিনাক্স ফাইল সিস্টেমে ফাইলনামগুলির একটি খুব আকর্ষণীয় সম্পত্তি থাকে যা ইনোড বলে : একটি ডিরেক্টরি (বা ফোল্ডার) ইনোডের তালিকা এবং কোন ফাইলনামগুলি সেই ইনোডগুলিকে নির্দেশ করে। সুতরাং, যদি আপনি ইনোড নম্বরটি জানেন তবে আপনি 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


1

কিছু ফাইল তৈরি করুন:

$ 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আপনি যে সূচকটি খোলার চেষ্টা করছেন তা প্রতিস্থাপন করুন ।


আমি $ (seq -w 0 20) এর পরিবর্তে {00..20 prefer পছন্দ করব কারণ এটি কেবলমাত্র একটি বাহ্যিক প্রক্রিয়া কম কম। যদিও আমি বহনযোগ্যতা সম্পর্কে নিশ্চিত নই। বাশ-ইসম হতে পারে .. ;-)
অস্কার

0

এটি সম্ভবত সবচেয়ে সহজ উত্তর যা সরাসরি প্রশ্নের উত্তর দেয়। নিম্নলিখিত চেষ্টা করুন:

touch file-1 file-2 file-3

ধরা যাক আমরা দ্বিতীয় ফাইলটি খুলতে (বা সম্পাদনা করতে) চাই, আমরা নিম্নলিখিতটি করতে পারি:

echo `ls` | cut -d' ' -f2

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

cat $( echo `ls` | cut -d' ' -f2 )

দ্বিতীয় ফাইলের বিষয়বস্তু আউটপুট হবে।

নোট করুন যে ফাইলগুলি যেভাবে ls দ্বারা মুদ্রিত হয়েছে সেগুলি পরিবর্তন করতে পারেন, ls আর্গুমেন্ট টুইট করে, বিশদর man lsজন্য দেখুন।

[আপডেট] এটি ধরে নিয়েছে যে ফাইলের নামগুলিতে আপনার কোনও সাদা স্পেস নেই,
আপনার পর্যবেক্ষণের জন্য @ wjandrea ধন্যবাদ।


2
এটি স্থান ধারণ করে এমন ফাইলের নামের জন্য ব্যর্থ হবে। এই উত্তরটি প্রায় পাওয়া যায় তবে পার্স করা এখনও খারাপ ধারণা ls। এছাড়াও ব্যাকটিকগুলি হ্রাস করা হয়। $()পরিবর্তে ব্যবহার করুন।
wjandrea
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.