لأدوات سطر الأوامر، غالبًا ما يكون من المفيد القراءة من stdin. في Bun، كائن console هو AsyncIterable يُنتج أسطرًا من stdin.
ts
const prompt = "اكتب شيئًا: ";
process.stdout.write(prompt);
for await (const line of console) {
console.log(`أنت تكتب: ${line}`);
process.stdout.write(prompt);
}تشغيل هذا الملف ينتج عنه مطالبة تفاعلية لا تنتهي أبدًا تعكس كل ما يكتبه المستخدم.
sh
bun run index.tstxt
اكتب شيئًا: مرحبًا
أنت تكتب: مرحبًا
اكتب شيئًا: مرحبًا مرة أخرى
أنت تكتب: مرحبًا مرة أخرىيُظهر Bun أيضًا stdin كـ BunFile عبر Bun.stdin. هذا مفيد للقراءة تدريجيًا من المدخلات الكبيرة التي يتم تمريرها إلى عملية bun.
لا يوجد ضمان بأن الكتل سيتم تقسيمها سطرًا بسطر.
ts
for await (const chunk of Bun.stdin.stream()) {
// chunk هي Uint8Array
// هذا يحولها إلى نص (يفترض ترميز ASCII)
const chunkText = Buffer.from(chunk).toString();
console.log(`كتلة: ${chunkText}`);
}سيطبع هذا المدخل الذي يتم تمريره إلى عملية bun.
sh
echo "مرحبًا" | bun run stdin.tstxt
كتلة: مرحبًاراجع الوثائق > API > أدوات مساعدة للحصول على المزيد من الأدوات المساعدة المفيدة.