সম্পাদিত কমান্ডে পূর্ববর্তী কমান্ডগুলি আমদানি করুন


1

আমি 'তারিখ / সময় মূল' এক্সিফ বৈশিষ্ট্য অনুসারে চিত্র পরিবর্তন সময় পরিবর্তন করতে zsh এর সাথে খেলছি।

এটির জন্য আমি একটি আদেশ করছি:

PDATE=$(exiftool -p '$DateTimeOriginal' $PIC | sed 's/[: ]//g') touch -t $(echo $PDATE | sed 's/\(..$\)/\.\1/') $PIC

আমি ভুল 'তারিখ / সময় মূল' মান সহ কিছু চিত্র পেয়েছি, সুতরাং এই চিত্রগুলি প্রক্রিয়া করা হয়নি।

সুতরাং আমি ইমেজ ফাইলের নাম থেকে তারিখ পেতে কাজ করছি এবং আমি পেয়েছিলাম

for i in `grep -E -o 'IMG\S+jpg' logfile`; do 
dte=$(echo $i  | grep -E -o '20.{13}' | tr -d '_'); 
touch -t $dte $i; 
done

লগফাইলে হ'ল এমন ফাইল যা এক্সিফটোল বার্তা সহ সঠিক অ্যারিবিট মান ইত্যাদি না করে containing

এখন দ্বিতীয় স্নিপেট শেষ কমান্ডটি কাজ করছে না কারণ আমার প্রথম স্নিপেটের মতো সেড প্রতিস্থাপনের প্রয়োজন।

আমার প্রশ্নটি: zsh vi ইন্টারেক্টিভ মোডে থাকাকালীন বর্তমান কমান্ডের সামগ্রীটি না হারিয়ে আমি কীভাবে ইতিহাসের প্রথম স্নিপেটে অ্যাক্সেস পেতে পারি?

আমি vi তে বর্তমান কমান্ডটি সম্পাদনা করার কল্পনা করব (আমি যখন zsh vi নিয়ন্ত্রণ মোডে 'v' অক্ষরটি চাপি তখন এটি করতে পারি), ইতিহাস কমান্ডটি তালিকাভুক্ত করা এবং তার মধ্যে একটি বেছে নেওয়া এবং এটি নীচের লাইনে আটকানো হবে।

উত্তর:


2

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


0

আপনি ভিআই মোডে zsh ব্যবহার করছেন।

আপনার সমস্যা সমাধানের জন্য আমরা সমস্যাটি দুটি ভাগে ভাগ করি

1. অংশ - মুদ্রণের সাথে মিলিয়ে মুদ্রণ কমান্ডের ইতিহাস লাইনগুলি

এর জন্য আমরা একটি ফাইল তৈরি করি ~/bin/history-print-regexp.sh :

#!/bin/zsh
# command 'regular-expression' number-of-lines(counting from the end of the file)
nmbr=15
if [ "$#" -eq 2 ]; then
    nmbr=$2
fi
if [ "$#" -eq 0 ]; then
    echo "You need at least one argument"
    echo "Usage command regexp outputlinesCount"
fi
#tac - reverse print , grep -E - use extended regexp, cut -d ';' use ; as delimiter
#and print second field (-f 2), uniq -u print only unique lines
tac  ~/.histfile | grep -E $1 |  cut -d ';' -f 2 | uniq -u | head -n $nmbr

এখন এটি আপনার বর্তমান কমান্ডের সাথে একত্রে কাজ করা আমাদের দরকার। এর জন্য আমরা করি:

Zsh vi নরমাল মোডে থাকাকালীন আপনি vদুবার বোতাম টিপুন এবং vi উইন্ডোটি খোলে।

আপনার ~ / .vimrc ফাইলটিতে আপনি এই ফাংশনটি রেখেছেন

function! ShowHistoryMatching(pattern)
10new
exe 'r!' . "history-print-regexp.sh " . a:pattern
call cursor(1,1)
endfunction

:cnoremap ch call ShowHistoryMatching

এই স্ক্রিপ্টটির ব্যবহারটি, zsh মোট vi সম্পাদনায় থাকাকালীন আপনার বর্তমান কমান্ডটি সম্পাদনা করার সময় আপনি টিপুন :chযা প্রসারিত হয়েছে: শো হিস্টরিম্যাচিং কল করুন এবং আপনি এটিতে ("প্যাটার্ন") যুক্ত করুন এবং এন্টার টিপুন এবং ফলাফলটি উপরের উইন্ডোতে খোলা হবে। সেখান থেকে আপনি সহজেই আপনার দ্বিতীয় উইন্ডোতে একটি পছন্দসই লাইন অনুলিপি করতে পারেন।

C-w,qএকটি উইন্ডো বন্ধ C-w,jকরে নীচে উইন্ডোতে যান।

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