Shell概念
是底层系统的接口。是命令解释器,将用户的输入转换为OS指令。是编程语言。
常用的shell:bash,tcsh
常用符号
<, >, >> 输入/输出重定向
| 管道
eg: cat /etc/passwd | sort | more
; 顺序命令
eg: date; troff -me largedoc | lpr; date
扩展命令:使一个命令的输出成为另一个命令的参数。
$(command) 或 'command'
eg: vi $(find /home -print | grep xyz)
~ 用户目录
@ /etc/hosts中的主机名
Shell 脚本
第一行为“# !/bin/sh”,指名运行脚本的环境。
# 为注释符号。
使用变量
= 定义变量,例:foo=”hello”
$ 引用变量,例:echo $foo
export 将变量导出到environment中,所有的命令都可以访问。变量默认是shell的内部变量,只有shell可以访问。每个变量只需要export一次。PATH变量包含了/bin:/usr/bin:/usr/local/bin目录,所以shell才能够在这些目录下找到用户输入的命令。例:exportPATH=$PATH:/home/xyz
set 查询变量定义;
unset 取消环境变量定义;
declare
Job Control
Job Control是由shell提供的功能,用于同时运行多个命令或Job。
Process是操作系统的概念。
Foreground/Background
- 同一时刻,只能有一个job运行在前台;
- 运行在前台的job可以和用户交互;
- 运行的job可以suspend(命令:ctrl+z);
- 运行的job 可以中断(命令:ctrl+c);
在后台运行job
- 方法1:&
- 方法2:使用ctrl+z停止正在运行的job,然后使用命令bg 将job在后台运行。
中止job
- 命令:kill,参数可以是processid,或者job number。Jobnumber 通过%引用。
查询job
- 命令:jobs
将job放在前台执行
- 命令:fg
历史命令
history
!n
!!
!?string?
历史命令存储在.bash_hisroty文件中。
Fc使用文本编辑器编辑命令
修改配置
默认基于emacs进行行编辑,修改命令行编辑器为VI
set -o vi
几个重要的配置文件
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.bash_logout
可以添加环境变量,添加别名
eg: alias p='pwd; ls -CF'