【shell】shell编程总结
Date: 2018.9.22
1、参考
https://blog.csdn.net/sprita1/article/details/42676307
https://blog.csdn.net/zongshi1992/article/details/71693045
2、linux shell 简介
Linux Shell是用户和Linux内核之间的接口程序,为用户提供使用操作系统的接口。当从Shell向Linux传递命令时,内核会做出相应的反应。
Shell是一个用户程序,或是一个为用户与系统交互提供的环境。它是一个执行从标准输入设备(比如键盘或文件)读入的命令的语言解释程序,它拥有自己内建的Shell命令集,Shell也能被系统中其他应用程序所调用。
当你登录或打开控制台时Shell就会运行,Shell不是系统内核的一部分,但是它使用系统内核执行程序,创建文件等。
我们可以通过多种方式来访问和使用Shell:
- 终端 – Linux桌面提供基于GUI的登录系统。一旦登录你就可以通过运行X终端(XTerm)、Gnome终端(GTerm)或KDE终端(KTerm)应用程序来访问Shell。
- 安全Shell连接(SSH)- 可以通过它远程登录服务器或工作站来访问其Shell。
- 使用控制台 – 一些Linux系统同样提供基于文本的登录系统。通常情况下,登录系统后就可以直接访问Shell。
Shell脚本是Linux/Unix编程环境的基本组成部分。
Shell脚本一般由以下几部分构成:
Shell关键字 - 例如if…else,for do…done
Shell命令 - 例如export,echo,exit,pwd,return
Linux命令 - 例如date,rm,mkdir
文本处理功能 – 例如awk,cut,sed,grep
函数 – 通过函数把一些常用的功能放在一起。例如,/etc/init.d目录中的大部分或全部系统Shell脚本所使用的函数都包含在文件/etc/init.d/functions中。
控制流语句 – 例如if…then…else或执行重复操作的Shell循环。
每个Shell脚本都有它的用途,例如,备份文件系统和数据库到网络存储服务器。Shell脚本可以像Linux下的一个命令一样被执行。
3、shell常用基础用法
shell基础用法
shell基础知识:for循环,字符串提取${},字符串比较
shell下获取指定目录及子目录下的所有文件或指定文件
正则表达式用法:匹配不包含字符串
Shell中获取字符串长度的七种方法
Shell部分功能总结:grep,eval,continue
linux 查看文件夹以及文件大小数目等信息
4、 EOF用法
EOF是END of File的缩写,表示自定义终止符。既然自定义,那么EOF就不,是固定的,可以随意设置别名在linux按ctrl-d就代表EOF.
EOF一般会配合cat能够多行文本输出。
[email protected]:~/Desktop$ cat <<EOF
> abc
> def
> EOF
abc
def
追加到文本中:
[email protected]:~/Desktop$ cat a.txt
abc
def
[email protected]:~/Desktop$ cat <<EOF >>a.txt
123
EOF
[email protected]:~/Desktop$ cat a.txt
abc
def
123
[email protected]:~/Desktop$
5、shell变量
varName=varValue
注意:=左右不要有任何空格;变量名是大小写敏感的。
打印变量的方法:
var="teststring"
printf "var:%s\n" $var
echo $var"\n"
变量引用:
${variable}
6、常用bash shell命令
ls 命令可以列出文件和目录的信息,包括文件类型、所有者、大小、修改日期和时间、权限等等。
cat 命令可以查看文件的内容、连接文件、创建一个或多个文件和重定向输出到终端或文件。
more 命令在你使用小的xterm窗口时,或是想不使用文本编辑器而只是简单地阅读一个文件时是很有用的。它是一个用于一次翻阅一整屏文件的过滤器。
less 命令与more 命令类似,但less命令向前和向后翻页都支持,而且less命令不需要在查看前加载整个文件,即less命令查看文件更快速。当你尝试在Vim编辑器和less打开同一个大的log文件,你会发现速度是不同的。
head 命令用于打印指定输入的开头部分内容。默认情况下,打印每个指定输入的前10行内容。
tail 命令与head命令相反,它打印指定输入的结尾部分的内容。默认情况下,它打印指定输入的最后10行内容。
file 命令用于接收一个文件作为参数并执行某些测试以确定正确的文件类型。
wc 命令用于查看文件的行数,单词数和字符数等信息。
find 命令用于根据你指定的参数搜索和定位文件和目录的列表。find命令可以在多种情况下使用,比如你可以通过权限、用户、用户组、文件类型、日期、大小和其它可能的条件来查找文件。
touch 命令用于创建,变更和修改文件的时间戳。它是Linux操作系统的标准程序。
mkdir 命令用于创建一个新目录。
cp 命令用于将文件从一个地方拷贝到另一个地方的命令。原来的文件保持不变,新文件可能保持原名或用一个不同的名字。
ln 命令用于创建软链接或硬链接。
mv 命令用于将文件和目录从一个位置移到另外一个位置。除了移动文件,mv命令还可用于修改文件或目录的名字。
rm 命令用于删除指定的文件和目录。
chmod 命令用于修改文件或目录的权限。
chown 命令用于修改文件或目录的所有者和用户组信息。
chgrp 命令与chown 命令类似,但chgrp命令只用于修改文件或目录的用户组(不能修改所有者)。
setuid 命令 设置用户标识是允许用户以文件所有者的权限执行一个程序的权限位。setgid(设置组标识)是允许用户以用户组成员的权限执行一个程序的权限位。
sort 命令用于将文本文件的行排序。默认情况下,sort命令是按照字符串的字母顺序排序。
uniq 命令用于移除或发现文件中重复的条目。
tr 命令用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出。
grep 命令用于搜索文本或指定的文件中与指定的字符串或模式相匹配的行。
diff 命令用于比较两个文件,并找出它们之间的不同。
hostname 命令用于查看系统的主机名,或是修改系统的主机名。
w 命令用于显示登录的用户及他们当前运行的进程。who 命令有与w 命令类似的用途,但它的功能比w命令更强大一些。
uptime 命令用于打印系统的运行时间等信息。
uname 命令用户打印内核名称和版本、主机名等系统信息。
date 命令用于以多种格式显示日期和时间,或设置系统的日期和时间。
id 命令用于打印输出用户的uid、gid、用户名和组名等用户身份信息。
7、bash shell命令进阶
paste 命令用于合并一个文件或多个文件中的行。
dd 命令可用于备份一个分区、DVD或是U盘的数据,转换数据文件,或是做一些简单的硬盘或CPU速度的测试。它可以通过可能的转换格式拷贝指定的输入文件到指定的输出。
gzip 命令用于压缩文件,以减少文件的大小,可以节省文件通过网络传输时所占的带宽。它可以指定从1到9的9个压缩级别,级别1是最快的压缩速度,但压缩率较低,而级别9是最慢的压缩速度,但压缩率最好。默认的压缩级别是6。
bzip2 命令也同样用于压缩或解压缩文件。与gzip相比,bzip2命令具有更好的压缩率,但bzip2的压缩速度比gzip稍慢。bzip2以可接受的速度提供较高的压缩率。bzip2同样有9个压缩级别,其含义与gzip的含义类似。但它的默认压缩级别是9。
gunzip 和bunzip2 命令分别用于解压缩由gzip和bzip2生成的压缩包。
tar 命令是Linux系统中主要的归档工具。使用tar命令归档后生成的文件被我们称作为tar包。
mount 命令用于挂载一个文件系统。挂载和卸载一个文件系统,通常都需要root账户权限。使用mount命令挂载一个文件系统时,需要目标目录(即挂载点)已存在。
umount 命令用于卸载一个文件系统或设备。在卸载指定的文件系统或设备前,要确保其没有被任何进程占用,否则会卸载失败。
df 命令用于显示文件系统的可用的磁盘空间的数量。
du 命令用于概述每个文件和目录所占磁盘空间的大小。
cron 是执行定时计划任务的守护进程。cron进程会周期性地在目录/var/spool/cron/crontabs/下搜索由crontab命令生成的(也可能由用户使用文本编辑器生成,但建议使用crontab命令)定时计划任务文件(定时计划任务文件以创建此任务的账户名命名),并将找到的这些定时计划任务载入内存。
crontab 命令用于创建、修改、删除和查看定时计划任务。
at 命令用于安排一个任务在指定的时间运行。at命令可以从标准输入读入命令,也可以从指定的文件中读入,然后在指定的时间运行这些命令。
字符‘&’用于将命令放在后台运行。它是Bash内置的用于并行处理进程的一个控制操作符。
nohup 命令可以防止当你退出系统时,你在后台运行的进程被终结。它能让你运行的命令或脚本在你登出系统后继续在后台运行。
8、shell编程基础(第5章)
说明:
后续结合详解PPT(第5章~第15章)和《Linux与unix shell编程指南.pdf》完成shell编程总结,并输出一份总结ppt。
10、shell编程实战
持续更新ing
THE END!
上一篇: html中替代批量 的方法
下一篇: Shell总结