স্ক্রিপ্ট ব্যবহার করে স্ক্রিপ্ট আউটপুট ফাইলগুলিতে একটি "ই" যুক্ত করে


18

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা একটি নতুন ব্যবহারকারী যুক্ত করে এবং ব্যবহারকারীদের ডোমেন নামের জন্য একটি ভার্চুয়াল হোস্ট তৈরি করে। স্ক্রিপ্টটি এক ব্যতিক্রম সহ দুর্দান্ত কাজ করে ... / etc / apache2 / সাইটগুলি উপলভ্য / আমার সমস্ত ভার্চুয়াল হোস্ট ফাইলের দুটি অনুলিপি থাকে, একটিতে একটি ই এবং একটি থাকে।

আমি বিশ্বাস করি যে আমি যখন এসইডি কমান্ডটি ব্যবহার করি তখন আমার সমস্যাটি মিথ্যা। আমি কি দ্বিতীয় মতামত পেতে পারি?

লিপিটি এখানে:

# set the working directory
dir=$(pwd)

# request the new domain name
printf "Enter the new domain name, without the www (i.e newdomain.com):\n"
read newdomain

# request the new username
printf "Enter the new username (i.e newusername):\n"
read username

# create the new user
sudo adduser $username

# copy the virtual host to sites-available
sudo cp /templates/domain-vhost /etc/apache2/sites-available/$newdomain

# echo results
echo "Successfully created the virtual host file at: /etc/apache2/sites-available/$newdomain.."

# change the domain name in the virtual host file
sudo sed -ie "s/NEWDOMAINNAME/$newdomain/" /etc/apache2/sites-available/$newdomain

# echo results
echo "Modified the virtual host to reflect the new domain: $newdomain.."

# change the directory path in the virtual host
sudo sed -ie "s/NEWUSERNAME/$username/" /etc/apache2/sites-available/$newdomain

# echo results
echo "Successfully modified the new virtual host file.."

# enable the site with apache
cd /etc/apache2/sites-available/
sudo a2ensite $newdomain

# echo results
echo "Successfully enabled the $newdomain.."

# change to previous working directory
cd $dir

# reload apache
sudo /etc/init.d/apache2 reload

# notify user of action
echo "Finished creating the new domain, $newdomain, and restarted Apache.."

3
দুঃখিত, টাইপ করার পরে আমি নিজের ভুল বুঝতে পেরেছিলাম, এসইডি কমান্ডটি ব্যবহার করার সময় আমার কাছে অনুলিপি তৈরি না করেই "ইনলাইন" ফাইলটি সম্পাদনা করার জন্য -i বিকল্প ছিল। কিছু কারণে আমি ই কমান্ডটিও যুক্ত করেছিলাম, যা স্ক্রিপ্টটি যুক্ত করার কথা। আমি -i -i তে পরিবর্তন করেছি এবং স্ক্রিপ্টটি প্রয়োজনীয় হিসাবে কাজ করে। আমি এখনও আমার নিজের প্রশ্নের উত্তর দিতে পারি না তাই আমি একটি মন্তব্য যুক্ত করেছি।
jason.dot.h

উত্তর:


17

সেড করার জন্য আপনার আলাদা -iএবং -eযুক্তি দরকার । -ieসেডকে একটি 'ই' সংযুক্ত করে একটি ব্যাকআপ ফাইল তৈরি করতে বলছে।

<code> -i </code> এর জন্য ম্যানুয়াল প্রবেশ entry

ঠিক করতে, কেবল উপরের শেড অনুরোধটি এখানে প্রতিস্থাপন করুন:

sudo sed -i -e "s/NEWUSERNAME/$username/" /etc/apache2/sites-available/$newdomain

যদিও আপনি এটির সাথে একটি মন্তব্য পেয়েছেন, আমি সম্পূর্ণতার উত্তর হিসাবে বিশদটি যুক্ত করেছি।
জেরেমি কের

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