बैश खोल के भीतर, मैं सुझाव फ़ाइल और निर्देशिका नामों का उपयोग करने के लिए टैब-पूर्णता का उपयोग कर सकता हूं। मैं इसे नोडज और readline के साथ कैसे प्राप्त कर सकता हूं?रीडलाइन का उपयोग कर टैब पूर्ण होने के साथ फ़ाइलों का सुझाव कैसे दें?
उदाहरण:
/<Tab>
सुझाव देने चाहिए/root/
,/bin/
, आदि/et<Tab>
/etc/
को पूरा करना चाहिए।fo<Tab>
foobar
को पूरा करना चाहिए मान लें कि ऐसी फ़ाइल वर्तमान निर्देशिका में मौजूद है।
मैं ग्लोबिंग (पैटर्न search_term.replace(/[?*]/g, "\\$&") + "*"
) का उपयोग करने के बारे में सोच रहा था, लेकिन क्या शायद ऐसी लाइब्रेरी है जिसे मैंने अनदेखा किया है?
यह मेरा वर्तमान दृष्टिकोण ग्लोब का उपयोग कर, यह जब //<Tab>
का उपयोग कर के रूप में यह canonicalized नाम देता है और संभवतः कुछ अन्य विषमताएं है टूट गया है:
function command_completion(line) {
var hits;
// likely broken, one does not simply escape a glob char
var pat = line.replace(/[?*]/g, "\\$&") + "*";
// depends: glob >= 3.0
var glob = require("glob").sync;
hits = glob(pat, {
silent: true,
nobrace: true,
noglobstar: true,
noext: true,
nocomment: true,
nonegate: true
});
return [hits, line];
}
var readline = require("readline");
rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
completer: command_completion
});
rl.prompt();