Linux学习笔记--day6(3.20)-----shell(一)
2018-03-20 20:50
369 查看
shell 的作用 :命令解释器
shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果反悔在标准终端上。
shell在Linux系统中的位置
![](//img-blog.csdn.net/20180320112203238?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
部分shell基础命令
1,历史命令 history [-raw] histfiles 默认写入~/.bash_history
默认显示最近的1000条。配置文件在/etc/profile中
![](//img-blog.csdn.net/20180320113045469?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
n:数字,就是要列出最近的n笔命令行表的意思
-a: 将目前新增的history命令新增如histfiles中,若是灭有加histfiles,则默认写入~/.bash_history
-w:将目前的history记忆内容写入histfiles中。
-a和-w的区别如下:
![](//img-blog.csdn.net/20180320114448893?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
历史口令的调用
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
命令别名配置功能(alias)
用grep命令做演示
![](//img-blog.csdn.net/20180320115544773?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
这样改,只是在当前可用,并不是全局可用。若想全局调用,则需要在/etc/profile下
增加 alias grep='grep --color=auto',这里最好是执行一下。
![](//img-blog.csdn.net/20180320194821512?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
删除别名
unalias 别名
多命令顺序执行
; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 逻辑与 命令1&&命令2 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不回执行
|| 命令1||命令2 逻辑或 当命令1执行不正确,则命令2才会执行
![](//img-blog.csdn.net/20180320195632679?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
如图:没有touch test.sh文件,所以ls不会显示,输出到黑洞,即不正确,那么good就不执行,执行not good
last 可以输出帐号、终端机、来源,日期时间,并且是排列整齐的。
tee
tee [-a] file
-a : 以累加的方式,将数据加入file当中
栗子:
[root@www~]# last | tee last.list| cut -d " " -f1
# 这个范例可以让我们将last 的输出存一份到last.list文件中;
[root@www~]# ls -l /home | tee ~/homefile| more
# 这个范例则是将ls 的数据存一份到~/homefile,同时屏幕也有输出信息!
[root@www~]# ls -l / | tee -a ~/homefile| more
# 要注意!tee 后接的文件会被覆盖,若加上-a 这个选项则能将信息累加。
shell 脚本
#! /bin/bash 是必须的,指出shell的类型
vim datewho.sh
![](//img-blog.csdn.net/20180320202343745?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
执行这个shell文件,有两种,第一个用sh直接执行,第二个先赋权限。
![](//img-blog.csdn.net/20180320202319500?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
shell中的变量和符号
变量的打印echo
![](//img-blog.csdn.net/20180320202615806?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
变量的赋值
![](//img-blog.csdn.net/20180320202738541?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
最后输出的时候最好加上{}。
变量法则:
1,变量和变量内容以一个等号来连接。如上所示
2,等号两边不能直接空格符。
3,变量名称只能是英文字母和数字,但开头字符不能是数字
4,变量内容中若有空格符,可使用双引号或者单引号将变量内容结合起来
5,单引号内的特殊字符则仅为一般字符 (纯文本)
6,若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量
7,取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的配置 unset myname
栗子:如何让我刚刚配置的name=zhangsan可以用在下个shell的程序?
[root@www~]#name=zhangsan[root@www~]#bash <==进入到所谓的子程序[root@www~]#echo $name <==子程序:再次的echo一下; <==嘿嘿!并没有刚刚配置的内容喔![root@www~]#exit <==子程序:离开这个子程序[root@www~]#exportname[root@www~]#bash <==进入到所谓的子程序[root@www~]#echo $name <==子程序:在此运行!zhangsan <==看吧!出现配置值了![root@www~]#exit <==子程序:离开这个子程序内部命令$# : 传送给shell程序的位置参数的数量$? : 最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他值表示有错$0 : shell程序的名称
$* : 调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数
$@ : “参数1 参数2”…形式保存的参数
$n : 第n个参数
$$ : 本程序的PID
![](//img-blog.csdn.net/20180320204754408?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L2x2eGlhb2ppYWh1bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果反悔在标准终端上。
shell在Linux系统中的位置
部分shell基础命令
1,历史命令 history [-raw] histfiles 默认写入~/.bash_history
默认显示最近的1000条。配置文件在/etc/profile中
n:数字,就是要列出最近的n笔命令行表的意思
-a: 将目前新增的history命令新增如histfiles中,若是灭有加histfiles,则默认写入~/.bash_history
-w:将目前的history记忆内容写入histfiles中。
-a和-w的区别如下:
历史口令的调用
使用“!n”重复执行第n条历史命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
命令别名配置功能(alias)
用grep命令做演示
这样改,只是在当前可用,并不是全局可用。若想全局调用,则需要在/etc/profile下
增加 alias grep='grep --color=auto',这里最好是执行一下。
删除别名
unalias 别名
多命令顺序执行
; 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 逻辑与 命令1&&命令2 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不回执行
|| 命令1||命令2 逻辑或 当命令1执行不正确,则命令2才会执行
如图:没有touch test.sh文件,所以ls不会显示,输出到黑洞,即不正确,那么good就不执行,执行not good
last 可以输出帐号、终端机、来源,日期时间,并且是排列整齐的。
tee
tee [-a] file
-a : 以累加的方式,将数据加入file当中
栗子:
[root@www~]# last | tee last.list| cut -d " " -f1
# 这个范例可以让我们将last 的输出存一份到last.list文件中;
[root@www~]# ls -l /home | tee ~/homefile| more
# 这个范例则是将ls 的数据存一份到~/homefile,同时屏幕也有输出信息!
[root@www~]# ls -l / | tee -a ~/homefile| more
# 要注意!tee 后接的文件会被覆盖,若加上-a 这个选项则能将信息累加。
shell 脚本
#! /bin/bash 是必须的,指出shell的类型
vim datewho.sh
执行这个shell文件,有两种,第一个用sh直接执行,第二个先赋权限。
shell中的变量和符号
变量的打印echo
变量的赋值
最后输出的时候最好加上{}。
变量法则:
1,变量和变量内容以一个等号来连接。如上所示
2,等号两边不能直接空格符。
3,变量名称只能是英文字母和数字,但开头字符不能是数字
4,变量内容中若有空格符,可使用双引号或者单引号将变量内容结合起来
5,单引号内的特殊字符则仅为一般字符 (纯文本)
6,若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量
7,取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的配置 unset myname
栗子:如何让我刚刚配置的name=zhangsan可以用在下个shell的程序?
[root@www~]#name=zhangsan[root@www~]#bash <==进入到所谓的子程序[root@www~]#echo $name <==子程序:再次的echo一下; <==嘿嘿!并没有刚刚配置的内容喔![root@www~]#exit <==子程序:离开这个子程序[root@www~]#exportname[root@www~]#bash <==进入到所谓的子程序[root@www~]#echo $name <==子程序:在此运行!zhangsan <==看吧!出现配置值了![root@www~]#exit <==子程序:离开这个子程序内部命令$# : 传送给shell程序的位置参数的数量$? : 最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他值表示有错$0 : shell程序的名称
$* : 调用shell程序时所传送的全部参数的单字符串, “参数1”“参数2”…形式保存的参数
$@ : “参数1 参数2”…形式保存的参数
$n : 第n个参数
$$ : 本程序的PID
相关文章推荐
- 写得蛮好的linux学习笔记 [转] 三vi,shell,grep使用
- 写得蛮好的linux学习笔记五-认识SHELL(收藏)
- linux的shell命令学习笔记
- 「学习笔记-Linux」学习Shell Script
- 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)
- [Linux学习笔记]第1天:操作系统的发展史,linux诞生,Linux发行商,shell,terminal,shell使用技巧,文件目录,基本操作
- Linux学习笔记-shell命令[转帖]
- python 学习笔记 8 -- Python下调用Linux的Shell命令
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第11章 认识与学习 bash
- 【Linux】Shell学习笔记之三——文件和目录管理(修改、查找)
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第12章 正则表达式与文件格式化处理
- 写得蛮好的linux学习笔记(压缩命令,vi一般用法,认识SHELL,正规表示法)
- linux-shell学习笔记
- 鸟哥的 Linux 私房菜第13章-学习 Shell Scripts 学习笔记
- Linux命令(shell)从入门到精通 学习笔记之1:文件安全与权限
- Linux命令学习笔记(更新:shell调试)
- Linux学习笔记:Shell基本功能
- Linux Shell学习笔记:exit退出状态代码
- Linux学习之shell笔记01
- Linux学习笔记-shell命令[转帖]