Shell简单参考入门程序

0 前言

此篇博客给出一个初级的shell程序,并且附带讲解。适合新入门的同志们品味。

编写Shell的时候,尽量在Linux系统里,用自带的编辑工具去写。如果用WIndows的编辑器写的话,放到LInux里可能会出现无法预知的因编码格式引发的错误。

例如Windows 的notepad++ ,里面编写的程序放到Linux里就不可以用了。

所以尽量在Linux里编写。

这里用的是Kali虚拟机的 MousePad,一个正常的 Linux 编辑器。

在VIm里编写东西简直就是折磨.....

同时,当下国内的shell教程(网上的),例如菜鸟网的,C语言网的,W3School网的,还有许多博客。都不是那么好,示例程序都很少,语法解释的莫名奇妙,一些常见的shell编写的错误和问题,既没有提出,也没有仔细的讲。导致学习的人抓狂。

有机会还是建议看教学视频。而不是这些文本教程。这就是面授课的好处。

0.1 shell初试

A.建立一个shell程序,并且打开编辑。

vim ./Myfirst.sh

B. Vim编辑器里,键入 i 进入编辑模式。 依次键入 Esc : wq 执行写入并退出VIm。
tips:Esc yy 复制一行 Esc p 粘贴一行

#!/bin/bash
echo 'Hollo World!'

C. 为新建的脚本赋予权限

chmod a+x ./Myfirst.sh		# 为每一个用户(a)添加(+)执行权限(x)
./Myfirst.sh				# 程序运行

1 程序功能

整个程序使用的是 if fi 的控制语句,来进行条件分支的走向。搭配标准的 shell命令。

1.1 对应程序的第一个功能,依次类推。

代码 read op让用户输入,把值赋予 op

1.1 显示当前主机名和IP地址。

hostname		# 显示主机名
hostname -I		# 显示IP地址

1.1.1 if 语句 详解

切记, [ ] 每一个 [ 都要在附近留有空格,否则会报错。

if [  ];then
	echo "if"
elif [  ];then
	echo "elif"
else
	echo "else"
fi

很多人看到上面的流程控制都蒙了,为什么这样写呢?把整个语句,与shell命令行的方式结合在一起就好理解多了。

大家可以想一想,如果不像上述那么写,怎么在shell里编写几行的语句?

应用标准的 Shell if格式则可以很好的在Shell里运行。

Shell简单参考入门程序

Shell简单参考入门程序

1.2 创建目录或者文件

首先键入工作路径,如果路径存在就接着运行,否则提示路径不存在,退出。若路径存在,提示键入目录或文件名字。创建目录或文件。

根据输入,匹配正则表达式,如果存在 ’.’ 即存在文件后缀就创建文件,否则创建目录。修改完成后显示结果退出程序。

1.3 修改文件属性

首先键入工作路径,如果路径存在就接着运行,否则提示路径不存在,退出。若路径存在,提示键入目录或文件名字。

若目录或文件存在,则进行下一步,否则提示不存在并退出脚本。目录或文件。利用 chmod 的数字修改方法。

修改完成之后,显示结果。退出程序。

1.3.1 chmod 修改文件属性详解

修改文件或目录属性虽然还有别的命令可以使用。但是还是推荐 chmod(修改) 搭配 ls -al(显示)。

Linux里权限的显示有9个字符

drwxrwxrwx

0个字符 **d ** 表示这是一个目录 - 表示文件。

1-3个字符 rwx 表示 本用户的权限 r表示读权限 w 表示写权限 x 表示执行权限

4-6个字符 rwx 表示 本用户所属组的权限 r表示读权限 w 表示写权限 x 表示执行权限
7-9个字符 rwx 表示 其他组其他用户的权限 r表示读权限 w 表示写权限 x 表示执行权限

本用户相当于你自己,本用户所属组相当于你的家庭,其他组其他用户相当于其他家庭其他人。

字符 rwx 可以用数字表示。也是常用的 chmod(修改)方法。

r 4

w 2

x 1

组合的rwx 则以响应符号的加法表示。

rwx 7

rw- 6

r-- 4

--x 1

rwxrwxrwx 777

chmod 721 ./Myfirst.sh 赋予 rwx--w--x权限。

That's all!

1. 4 退出脚本

2 程序

#!/bin/bash
echo `date`
printf "%-4s %-20s\n" 'Command' 'Function'
printf "%-4s %-20s\n" '1' 'Show HostName and IpAddress'
printf "%-4s %-20s\n" '2' 'Make Directory or File'
printf "%-4s %-20s\n" '3' 'ChangeMod for Directory or File'
printf "%-4s %-20s\n" '4' 'Exit'
echo "Please enter your choice!"
read op
# we need use [ $intA -eq ($intB | [1,2,3...]) ] to judge number. Notice the blank in [  ].  
if [ $op -eq 1 ];then
	printf "%-10s" 'HostName:' `hostname` 
	printf "%-10s" 'IpAddress:' `hostname -I`
elif [ $op -eq 2 ];then
	echo "Before we creating a Directory or File, we need you to ensure your WorkSpace! Enter with an absolute path!"
	read path
	# Check whether a Dir exists.
	if [ -d "$path" ];then
		echo `cd $path` 
		echo "WorkSpace: " `pwd`
		ls
		echo "Enter your Dir or File, we will create it!"
		read DirOrFile
		# Use [[  ]] and `` to match regular expressions.
		if [[ "$DirOrFile" =~ '.*\..*' ]];then
			touch $DirOrFile
		else
			mkdir $DirOrFile
		fi
		echo "Have updated your WorkSpace"
		ls
	else
		echo "$path is not exist!"
	fi
elif [ $op -eq 3 ];then
	echo "Before we changemod for a Directory or File, we need you to ensure your WorkSpace! Enter with an absolute path!"
	read path
	# Check whether a Dir exists.
	if [ -d "$path" ];then
		echo `cd $path` 
		echo "WorkSpace: " `pwd`
		ls -l
		echo "Enter your Dir or File!"
		read DirOrFile
		# Check whether a Dir or File exists.
		if [ -e "$DirOrFile" ];then
			echo "Enter your Mod number. E.g. 777(rwxrwxrwx) 721(rwx-w---x)"
			read Mod
			echo `chmod $Mod $DirOrFile`
			echo "Have updated your WorkSpace"
			ls -al
		else
			echo "$DirOrFile is not exist!"
		fi
	else
		echo "$path is not exist!"
	fi
else
	echo "Over!"
	exit 1
fi
上一篇:git 入门


下一篇:php scp跨服器拷贝文件到sftp