Shell का ':' कुछ नहीं करता, फिर भी उपयोगी है

मूल शीर्षक: A shell colon does nothing. Use it anyway

यह क्यों महत्वपूर्ण है

POSIX shell की इस पुरानी लेकिन कम-ज्ञात feature से script की readability और conciseness दोनों में सुधार संभव है।

2026 जुलाई 23 को Filip Roséen ने Shell के null-command ':' (colon) के उपयोग पर लेख प्रकाशित किया। ':' 1971 के Thompson shell से मौजूद है और argument validation, default setting, file truncation जैसे कार्यों में एक-लाइन shortcut के रूप में उपयोग किया जा सकता है।

Filip Roséen द्वारा लिखे गए इस तकनीकी लेख में Shell scripting के ':' (null-command) के व्यावहारिक उपयोगों को विस्तार से समझाया गया है।

':' एक built-in command है जो अपने arguments को evaluate करती है लेकिन result को discard कर देती है। यह 1971 के Thompson shell में label और Unix के पहले comment marker के रूप में शुरू हुई थी।

**Required argument validation:**

सामान्यतः 4 लाइनों में लिखा जाने वाला argument check सिर्फ एक लाइन में लिखा जा सकता है:

`: "${1:?missing argument, aborting.}"`

यहाँ `${name:?diagnostic}` syntax यह जाँचता है कि variable unset या empty तो नहीं — यदि हो तो stderr पर message print होता है और shell non-zero status से exit करता है।

**Default values set करना:**

`: "${DATA_DIR:=/var/data}"` और `: "${RETRIES:=3}"` जैसे expressions से variables के default values set किए जा सकते हैं बिना उन्हें command के रूप में execute किए।

**File truncation:**

`: > error.log` से file को truncate किया जा सकता है, और एक साथ कई files: `: > error.log > access.log`

**File permission check:**

`( : < dataset.json ) && echo YES` — file readable है या नहीं

`( : >> result.json ) && echo YES` — file writable है या नहीं

**अन्य उपयोग:**

`trap : INT` — trap के लिए command जरूरी होने पर ':' का उपयोग

`set -u` के साथ multiple variables एक साथ check करना: `: "$DEPLOY_ENV" "$HOST"`

if-statement के then block में placeholder के रूप में भी उपयोग किया जा सकता है।

स्रोत

refp.se — मूल लेख पढ़ें →