ENV values

F

Frank Hofmann

Hi all,

I'm working on an ssh script where I'd like to read out console
dimensions to adjust the output window - the default value of 80x24
isn't that good. ;)

So I thought it should work by simply reading out the environment
variables $COLUMNS and $LINES (Linux system). The results in irb were
what I needed:

===---===---===---===---===---===
irb(main):001:0> ENV['COLUMNS']
=> "99"
irb(main):002:0> ENV['LINES']
=> "32"
===---===---===---===---===---===

But in a ruby script these things didn't work anymore. A really simple
script:

===---===---===---===---===---===
#!/usr/bin/ruby -w

puts ENV['USER']
puts ENV['LINES']
===---===---===---===---===---===

This gave me the output:
frank
nil

Ok, that didn't work like I've expected it, so here is another way:

===---===---===---===---===---===
irb(main):001:0> lines = `echo $LINES`
=> "32\n"
irb(main):002:0> puts lines
32
=> nil
===---===---===---===---===---===

Now as ruby script:

===---===---===---===---===---===
!/usr/bin/ruby -w

lines = `echo $LINES`
puts lines
===---===---===---===---===---===

Well, also no success. :-/ It gave me only a blank line.

Does anyone have an idea what I could do to get column & line numbers of
the console window?

Thanks...

Frank
 
T

Thomas Beckett

Hi all,

I'm working on an ssh script where I'd like to read out console
dimensions to adjust the output window - the default value of 80x24
isn't that good. ;)

So I thought it should work by simply reading out the environment
variables $COLUMNS and $LINES (Linux system). The results in irb were
what I needed:

===---===---===---===---===---===
irb(main):001:0> ENV['COLUMNS']
=> "99"
irb(main):002:0> ENV['LINES']
=> "32"
===---===---===---===---===---===

But in a ruby script these things didn't work anymore. A really simple
script:

===---===---===---===---===---===
#!/usr/bin/ruby -w

puts ENV['USER']
puts ENV['LINES']
===---===---===---===---===---===

This gave me the output:
frank
nil

Ok, that didn't work like I've expected it, so here is another way:

===---===---===---===---===---===
irb(main):001:0> lines = `echo $LINES`
=> "32\n"
irb(main):002:0> puts lines
32
=> nil
===---===---===---===---===---===

Now as ruby script:

===---===---===---===---===---===
!/usr/bin/ruby -w

lines = `echo $LINES`
puts lines
===---===---===---===---===---===

Well, also no success. :-/ It gave me only a blank line.

Does anyone have an idea what I could do to get column & line numbers of
the console window?

Thanks...

Frank

If you dont mind depending on ncurses then will something like this work?
you will need the ncurses-ruby package
-----------------------------------------------
require "ncurses.rb"

win = Ncurses.WINDOW.new()
win.getmaxyx(y=[], x=[])
win.delwin()
----------------------------------------------
This should open ncurses mode, get its dimensions - which are handled
correctly and then drop you back out of ncurses.

Note that I havent tried it at all, am a complete newb to Ruby and
found the bits via google, but for 4 lines its worth a try.

Tom
 
F

Frank Hofmann

Hi Paul, hi Tom,

thanks for your hints. :)
The ncurses solution didn't work, WINDOW method isn't known.
But no problem, I'm glad about every idea. :)

In the meanwhile I've solved the problem by using `stty`.

===---===---===---===---===---===
#!/usr/bin/ruby -w
c = `stty size`.chomp
c =~ /\s/
lines, columns = $`, $'
===---===---===---===---===---===

Frank
 
M

Michael Fellinger

Hi Paul, hi Tom,

thanks for your hints. :)
The ncurses solution didn't work, WINDOW method isn't known.
But no problem, I'm glad about every idea. :)

In the meanwhile I've solved the problem by using `stty`.

===---===---===---===---===---===
#!/usr/bin/ruby -w
c = `stty size`.chomp
c =~ /\s/
lines, columns = $`, $'
===---===---===---===---===---===

or, to make it a little bit more readable (no offend, but yours looks like
perl ;)

===---===---===---===---===---===
lines, columns = `stty size`.chomp.split
# ["81", "226"]
===---===---===---===---===---===

thanks for finding that out btw, i love it :)

MfG
manveru
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

ENV['COLUMNS'] 7
Class instance method 2
parentheses and newlines 2
Time + time.local 1
RubyGems and ENV vars ??? 3
convert date 5
Windows ENV object being corrupted 7
chomp behaviour 4

Members online

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top