您的位置:首页 > 运维架构 > Shell

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

 
 
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: