📄 00000003.htm
字号:
的地方,让 parent process 去读取, 并改变 parent process 的变数。 <BR> <BR> <BR> 另一个做法则是写一个 shell script,然後在 Bourne shell 或 Korn <BR> shell 中用 ".",在 C shell 中用 source 去执行那个 shell script。 <BR> 若此 sript 名为 "myscript" : <BR> <BR> 在 Bourne shell 或 Korn shell 中就用 <BR> <BR> . myscript <BR> <BR> 在 C shell 中则用 <BR> <BR> source myscript <BR> <BR> 若你想做的只是要改变所在目录或是设定一个环境变数,那使用 C shell <BR> 中的 alias 或是 Bourne/Korn shell 中的函数就可达成你的目的。可参 <BR> 考"要怎麽设定 prompt 才会显示出目前所在的目录"一节中的做法。 <BR> <BR> Thomas Michanek (<A HREF="mailto:xtm@telelogic.se)">xtm@telelogic.se)</A> 提供一个更详细的解答( <BR> <A HREF="ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/script-vs-env)。">ftp://ftp.wg.omron.co.jp/pub/unix-faq/docs/script-vs-env)。</A> <BR> <BR>------------------------------ <BR> <BR>Subject: How do I redirect stdout and stderr separately in csh? <BR>><I>From: <A HREF="mailto:msb@sq.com">msb@sq.com</A> (Mark Brader) </I><BR>Date: Mon, 26 Oct 1992 20:15:00 -0500 <BR> <BR>2.9) 我要如何将 csh 的 stdout 与 stderr 导向到不同的地方呢? <BR> <BR> 在 csh 中,用 ">" 将 stdout 导向,用 ">&" 则能将 stdout 与 stderr <BR> 一起导向。可是不能只单独把 stderr 转向。最好的方法是 <BR> <BR> ( command >stdout_file ) >&stderr_file <BR> <BR> 以上的命令会开一个 subshell 执行 "command";而这个 subshell 的 <BR> stdout 则被转向到 stdout_file,同时这个 subshell 的 stdout 和 <BR> stderr 则都被转向到 stderr_file,但是因为 stdour 已经先被转向了, <BR> 所以 stderr 就会被转到 stderr_file 了。 <BR> <BR> 如果你只是单纯的不想把 stdout 做转向,那麽就用 sh 来帮你吧。 <BR> <BR> sh -c 'command 2>stderr_file' <BR> <BR>------------------------------ <BR> <BR>Subject: How do I tell inside .cshrc if I'm a login shell? <BR>Date: Thu Mar 18 17:16:55 EST 1993 <BR> <BR>2.10) 我如何在 .cshrc 中判断是否在 login shell 中? <BR> <BR> 当有人这麽问的时候,通常要问的是 <BR> <BR> 要如何判断是否是一个 interactive shell? 或是问要如何判断是否是 <BR> 最上层的 shell ? <BR> <BR> 若你是要问 "是否在 login shell 中"(注:就是在做完 .cshrc 後,会 <BR> 再去做 .login),那麽你也许用 "ps" 和 "$$" 随便弄一弄,就能知道了 <BR> 。因为通常 login shells 的名字在 "ps" 看起来都是由 '-' 做开头的。 <BR> 如果你是真的对另外两个问题感兴趣,那麽这里有个方法可以让你在 <BR> .cshrc 中判断。 <BR> <BR> if (! $?CSHLEVEL) then <BR> # <BR> # This is a "top-level" shell, <BR> # perhaps a login shell, perhaps a shell started up by <BR> # 'rsh machine some-command' <BR> # This is where we should set PATH and anything else we <BR> # want to apply to every one of our shells. <BR> # <BR> setenv CSHLEVEL 0 <BR> set home = ~username # just to be sure <BR> source ~/.env # environment stuff we always want <BR> else <BR> # <BR> # This shell is a child of one of our other shells so <BR> # we don't need to set all the environment variables again. <BR> # <BR> set tmp = $CSHLEVEL <BR> @ tmp++ <BR> setenv CSHLEVEL $tmp <BR> endif <BR> <BR> # Exit from .cshrc if not interactive, e.g. under rsh <BR> if (! $?prompt) exit <BR> <BR> # Here we could set the prompt or aliases that would be useful <BR> # for interactive shells only. <BR> <BR> source ~/.aliases <BR> <BR>------------------------------ <BR> <BR>Subject: How do I construct a ... matches all files except "." and <BR>".." ? <BR>Date: Thu Mar 18 17:16:55 EST 1993 <BR> <BR>2.11) 在 shell 中要用怎样的 pattern 来表示除了 "." 与 ".." 外的所有档案? <BR> <BR> 这个问题看来容易。因为你可以用 <BR> <BR> * 表示所有不是以 "." 为开端的档案 <BR> <BR> .* 表示所有以 "." 为开端的档案,但是这样会把 "." 和 ".." 也包 <BR> 含进来,但是通常你并不会想把这两个也含进来。 <BR> <BR> .[!.]* 这只有比较新的 shells 才能用;某些 shells 用 "^" 代替 "!"; <BR> 而符合 POSIX 标准的 shells 一定能用 "!",但是大部份也都能接 <BR> 受 "^";所有具可移植性的应用程式都不应该在 "[" 之後紧接著没被 <BR> quota 起来的 "^")表示所有以 "." 为开头并且第二个字元不是 "." <BR> 的档案;但是这样却会漏掉 "..foo" 这类的档案。 <BR> <BR> .??* 表示所有以 "." 为开头且档名长度至少为 3 的档案,这样大概 <BR> 就能避开 "." 和 ".." 了,但是却还是会漏掉 ".a" 这类的档。 <BR> <BR> 所以想要正确地表示除了 "." 与 ".." 之外所有的档案,你必须要用到 3 <BR> 个 patterns(如果你没有像 ".a" 这样的档案,那你可以去掉第一个 <BR> pattern): <BR> <BR> .[!.]* .??* * <BR> <BR> 或者你也可以用一两个外部程式和 backquote substitution。这样就很完 <BR> 美了: <BR> <BR> <BR> `ls -a | sed -e '/^\.$/d' -e '/^\.\.$/d'` <BR> <BR> (or `ls -A` in some Unix versions) <BR> <BR> 不过即使是这样做,碰上档名里面含有换行字元, IFS 字元,或是万用字 <BR> 元仍然是没辄。 <BR> <BR>------------------------------ <BR> <BR>Subject: How do I&
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -