怎样读取windows和linux终端宽度?

leavesdrift · · 1291 次点击
<a href="/user/polaris" title="@polaris">@polaris</a> 最后windows下是用`mode con | find &#34;Columns&#34;`拿到的,linux下应该也能`echo $COLUMNS`拿到 ``` package main import ( &#34;fmt&#34; &#34;os/exec&#34; &#34;bytes&#34; &#34;regexp&#34; &#34;os&#34; &#34;strconv&#34; ) var ch = make(chan int) var out bytes.Buffer func main() { go GetConWidth() fmt.Printf(&#34;%v&#34;, &lt;-ch) } func GetConWidth(){ cmd := exec.Command(&#34;mode&#34;, &#34;con&#34;) cmd.Stdout = &amp;out err := cmd.Run() if err != nil { fmt.Fprintf(os.Stderr, &#34;ls: error reading console width %s&#34;, err.Error()) } re := regexp.MustCompile(`\d+`) rs := re.FindAllString(out.String(), -1) i, err := strconv.Atoi(rs[1]) if err != nil { fmt.Fprintf(os.Stderr, &#34;ls: error transfering string to int %s&#34;, err.Error()) } ch &lt;-i } ```
#3
更多评论
polaris
社区,需要你我一同完善!
Linux 下通过 `$LINES` 和 `$COLUMNS` 获取高宽; Windows 下不太清楚。
#1
文件中怎么获取呢?$COLUMNS 不在 env 中
#2