⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch02_12.htm

📁 the unix power tools
💻 HTM
📖 第 1 页 / 共 2 页
字号:
>If you know that certain port numbers are used for certain kinds oflogins, you can test that.For example, many systems use <EMCLASS="emphasis">ttyp0</EM>, <EMCLASS="emphasis">ttyq1</EM>, etc. as networkports for<ACLASS="indexterm"NAME="AUTOID-3530"></A><ACLASS="indexterm"NAME="AUTOID-3532"></A><SPANCLASS="link"><EMCLASS="emphasis">rlogin</EM> and <EMCLASS="emphasis">telnet</EM> (<ACLASS="linkend"HREF="ch01_33.htm"TITLE="UNIX Networking and Communications ">1.33</A>)</SPAN>.This test will branch on the port name:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">case &quot;`tty`&quot; in/dev/tty[pqrs]?)   # rlogin, telnet:   .../dev/tty02)   # terminal on my desk:   ...&quot;not a tty&quot;) ;;  <ICLASS="lineannotation">...not a terminal login session; do nothing</I>esac</PRE></BLOCKQUOTE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-3543"></A><ACLASS="indexterm"NAME="AUTOID-3545"></A><ACLASS="indexterm"NAME="AUTOID-3549"></A>Certain systems set certain environment variables.For example, the X Window System sets a <EMCLASS="emphasis">DISPLAY</EM> environment variable.(If you aren't sure about your system, use the<SPANCLASS="link"><EMCLASS="emphasis">env</EM> or <EMCLASS="emphasis">printenv</EM> command (<ACLASS="linkend"HREF="ch06_01.htm#UPT-ART-1170"TITLE="What Environment Variables Are Good For ">6.1</A>)</SPAN>to look for changes in your environment at different systems.)You can test that:</P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist"><ACLASS="co"HREF="ch47_03.htm"TITLE="47.3 Conditional Statements with if ">if</A> <ACLASS="co"HREF="ch47_04.htm"TITLE="47.4 C Shell Variable Operators and Expressions ">$?</A> &#13;</PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">if ($?DISPLAY) then   # on X window system   ...else if ($?WIN_PARENT) then   # on SunView system   ...else   ...endif</PRE></TD></TR></TABLE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para"><ACLASS="indexterm"NAME="AUTOID-3562"></A><ACLASS="indexterm"NAME="AUTOID-3564"></A><ACLASS="indexterm"NAME="AUTOID-3566"></A><ACLASS="indexterm"NAME="AUTOID-3568"></A>Your system may have a <EMCLASS="emphasis">/etc/ttytab</EM> or<EMCLASS="emphasis">/etc/ttys</EM> file that lists the type of each terminal port.Lines in the file look something like this:</P><PCLASS="para"><BLOCKQUOTECLASS="screen"><PRECLASS="screen">console &quot;/usr/etc/getty std.9600&quot;    vt100      on  local tty00   &quot;/usr/etc/getty std.9600&quot;    dialup     off localtty01   &quot;/usr/etc/getty std.9600&quot;    plugboard  off local   ...ttyp0   none                         network    off   ...</PRE></BLOCKQUOTE></P><PCLASS="para">(For example, port <EMCLASS="emphasis">ttyp0</EM> is <EMCLASS="emphasis">network</EM>, the type used by<SPANCLASS="link"><EMCLASS="emphasis">xterm</EM> (<ACLASS="linkend"HREF="ch01_31.htm"TITLE="The X Window System ">1.31</A>)</SPAN>,<SPANCLASS="link"><EMCLASS="emphasis">telnet</EM> (<ACLASS="linkend"HREF="ch01_33.htm"TITLE="UNIX Networking and Communications ">1.33</A>)</SPAN>,and so on.)</P><PCLASS="para">You can match the output of the<SPANCLASS="link"><EMCLASS="emphasis">tty</EM> (<ACLASS="linkend"HREF="ch03_08.htm"TITLE="What tty Am I On? ">3.8</A>)</SPAN>command, which shows your current tty, to the first column of thatfile.The output of <EMCLASS="emphasis">tty</EM> starts with <EMCLASS="emphasis">/dev</EM> or <EMCLASS="emphasis">/dev/pts</EM>.So, to match your current tty to the file, you need to strip thename to its tail.For example, in <EMCLASS="emphasis">bash</EM> and <EMCLASS="emphasis">ksh</EM>, these three lines wouldput the terminal port type (<CODECLASS="literal">vt100</CODE>, <CODECLASS="literal">plugboard</CODE>, etc.)into the <EMCLASS="emphasis">ttykind</EM> shell variable:</P><PCLASS="para"><TABLECLASS="screen.co"BORDER="1"><TR><THVALIGN="TOP"><PRECLASS="calloutlist">&#13;<ACLASS="co"HREF="ch09_07.htm"TITLE="9.7 String Editing in ksh and bash ">${..#..}</A> <ACLASS="co"HREF="ch33_11.htm"TITLE="33.11 Quick Reference: awk ">awk</A> </PRE></TH><TDVALIGN="TOP"><PRECLASS="screen">tty=`tty`ttytail=${tty#/dev/}ttykind=`awk '$1 == &quot;'$ttytail'&quot; {print $3}' /etc/ttys`</PRE></TD></TR></TABLE></P><PCLASS="para"></P></LI><LICLASS="listitem"><PCLASS="para">You can also deal with many of these cases using the venerable butobscure <ACLASS="indexterm"NAME="AUTOID-3599"></A><SPANCLASS="link"><EMCLASS="emphasis">tset</EM> (<ACLASS="linkend"HREF="ch05_03.htm"TITLE="Setting the Terminal Type When You Log In ">5.3</A>)</SPAN>program to select and initialize the correct terminal type.Another program you can use to set the terminal type is <SPANCLASS="link"><EMCLASS="emphasis">qterm</EM> (<ACLASS="linkend"HREF="ch05_05.htm"TITLE="Querying Your Terminal Type: qterm ">5.5</A>)</SPAN>,available on the CD-ROM.</P></LI></UL><DIVCLASS="sect1info"><PCLASS="SECT1INFO">- <SPANCLASS="authorinitials">JP</SPAN></P></DIV></DIV><DIVCLASS="htmlnav"><P></P><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><TABLEWIDTH="515"BORDER="0"CELLSPACING="0"CELLPADDING="0"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch02_11.htm"TITLE="2.11 Faster ksh and bash Startup with $- Test "><IMGSRC="gifs/txtpreva.gif"SRC="gifs/txtpreva.gif"ALT="Previous: 2.11 Faster ksh and bash Startup with $- Test "BORDER="0"></A></TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="book"HREF="index.htm"TITLE="UNIX Power Tools"><IMGSRC="gifs/txthome.gif"SRC="gifs/txthome.gif"ALT="UNIX Power Tools"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172"><ACLASS="SECT1"HREF="ch02_13.htm"TITLE="2.13 A .cshrc.$HOST File for Per Host Setup "><IMGSRC="gifs/txtnexta.gif"SRC="gifs/txtnexta.gif"ALT="Next: 2.13 A .cshrc.$HOST File for Per Host Setup "BORDER="0"></A></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="172">2.11 Faster ksh and bash Startup with $- Test </TD><TDALIGN="CENTER"VALIGN="TOP"WIDTH="171"><ACLASS="index"HREF="index/idx_0.htm"TITLE="Book Index"><IMGSRC="gifs/index.gif"SRC="gifs/index.gif"ALT="Book Index"BORDER="0"></A></TD><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="172">2.13 A .cshrc.$HOST File for Per Host Setup </TD></TR></TABLE><HRALIGN="LEFT"WIDTH="515"TITLE="footer"><IMGSRC="gifs/smnavbar.gif"SRC="gifs/smnavbar.gif"USEMAP="#map"BORDER="0"ALT="The UNIX CD Bookshelf Navigation"><MAPNAME="map"><AREASHAPE="RECT"COORDS="0,0,73,21"HREF="../index.htm"ALT="The UNIX CD Bookshelf"><AREASHAPE="RECT"COORDS="74,0,163,21"HREF="index.htm"ALT="UNIX Power Tools"><AREASHAPE="RECT"COORDS="164,0,257,21"HREF="../unixnut/index.htm"ALT="UNIX in a Nutshell"><AREASHAPE="RECT"COORDS="258,0,321,21"HREF="../vi/index.htm"ALT="Learning the vi Editor"><AREASHAPE="RECT"COORDS="322,0,378,21"HREF="../sedawk/index.htm"ALT="sed &amp; awk"><AREASHAPE="RECT"COORDS="379,0,438,21"HREF="../ksh/index.htm"ALT="Learning the Korn Shell"><AREASHAPE="RECT"COORDS="439,0,514,21"HREF="../lrnunix/index.htm"ALT="Learning the UNIX Operating System"></MAP></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -