慕课网linux达人养成计划I 笔记整理(六)xshell/其他

一、C Shell : C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh

echo $SHELL  可以看到当前版本的shell

[root@localhost ~]# echo $SHELL
/bin/bash

二、echo 输出命令

echo [选项] [输出内容]
选项:
 -e 支持反斜线控制的字符转换
慕课网linux达人养成计划I 笔记整理(六)xshell/其他-张兴举的个人网站

[root@localhost ~]# echo -e "hell\bo"
helo
#删除左侧字符

[root@localhost ~]# echo -e "h\te\tl\nl\to"
h	e	l
l	o
#制表符与换行符

[root@localhost ~]# echo -e "\x68\t\x65\t\x6c\n\x6c\t\x6f\t"
h	e	l
l	o	
#按照十六进制ASCII码也同样可以输出

[root@localhost ~]# echo -e "\e[1;31m 张兴举测试 \e[0m"
 张兴举测试
#输出带颜色的
慕课网linux达人养成计划I 笔记整理(六)xshell/其他-张兴举的个人网站

三、写脚本

[root@localhost ~]# vi hello.sh
写代码进去
#!/bin/bash
#The first program
echo -e "\e[1;31m 这是我的第一个脚本 zhangxingju.com \e[0m"
赋予执行权限
chmod 755 hello.sh
./hello.sh

通过Bash调用执行脚本
[root@localhost ~]# bash hello.sh 
 这是我的第一个脚本 zhangxingju.com

四、Bash的基本功能
1、命令别名与快捷键
2、历史命令
3、输出重定向
4、多命令顺序执行
5、shell中特殊符号

五、什么是别名? 命令别名==人的小名

查看与设定别名

alias 
#查看系统中所有的命令别名

alias 别名= '原命令'
#设定命令别名
[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

alisa
颜色不同了
vim 有颜色 而且功能更强大 可以将vi设置为vim的别名

永久生效别名和删除别名

vi ~/.bashrc
#写入环境变量配置文件

unalias 别名
#删除别名 这里只是临时删除 真正删除还是去文件 bashrc中删除

六、命令生效顺序
第一顺位执行用绝对路径或相对路径执行的命令
第二顺位执行别名
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

七、常用快捷键

ctrl+c 强制终止当前命令   (ps:刚接触linux时,以为可以像WIN一样去复制,结果叮的一声,中止了输入,然后没辙的时候就被我作为退出用了,原来还是用错了)
ctrl+l 清屏   (clear 命令也是清屏)
ctrl+a 光标移动到命令行首
ctrl+e 光标移动到命令行尾
ctrl+u 从光标所在位置删除到行首
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索

八、历史命令

history [选项] [历史命令保存文件]
选项
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history

使用-w可以将目前有的历史命令写入到历史命令文件中,不用这个的话历史命令文件只有正常退出系统的时候会自动保存下来

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

慕课网linux达人养成计划I 笔记整理(六)xshell/其他-张兴举的个人网站

九、标准输入输出
标准输出
图片中的错了 应该是stdout stderr
stdout

十、输出重定向
输出

注意正确输出 左右两边有空格 错误的输出 右边没有空格  待测试
[root@localhost ~]# ifconfig > test.log
[root@localhost ~]# cat test.log 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FC:6D:69  
          inet addr:192.168.0.66  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fefc:6d69/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16270 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7387 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1477134 (1.4 MiB)  TX bytes:2453989 (2.3 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
慕课网linux达人养成计划I 笔记整理(六)xshell/其他-张兴举的个人网站

ls &>>/dev/null
写入这个文件 即不显示输出 也不保存在任何文件 但是确实执行了命令
画框的重要
重定向

十一、输出重定向

wc [选项] [文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数

[root@localhost ~]# wc -c hello.sh 
100 hello.sh
[root@localhost ~]# wc -w hello.sh 
10 hello.sh
[root@localhost ~]# wc -l hello.sh 
3 hello.sh
慕课网linux达人养成计划I 笔记整理(六)xshell/其他-张兴举的个人网站

十二、多命令顺序执行
多命令

[root@localhost ~]# ls && echo yes || echo no
anaconda-ks.cfg  hello.sh  install.log  install.log.syslog
yes
这写法有点像三元运算 但是第一个命令会执行  可以用来做判断

十三、管道符

命令1 | 命令2
#命令1的正确输出作为命令2的操作对象

例子
[root@localhost ~]# netstat -an | grep ESTABLISHED | wc -l
1
[root@localhost ~]# netstat -an | grep ESTABLISHED
tcp        0     64 192.168.0.66:22             192.168.0.103:53491         ESTABLISHED

十四、通配符
通配符

十五、其他特殊符号
其他符号

[root@localhost ~]# aa=ls
[root@localhost ~]# echo "$aa"
ls
[root@localhost ~]# aa=`ls`
[root@localhost ~]# echo "$aa"
anaconda-ks.cfg
hello.sh
install.log
install.log.syslog

建议使用$() 不用`` 这个看着像单引号

十六、单引号和双引号

[root@localhost ~]# name=boduo
[root@localhost ~]# echo '$name'
$name
[root@localhost ~]# echo "$name"
boduo
[root@localhost ~]# echo '$(date)'
$(date)
[root@localhost ~]# echo "$(date)"
2016年 08月 28日 星期日 06:44:17 CST