कमांड लाइन से वर्तमान निर्देशिका की सेवा करें


94

किसी ने मुझे एक संकेत दे सकता है, कैसे कमांड लाइन से वर्तमान निर्देशिका माणिक के साथ सेवा करते हैं? यह बहुत अच्छा होगा, अगर मेरे पास कुछ सिस्टम वाइड कॉन्फ़िगरेशन (जैसे माइम-प्रकार) हो सकते हैं और बस इसे हर निर्देशिका से लॉन्च कर सकते हैं।

जवाबों:


203

सबसे आसान तरीका संभव है (धन्यवाद हारून पैटरसन / n0kada):

ruby -run -e httpd . -p 9090

वैकल्पिक, अधिक जटिल तरीका:

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"

यहां तक ​​कि पहला आदेश याद रखना मुश्किल है, इसलिए मेरे पास सिर्फ यह है .bashrc:

function serve {
  port="${1:-3000}"
  ruby -run -e httpd . -p $port
}

यह डिफ़ॉल्ट रूप से पोर्ट 3000 पर वर्तमान निर्देशिका परोसता है , लेकिन आप पोर्ट को निर्दिष्ट भी कर सकते हैं:

~ $ cd tmp
~/tmp $ serve      # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000   # ~/www served on port 5000

यदि आप खिड़कियों पर हैं, तो क्या इसे फंक्शन के रूप में cmd ​​या पावरशेल में जोड़ना संभव है?
कालेब

@ डैनियल - जब मैं अपने एक लाइनर को अपने मैक पर चलाता हूं। मुझे यह त्रुटि संदेश मिला: अनैतिक रूप से निरंतर INT (NameError)। क्या आप इसे एक अलग प्लेटफॉर्म पर चला रहे हैं? क्या आप जानते हैं कि मैं इससे कैसे बच सकता हूं? लेकिन अगर मैं इसे myserver.rb फ़ाइल में लिखता हूँ तो "माणिक myserver.rb" करें, यह ठीक काम करता है।
टोनी जियांग

@TonyJiang मैं मैक पर भी चल रहा हूं। रूबी 1.8.7, 1.9.3 और 2.0.0 के साथ इसकी कोशिश की, और वे सभी काम करते हैं। अजीब।
डैनियल पेरेज़ अल्वारेज़

7
Demistify करने के लिए ruby -run -e httpd . -p 9090पर नज़र ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html । यह unमाणिक मानक पुस्तकालय से httpd पद्धति को क्रियान्वित कर रहा है , इस प्रकार संयुक्त राष्ट्र की आवश्यकता है।
जी-बी

1
@Deviljho यदि आप मैक या लिनक्स पर चल रहे हैं, तो पृष्ठभूमि पर भेजने के लिए कमांड के अंत में एक एम्परसेंड जोड़ें: ruby -run -e httpd . -p 9090 & यदि आप इसे अग्रभूमि में वापस लाना चाहते हैं, तो उपयोग करें fg
डैनियल पेरेज़ अल्वारेज़

22

मैंने कभी भी कुछ भी कॉम्पैक्ट के रूप में नहीं देखा है

python3 -m http.server

आप वैकल्पिक रूप से अंत में एक पोर्ट संख्या जोड़ सकते हैं:

python3 -m http.server 9000

Https://docs.python.org/library/http.server.html देखें


यहाँ बहुत कॉम्पैक्ट समाधानों की एक सूची है: gist.github.com/willurd/5720255 :)
फेलिक्स


5
require 'webrick'
include WEBrick

s = HTTPServer.new(:Port => 9090,  :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start

4

माणिक रत्न परोसें

अपने सिस्टम पर स्थापित करने के लिए, रन करें gem install serve

एक निर्देशिका की सेवा करने के लिए, बस निर्देशिका के लिए सीडी और चलाएं serve

डिफ़ॉल्ट पोर्ट 4000 है। यह ERB, HAML, स्लिम और SASS जैसी चीजों को भी परोस सकता है।


3

1 लाइन में वेब सर्वर


यह वह है जो आप चाहते हैं या नहीं भी हो सकते हैं लेकिन यह इतना अच्छा है कि मुझे इसे साझा करना होगा।

मैंने इसका उपयोग पूर्व में फाइल सिस्टम की सेवा के लिए किया है। शायद आप इसे संशोधित कर सकते हैं या बस स्वीकार कर सकते हैं कि यह सब कुछ कार्य करता है।

ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'

मैंने इसे यहां पाया

क्रिस


3

आप sinatraमणि का उपयोग कर सकते हैं , हालांकि यह आपके लिए कोई निर्देशिका सूचीकरण नहीं करता है, यह फाइलों का कार्य करता है:

require 'sinatra' # gem
set :public_folder, '.'

फिर इसे एक फाइल के रूप में चलाएं, अगर 1.8 में पहले शीर्ष पर 'रूबीज' की आवश्यकता हो।

इसे चलाने के बाद फिर url की तरह

http: // localhost: 4567 / file_name

"./file_name" फ़ाइल में हल करना चाहिए।

http: // localhost: 4567 हालांकि काम नहीं करेगा, क्योंकि यह निर्देशिका लिस्टिंग को "नहीं" करता है। वहां वर्कअराउंड के लिए https://stackoverflow.com/a/12115019/32453 देखें ।


sinatra रत्न $ मणि स्थापित करें sinatra फिर इस पाठ को somefile.rb पर सहेजें और फिर इसे चलाएं
rogerdpack

नहीं, मेरा मतलब है, सिनात्रा मुझे त्रुटि देता है: सिनात्रा को यह पता नहीं है।
ईव्यून्स

@eveevans ने अभी-अभी अपडेट की गई आपकी टिप्पणी [LOL खेद] पर ध्यान दिया।
रगडपैक

1
python3 -m http.server

या यदि आप डिफ़ॉल्ट पोर्ट 8000 का उपयोग नहीं करना चाहते हैं

python3 -m http.server 3333

या यदि आप केवल लोकलहोस्ट से कनेक्शन की अनुमति देना चाहते हैं

python3 -m http.server --bind 127.0.0.1

डॉक्स देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.