linux学习笔记6(base入门基础1)

什么是Shell?

shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。
shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用
shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组
shell 如何启动
shell在你成功地登录进入系统后启动,并始终作为你与系统内核的交互手段直至你退出系统。你系统上的每位用户都有一个缺省的shell。每个用户的缺省shell在系统里的passwd文件里被指定,该文件的路径是/etc/passwd
通配符
另一个使命令输入变得更简单的方法是在命令中使用通配符。bash 支持三种通配符:

*   匹配任何字符和任何数目的字符

?   匹配任何单字符

[...] 匹配任何包含在括号里的单字符
如果你需要打印所有扩展名是 .doc 的文件,你能使用象这样简化的命令:

lpr *.doc
命令历史记录
用 bash 的内部命令 history 和 fc(fix 命令)命令来显示和编辑历史命令。history 命令能以两种不同的方法来调用。第一种是:

history [n]
history 命令没有参数时,整个历史命令列表的内容将被显示出来
使用 n 参数的作用是仅有最后 n 个历史命令会被列出
history 命令的第二种方法用于修改命令历史列表文件的内容。命令的语法如下:

history [-r|w|a|n] [filename]

这种形式中,-r 选项告诉 history 命令读命令历史列表文件的内容并且把它们当作当前的命令历史列表。-w 选项将把当前的命令历史记录写入文件中并覆盖文件原来的内容。-a 选项把当前的命令历史记录追加到文件中。-n 选项将读取文件中的内容并加入到当前历史命令列表中。如果 filename 选项没有被指定,history 命令将用变量HISTFILE 的值来代替。
fc 命令能用两种方法来编辑历史命令。第一种使用下列语法:

fc [-e editor_name] [-n] [-l] [-r] [first] [last]

这里所有参数都是可选的。-e editor_name 选项用来指定用于编辑命令的文本编辑器。 first 和 last 选项用于选择列出历史命令的范围,既可以是数字也可以是字符串。-n 选项禁止列出命令的编号。-r 选项反向列出匹配的命令。-l 选项把匹配的命令行列在屏幕上(而不是在编辑器中)。如果-e editor_name参数没有被指定,则以变量FCEDIT的值来代替,如果该变量不存在的话,则用变量EDITOR的值来代替,都不存在的话将使用vi编辑器。

别名
假如为这个长命令建立一个名为goconfig的别名,在bash提示符下键入如下命令:

alias goconfig='cd /usr/X11/lib/X11/fvwm/sample-configs'

现在,除非你退出bash,键入goconfig将和原来的长命令有同样的作用。如果想取消别名,可以使用下面的命令:

unalias goconfig
注意: 在定义别名时,等号的两头不能有空格,否则 shell 不能决定你需要做      什么。仅在你的命令中包含有空格或特殊字符时才需要引号。

输入重定向

输入重定向用于改变一个命令的输入源。一些命令需要在命令行里输入足够的信息才能工作。比如 rm,你必须在命令行里告诉 rm 它你要删除的文件。另一些命令则需要更详细的输入,这些命令的输入可能是一个文件。比如命令 wc 统计输入给它的文件里的文件里的字符数,单词数和行数。如果你仅在命令行上键入 wc ,wc 将等待你告诉它要统计什么,这时 bash 就好象死了一样,你键入的每样东西都出现在屏幕上,但什么事也不会发生。这是因为 wc 命令正在为自己收集输入。如果你按下Ctrl-D,wc 命令的结果将被写在屏幕上。如果你输入一个文件名做参数,象下面的例子一样,wc 将返回文件所包含的字符数,单词数,和行数:
wc test

另一种把test文件内容传给 wc 命令的方法是重定向 wc 的输入。< 符号在bash里用于把当前命令的输入重定向为指定的文件。所以可以用下面的命令来把 wc 命令的输入重定向为 test 文件:

wc < test

11 2 1

输入重定向并不经常使用因为大多数命令都以参数的形式在命令行上指定输入文件的文件名。尽管如此,当你使用一个不接受文件名为输入参数的命令,而需要的输入又是在一个已存在的文件里时,你就能用输入重定向解决问题。

输出重定向
输出重定向比输入重定向更常用。输出重定向使你能把一个命令的输出重定向到一个文件里,而不是显示在屏幕上。

很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,你能把它重定向到一个文件中,稍后再用文本编辑器来打开这个文件;当你想保存一个命令的输出时也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入时。(还有一种更简单的方法可以把一个命令的输出当作另一个命令的输入,就是使用管道,管道的使用将在本文的“管道”一节介绍)
输出重定向的使用与输入重定向很相似,但是输出重定向的符号是 > 。
--------------------------------------------------------------------------------

注意:记忆输入/输出重定向符号的最好方法是把<看作是一个漏斗,漏斗的小口      指向需要输入的命令(因为需要接受输入的命令会在 <的左手边),而把>      当作一个大口指向有输出的命令的漏斗。

--------------------------------------------------------------------------------
重定向举例,当你要把 ls 命令的输出保存为一个名为 directory.out 的文件时,你可以使用下面的命令:

ls > directory.out

管道
管道可以把一系列命令连接起来。这意味着第一个命令的输出会通过管道传给第二个命令而作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,以此类推。而管道行中最后一个命令的输出才会显示在屏幕上(如果命令行里使用了输出重定向的话,将会放进一个文件里)。
你能通过使用管道符 | 来建立一个管道行,下面的示例就是一个管道行:

cat sample.text | grep "High" | wc -l

这个管道将把 cat 命令(列出一个文件的内容)的输出送给grep命令。grep 命令在输入里查找单词 High,grep命令的输出则是所有包含单词 High的行,这个输出又被送给 wc命令。带 -l选项的 wc命令将统计输入里的行数。假设 sample.txt的内容如下:

Things to do today:

Low: Go grocery shopping

High: Return movie

High: Clear level 3 in Alien vs. Predator

Medium: Pick up clothes from dry cleaner


管道行将返回结果 2,指出你今天有两件很重要的事要做:

cat sample.text | grep "High" | wc -l

你可能感兴趣的:(linux,bash,UP,D语言,Go)