কী কীভাবে কম কী স্ট্রোক সহ বেশ কয়েকটি ফাইলের নাম টাইপ করবেন


16

যদি আমি একটি রূপান্তর করতে চান pdfএকটি থেকে pngআমি ভালো কিছু করতে ImageMagick সঙ্গে ছবি:

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png

পিডিএফ ফাইলের প্রায়শই কিছু কারণে খুব দীর্ঘ ফাইলের নাম থাকে এবং আমি চাই যে pngএক্সটেনশন বাদে ফাইলটির একই নাম রয়েছে।

সাধারণত আমি নির্বাচন this_is_a_very_long_filename_of_my_pdf_file.pdfট্যাব মাধ্যমে দুইবার এবং zsh-menuতারপর পরিবর্তন pdfকরার জন্য pngদ্বিতীয় যুক্তি জন্য নিজে।

তবে এটি করার কি আরও দ্রুত উপায় আছে?

উত্তর:


23

আপনি বন্ধনী বিস্তৃতি ব্যবহার করতে পারেন :

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.{pdf,png}

1
ফাইলের নাম অটোকম্প্লিশনও নোট করতে পারে (এটি zsh এ উপস্থিত রয়েছে, তাই না?)
রুসলান

@ রুসলান ওপি বলেছেন যে তিনি স্বতঃসিদ্ধ ব্যবহার করেন। তবে তবুও সুন্দর সময় সাশ্রয়ী পয়েন্ট।
কেমি_এই_ব্লক

5

মোগরিফায় এই কলটি পিডিএফ-র উপরের লেখার পরিবর্তে একটি নতুন পিএনজি ফাইল তৈরি করবে - আশা করি;)

mogrify -trim density 400 -format png th*.pdf

আপনার * পুরো নাম না হওয়া পর্যন্ত সঠিক ফাইল বা আরও ভাল ট্যাব সমাপ্তি নির্বাচন করতে * * .pdf টির জন্য যথাযথ অক্ষর ব্যবহার করুন।

এইভাবে আপনি পিএনজি প্যারামিটার পর্যন্ত পুরো কমান্ডের একটি উপাধি তৈরি করতে পারেন।


5

আপনি যদি সর্বদা ছোট প্রকরণ (যেমন ফাইলের নাম) সহ একই কমান্ডটি ব্যবহার করেন তবে আপনি একটি ফাংশন লিখতে পারেন:

pdf2png() { convert -trim -density 400 "$1" "$1:r.png" }

(এই ফাংশনটি সুনির্দিষ্ট zsh) এবং প্রতিটি ফাইলের জন্য your_file.pdf আপনি রূপান্তর করতে চান:

pdf2png your_file.pdf

নোট 1: আপনি অন্যান্য শেলের জন্য একই ধরণের ফাংশন লিখতে পারেন তবে এটি কিছুটা জটিল।

দ্রষ্টব্য 2: এর সাথে zsh, উদ্ধৃতিগুলি কেবল তখনই কার্যকর হবে যদি SH_WORD_SPLITবিকল্পটি সেট করা থাকে (যা ডিফল্ট নয়)।


4

আপনার ফাইলের নাম সংরক্ষণের জন্য ভেরিয়েবলগুলি বিবেচনা করুন। তারাও স্বতঃসিদ্ধ:

f="this_is_a_very_long_filename_of_my_pdf_file"
convert -trim -density 400 "$f.pdf" "$f.png"

আমি কোট ব্যবহার করি কারণ মাঝে মাঝে ফাঁকা কামড় দেয়।

এর উল্লেখযোগ্য সুবিধা হ'ল:

  1. আপনি ডান ফাইলটি নির্দেশ করে জেনে। F এর মান সহ আরও ক্রিয়াকলাপ সম্পাদন করতে পারেন
  2. এটি একটি cat listOfFiles | while read f; do ... ; doneলুপ কাঠামোতে আটকে থাকা হপগুলির সংক্ষিপ্ততম ।
  3. প্রায়শই স্বয়ংক্রিয়ভাবে উত্পাদিত ফাইলের নামগুলি খুব একই রকম হয় এবং আপনার যদি abc<tab>d<tab>x<tab>2<tab>ইত্যাদি করতে হয় তবে স্বয়ংক্রিয়ভাবে খুব তাড়াতাড়ি খুব বিরক্তিকর হয়ে পড়ে This f=\ls -t | এর মতো স্ক্রিপ্টের মাধ্যমে শিরোনাম -1``, প্রথমে অনুসন্ধান চালানোর পরিবর্তে ফাইলের নামটি সন্ধান করা এবং কোনও প্রশিক্ষিত বানরের মতো এটি প্রতিলিপি করা।

2

বর্তমান কমান্ড লাইনের শব্দের উল্লেখ করতে আপনি ইতিহাস সম্প্রসারণও ব্যবহার করতে পারেন :

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf !#:$:r.png
  • ইভেন্ট ডিজাইনার !# এখন পর্যন্ত টাইপ করা কমান্ড লাইনটিকে বোঝায়
  • শব্দ ডিজাইনার $ শেষ শব্দটি নির্দেশ করে (প্রসারণের আগে)
  • সংশোধক r ফাইল এক্সটেনশন সরান । এটি পাঠ্যের শেষেও চিহ্নিত করে, যা ইতিহাসের প্রসারণ ঘটে যখন প্রতিস্থাপন করা হয়।
  • .pngনতুন এক্সটেনশন। এটি নিজেই সম্প্রসারণের সাথে সম্পর্কিত নয়।

এই লাইনটি চালিত হলে !#:$:rআপনার পিডিএফ ফাইল বিয়োগ এক্সটেনশনের নাম দ্বারা প্রতিস্থাপন করা হয়, এভাবে প্রশ্নটি থেকে আদেশটি তৈরি করা হয়:

convert -trim -density 400 this_is_a_very_long_filename_of_my_pdf_file.pdf this_is_a_very_long_filename_of_my_pdf_file.png

এই লাইনটি তখন সরাসরি চালানো হয়।

আপনি যদি ইতিহাস বিস্তারের পরে কমান্ডটি পরীক্ষা করতে চান, মৃত্যুদন্ড কার্যকর করার আগে, ব্যবহার করুন

setopt histverify

এটি প্রসারিত পরিবর্তে সম্পাদিত বাফারে প্রসারিত রেখাটি পুনরায় লোড করবে।

দ্রষ্টব্য: অন্য কোনও সম্প্রসারণের বিপরীতে, কমান্ডটি ইতিহাসে সংরক্ষণ করার আগে ইতিহাসের সম্প্রসারণ সম্পাদন করা হয়। সুতরাং আপনার হিসাবে echo !#হিসাবে প্রদর্শিত হবে echo echoনা ।echo !#$HISTFILE


2

এই বিশেষ উদাহরণের জন্য ব্রেস প্রসারণ ব্যবহার করে বীট করা যাবে না। তবে কিছুটা আরও নমনীয় হ'ল জ্লে উইজেট copy-prev-shell-word, যা এর নামটি যা বলে তা যা করে তা কার্যকর এবং যদি আপনি পূর্বের মতো অনুরূপ যুক্তি চান যা এটি থেকে নিয়মিত উত্পন্ন হয় না।

উইজেট যেমন আবদ্ধ করুন CTRL+W:

bindkey '^W' copy-prev-shell-word

আপনি যদি আমার মতো অলস হন তবে এই বিনডকি ক্রমটি ব্যবহার করুন

bindkey '^W^W' copy-prev-shell-word
bindkey -s '^W' ' ^W^W'

নিম্নলিখিত আচরণ পেতে:

  • CTRL+Wপূর্ববর্তী শেল শব্দটি একটি শীর্ষস্থানীয় ফাঁকা দিয়ে সন্নিবেশ করায় (অতএব, আপনি একটি কীস্ট্রোক সংরক্ষণ করেন!)
  • CTRL+W CTRL+W পূর্ববর্তী শেল শব্দটি সরাসরি serোকান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.