আমি কীভাবে ভিমের সাথে ক্রন্টব ফাইলগুলি সম্পাদনা করব (আমি ত্রুটিটি পেয়েছি: 'টেম্পল ফাইলটি অবশ্যই জায়গায় সম্পাদনা করতে হবে)'


12

আমি কীভাবে crontabফ্রিবিএসডি-তে ফাইলগুলি সম্পাদনা করব ?

$ crontab -e
# ... I do my thing in vim & :wq

"crontab.9ZcXiFaawt" 6L, 203C written
crontab: temp file must be edited in place
Exit 1

দুর্দান্ত EDITOR=nviকাজ করে ... লিনাক্সও ঠিক কাজ করে বলে মনে হচ্ছে ...

উত্তর:


19

সমস্যাটি কীভাবে ভিম ফাইল লেখেন। ডিফল্টরূপে এটি ফাইলের একটি অনুলিপি তৈরি করে এবং মূলটি ওভাররাইট করে।

আপনি এটি দিয়ে পর্যবেক্ষণ করতে পারেন:

# Show the file's inode
$ ls -i a
3156153 a

# Open file in Vim, :wq

# inode changed!
$ ls -i a
3155322 a

crontabএতে বিভ্রান্ত হয়ে পড়ে (দেখুন :help crontab)

ভিমকে মূল ফাইলটি ওভাররাইট করতে আপনার ব্যবহার :set backupcopyকরতে yesহবে:

"yes"   make a copy of the file and overwrite the original one

আপনি ক্রন্টব ফাইলগুলির জন্য এটি স্বয়ংক্রিয়ভাবে করতে পারেন:

au FileType crontab setlocal bkc=yes

2

@ মার্টিনের স্ব-উত্তর সঠিক। যদিও আমার মতো লোকেরা মাঝে মাঝে ব্যতিক্রমvimrc নিয়ে তাদের ফাইল পপুলেশন সীমাবদ্ধ করার চেষ্টা করেন - এখানে একটি ক্রোনট্যাব সম্পাদনা করা হচ্ছে মডেলাইনগুলি ব্যবহার করা। এটি ব্যতিক্রমগুলি সরাসরি টার্গেট ফাইলে রাখতে দেয়।

নীচে আমার ক্রন্টব মডেলিন রয়েছে:

# vim: nu et tw=130 ts=8 sts=4 sw=4 ff=unix fo-=l fo+=tcroq2 bkc=yes

এখানে গুরুত্বপূর্ণ বিটটি bkc=yesযা @ মার্টিনের vimrcকনফিগারেশনের সাথে মেলে । বাকিগুলি ব্যক্তিগত সুবিধার সেটিংস।

এটি সম্পূর্ণরূপে এবং চিন্তার জন্য খাদ্যের জন্য বলেছে, @ মার্টিনের প্রাথমিক উত্তর বেশিরভাগ ক্ষেত্রেই সবচেয়ে পর্যাপ্ত।


1

একই ত্রুটি নয় তবে প্রায়শই ঘটছে:

Error detected while processing /root/.vimrc:
line    2:
E319: Sorry, the command is not available in this version: syntax enable
line    7:
...

আপনি যদি ক্রন্টবের viপরিবর্তে ব্যবহার করেন তবে এই ত্রুটিটি প্রদর্শিত হবে vim। আপনার ~/.bashrcফাইলে নিম্নলিখিত কোড যুক্ত করে ক্রোনটব সম্পাদক স্থাপন করতে হবে:

export EDITOR=vim

-1

ওএসএক্সেও একই ঘটনা ঘটে। সমস্যাটি তদন্ত করার পরে, আমি খুঁজে পেয়েছি এটি সাধারণ viকাজ করে তবে এটি কার্যকর হয় না vim

সুতরাং সমাধানটি হতে পারে:

EDITOR=vi crontab -e

তবে viসাধারণত লিঙ্কযুক্ত হয় vim(যেমন OSX- এ) তাই এটি একই জিনিস।


এটি আপনার ভিএমআরসি ফাইলের নিম্নলিখিত লাইন দ্বারা সমাধান করা যেতে পারে :

au BufNewFile,BufRead crontab.* set nobackup | set nowritebackup

.Vimrc ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করে এর জন্য আরও একটি উপায় রয়েছে :

if $VIM_NOBACKUP
  set nobackup
  set nowritebackup
endif

এবং কমান্ড চালান:

VIM_NOBACKUP=1 crontab -e

আপনি নিম্নলিখিত পরিবর্তনশীল সংজ্ঞায়িত করতে চেষ্টা করতে পারেন:

EDITOR='VIM_NOBACKUP=1 vim'

উত্স: crontab: টেম্প ফাইলটি অবশ্যই জায়গায় সম্পাদনা করতে হবে


এটি কী ঘটছে তার কারণটি ব্যাকআপ ফাইলগুলির সাথে vim/ viআচরণের সাথে সম্পর্কিত।


1
যেহেতু crontabসাধারণত মান ওপরও EDITORবা VISUAL(যদি এটি নির্ধারণ করা থাকে), আপনি তাদের সেট করতে পারেন: EDITOR='VIM_NOBACKUP=1 vim'
মুড়ু

@ মুরু আমি চেষ্টা করেছি, তবে আমার মনে হয় না এটি কার্যকর হয়েছে। crontab -eউত্পন্ন crontab: VIM_NOBACKUP=1 vim: No such file or directory
কেনারব

1
অবশ্যই একটি ওএসএক্স জিনিস হওয়া উচিত, কারণ এটি আর্চ লিনাক্স এবং উবুন্টু, বাশ এবং zsh এ কাজ করে।
মুড়ু

2
পরিবেশের ভেরিয়েবলের সাথে সমস্ত শোকগুলি আমার কাছে নির্বোধ বলে মনে হয়; ফাইল-নির্দিষ্ট সেটিংসের সাথে মোকাবেলা করার জন্য ভিমের একটি উপায় রয়েছে এবং এটিকে অটোকিমিডস বলা হয়। দেখে মনে হচ্ছে আপনি এই লিঙ্কটি থেকে কেবল অনুলিপি করেছেন, তবে মনে হয় এটির লেখক ভিমের সাথে খুব বেশি পরিচিত নন।
মার্টিন টর্নয়েজ

2
কেন একে একে অন্তর্ভুক্ত? এটি জিনিসগুলি করার একটি নির্বোধ উপায়, এবং অটোকিমডি ব্যবহার না করার কারণ প্রায় কখনও নেই। আমরা যখন এটি অপসারণ করি, তখন আমাদের কেবল অটোকিমিডে রেখে দেওয়া হয়, যা একই উত্তর যা দেড় মাস ধরে এখানে রয়েছে। এই উত্তর গোলমাল ছাড়া কিছুই যোগ করে।
মার্টিন টর্নোইজ 26'15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.