常用命令 - 输入输出、执行状态

Shell内嵌命令

标准嵌入命令如下表:

:

空,永远返回为true

readonly

使变量只读

.

从当前shell中执行操作

return

退出函数并带有返回值

break

退出for、while、until或case语句

set

控制各种参数到标准输出的显示

cd

改变到当前目录

shift

命令行参数向左偏移一个

continue

执行循环的下一步

test

评估条件表达式

echo

反馈信息到标准输出

times

显示shell运行过程的用户和系统时间

eval

读取参数,执行结果命令

trap

当捕获信号时运行指定命令

exec

执行命令,但不在当前shell

ulimit

显示或设置shell资源

exit

退出当前shell

umask

显示或设置缺省文件创建模式

export

导出变量,使当前shell可利用它

unset

从shell内存中删除变量或函数

pwd

显示当前目录

wait

等待直到子进程运行完毕,报告终止

read

从标准输入读取一行文本

 

输入输出

标准输入:默认为键盘,可以指定为文件。

标准输出:默认为屏幕,可以指定为文件。

*****如果在终端输入时,一行不能结束,可以使用反斜杠 \ 在下一行接着输入。

echo 

echo用于将字符串输出
1 使用时如果用双引号字符串,内部的$变量将会被替换,内部的反单引号中的命令会输出``,但是转义字符不会发生转义。
2 使用单引号字符串,$变量不会被替换,返单引号不会执行命令,同样不发生转义字符转义。
3 不使用引号等于使用双引号。

echo有三个控制选项:
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)

# 输出后没有换行
echo -n "what's your first name: "
read first_name
# 输出后换行
echo "what's your last name: "
read last_name
# 没有输出tab字符
echo "first name\tlast name"
# 输出后有tab字符
echo -e "${first_name}\t${last_name}"

 read

read后跟变量名称,会读取输入流,直到换行或者EOF(可以通过Ctrl+d)。
1. 如果变量有多个,那么每次读入的,将会通过空白字符分割赋值给变量。
2. 如果分割的个数多,最后一个变量获得到之后全部的输入。

用法
read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读取字符数] [-N 读取字符数] [-p 提示符] [-t 超时] [-u 文件描述符] [名称 ...]

cat

用来显示文件内容,控制字符,行号等。

如果没有指定文件,或者文件为"-",则从标准输入读取。

-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外

管道pie

管道可以将一个命令的输出传递给另一个命令作为输入。管道用 | 表示。形式为
命令1 | 命令2

如下命令,将文件中的内容读取到变量中去。

cat text.txt | read var

tee

把标准输入,输出到标准输出。同时,也拷贝到相应的文件中去。

Angel@DESKTOP-254LBLA ~
$ echo abcdefg | tee a.txt
abcdefg

Angel@DESKTOP-254LBLA ~
$ cat a.txt
abcdefg

***** tee有一个-a选项,表示追加到文件。

重定向

打开shell时,每个进程有三个打开的文件与之关联,分别是:

标准输入:默认是键盘  文件描述符:1
标准输出:默认是屏幕  文件描述符:2
标准错误:默认是屏幕  文件描述符:3

如果有其他文件需要描述符,可以任意使用3-9的数字。

重定向的方式:

  1. >  重定向标准输出到一个新文件中。
  2. >> 重定向标准输出,会在文件中追加。
  3. < 重定向标准输入。

重定向的形式:

  1. 输出文件描述符 > 文件名
  2. 输出文件描述符 > &输出文件描述符
  3. < 输入文件名
  4. < &输入文件描述符
命令 解释

command > filename

把标准输出重定向到一个新文件中

command >> filename

把标准输出重定向到一个文件中 (追加)

command 1 > fielname

把标准输出重定向到一个文件中

command > filename 2>&1

把标准输出和标准错误一起重定向到一个文件中

command 2 > filename

把标准错误重定向到一个文件中

command 2 >> filename

把标准输出重定向到一个文件中 (追加)

command >> filename 2>&1

把标准输出和标准错误一起重定向到一个文件中 (追加)

command < filename >filename2

把command命令以filename文件作为标准输入,以filename 2文件作为标准输出

command < filename

把command命令以filename文件作为标准输入

command << delimiter

把从标准输入中读入,直至遇到delimiter分界符

command <&m

把文件描述符 m作为标准输入

command >&m

把标准输出重定向到文件描述符 m中

command <&-

把关闭标准输入

 << delimiter

使用重定向冲标准输入时,还可以使用delimiter分界符来进行输入。规则是首行输入分界的标识,中间输入内容,最后再次输入标识标识内容结束。

执行状态

exec

exec用于清除当前shell环境,重新启动一个shell,并执行跟随的命令。命令执行完成之后,shell随之关闭。新shell与原shell具有相同的PID。

如果单纯执行shell script文件,并且文件第一行声明了shell路径,则启动子shell执行其中的命令
如果使用source命令执行shell文件,则在当前shell执行文件中的命令。

后台执行命令

与后台执行命令相关的有:

  1. &放到命令最后,可以将这行命令立即放到后台执行。为了不干扰,通常会将输出重定向到文件,不让它显示在屏幕。
  2. nohup命令,其后跟随的命令行在用户退出后仍然后再后台继续运行。
    通常使用nohub command &
  3. ctrl+z:将当前执行的命令放到后台,并暂停执行。
  4. jobs:查看后台执行的命令
  5. fg %jobnumber:将编号为num的后台命令调到前台执行。
  6. bg %jobnumber:将任务放到后台去处理
  7. kill %jobnumber:杀死后台任务

 

posted on 2016-06-15 23:06  峰入云  阅读(642)  评论(0编辑  收藏  举报

导航