Linux学习-shell(二)

1、什么是shell?
shell是位于操作系统最外一层,为用户使用操作系统提供界面的软件,也即是命令解释器(用户命令解释为内核识别的机器语言)。shell分为图形界面shell(GUI shell 如Windows 图形界面 win explorer)和命令行shell(CLI shell),不过一般我们说的shell是指CLI shell。shell(CLI shell)一般分为 Bourne shell(包括 sh,ksh, bash)和 C shell(包括 csh and tcsh)。我们常使用的就是Bourne Again shell(bash).
shell 脚本本质上是包含shell命令的文件!
注意:编写shell文件命令时虽然#表示注释,但是开头第一行必须是#!/bin/bash 用来告诉操作系统下面是shell 命令,虽然有些命令echo 不加这一行也可以执行,但是要执行其他的复杂命令就需要这一行做标志。
2、执行shell文件的方式
>1、使用绝对路径 或当前路径 前提是要修改文件权限,使其可以被执行u+x

/dirtest/hello.sh
./world.sh

2、bash 文件 不需要修改文件权限即可执行 在当前父shell环境中打开一个子shell执行,结束关闭子shell。

bash /dirtest/hello.sh

3、source 文件 不需要修改权限 在当前父shell环境中执行

source hello.sh

3、别名与快捷方式

别名
alias 查看系统中的别名命令 比如 alias ll=‘ls -l --color=auto’
自己修改别名 alias lh=‘ls -alh’
unalias 删除别名
以上只能暂时修改,重启将不再生效,因此如果想永久生效应该使用用户家目录下bashrc文件 永久修改 添加行:alias lh=‘ls -alh’

快捷键:
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+z 后台执行
ctrl+a 光标移到命令行首
ctrl+e 光标移到命令行尾
ctrl+u 从光标处删除至行首

4、历史命令
history 显示该用户所有的使用过的命令

[root@localhost ~]# history    
    1  su -root
    2  su -
    3  su 
    4  su root
    ...............
     654  ls -alh
    
[root@localhost ~]# !654   //执行编号为654 的ls -alh 命令
[root@localhost ~]# !!       //执行上一条命令 与上箭头一样 不过是多加执行

[root@localhost ~]# !l         //! 字符   自动匹配最近一次相匹配的命令 如 ls -alh

5、重定向
文件描述符
0 标准输入
1 标准输出
2 错误输出

   >以覆盖的方式把命令结果从输出至屏幕重定向为输出至文件或设备
   >>以追加的形式把命令结果从输出至屏幕重定向为输出至文件或设备
[root@localhost ~]# ls -alh >test.log   //覆盖方式

[root@localhost ~]# ls -alh >> test.log     //追加

这种只是适合正确命令执行结果,而对于错误输出2> 或 2>>并不适合,因而出现应对正确和错误输出的方式

[root@localhost ~]# ls -alh &>test.log   // 覆盖  正确输出和错误输出都输出
[root@localhost ~]# ls -alh &>>test.log  // 追加  正确输出和错误输出都输出

正确输出和错误输出至各自文件

[root@localhost dirtest]# ld -alh >>f1 2>>f2       //正确结果输出至f1 错误输出值f2

Linux 黑洞null 相当于window垃圾箱

[root@localhost dirtest]# ls &>/dev/null               //结果不需要显示在界面 不影响自己使用界面

输入重定向 (不常用)

wc [选项][文件名]
-c    统计字符数
-w   统计单词数
-l   统计行数
[root@localhost dirtest]# wc f1
  46  400 2312 f1

[root@localhost dirtest]# wc                        //ctrl+d 执行结果
asd
qwe
we r eww
      3       5      17

6、多命令执行顺序
; 分号 用于分割顺序执行的命令,命令按顺序执行,且各个命令执行顺序不相关,即使某个错误,其他执行不影响
&& 逻辑与 左边命令执行成功,则右边命令执行,否则右边命令不执行
II 逻辑或 如果左边命令不能正确执行,则右边命令执行,否则执行右边命令

[lr@localhost ~]$ date;ls -alh;date     //命令按顺序执行,命令开始和结束加上时间 可以显示命令执行的时间 不过 如果其中命令错误 时间也会计在其中

[root@localhost lr]# ls -alh >/dev/null && echo yes     //不看命令执行过程结果 只输出命令正确执行的个数 即yes 输出的个数  /dev/null linux中的黑洞 相当于垃圾回收站
[root@localhost lr]# ls -alh >/dev/null && echo yes >/dirtest/dir2.log    //命令执行过程不看 把正确执行的命令 以yes方式输出到文件中

ld -alh >/dev/null && echo yes || echo no     //命令正确执行输出yes 错误执行输出no

7、管道符
命令1 | 命令2 … 命令1的执行结果作为命令2的执行输入 命令2要可以执行命令1的输出

[root@localhost lr]# netstat -an |grep  ESTABLISHED |wc -l   // 查看网络端口状态 在结果中查找 ESTABLISHED 已经建立连接的用户  在统计行数 结果就是用户连接数

8、通配符

?		代表任意一个字符
*       代表任意0个或多个字符
[]		代表括号中的任意一个字符
[-]     代表括号内范围字符中任意一个
[^]	代表括号内字符取反 不包含字符中一位  	
[root@localhost dirtest]# ls ?F          // 匹配一个任意字符    **ls 加文件名 表示当前目录下查找**
FF

[root@localhost /]# find ./dirtest  -name *1*
./dirtest/dir1
./dirtest/dir2/d1.zip
./dirtest/dir2/dir1
./dirtest/practice/file/file1.txt
./dirtest/file1.tar.gz
./dirtest/file1.txt
./dirtest/f1

[root@localhost /]# find ./dirtest/ -name *[0-9].txt
./dirtest/practice/file/file1.txt
./dirtest/file1.txt
./dirtest/file2.txt
[root@localhost /]# find ./dirtest/ -name *[0-9].txt
./dirtest/practice/file/file1.txt
./dirtest/file1.txt
./dirtest/file2.txt
.......

9、bash中的其他其它特殊符号

‘’     	单引号  所有特殊符号都没有特殊含义,比如$、·      
“”		双引号  除$(引用变量)、·(反引号 引用命令)、\(转义字符)外其他特殊符号都没有特殊含义
·· 		反引号,内部为系统命令,在bash中会先执行它,作用与$()相同,由于容易看错,因此推荐使用$()
$()	与反引号一样,用来引用系统命令
#		在shell脚本中,#开头代表注释
$		用于调用变量的值 如$name
\		转义字符,使其失去特殊含义 如\$ 就是字符$没有引用变量的含义
[root@localhost /]# echo '$value'
$value
[root@localhost /]# echo '555'
555

[root@localhost /]# echo "$value"
666
[root@localhost /]# echo "$value 666"      //空格隔开
666 666
[root@localhost /]# echo $(ls -alh /dirtest)
总用量 96K drwxr-xr-x. 6 root root 4.0K 11月 9 11:18 . dr-xr-xr-x. 19 root root 
....
[root@localhost /]# value=888
[root@localhost /]# echo $value
888
[root@localhost /]# echo "$value"
888
[root@localhost /]# echo "\$value"
$value
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值