Linux Bash Shell


一、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:标示Enter

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


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值