Linux学习DAY6-认识与学习BASH

一、认识BASH

1、硬件、核心与shell

硬件:整个系统的实体工作者,包含了硬盘、cpu等

核心:控制硬件工作

shell:使用者界面

2、文字接口的shell

·远程管理

        Linux管理常需要远程连接,且要求传输速度要快,不易出现短线或是信息外流。

3、系统的合法shell与/etc/shells功能

查看有哪些可以使用的shells

cd /etc
ls
cat shells

 ·/bin/sh:已经被/bin/bash所取代

`/bin/bash:Linux预设的shell

·/bin/ksh:兼容于bash

·/bin tcsh:整合c shell,提供更多的功能

·/bin/csh:已经被/bin/tcsh索取嗲

·/bin/zsh:功能更加强大的shell

4、Bash shell的功能

1)命令修改(history)

2)命令于档案补全功能【tab】

        【tab】接在一串指令的第一个字的后面,命令补全

        【tab】接在一串指令第二个字以后,档案补齐

3)命令别名设定功能(alias)

alias test='ls -al'

5、Bash shell的内建命令

type [-tpa] name

 选项和参数:

-t:加入-t参数时,type会将name以底下这些字眼显示出他的意义

        file:表示为外部指令

        alias:表示该指令为命令别名所设定的名称

        builtin:该指令为bash内建的指令功能

-p:如果后面接name为外部指令时,才会显示完整文件名

-a:会由PATH变量定义的路径中,将所有含name的指令都列出,包含

二、shell的变量功能

1、变量

让某一个特定的字符串代表不固定的内容

2、变量的取用与修改

echo取用变量,变量在被取用时,前面必须要加上($)

echo $PATH

 修改某个变量的内容,用(等号=)连接变量与他的内容

echo $myname
myname=10
echo $myname

·变量设定的规则

        变量与变量内容以一个(=)连接

name=10

        等号两边不能直接接空格符

        变量名称只能时英文字母与数字,且开头字符不能是数字

        变量内容若有空格符可以使用双引号或单引号将变量内容结合起来

                 双引号内的特殊字符$,可以保留原本特性

                 单引号内的特殊字符仅为一般字符(纯文本)

        可以用(\)将特殊符号($,\,空格)变为一般字符

name=xxx\'\ name

        在一串指令中,还需要藉由其他的指令提供的信息,可以用反单引号【`指令`】或【$(指令)】

        若该变量为扩增变量内容时,可用"$变量名称"或${变量}累加内容

name=$(name)addition

        若该变量需要其他子程序执行,需要以export来使变量变成环境变量

#进入到子程序
bash
echo $name
#离开这个子程序
exit
export name
#进入到子程序
bash
#子程序在此执行
echo $name
#离开这个子程序
exit

        通常大写字符为系统默认变量,自行设定变量可以使用小写字符,方便判断

        取消变量的方法为使用unset:unset 变量名称

#取消设定的name这个变量内容
unset name

3、环境变量的功能

env

 HOSTNAME:主机名

TERM:这个终端机使用的环境是什么类型

SHELL:目前环境下,使用的shell是哪一个程序

HISTSIZE:记录指定的笔数

USER:使用者的名称

MAIL:用户所取用的mailbox位置

PATH:执行文件指令搜寻路径

INPUTRC:与键盘按键功能有关,可以设定特殊按键

PWD:目前用户所在的工作路径

LANG:与语系有关

HOME:这个用户的家目录

_:上一次使用的指令的最后一个参数或指令本身

4、影响显示结果的语系变量

locale

5、变量键盘读取与宣告

·read:读取来自键盘输入的变量,常用于shell script的撰写中

read [-pt] variable

选项与参数:

·-p:接提示字符

·-t:接等待的秒数

read test

echo $test
read -p "Please enter your name:" -t 30 named

echo $named

 注:read之后不加任何参数,直接加上变量名称

·declare/typeset

declare 【-aixr】 variable

选项与参数:

-a:将后面名为variable的变量定义为数组类型

·i:将后面名为variable的变量定义为整数数字 类型

-x:用法与export一样,将后面的variable变成环境变量

-r:将变量设定成为readonly类型,不可被更改内容,也不能unset

declare -i sum=100+100+100
echo $sum

7、与文件系统及程序的限制关系:ulimit

ulimit 【-SHacdfltu】 【配额】

选项与参数:

·-H:严格的设定,必定不能超过这个设定的数值

·-S:可以超过这个设定值,若超过则有警告讯息

·-a:后面不接任何选项与参数,可列出所有的限制额度

·-c:当某些程序发生错误时,系统可能会将该程序在内存中的信息写成档案

·-f:可建立最大档案容量单位为Kbytes

·-d:程序可使用的最大断裂内存容量

·-l:可用于锁定的内存量

·-t:可使用的最大CPU时间(单位为秒)

-u:单一用户可以使用的最大程序数量

三、命令别名与历史命令

1、命令别名设定:alias,unalias

ls -al | more

#简化命令
alias lm='ls -al | more'

 注:rm提供了-i选项来让我们确认是否要移除该档案

#防止误删
alias rm=‘rm -i’

注: 如何知道目前有哪些的命令别名

alias

取消命令别名

unalias lm

 注:命令别名与变量有什么不同?

命令别名:新创一个新的指令,可以直接下达该指令

变量:需使用【echo】指令才能呼叫出变量的内容

2、历史命令:history

history 【n】
history 【-c】
history 【-raw】 histfiles

选项与参数:

n:数字,意思是要列出最近的n笔命令行表

-c:将目前的shell中的所有history内容全部消除

-a:将目前新增的history指令新增入histfiles中,若没有加histfiles,则预设写入~/.bash_history

-r:将histfiles的内容督导这个shell的history记忆中

-w:将目前的history记忆内容写入histfiles中 

四、Bash shell的操作环境

1、路径与指令搜寻顺序

type -a 指令名

2、bash的进站与欢迎讯息

#查看进站画面内容
cat /etc/issue
issue内的各代码意义
\d本地终端的时间
\l显示第几个终端机接口
\m显示硬件的等级
\n显示主机的网络名称
\o

显示domain name

\r操作系统的版本
-t显示本地端时间的时间
\s操作系统的名称
\v操作系统的版本

 

3、环境配置文件

·login与non-login shell

        ·login shell:取得bash时需要完整的登录流程

        ·non-login shell:取得bash接口的方法不需要重复登入的举动。

一般来说,login shell只会读取这两个配置文件:1、/etc/profile:系统整体的设定,最好不要修改该档案;2、~/.bash_profile或/~bash_login或~profile:使用者个人设定,要修改自己的数据,写入这里

·/etc/profiles(login shell才会读)

        ·PATH:依据UID决定PATH变量要不要含有sbin的系统指定目录

        ·MAIL:依据账号设定好使用者的mailbox到/var/spool/mail/账号名

        ·USER:依据用户的账号设定此变量内容

        ·HOSTNAME:依据主机的hostname指令决定此变量内容

        ·HISTSIZE:历史命令记录笔数

·/etc/inputrc

        该档案不会被执行。该档案内容为bash的常用键、【tab】要不要有声音等数据,不建议修改。

·/etc/profile.d/*.sh

        目录内的众多档案。只要在/etc/profile.d这个目录内且扩展名为.sh。使用者具有r的权限,该档案就会被/etc/profile呼叫进来。如果需要帮所有使用者设定一些共享的命令别名时,可以在这个目录底下自行建立扩展名为.sh的档案,并将所需要的数据写入。

·~/bash_profile(login shell才会读)

        在login shell的bash环境中,所读取的个人偏好配置文件主要有三个:

                ~/.bash_profile

                ~/.bash_login

                ~/.profile

        bash的login shell色丁只会读取上面三个档案的其中一个,读取的顺序依照上面的顺序

·source:读入环境配置文件的指令

 ·~/.bashrc(non-login shell)

        当取得non-login shell时,bash配置文件仅会读取~/.bashrc。

注:由于root的身份与一般使用者不同,如果是一般使用者的~/.bashrc会有不同。

4、终端机的环境设定

·stty(终端机)

#列出所有的按键与按键内容
stty -a

         ·eof:End  of file(代表结束输入)

        ·erase:向后删除字符

        ·inntr:送出一个interrupt(中断)的讯号给目前正在run的程序。

        ·kill:删除在目前指令列上的所有文字

        ·quit:送出一个quit的讯号给目前正在run的程序

        ·start:在某个程序停止后,重新启动他的output

        ·stop:停止目前屏幕的输出

·set

set 【-uvCHhmBx】

选项和参数:

-u:预设不启用。若启用后,当使用未设定变量时,会显示错误信息

-v:预设不启用。若启用后,在讯息被输出前,会先显示信息的原始内容

-x:预设不启用。若启用后,在指令被执行前,会显示指令内容

-h:预设启用。与历史命令有关

-H:预设启用。与历史命令有关

-m:预设启用。与工作管理有关

-B:预设启用。

-C:预设不启用。

bash默认组合键

组合按键

执行结果
ctrl+D输入结束(EOF)
ctrl+M就是Enter
ctrl+S暂停屏幕的输出
ctrl+Q恢复屏幕的输出
ctrl+C终止目前的命令
ctrl+U在提示字符下,按整列命令删除
ctrl+Z暂停目前的命令

5、通配符与特殊符号

通配符
符号意义
*代表0个到无穷多个任意字符
代表一定有一个字符
【】代表一定有一个在括号内的字符(非任意字符)
【-】若有减号在中括号内时,代表在编码顺序内的所有字符
【^】若中括号内的第一个字符为指数符号,代表反向选择
特殊符号
符号内容
#批注符号:常被使用在script中,视为说明,在后的数据均不执行
\将特殊字符或通配符还原成一般字符
|管线:分隔两个管线命令的界定
连续指令下达分隔符:连续性命令的界定
~

用户的家目录

$取变量之前需要加的变量取代值
&工作控制:将指令变成背景下工作
逻辑运算意义上的非
/目录符号:路径分隔的符号
>,>>数据流重导向:输出导向,分别是取代与累加
<,<<数据流重导向:
‘ ’单引号,不具有变量置换的功能
” “具有变量置换的功能
··两个·中间为可以先执行的指令,也可使用$()
()在中间为子shell的起始于结束
{}在中间为命令区块的组合

 

五、数据流重导向(Redirection)

        某个指令执行后应该要出现在屏幕上的数据,给他传输到其他的地方

·standard output (stdout)与 standard error output(stderr)

        标准输出:指令执行所回传的正确的讯息。读取/etc/crontab后,将该档案内容显示到屏幕上

        标准错误输出:指令执行失败后,所回传的错误信息。

六、管线命令

1、撷取命令:cut、grep

·cut:将一段讯息的某一段切出来

        选项与参数:

                -d:后面接分隔字符,与-f一起使用

                -f:依据-d的分隔字符将一段讯息分割成数段,用-f取出第几段的意思

                -c:以字符的单位取出固定字符区间

#将PATH变量取出,找出第5个路径
echo $PATH
echo $PATH | cut -d ':' -f 5

#找出第三列和第五列
echo $PATH | cut -f ':' -f 3,5


#将export输出,取得第12个字符以后的所有字符串
export
export | cut -c 12-
#指定某个范围的值,取出15-25的字符
export | cut -c 15-25
#用last将显示的登录者的信息中,仅留下用户名
last
last | cut -d ' ' -f 1

·grep:分析一行信息,若当中有需要的信息,就将该行拿出来

grep [-acinv] [--color=auto] '搜寻字符串' filename

 选项与参数:

        -a:将binary档案以text档案的方式搜寻数据

        -c:计算找到‘搜寻字符串’的次数

        -i:忽略大小写的不同

        -n:输出行号

        -v:反向选择,即显示出没有‘搜寻字符串’内容的那一行

        --color=auto:可以将找到的关键词部分加上颜色的显示

last | grep 'root'
#在last的输出信息中,只有root,并且仅取第一栏
last | grep 'root' | cut -d ' ' -f 1 

2、排序命令:sort、uniq、wc

sort [-fbMnrtuk][file]

选项与参数:

        -f:忽略大小写的差异

        -b:忽略最前面的空格符部分

        -M:以月份的名字排序

        -n:使用纯数字进行排序(默认以文字形态排序)

        -r:反向排序

        -u:相同数据中,仅出现一行代表

        -t:分隔符,预设用【tab】键分隔

        -k:以哪个区间来进行排序

cat /etc/passwd | sort
cat /etc/passwd | sort -t ':' -k 3
#使用数字排序
cat /etc/passwd | sort -t ':' -k 2 -n

·uniq

uniq 【-ic】

选项与参数:

        -i:忽略大小写字符的不同

        -c:进行计数

#使用last将账号列出,仅取出账号栏,进行排序后仅取出一位
last | cut -d ' ' -f 1 | sort | uniq
#获取每个人的登录次数
last | cut -d ' ' -f 1 | sort | uniq -c

 ·wc

wc 【-lwm】

选项与参数:

        -l:仅列出行

        -w:仅列出多少英文单字

        -m:多少字符

 

#/etc/man.config里面有多少相关字、行、字符数
cat /etc/man.config | wc

3、双向重导向:tee

tee 【-a】 file

选项与参数:

        -a:以累加的方式,将数据加入file中

#将last的输出存一份到last.list档案中
last | tee last.list | cut -d  " " -f 1
#将ls的数据存一份到~/homefile | more,同时屏幕有输出信息
ls -l /home | tee ~/homefile | more
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值