Einen Webserver in einem beliebigen Verzeichnis starten

Eine Sache, die ich neulich bei der Entwicklung der kleinen, feinen Website unserer Firma nützlich fand, war eine Bash-Funktion von Mathias, die auch schon seit geraumer Zeit in meinen dotfiles ihre Daseinsberechtigung hat:

# Start an HTTP server from a directory, optionally specifying the port
function server() {
    local port="${1:-8000}"
    sleep 1 && open "http://localhost:${port}/" &
    # Set the default Content-Type to `text/plain` instead of `application/octet-stream`
    # And serve everything as UTF-8 (although not technically correct, this doesn’t break anything for binary files)
    python -c $'import SimpleHTTPServer;\nmap = SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map;\nmap[""] = "text/plain";\nfor key, value in map.items():\n\tmap[key] = value + ";charset=UTF-8";\nSimpleHTTPServer.test();' "$port"
}

Damit kann man in einem beliebigen Verzeichnis durch Ausführen von server einen einfachen HTTP-Server starten und seine Seiten testen.

Für PHP-Nutzer steht seit PHP 5.4 auch ein eingebauter Server bereit, den nutze ich allerdings (leider) so gut wie nie:

# Start a PHP server from a directory, optionally specifying the port
# (Requires PHP 5.4.0+.)
function phpserver() {
    local port="${1:-4000}"
    local ip=$(ipconfig getifaddr en1)
    sleep 1 && open "http://${ip}:${port}/" &
    php -S "${ip}:${port}"
}

Dennoch: Praktische Sache für die Freunde der Kommandozeile!