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

11.linux 认识与学习 BASH

2013-12-10 15:02 169 查看
1. 什么是shell
1、/bin/bash 是 Linux 默认的 shell
2、命令编修能力 (history):history !1002 执行
3、命令与文件补全功能: ([tab] 按键
4、命令别名配置功能: (alias) 例如:alias VI='vi'  (=符合两边没有空格)
5、type -a\-t ls 查看一个命令的说明和shell。
6、shell 变量
[root@localhost ~]# yangyi=phper //=两边都不能有空格
[root@localhost ~]# echo $yangyi
phper
[root@localhost ~]#
7、unset 变量:删除标量
8、declare 申明一个变量类型
[root@www ~]# declare [-aixr] variable
选项与参数:
-a  :将后面名为 variable 的变量定义成为数组 (array) 类型
-i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x  :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r  :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset

范例一:让变量 sum 进行 100+300+50 的加总结果
[root@www ~]# sum=100+300+50
[root@www ~]# echo $sum
100+300+50  <==咦!怎么没有帮我计算加总?因为这是文字型态的变量属性啊!
[root@www ~]# declare -i sum=100+300+50
[root@www ~]# echo $sum
450         <==ok

9、数组变量类型
[root@www ~]# var[1]="small min"
[root@www ~]# var[2]="big min"
[root@www ~]# var[3]="nice min"
[root@www ~]# echo "${var[1]}, ${var[2]}, ${var[3]}"
small min, big min, nice min

10、输出系统核心版本
[yangyi@localhost php]$ version=$(uname -r)
[yangyi@localhost php]$ echo $version
2.6.32-220.el6.x86_64

11、用env 查看系统环境变量

[yangyi@localhost php]$ env
HOSTNAME=localhost.yangyi
TERM=xterm
SHELL=/bin/bash
...........

12、用set 查看所有变量(含系统环境变量和用户自定义)
[yangyi@localhost php]$ set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
PS1='[\u@\h \W]\$ '
................

13、PS1的意义以及理解

PS1='[\u@\h \W]\$ ' 对应的是:[yangyi@localhost php]$

14、? 问号,是一个特殊癿变数?没错!在 bash 里面这个变量很重要!这个变数数是:『上一个执行的指令所回传的值』,也就是是
错误代码

yangyi@localhost php]$ echo $SHELL
/bin/bash
[yangyi@localhost php]$ echo $?
0
[yangyi@localhost php]$ sd = sd
-bash: sd: command not found
[yangyi@localhost php]$ echo $?
127
[yangyi@localhost php]$ echo $?
0 #又会变成0 ,因为只与上一个命令相关

15、标准输出
正确输出 1> 简写成> ,叠加用>>。标准错误输出2>,叠加用2>>
同时都要用2>&1

16、管道 (pipe) 用 | 表示。很牛逼的说。
我们一般这样用管道ps -aux|grep httpd
*** | ****
前面的标准输出作为| 后面的标准输入。所以翻译成管道。有点类似于smarty的模版语法{$time|date='y-m-d',####}

17、cut 管道命令。剪切
[root@localhost ~]# echo $PATH |cut -d ":" -f 1
/usr/lib64/qt-3.3/bin
[root@localhost ~]# echo $PATH |cut -d ":" -f 1,2
/usr/lib64/qt-3.3/bin:/usr/local/sbin
[root@localhost ~]# echo $PATH |cut -d ":" -f 1-3
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin
[root@localhost ~]# echo $PATH |cut -d ":" -f 4-
/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#

【语法】
-d :后面接分割字符。与-f 一起使用;
-f :依据 -d 的分割字符将一段讯息分割成为数段,用 -f 取出出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;

18、grep 管道命令,这个命令用的最广。这个是搜寻命令,在一段文档中搜寻关键字

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示!

[root@localhost ~]# last|grep -c 'Yangyi'
0
[root@localhost ~]# last|grep -i -c 'Yangyi'  #忽略大小写,统计次数
27
[root@localhost ~]# last|grep --color=auto 'yangyi' #将红色标出

2个常用的grep 管道命令
[root@localhost ~]# ps -ef|grep redis #查看redis进程是否在运行
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      1935  0.0  0.2  40456   836 ?        Ssl  Dec09   0:02 /usr/local/bin/redis-server /etc/redis.conf
root      8533  0.0  0.2 103252   848 pts/1    S+   11:37   0:00 grep redis
[root@localhost ~]#

[root@localhost ~]# netstat -tnl|grep 3306 #查看mysql的3306端口是否在运行
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
[root@localhost ~]#

19、wc 管道命令,统计面有多少字?多少行?多少字符
[root@www ~]# wc [-lwm]
选项和参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;

[root@localhost ~]# ll |wc
17     146     895
# 输出的三个数字中,分删代表: 『行、字数、字符数』

[root@localhost ~]# ll |wc -l # 统计有多少个文件

17、su 命令,切换账户。
需要切换用户的密码。从root 用户切换到普通用户,不需要输入密码。因为root牛逼啊。
加一个 - 表示彻底的切换,家目录等都切换过来了。
[yangyi@localhost ~]$ su - root
密码:123456
[root@localhost ~]#

18、sudo 命令,也是切换用户,但是与su不同的是输入的是自己的密码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: