Linux Bash Shell
2013-04-18 22:33
260 查看
一、bashshell的功能
1.命令记忆(history):使用过的命令存入 在~/.bash_history文件
2.命令补全:[tab]补全命令、[tab][tab]两个tab可以显示所有可执行的命令。
3.命令别名设置(alias):
4.程序脚本(shell script):
5.通配符
二、变量
1.变量就是以一组文字或者符号等,来代替一些设置或者 是一串保留的数据。
2.可以用echo命令来查看变量的内容,显示变量是在变量前加$才行。
3.可用使用env(environment)或者
exoprt 命令来查看当前环境 中的环境变量
4.可以使用set查看当前系统中所有的变量(含环境变量和自定义变量)。常见的变量有:PS1(提示符)、$(线程代号)、?(上个执行命令的码)
5.可以使用exoprt将自定义变量转置为环境变量。
6.可以使用declare命令将环境变量置为自定义变量。
变量设置的规则:
1.变量与变量内容之间用等号“=”来连接,并且等号两边不能直接接空格符。
2.变量内容如果有空格符号,可以使用单引号或者双引号将变量的内容结合起来。但是,双引号内的特殊字符如$等,可以保有原来的特性,单引号内的特殊字符仅为一般字符(纯文件)。
3.可以使用转义字符“\”将特殊符号($、\、空格、!等)变成一般字符。
4.若该变量需要在其它子进程中执行,则需要使用export来使变量变成环境变量:exoprt 变量名。
5.可以用unset命令取消变量。
PS1(提示符的设置):
1.\H:完整的主机名。
2.\u:当前用户。
3.\w:完整的工作目录名。
4.\#:执行的第几个命令。
5.\$:提示符,如果是root时,提示符为#,否则为$
如:[root@hs-uf21root]# PS1='[\u@\H \w]\$ '
三.命令别名与历史命令
1.命令别名设置:alias、unalias
2.历史命令:history
命令的别名、自定义的变量在注销bash后就会失效,如果需要保存这些设置,需要将这些写入配置文件才行。
四、文件系统和程序的限制
使用ulimit命令,bash可以限制用户的某些系统资源,包括可以打开的文件数量、可以使用的CPU时间、可以使用的内存总量。
参数:[-SHacdfltu]
1.H:hard limit,严格设置,必定不能超过这个设置的数值
2.S:soft limit警告的设置,可以超过这个 设置值
3.a:后面不接任何参数,可以列出所有的限制参数。
4.c:当某些进程发生错误时,系统可能会将该进程在内存中的信息写成文件(排错用),这种文件被称为内核文件(corefile),此为限制每个内核文件的最大容量。(ulimit -c 0 不产生core文件)、(ulimit-c 100 设置core文件最大为100k)、(ulimit -c unlimited 不限制core文件大小)。
5.f:此shell可以创建的最大文件容量(一般为2GB),单位为KB。
6.u:单一用户可以使用的最大进程数量。
五、Bash Shell的操作环境
1.路径与命令查找顺序。可以使用type命令查询得到,如:
[root@hs-uf21 ~]$ type -a ls
ls is aliased to `ls --color=tty'
ls is /bin/ls
2.登录与欢迎信息:/etc/issue、/etc/motd
登录信息:/etc/issue(本地登录)、/etc/issue.net(远程登录时的欢迎信息)
[root@hs-uf21 etc]# cat issue
Red Hat Enterprise Linux AS release 4 (Nahant Update4)
Kernel \r on an
\m
注:\d(本地端时间的日期)、\m(显示硬件的等级)、\n(显示主机的网络名)、\o(显示doman name)、\r(显示操作系统的版本)、\t(显示本地端时间的时间)、\s(操作系统名称) 、\v(操作系统版本)
登录提示信息:/etc/motd(如果用户登录后需要做相关提示,可以将提示信息加入motd文件中)
3.环境配置文件:login和non-login shell
login shell读取的配置文件:/etc/profile(系统配置)、~/.bash_profile(或者~/.bash_login或者~/.profile)(用户配置)
系统配置:/etc/profil
[root@hs-uf21 etc]# cat profile
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f"$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
for i in /etc/profile.d/*.sh ; do
if [ -r"$i" ]; then
. $i
fi
done
........
/etc/profile文件中会依序调用/etc/inputrc、/etc/profile.d/*.sh等。
用户配置:~/.bash_profile(或者~/.bash_login或者~/.profile),这三个文件只读取其中一个,如果.bash_profile存在内里不再后面两,如果不存在则读取.bash_login,再不存在则读取.profile。
[root@hs-uf21 etc]# cat ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bash_profile文件中会读取~/.bashrc文件,可以将用户自己的操作方式定义在此文件,如命令别名等。
[root@hs-uf21 etc]# cat ~/.bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
non-login shell读取的配置文件:~/.bashrc
其它配置文件:/etc/man.config(配置manpage 的路径)、~/.bash_logout(注销系统后,完成此文件中配置的操作之后才离开)
[root@hs-uf21 etc]# cat ~/.bash_logout
# ~/.bash_logout
clear
4.终端机环境设置:stty、set
stty(setting tty终端机):设置快捷键等
[root@hs-uf21 etc]# stty -a
speed 38400 baud; rows 28; columns 179; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
min = 1; time = 0;
说明:intr= ^C表示[ctrl]+ C,其中^表示[Ctrl];erase表示向后删除;kill表示删除目录命令行上所有文字;具体组合键说明如下:
Ctrl + C:终止目前的命令
Ctrl + D:输入结束
Ctrl + M:标示E
4000
nter
Ctrl + S:暂停屏幕的输出
Ctrl + Q:恢复屏幕的输出
Ctrl + U:在提示符下,将整行命令行删除
Ctrl + Z:暂停目前的命令。
5.特殊符号:
#:批注符号
\:转义符号
|:管道(pipe)
;:连续命令执行分隔符
$:使用变量前导符
&:作业控制,将命令变成背景下工作
>与>>:数据重定向,输出导向,分别是“替换”与“累加”
<与<<:数据重定向,输入导向
6.数据流生重定向
7.命令执行的判断依据:; && ||
常用命令:
1.type:查看命令是外部命令还是内置在bash中
语法:type [-tpa] cmdname
[root@hs-uf21 ~]$ type lm
lm is aliased to `ls -l | more'
[root@hs-uf21 ~]$ type -a lm
lm is aliased to `ls -l | more'
2.变量的显示:echo $变量名 或者 echo ${变量名}
[root@hs-uf21 ~]$ echo $FBASE_HOME
/home/root/linux.i386
[root@hs-uf21 ~]$ echo ${FBASE_HOME}
/home/root/linux.i386
3.变量的设置
[root@hs-uf21 db_1]$dbhome='/opt/oracle/product/10.2.0.1/db_1'
[root@hs-uf21 ~]$ echo $dbhome
/opt/oracle/product/10.2.0.1/db_1
[root@hs-uf21 ~]$ cd $dbhome
[root@hs-uf21 db_1]$ pwd
/opt/oracle/product/10.2.0.1/db_1
[root@hs-uf21 db_1]$ dbhome="$ORACLE_HOME"
[root@hs-uf21 db_1]$ echo $dbhome
/opt/oracle/product/10.2.0.1/db_1
4.变量的取消:unset
[root@hs-uf21 db_1]$ unset dbhome
5.环境变量的查看:env
[root@hs-uf21 ~]$ env
HOSTNAME=hs-uf21
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
FBASE_HOME=/home/root/linux.i386
MAIL=/var/spool/mail/root
6.查看所有变量:set(含有环境变量与自定义变量)
[root@hs-uf21 ~]$ set
BASH=/bin/bash
PS1='[\u@\h \W]\$ '
UID=500
USER=root
7.提示符的设置:PS1
[root@hs-uf21 root]# PS1='[\u@\H \w]\$ '
[root@hs-uf21 /home/root]#
8.设置环境变量:exoprt
语法:exoprt 变量名
9.命令别名设置:alias、unalias
语法:alias 命令别名='命令语句'
[root@hs-uf21 db_1]$ alias vi='vim'
[root@hs-uf21 db_1]$ alias his='history'
[root@hs-uf21 db_1]$ alias rm='rm -i'
[root@hs-uf21 ~]$ alias h='history'
[root@hs-uf21 ~]$ unalias h
[root@hs-uf21 ~]$ h
-bash: h: command not found
10.文件系统和程序的限制:ulimit
语法:ulimit [-SHacdflut] [配额]
查看系统所有的限制:
[root@hs-uf21 workspace]$ ulimit -a
file size (blocks, -f) unlimited
open files (-n) 65536
11.读入环境配置文件:source 或者 小数点(.)
语法:source配置文件名
说明:更改配置文件后使用此命令可以本更新立即生效,而不用重新登录。
12.切割命令:split(可以按文件大小和行数line切割)
语法:split[-bl] file
13.统计文件中的行数、字数、字符数:wc
语法:wc[-lwm]
[root@hs-uf21 etc]# cat /etc/passwd | wc
57 101 2767
说明:57是行数、101是数、2767是字符数
14.变量的键盘读取:read
语法:read [-pt] variable
参数:
-t : 后面接等待的秒数据,超设定的秒将自动跳出
-p : 后面接提示符
如:带等待秒数,将字符串“^_^ haha” 输入变量test,并将输出
[root@hs-uf21 ~]# read -pt 10 test
^_^ haha
[root@hs-uf21 ~]# echo $test
^_^ haha
如:带提示符,将字符串“^_^ haha” 输入变量test,并将输出
[root@hs-uf21 ~]# read -p "Please Input Info:" test
Please Input Info:^_^ haha
[root@hs-uf21 ~]# echo $test
^_^ haha
查看系统提供的可使用的shell:
[root@hs-uf21 etc]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh
/bin/zsh
查看用户默认取得的shell:
[root@hs-uf21 etc]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:500:502:root:/home/root:/bin/bash
oracle:x:501:502::/home/oracle:/bin/bash
1.命令记忆(history):使用过的命令存入 在~/.bash_history文件
2.命令补全:[tab]补全命令、[tab][tab]两个tab可以显示所有可执行的命令。
3.命令别名设置(alias):
4.程序脚本(shell script):
5.通配符
二、变量
1.变量就是以一组文字或者符号等,来代替一些设置或者 是一串保留的数据。
2.可以用echo命令来查看变量的内容,显示变量是在变量前加$才行。
3.可用使用env(environment)或者
exoprt 命令来查看当前环境 中的环境变量
4.可以使用set查看当前系统中所有的变量(含环境变量和自定义变量)。常见的变量有:PS1(提示符)、$(线程代号)、?(上个执行命令的码)
5.可以使用exoprt将自定义变量转置为环境变量。
6.可以使用declare命令将环境变量置为自定义变量。
变量设置的规则:
1.变量与变量内容之间用等号“=”来连接,并且等号两边不能直接接空格符。
2.变量内容如果有空格符号,可以使用单引号或者双引号将变量的内容结合起来。但是,双引号内的特殊字符如$等,可以保有原来的特性,单引号内的特殊字符仅为一般字符(纯文件)。
3.可以使用转义字符“\”将特殊符号($、\、空格、!等)变成一般字符。
4.若该变量需要在其它子进程中执行,则需要使用export来使变量变成环境变量:exoprt 变量名。
5.可以用unset命令取消变量。
PS1(提示符的设置):
1.\H:完整的主机名。
2.\u:当前用户。
3.\w:完整的工作目录名。
4.\#:执行的第几个命令。
5.\$:提示符,如果是root时,提示符为#,否则为$
如:[root@hs-uf21root]# PS1='[\u@\H \w]\$ '
三.命令别名与历史命令
1.命令别名设置:alias、unalias
2.历史命令:history
命令的别名、自定义的变量在注销bash后就会失效,如果需要保存这些设置,需要将这些写入配置文件才行。
四、文件系统和程序的限制
使用ulimit命令,bash可以限制用户的某些系统资源,包括可以打开的文件数量、可以使用的CPU时间、可以使用的内存总量。
参数:[-SHacdfltu]
1.H:hard limit,严格设置,必定不能超过这个设置的数值
2.S:soft limit警告的设置,可以超过这个 设置值
3.a:后面不接任何参数,可以列出所有的限制参数。
4.c:当某些进程发生错误时,系统可能会将该进程在内存中的信息写成文件(排错用),这种文件被称为内核文件(corefile),此为限制每个内核文件的最大容量。(ulimit -c 0 不产生core文件)、(ulimit-c 100 设置core文件最大为100k)、(ulimit -c unlimited 不限制core文件大小)。
5.f:此shell可以创建的最大文件容量(一般为2GB),单位为KB。
6.u:单一用户可以使用的最大进程数量。
五、Bash Shell的操作环境
1.路径与命令查找顺序。可以使用type命令查询得到,如:
[root@hs-uf21 ~]$ type -a ls
ls is aliased to `ls --color=tty'
ls is /bin/ls
2.登录与欢迎信息:/etc/issue、/etc/motd
登录信息:/etc/issue(本地登录)、/etc/issue.net(远程登录时的欢迎信息)
[root@hs-uf21 etc]# cat issue
Red Hat Enterprise Linux AS release 4 (Nahant Update4)
Kernel \r on an
\m
注:\d(本地端时间的日期)、\m(显示硬件的等级)、\n(显示主机的网络名)、\o(显示doman name)、\r(显示操作系统的版本)、\t(显示本地端时间的时间)、\s(操作系统名称) 、\v(操作系统版本)
登录提示信息:/etc/motd(如果用户登录后需要做相关提示,可以将提示信息加入motd文件中)
3.环境配置文件:login和non-login shell
login shell读取的配置文件:/etc/profile(系统配置)、~/.bash_profile(或者~/.bash_login或者~/.profile)(用户配置)
系统配置:/etc/profil
[root@hs-uf21 etc]# cat profile
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f"$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
for i in /etc/profile.d/*.sh ; do
if [ -r"$i" ]; then
. $i
fi
done
........
/etc/profile文件中会依序调用/etc/inputrc、/etc/profile.d/*.sh等。
用户配置:~/.bash_profile(或者~/.bash_login或者~/.profile),这三个文件只读取其中一个,如果.bash_profile存在内里不再后面两,如果不存在则读取.bash_login,再不存在则读取.profile。
[root@hs-uf21 etc]# cat ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
.bash_profile文件中会读取~/.bashrc文件,可以将用户自己的操作方式定义在此文件,如命令别名等。
[root@hs-uf21 etc]# cat ~/.bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
non-login shell读取的配置文件:~/.bashrc
其它配置文件:/etc/man.config(配置manpage 的路径)、~/.bash_logout(注销系统后,完成此文件中配置的操作之后才离开)
[root@hs-uf21 etc]# cat ~/.bash_logout
# ~/.bash_logout
clear
4.终端机环境设置:stty、set
stty(setting tty终端机):设置快捷键等
[root@hs-uf21 etc]# stty -a
speed 38400 baud; rows 28; columns 179; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
min = 1; time = 0;
说明:intr= ^C表示[ctrl]+ C,其中^表示[Ctrl];erase表示向后删除;kill表示删除目录命令行上所有文字;具体组合键说明如下:
Ctrl + C:终止目前的命令
Ctrl + D:输入结束
Ctrl + M:标示E
4000
nter
Ctrl + S:暂停屏幕的输出
Ctrl + Q:恢复屏幕的输出
Ctrl + U:在提示符下,将整行命令行删除
Ctrl + Z:暂停目前的命令。
5.特殊符号:
#:批注符号
\:转义符号
|:管道(pipe)
;:连续命令执行分隔符
$:使用变量前导符
&:作业控制,将命令变成背景下工作
>与>>:数据重定向,输出导向,分别是“替换”与“累加”
<与<<:数据重定向,输入导向
6.数据流生重定向
7.命令执行的判断依据:; && ||
常用命令:
1.type:查看命令是外部命令还是内置在bash中
语法:type [-tpa] cmdname
[root@hs-uf21 ~]$ type lm
lm is aliased to `ls -l | more'
[root@hs-uf21 ~]$ type -a lm
lm is aliased to `ls -l | more'
2.变量的显示:echo $变量名 或者 echo ${变量名}
[root@hs-uf21 ~]$ echo $FBASE_HOME
/home/root/linux.i386
[root@hs-uf21 ~]$ echo ${FBASE_HOME}
/home/root/linux.i386
3.变量的设置
[root@hs-uf21 db_1]$dbhome='/opt/oracle/product/10.2.0.1/db_1'
[root@hs-uf21 ~]$ echo $dbhome
/opt/oracle/product/10.2.0.1/db_1
[root@hs-uf21 ~]$ cd $dbhome
[root@hs-uf21 db_1]$ pwd
/opt/oracle/product/10.2.0.1/db_1
[root@hs-uf21 db_1]$ dbhome="$ORACLE_HOME"
[root@hs-uf21 db_1]$ echo $dbhome
/opt/oracle/product/10.2.0.1/db_1
4.变量的取消:unset
[root@hs-uf21 db_1]$ unset dbhome
5.环境变量的查看:env
[root@hs-uf21 ~]$ env
HOSTNAME=hs-uf21
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
FBASE_HOME=/home/root/linux.i386
MAIL=/var/spool/mail/root
6.查看所有变量:set(含有环境变量与自定义变量)
[root@hs-uf21 ~]$ set
BASH=/bin/bash
PS1='[\u@\h \W]\$ '
UID=500
USER=root
7.提示符的设置:PS1
[root@hs-uf21 root]# PS1='[\u@\H \w]\$ '
[root@hs-uf21 /home/root]#
8.设置环境变量:exoprt
语法:exoprt 变量名
9.命令别名设置:alias、unalias
语法:alias 命令别名='命令语句'
[root@hs-uf21 db_1]$ alias vi='vim'
[root@hs-uf21 db_1]$ alias his='history'
[root@hs-uf21 db_1]$ alias rm='rm -i'
[root@hs-uf21 ~]$ alias h='history'
[root@hs-uf21 ~]$ unalias h
[root@hs-uf21 ~]$ h
-bash: h: command not found
10.文件系统和程序的限制:ulimit
语法:ulimit [-SHacdflut] [配额]
查看系统所有的限制:
[root@hs-uf21 workspace]$ ulimit -a
file size (blocks, -f) unlimited
open files (-n) 65536
11.读入环境配置文件:source 或者 小数点(.)
语法:source配置文件名
说明:更改配置文件后使用此命令可以本更新立即生效,而不用重新登录。
12.切割命令:split(可以按文件大小和行数line切割)
语法:split[-bl] file
13.统计文件中的行数、字数、字符数:wc
语法:wc[-lwm]
[root@hs-uf21 etc]# cat /etc/passwd | wc
57 101 2767
说明:57是行数、101是数、2767是字符数
14.变量的键盘读取:read
语法:read [-pt] variable
参数:
-t : 后面接等待的秒数据,超设定的秒将自动跳出
-p : 后面接提示符
如:带等待秒数,将字符串“^_^ haha” 输入变量test,并将输出
[root@hs-uf21 ~]# read -pt 10 test
^_^ haha
[root@hs-uf21 ~]# echo $test
^_^ haha
如:带提示符,将字符串“^_^ haha” 输入变量test,并将输出
[root@hs-uf21 ~]# read -p "Please Input Info:" test
Please Input Info:^_^ haha
[root@hs-uf21 ~]# echo $test
^_^ haha
查看系统提供的可使用的shell:
[root@hs-uf21 etc]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh
/bin/zsh
查看用户默认取得的shell:
[root@hs-uf21 etc]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:500:502:root:/home/root:/bin/bash
oracle:x:501:502::/home/oracle:/bin/bash
相关文章推荐
- linux云计算之Bashshell脚本编程视频教程!
- linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
- [Linux]:Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
- linux复习笔记之bash shell (5) 关于减号-的作用
- linux几种常见的Shell:sh、bash、csh、tcsh、ash
- Linux bash shell基础语法
- linux bash shell常用文件操作命令
- Linux操作系统基础解析之(七)——Bash(Shell)基础知识(6)
- linux bash shell 使用技巧
- linux的bash和shell关系
- linux超级基础系列——什么是shell? bash和shell有什么关系?(转)
- Linux下的shell:bash及其特性
- linux shell bash 比较操作
- 【Linux】Dockerfile,ubuntu默认shell不是bash?RUN source命令报错!
- Linux 学习记录 四(Bash 和 Shell scirpt).
- Linux学习笔记:bash特性之多命令执行,shell脚本
- Linux Bash Shellshock software bug-2014.09.24
- linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
- linux shell bash 比较操作
- linux系统中shell中执行命令是报:bash: ifconfig: command not found错误的解决办法