ENV values

Discussion in 'Ruby' started by Frank Hofmann, Aug 30, 2006.

  1. 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

    --
    Posted via http://www.ruby-forum.com/.
     
    Frank Hofmann, Aug 30, 2006
    #1
    1. Advertising

  2. On 8/30/06, Frank Hofmann <> wrote:
    > 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
    >
    > --
    > Posted via http://www.ruby-forum.com/.
    >
    >


    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
     
    Thomas Beckett, Aug 30, 2006
    #2
    1. Advertising

  3. 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

    --
    Posted via http://www.ruby-forum.com/.
     
    Frank Hofmann, Aug 30, 2006
    #3
  4. On Wednesday 30 August 2006 19:37, Frank Hofmann wrote:
    > 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

    >
    > Frank
     
    Michael Fellinger, Aug 31, 2006
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Himmat Dhange
    Replies:
    0
    Views:
    444
    Himmat Dhange
    Aug 26, 2003
  2. Shikari Shambu
    Replies:
    1
    Views:
    308
    bruce barker
    Oct 29, 2004
  3. Ankit Mehta
    Replies:
    1
    Views:
    1,484
    Simon Brooke
    Sep 29, 2006
  4. Thierry Lam
    Replies:
    2
    Views:
    592
    Tim Williams
    Jan 13, 2007
  5. TDR
    Replies:
    3
    Views:
    184
    Daniel Berger
    Aug 31, 2007
Loading...

Share This Page