Shell编程基础教程1--Shell简介
1.Shell简介
1.1.查看你系统shell信息
cat /etc/shell 命令可以获取Linux系统里面有多少种shell程序
echo $SHELL 命令可以查看当前你所使用的shell是哪一个
1.2.查看文件信息,ls
ls -l 查看文件信息:文件类型、文件权限、文件硬链接数、文件所属用户、文件所属组、文件大小、文件最近修改时间、文件名
1.3.改变文件权限,chmod
只有root用户或者文件的所有者能改变文件的权限
例子: chmod u=rwx,g+w,o+r myfile 这个命令的含义是为myfile文件的所属用户添加rwx权限,为同组的其他用户添加w权限,为不同组的其他用户添加r权限
例子: chmod 644 myfile r:4, w:2, x:1
?rwx权限位之外s位和t位具体是什么意思?
1.4.改变文件的所属用户,chown
例子 chown owner.group myfile 改变myfile的拥有者为owner,所属组为group
例子 chown .group myfile 改变myfile的所属组为group
要想同时改变目录以及该目录下所有文件的所属用户/组,用-R, 例如 chmod -R owner.group mydir;如果不用-R参数,那么只能更改该目录的所属用户/组,而不会对该目录下的其他文件或目录产生影响
1.5.改变文件的所属组,chgrp
例子 chgrp group myfile 改变myfile的所属组为group
1.6.查看或更改生成文件的默认权限,umask
例子,查看生成文件的默认权限 umask 如果输出结果是022,就表明用户在创建一个文件后,该文件默认的权限是644,也就是rw-r--r--;创建的目录的权限是755,也就是rwx-r-xr-x,可以看下面的表格给出的规则
umask | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
文件 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 0 |
目录 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
例子,更改生成文件的默认权限 umask 000,就是改为000,具体规则参照上面的表格。
其实umask的值是在/etc/profile这个配置文件里设置的,对于特定的用户,可以在$HOME/.profile或者$HOME/.bash_profile设置自己的umask
1.7.符号链接,ln
硬链接, ln resource destination
软链接, ln -s resource destination
1.8.学习shell脚本的原因
shell脚本功能强大,比如对于一些重复性较多的操作,完全可以将个人解放出来,让计算机去做那些复杂的、重复的、浪费时间的、没有创造力的工作,而我们个人应该去做那些创新性的工作,不要傻不拉几地重复劳动
1.9.shell脚本的基本元素
#!/bin/bash 是shell脚本的第一行
# 表示注释
变量
流量控制结构
1.10.下面给出一个简单的shell脚本的例子,保存为hello.sh
#!/bin/shell
#这是一个打印hello world的shell脚本
printchar="hello world"
echo $printchar;
首先执行命令 chmod u+x hello.sh,让文件所属者有可执行权限。如果没有可执行权限,那么就不能执行这个脚本。
输出命令 ./hello.sh就可以执行这个shell脚本
1.11.shell的特性
别名;管道;命令替换;重定向;后台处理;模式匹配;变量;特殊字符;
1.12.别名
例子, alias 就是输出命令的别名,比如 cp 命令的别名就是 cp -i ,也就是在命令行输出 cp 命令的时候,也就等价于运行 cp -i 这个命令
例子, alias ll='ls -alh' 就是改变 ll 的别名为 ls -alh ,
一般别名的配置在 $HOME/.bashrc这个配置文件里,所以每个用户可以自定义自己习惯的别名
1.13.命令替换
比如myfile文件的内容是“myfile2”,那么$ cat myfile的结果就会输出“myfile2”,如果再执行命令 ls `cat myfile ` -al,就相当于执行 ls myfile2 -al 命令,注意是使用的反引号
1.14.后台处理
例如,输入命令 nohup tar -czf file.tar.gz file & ,那么这条tar -czf file.tar.gz file的命令就会在后台运行,就可以在前台继续工作,不会影响前台工作
输入命令 jobs -l ,可以查看后台的程序运行情况
1.15.变量
变量用来在运行过程中存储信息
1.16.管道
管道就是将一个命令的输出连接到另一个命令的输出
例如,输入命令 ls | sort ,就会对ls的输出的每行结果按字母顺序进行排序后在输出到命令行窗口中
1.17.重定向
与管道相关,可以改变程序运行的输入来源和输出地点
例如,本来 sort <myfile.txt >myfile_sort.txt, 就会将myfile.txt的内容作为输入传给sort程序,进行排序,并将结果输出到myfile_sort.txt的文件中
1.18.模式匹配
例如,输入命令 ls *.txt,就是查找并输出当前目录下所有以 .txt 结尾的文件或目录名称
学习正则表达式
1.19.特殊字符
双引号("):用来使shell无法认出空格、制表符和其他大多数特殊字符,这样的"David Jobs"表示一个值,而不是2个同样的"David < Jobs"表示一个值
单引号('):用来使shell无法认出所有特殊字符
反引号(`):用来替换命令
反斜杠(\):转义
分号(;):允许一个行上放多个命令
&:命令后台执行
():创建成组的命令
{}:创建命令块
|:管道表示符
<>&:表示重定向
*?[]!:表示模式匹配
$:变量名的开头
#:表示注释(第一行除外)
空格、制表符、换行符:当做空白
Shell编程基础教程1--Shell简介的更多相关文章
- Shell编程基础教程6--shell函数
6.shell函数 6.1.定义函数 简介: shell允许将一组命令集或语句形成一个可用块,这些块成为shell函数 定义函数的格式 ...
- 【shell编程基础1】shell变量篇
Bash shell bash shell 是bourne shell 的升级版,“bourne again shell”.ubuntu的默认shell. 预备知识 1. "#!" ...
- Shell编程基础教程5--文本过滤、正则表达式、相关命令
5.文本过滤.正则表达式.相关命令 5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令) 简介: 一种用来描述文本模式的特殊语法 ...
- Shell编程基础教程4--控制流结构
4.控制流结构 4.1.控制结构 4.2.if then else语句 格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...
- Shell编程基础教程3--Shell输入与输出
3.Shell输入与输出 3.1.echo echo命令可以显示文本行或变量,或者把字符串输出到文件 echo [option] string ...
- Shell编程基础教程2--变量和运算符
2.变量和运算符 2.1.变量的类型 本地变量:环境变量:变量替换(显示变量):位置变量:标准变量:特殊变量: 2.2.本地变量 本地变量在用户现在的shell生命周期的脚本中使用 在命令行, LOC ...
- Shell编程基础教程7--脚本参数的传递
7.脚本参数的传递 7.1.shift命令 简介: shift n 每次将参数位置向左偏移n位 例子 #!/bin/bash us ...
- 【shell编程基础2】shell组合应用之一:重定向和逻辑
这篇主要讲下 数据的重定向,在shell脚本中有些重要的输出重定向为文件的形式输出来 逻辑方式的多个命令组合,可以很方便的进行一些判断 数据流重定向 数据流重定向:大致上的意思就是本该输出到屏幕上的数 ...
- 【shell编程基础3】shell编程的组合应用之二:管道及其命令
预备知识: 管道:它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据. 它的符号是 "|" 管道只能处理经过前面一个命令传过 ...
随机推荐
- spring mvc 传参数
1.页面:(1)js传参数:location.href="${ctx }/forum/changeCtm.html?ctmId="+id; (2)将内容写在form表单里面,然后用 ...
- 2 DelayInterval延时间隔类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第二个部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnb ...
- hdu1054 树形dp&&二分图
B - Strategic Game Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- COGS 2434 暗之链锁 题解
[题意] 给出一个有n个点的无向图,其中有n-1条主要边且这些主要边构成一棵树,此外还有m条其他边,求斩断原图的一条主要边和一条其他边使得图不连通的方案数. 注意,即使只斩断主要边就可以使得原图不连通 ...
- Laplacian matrix 从拉普拉斯矩阵到谱聚类
谱聚类步骤 第一步:数据准备,生成图的邻接矩阵: 第二步:归一化普拉斯矩阵: 第三步:生成最小的k个特征值和对应的特征向量: 第四步:将特征向量kmeans聚类(少量的特征向量):
- css3 transition effect(其它效果)
http://blog.csdn.net/jerryvon/article/details/8755548 整理了一些其它动画,用的模板为flip模板,只不过CSS3不同 /************* ...
- 常见的SQL语句
1.select decode(a.xh,'','0','1')||decode(b.xh,'','0','1') from A a left join B b on a.xh=b.xh where ...
- Selenium2(webdirver)入门之环境搭建(Java版)
一.开发环境: 1.JDK1.6 2.Eclipse:Version: Kepler Service Release 1,下载地址:http://www.eclipse.org/downloads/ ...
- 开发简单的Kafka应用
之前基于集群和单机安装过kafka,现在利用kafka提供的API构建一个简单的生产者消费者的项目示例,来跑通kafka的流程,具体过程如下: 首先使用eclipse for javaee建立一个ma ...
- Zookeeper服务常用的操作命令
Zookeeper服务安装之后,一般会在这个服务的基础之上安装其他的大数据平台,其他的框架一般会提供很多接口对Zookeeper中的内容进行一定的操作,但是功能相对单一,所以有些时候,有必要我们自己登 ...