51Testing软件测试网+I,`)F#q r+A;^q$}
Uq在Shell命令行中,我们大概都知道PS1这个变量的意义,通过修改PS1的值,你可以自由定义你的终端提示符。而在MongoDB的mongo客户端命令行中,也将加入这样的功能,而且更强大,让你的运维管理工作更方便。
c2kJSbg&F:S0,^)D]`YX4D!f0最初MongoDB的命令行提示符是简单的”>”,如下51Testing软件测试网5iot hg
>
51Testing软件测试网#^ jbk"cz后来在最近的版本中,我们看到对Replica Sets的连接提示符做了有意义的变更,像这样51Testing软件测试网*H}'{T r'b
myReplSetName:SECONDARY>
%f+aD:o2jM0但是我们其实还可以做到更定制化一些,就像Shell环境中的PS1变量一样。嗯,这就是在1.9.1中将出现的一个小功能,MongoDB的核心开发工程师kristina刚刚发了一篇博文,描述了其将在提示符上会进行的改进,并将其称为PS1++,也就是说会比PS1更强大,更具定制化。
f"j ^\:x051Testing软件测试网u4asm3d{下面我们就来看一下会有哪些定制化的功能吧
s1N%v,f_5A1i0.]?p+W(d7U9`M0简单的字符串定义51Testing软件测试网f~;wu`$M8m'[
myReplSetName:SECONDARY> prompt = "> "
i?
vOfo2H0>
;LV~0Z8V,TK
IF0> // ah, bliss
4{-x o'Q1vV0J.aV0>51Testing软件测试网0u:NSZ7a@Lm
> // some sysadmins think > is a weird prompt, as it's also51Testing软件测试网Lr)M5pk2zX
> // used for redirections, so they might prefer $
w!_v?%V2e0> prompt = "$ "51Testing软件测试网yk&Dyl,gE}k
$
1{E%d`8U s0$ // there we go
1QG7gQESX0函数式定义
5nT[{t1P4k8h0> prompt = function() { return db+"> "; }51Testing软件测试网
I1Iae)xz
test> use foo
%`L|,pC PdAl0foo> use bar51Testing软件测试网iY5J(ov*Q(d2eELF"]
bar>
51Testing软件测试网1N
U l-]H/E
s更复杂的函数
7U&V`$r$L0> states = ["STARTUP", "PRIMARY", "SECONDARY", "RECOVERING", "FATAL",51Testing软件测试网cB4KSv
... "STARTUP2", "UNKNOWN", "ARBITER", "DOWN", "ROLLBACK"]
ZL
~^/s8V}6iJ2mN0>
B!bk5H7A'H0> prompt = function() {51Testing软件测试网'N"a7dQ4zHS^|
... result = db.isMaster();51Testing软件测试网`-ZW0L&s.I?Ek
... if (result.ismaster) {
*s}B-Y#Ke,M0... return db+"> ";51Testing软件测试网MR%MW;Tx+Ys
... }
+NZy:['i%z#p0... else if (result.secondary) {
XE+Hu:K&OQ0[!Ov;|0... return "("+db+")> ";51Testing软件测试网t*mrL2T1J| e
... }
-izR o&rX6D&UU0... result = db.adminCommand({replSetGetStatus : 1})
Xx/{.BA?M0... return states[result.myState]+":"+db+"> ";
$c-x+N#zyZeq)S2oO0... }
-\9M[J#d%cQmf0(test)>
%X_4X
?*`N0G_4I5u0告诉你是否连接的是mongos机器
(n'o f+Ua&vm0> prompt = function() {51Testing软件测试网%G2ihE!V
... result = db.adminCommand({isdbgrid : 1});51Testing软件测试网!D%C2fE*[+K0kK7V}&@;V
... if (result.ok == 1) {51Testing软件测试网5|Hg
\j
... return "mongos> ";51Testing软件测试网V? SW `zi2RX@(x
... }
'f(|
HnH$n&i2Vw0... return "> ";51Testing软件测试网|xd^Q-X R-ey
... }
`RTle,D]w2\0告诉你当前的时间51Testing软件测试网8Umrq/UGdP
> prompt = function() {51Testing软件测试网3Ap_q s
... var now = new Date();51Testing软件测试网
B5kqs1NbT
... return now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+"> ";
2UMjM6N%k
z0... }51Testing软件测试网v*\|D:I1V2tD
10:30:45> db.foo.count()51Testing软件测试网&bX9?Gh mZY.g6z
6000051Testing软件测试网;W#P2^.Y+ru.Z%Z,|TM
10:30:46>
51Testing软件测试网+A;z\S(J;FG1_还可以定义在配置文件里51Testing软件测试网/]]#\%B&J/XD
$ # load from command line arg:
9b%cox2A%?,_/t0$ mongo shellConfig.js
q&ql
h9IfO,X0MongoDB shell version 1.9.1-
S2x8K_4M0connecting to: test51Testing软件测试网S3U-SFrfZ]7B
>51Testing软件测试网,A\h kK V
> // load from the shell itself51Testing软件测试网f h3U%OI0q"h
> load("/path/to/my/shellConfig.js")
I/[0TO
zz-VO0另一个新功能是自动加载的配置文件,类似于.bashrc,这个文件会叫.mongorc.js
bpO*X8AO3AE051Testing软件测试网 h-{;X,GXZ/sUg你可以写你想在连接时执行的内容51Testing软件测试网
X;T9a"T6^l8zx1l
// my startup file
^/V4PBj)X051Testing软件测试网L^$TEiI
prompt = /* ... */
T!h@7uW:?,~P0
9S:q@K]|z0// getting "not master and slaveok=false" errors drives me nuts,51Testing软件测试网1f&II)T+q0e V,`
// so I'm overriding the getDB() code to ALWAYS set slaveok=true
J$s'C ~b7p0Mongo.prototype.getDB = function(name) {51Testing软件测试网#} b0}dq
this.setSlaveOk();51Testing软件测试网8eJ0c FXH7X}
return new DB(this, name);
vZ/?C1p8wv`A.I|0}51Testing软件测试网/n6Q o3X7Mt/Y6c
51Testing软件测试网ulq8KO? e0S
/* and so on... */
51Testing软件测试网.A\g6}*dpLe#I来源:www.snailinaturtleneck.com
:d&~as/Z$Ur&jJl0