认识和使用bash
来源:互联网 发布:阿里云数据库种类 编辑:程序博客网 时间:2024/06/02 13:13
一.认识bash
1. 简介
想要使用bash,第一步首先就需要了解bash是个什么东东?那bash到底是个什么东西呢,简单来说他就是个shell,那shell又是个什么玩意儿呢,你可以这么理解shell,他就是个壳,是操作系统的壳,而通过操作系统的核你可以去使用计算机的各种资源。百度上给的解释是一个命令解释器,就是说无论你在计算机上做什么操作,最后还是会调用到计算机的资源的,无论是计算资源还是存储资源。而这些资源都是被操作系统的核所管理的,而想要使用操作系统的核只能通过shell来解析你所下发的命令,比如我想放一首歌,我可以作为一个应用程序,我下发了一个命令:放歌,然后shell接收到了,并解释过后告诉内核,调用声卡声驱去播放歌曲;
2.功能
a.命令的记忆能力:简言之就是能记住你执行过的命令,按上下健即可;
b.命令与文件的补全能力:按tap键就能补全未输入完的命令和文件名;
c.命令别名的设置能力:即可以使用诸如alias lm = 'ls -al'这种命令来修改命令的别名;
d.作业,前台,后台控制:让作业更为顺利;
e.脚本:创建类似批处理的脚本,可以将需要的命令写入一个文件内;
f.通配符:类似/usr/*之类的通配符喽;
3.内置区分命令type
bash本身是内置了一些命令,类似与cd这种简单的命令,但是为了linux功能的完善,其他软件也提供了很多命令,类似vim等,那么如何区分呢?
这就需要用到type这个命令,下面看看type的用法:
type -[tpa] name;
参数:
不加参数:显示是外部命令还是内部命令;
-t:加入一些解释的字眼:
file:表示外部命令;
alias:表示该命令为命令别名所设置的名称;
builtin:表示为bash内置的命令功能;
-a:会有PATH变量定义的路径中,将所有含name的命令都列出来
下面就以vim和cd这两个为示例看一下:
[giyoo@localhost ~]$ type cd
cd 是 shell 内嵌
[giyoo@localhost ~]$ type vim
vim 是 /usr/bin/vim
[giyoo@localhost ~]$ type -t cd
builtin
[giyoo@localhost ~]$ type -t vim
file
[giyoo@localhost ~]$ type -p cd
[giyoo@localhost ~]$ type -p vim
/usr/bin/vim
[giyoo@localhost ~]$ type -a vim
vim 是 /usr/bin/vim
vim 是 /bin/vim
[giyoo@localhost ~]$ type -a cd
cd 是 shell 内嵌
cd 是 /usr/bin/cd
cd 是 /bin/cd
[giyoo@localhost ~]$
二.shell的变量功能
1.变量的显示与设置
变量的显示就会使用到echo这个命令,下面看一下详细的用法:
这里使用echo显示变量的时候需要加上$符号
[giyoo@localhost ~]$ echo $HOME
/home/giyoo
[giyoo@localhost ~]$ echo $MAIL
/var/spool/mail/giyoo
[giyoo@localhost ~]$
修改:
[giyoo@localhost ~]$ #修改其实比编程中声明变量要简单的多,只需要一个等号就好,例如:
[giyoo@localhost ~]$ echo $city
[giyoo@localhost ~]$ city=shanghai
[giyoo@localhost ~]$ echo $city
shanghai
[giyoo@localhost ~]$
这样就一目了然了。这里还要说明下反单引号的使用
1.反单引号内如果包含变量那么变量只是一个一般字符并不代表变量,双引号则依旧代表变量;
2.反单引号如果在一串命令内的话,那么反单引号内的命令会被先执行;
[giyoo@lo
2.环境变量
环境变量可以帮助我们达到很多功能,用过java的人一定对环境变量很熟悉,那么我们要如何查看linux中的环境变量呢,其实就是env和export两个命令,另外介绍下一些主要的环境变量:
HOME:主文件夹;
SHELL:目前环境的SHELL;
HISTSIZE:历史命令记录的个数;
PATH:执行文件查找的路径;
LANG:使用的语系;
RANDOM:随机数;
另外还可以使用set查看所有的变量,包括自己声明的变量,另外$和?也是两个变量,$就是PID,而?则代表你输入命令的回传码;
最后介绍下"export 变量名称”这个用法,这是将自定义的变量设置成环境变量的方法;
3.变量的读取,数组与声明:read,array,declare
read:读取键盘的命令是使用read这个命令,常用在shell脚本的编写当中;
用法:
read [-pt] variable
-p:后面可以接提示符;
-t:接等待用户输入的秒数;
示例:
[giyoo@localhost ~ 14:53:29 #25]$read -p "please input your name" -t 30 name
please input your name
[giyoo@localhost ~ 14:54:24 #27]$echo $name
giyoo
[giyoo@localhost ~ 14:54:35 #28]$
declare/typeset:声明变量的类型
用法:
declare [-aixr] variable
-a:将后面的变量定义为数组类型;
-i:将后面的变量定义为整数类型;
-x:将后面的变量定义为环境变量;
-r:将变量设置为readonly类型,该变量不能被更改和重设;
数组的声明就类似与变量的声明了,var[index]=content,这里不多谈了;
4.变量的删除,替代与替换
变量的删除
变量的删除其实只要记住#,##,%,%%这四个符号即可了,#代表从左往右删除最短的变量内容,##代表最长的,%,%%方向与#,##相反;
示例:
[giyoo@localhost ~]$ path=${PATH}
[giyoo@localhost ~]$ echo $path
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/giyoo/.local/bin:/home/giyoo/bin
[giyoo@localhost ~]$ #这时我想要删除带有local/bin的一行
[giyoo@localhost ~]$ echo ${path#/*local/bin}
:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/giyoo/.local/bin:/home/giyoo/bin
[giyoo@localhost ~]$ #删除前面所有变量仅留最后一个
[giyoo@localhost ~]$ echo ${path##/*:}
/home/giyoo/bin
%的用法同#;
变量的替换
变量的替换就很简单了,看下面的例子即可:
[giyoo@localhost ~]$ echo $path
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/giyoo/.local/bin:/home/giyoo/bin
[giyoo@localhost ~]$ echo ${path/giyoo/GIYOO}
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/GIYOO/.local/bin:/home/giyoo/bin
[giyoo@localhost ~]$ echo ${path//giyoo/GIYOO}
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/GIYOO/.local/bin:/home/GIYOO/bin
[giyoo@localhost ~]$ 一个/表示替换第一个,//代表替换全部
变量的测试与内容替换
[giyoo@localhost ~]$ echo $username
[giyoo@localhost ~]$ username=${username:-root}
[giyoo@localhost ~]$ echo $username
root
[giyoo@localhost ~]$ :-这两个字符表示对username变量赋值
三.命令别名与历史命令
1.命令别名设置:alias,unalias
这里就简单举两个例子即可:
[giyoo@localhost ~]$ #例如我经常使用ls -ai或者其他命令的时候,每次都要打出全部命令会很麻烦,所以我就使用alias设置个别名
[giyoo@localhost ~]$ alias lk='ls -al'
[giyoo@localhost ~]$ lk
总用量 104
drwx------. 18 giyoo giyoo 4096 5月 11 12:21 .
drwxr-xr-x. 4 root root 4096 5月 3 18:45 ..
drwx------. 3 giyoo giyoo 4096 5月 5 09:25 .adobe
-rw-------. 1 giyoo giyoo 1870 5月 10 23:38 .bash_history
-rw-r--r--. 1 giyoo giyoo 18 8月 3 2016 .bash_logout
-rw-r--r--. 1 giyoo giyoo 193 8月 3 2016 .bash_profile
-rw-r--r--. 1 giyoo giyoo 231 8月 3 2016 .bashrc
drwx------. 16 giyoo giyoo 4096 5月 9 13:00 .cache
drwxr-xr-x. 16 giyoo giyoo 4096 5月 10 09:50 .config
-rw-------. 1 giyoo giyoo 16 5月 3 20:11 .esd_auth
-rw-------. 1 giyoo giyoo 3724 5月 11 12:21 .ICEauthority
drwx------. 3 giyoo giyoo 4096 5月 3 20:11 .local
drwx------. 3 giyoo giyoo 4096 5月 5 09:25 .macromedia
drwxr-xr-x. 5 giyoo giyoo 4096 5月 3 23:17 .mozilla
drwxrw----. 3 giyoo giyoo 4096 5月 5 09:07 .pki
drwxr-xr-x. 3 giyoo giyoo 4096 5月 3 20:11 .redhat
-rw-------. 1 giyoo giyoo 4099 5月 4 17:09 .viminfo
[giyoo@localhost /]$ #取消设置
[giyoo@localhost /]$ unalias lk
[giyoo@localhost /]$ lk
bash: lk: 未找到命令...
2.历史命令:history
历史命令顾名思义就是提供命令历史的服务,就是你按下上下键时显示的命令,那我们来看看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.路径与命令查找顺序
命令的查找顺序简言之就是先alias再builtin再由$PATH找到/bin/echo
[root@localhost /]# #设置echo别名echo -n,然后在查找echo执行的顺序
[root@localhost /]# alias echo='echo -n'
[root@localhost /]# type -a echo
echo 是 `echo -n' 的别名
echo 是 shell 内嵌
echo 是 /usr/bin/echo
echo 是 /bin/echo
[root@localhost /]#
2.登陆设置
登陆设置主要就是在/etc/issue和,/etc/motd中设置
其中/etc/issue主要设置登陆界面上的信息,而/etc/motd则是登陆后显示的提示信息,etc/issue设置与PS1这个变量设置相同,有兴趣的可以查看PS1这个变量的用法,/etc/motd则是自己随意输出的提示信息;
3.环境设置
stty -a 查询按键以及按键内容;
set [-uvCHhmBx] 设置整个输入输出的环境,因为目前linux的操作环境默认情况下已经很好了,所以这些设置基本用不到,这里就不详细介绍了;
4.通配符
bash中有很多有用的通配符,下面我们就来看看有哪些通配符。
* :代表0到无穷多个字符;
? :代表一定有一个任意字符;
[] :代表一定有一个在括号中的字符;
[-] :若有减号在中括号时,代表在编码顺序内的所有字符:
[^] :若中括号中的第一个字符^,表示原向选择,即除了中括号中字符的其他字符;
- 认识和使用bash
- 认识和学习bash
- 认识和学习bash
- 认识和学习 Linux BASH
- 初步认识和学习BASH和shell
- Linux之认识和学习bash
- Linux之认识和学习Bash
- 第11章 认识和学习bash
- 认识和使用COleVariant
- securCRT 使用和认识
- Maven认识和使用
- 认识和使用NSOperation
- 认识和使用NSOperation
- 认识和学习BASH(Bourne Again SHell)
- bash初认识2环境变量和自定义变量
- 【鸟哥的Linux私房菜】认识和学习BASH
- 认识 BASH Shell
- 认识 BASH Shell
- 聚类算法之层次聚类算法和应用举例
- Linux下基于Anaconda安装TensorFlow
- mysql 命令3
- cms
- 再学JAVA之——数据类型
- 认识和使用bash
- 一个例子
- Linux学习——第2章 Linux系统安装(2)
- Spring JdbcTemplate方法详解
- DUBBO配置规则详解
- serialVersionUID的作用
- Java线程】Java内存模型总结
- Android RecyclerView瀑布流位置变化和顶部留白问题
- 林奕含《房思琪的初恋乐园》全文/原文