7、认识bashshell
来源:互联网 发布:linux 拷贝整个文件夹 编辑:程序博客网 时间:2024/06/05 08:12
本文要点:
一、介绍Shell
二、Shell的变量功能
三、命令别名与历史命令
四、Bash Shell使用环境
五、数据流重定向
六、管道命令(pipe)
一、介绍Shell
1、图形界面shell:windowsexplorer;kDE、GNOME;
2、命令行shell
3、shell是一个命令解释器
4、shell又分为交互式和非交互式
linux支持的shell在/etc/shells文件中:
/bin/sh已经被/bin/bash取代
/bin/bash linux默认的shell
/bin/tcsh整合c shell,提供更多的功能
/bin/csh依附于bsd版的unix的shell,被/bin/tcsh取代
/bin/ksh常用于商业版本中,兼容于bash
/bin/zsh基于ksh开发的,功能更强大
linux使用的版本称为Bourne AgainSHell。BASH主要的优点:
命令记忆能力
档案比对补全功能:指令补全,文件名称补全
命令别名(alias)设定功能
作业控制(jobs)、前台后台控制
Shell scripts的强大功能
通配符*?等
Bash Shell的内建命令:type
type [-ta] name
1、不加任何参数时,type显示出name是外部命令还是bash内置的命令;
2、-t,加-t参数。type将name通过以下文字显示他的意思:
file:表示外部命令;
alias:表示该命令为命令别名所设置的名称;
builtin:表示该命令为bash内置的命令;
3、-a:在PATH变量定义的路径中,列出所有内含name的命令,包含alias。
二、Shell的变量功能
1、shell的变量:
1、变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据;
2、echo $变量名
echo $PATH
3、在linux预设的情况中,使用“大写的字母”来设定的变量一般为系统预定义的变量;
4、在bash中有很多预定义环境变量;
5、系统通过预定义环境变量来定义shell的环境;
env显示目前系统中主要的预定义变量内容
set可以将环境变量和用户自订变量显示出来
PS1提示符的设置:
\d:代表日期,格式为星期 月 日;
\t:24小时格式显示时间,HH:MM:SS;
\A:24小时格式显示时间,HH:MM;
\T:12小时格式显示时间,HH:MM:SS;
\H:完整的主机名称;
\h:只取主机名称的第一个名字;
\u:当前账户名;
\v:bash版本信息;
\w:完整工作目录;
\W:只列出最后一个目录;
\#:执行的第几个指令;
\$:root用户提示符是#,其他用户提示符是$;
2、认识bash shell
1、如何将用户自定义的变量变成环境变量呢?export
2、在启动shell的时候,系统给shell分配一块内存,用来存储系统环境变量;
3、export可以将用户自定义变量移动到该内存中;
4、当进入子shell时,子shell将父shell的系统环境变量读入到子shell的内存中;
3、bash下的变量设定的规则:
1、变量与变量内容以等号=来连结,等号两边不能直接接空格符;
2、变量名称只能是英文字母与数字,但是数字不能是开头字符;
3、若有空格符可以使用双引号“或者单引号‘来将变量内容结合起来,但是要注意,双引号内的特殊字符可以保持原有变量特性,但是单引号内的特殊字符只是一般的字符;
4、必要时可以使用转义字符\来将特殊符号(如Enter*?<>:&![]|\‘”`(){}等)转变成一般符号;
5、在一串指令中,如果还需要由其它指令提供的信息,可以使用quote [‘command’];
6、若该变量为扩增变量内容时,则需以双引号和$变量名称,比如:PATH=”$PATH”:/home继续累加变量内容;
7、若该变量需要在其他子程序中使用,可以使用export将变量变成环境变量,如exportmyname,只输入export列出系统等所有环境变量;
8、取消变量的方法为:unset 变量名称。
语系文件的变量locale
locale –a显示系统支持的所有语系
改变系统支持的语系,可修改/etc/sysconfig/i18n
4、变量键盘读取和声明变量
read [-pt] 变量
-p:后面可以接提示符;
-t:后面可以接秒数,限制等待的时间;
declare/typeset [-airx] 变量
-a:声明的变量为数组;
-i:整数数字(integer) -r变量为只读;
-x:变量变成系统环境变量;
数组:a[i]
三、命令别名与历史命令
设置alias,取消unalias;
history n;
history [-crw];
-c将当前shell中的所有历史命令全部清除;
-r将histfile中的内容读到shell的命令记忆中;
-w将当前历史记忆内容写入到histfile中;
! number:执行第几个指令的意思;
! Command:执行以command开头的指令;
!!:上一个指令的意思;
四、Bash shell的使用环境
1、登录信息
登录信息提示:/etc/issue /etc/motd
\d 本地端时间的日期;
\l 显示第几个终端接口;
\m 显示硬件等级;
\n 显示主机的网络名称;
\r 操作系统的版本;
\t 24小时格式显示时间;
\s 操作系统名称;
\v 操作系统的版本;
2、系统设定值和个人设定值
bash shell系统设定值在/etc/profile和/etc/bashrc个人设定值在~/.bash_profile ~/.bashrc:
1、/etc/profile:设定了几个重要的变量,如:PATH、USER、MAIL、LOGNAME、HOSTNAME、HISTSIZE、INPUTRC。同时,这个file也规划出/etc/profule.d(针对bash和cshell规范了一些数据);
2、/etc/profile:这个档案在规划umask的功能,也同时规划出提示符PS1的内容;
3、/etc/man.config规范了使用man的时候,man page的路径到哪里去寻找;
4、~/.bash_profile:里面定义了个人化的路径(PATH)与环境变量的文件名称;
5、~/.bashrc:在这里设定个人化变量!例如命令别名的设定,路径的重新定义,在这里完成的;
6、~/.bash_logout:在注销shell的时候,BASH会为你所做的事情;
7、source变量设定文件就可以将设定档的内容读入一次;
3、Bash shell使用环境的终端的环境设置
终端的环境设置:stty
sty –a将当前所有的stty参数列出来
intr:给正在运行的程序发送中断信号;
quit:给正在运行的程序发送退出信号;
erase:向前删除字符;
kill:删除命令行上的文字;
eof:文件结束,输入结束;
start:重启暂停的输出;
stop:停止当前的输出;
susp:给正在运行的程序发送一个终端停止信号;
rprnt:输入命令时提示使用过的历史命令;
werase:删除命令行的最后一个字;
修改del向前删除为backspace向前删除?
stty erase^? stty erase ^H
4、万用字符和特殊符号
5、组合按键
五、数据流重导向
1、什么是数据流重导向
重导向redirect:就是将目前的所得数据输出到其它地方去。
三种输出输入的情况,分别是:
标准输入stdin:代码为0;使用<或<<;
标准输出stdout:代码为1;使用的方式为1>或2>>;
错误输出stderr:代码为2;使用的方式为2>或2>>;
find / -name file 1> list_right 2>list_error
同时写入同一个档案
find / -name file 1> list 2>&1
find / -name file >list 2> list
2、双向重导向tee
tee:将数据流同时输出到屏幕和文件;
tee –a file
-a:以累加的方式,将数据加入file中
last | cut –d ‘:’ –f1 | tee lastlist
|| /home | tee /tmp/dirfile
|| /tmp | tee –a /tmp/dirfile
3、为何要使用命令输出重导向
1、当屏幕输出的信息很重要,而且我们需要将他存下来;
2、后台执行中的程序,不希望他干扰屏幕正常输出结果时;
3、一些系统例行命令的执行结果,希望他可以存下来时;
4、一些执行命令,我们已经知道他可能的错误讯息,所以想以2> /dev/null将他丢掉时;
5、错误讯息与正确讯息需要分别输出时。
4、命令执行的判断依据: ; && ||
1、command1;command2利用分号“;”来分隔,这个分号的意思,代表不论command1执行结果为何,command2都会被执行;
2、command1&&command2如果command正确才执行command2;
3、command1 || command2如果command1错误才执行command2。
六、管道命令(pipe)
1、选取命令cut和grep
切记:管道命令“|”只能处理通过前面一个命令传来的正确信息,也就是标准输出(STDOUT)的信息,对于标准错误,没有处理能力。
选取命令(cut和grep):就是将一段数据经过分析后,取出我们想要的部分,或者是,通过分析关键字,取得我们想要的行。选取信息通常是针对“逐行”分析得到的,而不是针对整个信息分析的。
cut:就是切的意思,这个命令可以将一段消息的某段“切”出来,消息以行为单位。
cut -d “分隔字符” –f fields
cut –c 字符范围
参数说明:
-d:后面接分隔符,预设是空格符,与-f一起使用;
-c:以字符为单位取出固定的字符范围;
-f:根据-d分隔符将一段消息分为数段,用-f是取出第几段的意思。
grep分析一行信息,若其中有需要的信息,就将这一行信息显示出来。
grep [-acinv] ‘搜索字符串’filename
-a:将二进制文件以文本文件的方式搜索数据;
-c:计算找到“搜索字符串”的次数;
-i:忽略大小写的不同,所有大小写视为相同;
-n:顺序输出行号;
-v:反向选择,即显示没有“搜索字符串”的那一行。
2、排序命令:sort、wc、uniq
sort [-fbMnrtuk] [file or stdin]
参数说明:
-f:忽略大小写的差异;
-b:忽略最前面的空格字符部分;
-M:以月份的名字来排序;
-n:使用“纯数字”排序(默认使用文字类型来排序);
-r:反向排序;
-t:分隔符,默认是tab;
-u:就是uniq,相同数据,只列出一次显示;
-k:按那个字段(filed)来进行排序。
uniq [-ic]
i:忽略大小写;
-c:进行计数。
wc [-lwm]
-l:仅显示多少行;
-w:仅显示有多少字;
-m:多少字符。
3、字符转换命令tr、col、join、paste、expand
tr可以用来删除一段信息当中的文字,或者是进行文字信息的替换。
tr [-ds] str …
参数:
-d:删除信息当中的str这个字符串;
-s:取代掉重复的字符。
col [-x]
参数:
-x:将tab键转换成对等的空格键。
expand [-t] file
参数:
将tab键转换成8个空格键;
-t:后接数字n则自定义将tab键转换成n个空格键。
join [-ti12] file1 file2
参数:
-t:join预设以空格符分隔数据,并且比对“第一个字段”的数据,如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个;
-i:忽略大小写的差异;
-1:这个数字的1,代表“第一个档案要用那个字段来分析”的意思;
-2:代表“第二个档案要用那个字段来分析”的意思。
paste [-d] file1 file2
参数:
-d:后面可以接分隔字符。预设是以tab来分隔的;
-:如果file部分写成-,表示来自standardinput的意思。
split [-bl] file PREFIX
参数:
-b:后面可接欲分割成的档案大小,可加单位,例如b、k、m等;
-l:以行数来进行分割。
4、参数代换xargs
xargs [-epn] command
-e:是eof的意思,后面可以接一个字符串,当xargs分析到这个字符串时,就会停止工作;
-p:在执行每个命令的参数时,都会询问用户的意思;
-n:后面接次数,每次command命令执行时,要使用几个参数;
当xargs后面没有接任何命令时,默认是echo输出。
- 7、认识bashshell
- LINUX——Bashshell资料(一)认识shell和各种变量
- LINUX——Bashshell资料(二)认识shell和各种变量
- LINUX——Bashshell资料(三)认识shell和各种变量
- Linux BashShell
- BashShell基础
- [BashShell]_[Shell编程]
- Linux BashShell 命令全称
- bashshell 的一些基本知识
- BashShell笔记 (一)
- bashshell 2 对bashshell一些补充 以及函数的使用
- 第1章 BashShell命令------------(tail、head)
- 第1章 BashShell命令------------(tar)
- 第1章 BashShell命令------------(设置环境变量)
- 第1章 BashShell命令------------(Linux安全性)
- 第1章 BashShell命令------------(vim编辑器)
- 免费分享Bashshell脚本编程视频教程!
- 实现登录概要监控的BashShell脚本
- How to Switch the Driving Table in a Hash Join (文档 ID 171940.1)
- 排序算法
- Kubernetes入门概念
- 如何表现营销型网站的互动性?
- 服务器端socket使用流程
- 7、认识bashshell
- 谈谈Objective-C的警告
- char和varchar的区别
- 集趣(及时通讯聊天)
- while,do while循环结构
- 南邮数据结构、算法实践周基础题3(哈夫曼树及其编码)
- Hadoop任务失败之解决过程
- url传参时特殊字符转换+&%
- Ubuntu14.04下 搭建Laravel框架