接着上一篇的应用签名(应用签名内容太多,篇幅大,会比这个要晚点更),直接上今天的干货部分
1、操作系统简介Linux,Unix
2、用户、组、权限
3、初识Shell脚本及简单练习
一、操作系统的了解
操作系统(Operation System,简称OS)
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在‘裸机’上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。‘裸机’就是没有安装操作系统的计算机。
1、个人计算机PC(personal computer)操作系统
· Windows 系列
· MacOS
· Linux
2、服务器操作系统
· Linux
· Windows
3、嵌入式以及移动设备操作系统
· Linux (嵌入式)
· iOS (基于Unix)
· Android (基于Linux)
4、系统诞生
Unix诞生:1969年 肯·汤姆逊 为了他的名为星际旅游的游戏能够跑起来,前后花了一个月的时间,写出了Unix的原型。
C语言的诞生:肯的另一个同事丹尼斯·里奇对Unix有很大的兴趣,在当时高级语言BCPL的基础上开发了一种新的高级语言将Unix重新写了一遍,这个语言就是C语言!
MacOS诞生:刚开始乔布斯的苹果公司采用的还是Unix操作系统,后期经过乔布斯对产品卓越的追求和不断的改进,发展成了MacOS。
Windows诞生:狡猾的比尔盖茨找到了当时蒸蒸日上的乔布斯,祈求了一份Apple的产品原型,并承诺微软的一切成果都是苹果的,比尔盖茨得到了产品原型机之后,马上组织团队研发,并在1990年5月份推出了Windows3.0.
Minix诞生:1991年由于Unix因为市场原因(能捞钱啊~)闭源了,林纳斯(当时林纳斯22岁)的大学教授就没法讲他们的《操作系统》课程了,所以当时的大学教授Andrew S. Tanenbaum专门写了一个小型具备Unix基本功能的操作系统用来上课。由于比较小,所以叫Min Unix,简称Minix。
Linux诞生:由于Minix和初始的Unix一样,不具备移植性,而林纳斯有一台自己的电脑,却又不能将Minix运行在自己电脑上,莫得办法,他也自己写了一个操作系统,两个月后,第一个版本的以他名字命名的Linux就此诞生了,从此在大学校园传播了起来,但是也仅仅传播在大学校园。接下来就是传播的问题了,当时有一个黑客叫雷蒙德,在那时是一切收费软件公司的噩梦!微软靠卖软件大发特发,让他很不满,他认为所有的软件都应该自由的让人们使用,所以1983年,他发起了’GNU(GNU’s Not Unix的递归缩写)‘计划,激发了软件界开发者极大的热情并吸引了很多优秀的人才,’GUN‘开发了很多优秀的免费软件,但是雷蒙德不甘心GUN的免费软件运行在了收费的Unix系统上,之后承诺两年内重新写一个操作系统,但是5年过去了,操作系统还是没有出来,而芬兰那边,林纳斯只有一个操作系统内核Linux,并没有相应的应用软件。直到Linux加入了GUN计划,然后整个世界都变了!比如今天全球500台超级计算机中,413台都是Linux系统,大到航天,小到IC卡芯片,全部由Linux主宰,包括移动端和服务器领域。移动端Android的内核就是Linux、服务器也是Linux独领风骚。
二、用户、组、权限
1、权限的概念
Unix和Linux都是多用户、多任务的系统,所以这样的系统里面就拥有了用户、组的概念,那么同样文件的权限也就有了相应的所属用户和所属组了。
Windows系统并没有这些权限的概念,不管是谁进入都能看见C,D,E,F...盘中的文件,都能删除文件;而Linux、MacOS、iOS系统每个用户都是只属于自己的,只能操作自己的文件。
Windows系统有一堆目录盘,比如C, D, E, F...等等。
Linux及Unix只有一个根目录'~',根目录下包含/bin, /etc, /home, /lib, /usr, 其中这个/usr并不是user的意思,是Unix System Resource的意思,就是系统的一些资源。/home家目录就是操作系统用来处理不同用户逻辑的,每一个用户只能在自己的家目录下面操作,当然还有一个超级管理员,可以操作所有用户的数据。
同理,正是因为权限,所以有了用户、组的概念,也有了文件的权限。系统上的每一个文件都有其所属的用户权限,所属的组权限,所属的other权限(非所属组,非所属用户的其他人对这个文件的操作权限)。
2、终端权限示例部分
接着我们来使用终端示例一下:
cd ~ //到根目录下
ls //查看目录下所有文件
ls -l //以列表的形式展示目录下的所有文件
得到所有文件及文件夹及文件权限
battleMage:~ battleMage$ cd ~
battleMage:~ battleMage$ ls
Applications Music
Desktop Pictures
Documents Public
Downloads WebstormProjects
Library efguc-app-ios
Movies iCloud 云盘(归档)
battleMage:~ battleMage$ ls -l
total 0
drwx------ 4 battleMage staff 128 6 9 2018 Applications
drwx------+ 11 battleMage staff 352 10 13 14:49 Desktop
drwx------+ 3 battleMage staff 96 6 9 14:08 Documents
drwx------+ 9 battleMage staff 288 10 12 21:18 Downloads
drwx------@ 92 battleMage staff 2944 10 4 13:35 Library
drwx------+ 9 battleMage staff 288 7 5 20:10 Movies
drwx------+ 7 battleMage staff 224 4 29 2018 Music
drwx------+ 9 battleMage staff 288 6 2 14:54 Pictures
drwxr-xr-x+ 5 battleMage staff 160 10 24 2016 Public
drwxr-xr-x 3 battleMage staff 96 12 14 2017 WebstormProjects
drwxr-xr-x 13 battleMage staff 416 3 27 2018 efguc-app-ios
drwx------ 7 battleMage staff 224 8 6 2018 iCloud 云盘(归档)
battleMage:~ battleMage$
从终端结果中能够看到,每个文件夹的前面都有权限字符串(比如drwxr-xr-x,drwx------),这个权限字符串的意义如下图
1、Mac文件属性介绍图
2、文件类型与权限介绍图
3、改变文件权限chmod指令介绍
chmod指令有两种类型,数字类型和符号类型
下面这两种指令是等价的,给test.txt文件的三种权限全部加上读和写
chmod 666 test.txt
//解释一下666,6 = 4 + 2;其中4是r(‘读’权限),2是w(‘写’权限)
等价于
chmod a+r test.txt //所有权限加上读权限
chmod a+w test.txt //所有权限再加上写权限
三、初识Shell脚本及简单练习
1、Shell脚本介绍
Shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中的文件以及运行在系统上的进程的途径。(有点类似于一个系统,我们常用的交互系统比如MacOS系统,是有可视化交互界面的,而Shell这个系统是通过脚本指令来交互的)。
Shell一般指命令行工具。它允许你输入文本命令,然后解释命令,并在内核中执行。Shell脚本,也就是用各类命令预先放入到一个文本文件中,方便一次性执行的一个脚本文件。
苹果Mac电脑自带的Shell版本是bash,还有很多好用的Shell版本比如公认好用的zsh
2、Shell脚本简单练习
我们先来简单熟悉一下Shell脚本指令
比如现在有这样一个需求:在指定路径下新建一个叫'shell脚本'的件夹,然后在这个文件夹中新建一个'test.txt'的文本文件。
用Shell指令执行这样的需求需要
1、先cd到指定文件夹下,比如桌面Desktop
cd ~/Destop
2、新建文件,文件名‘shell脚本’
mkdir shell脚本
3、指定路径为新的文件夹
cd shell脚本
4、创建'test.txt'文件
touch test.txt
终端练习展示:
battleMage:~ battleMage$ cd ~/Desktop
battleMage:Desktop battleMage$ mkdir shell脚本
battleMage:Desktop battleMage$ cd shell脚本
battleMage:shell脚本 battleMage$ touch test.txt
battleMage:shell脚本 battleMage$
结果就在指定路径Desktop桌面上创建完成,如果你这个需求是经常要用的,你就可以把这些指令写在shell脚本文件中,shell脚本文件顾名思义就是一堆shell指令操作的集合,可以帮您快速完成指定的需求。
把上面的指令集整理一下就可以生成这样的shell脚本,能够直接通过脚本文件,完成一连串的操作。
步骤如下:
首先cd到指定路径(例如桌面)
cd ~/Desktop
接着直接创建‘test.sh’文件
touch test.sh
接着编辑'test.sh'文件, 会进入文件编辑界面
vi test.sh
接着输入'i'进入编辑界面,输入脚本内容,输入完成后按'ESC'键退出编辑,接着使用'shift'+':',输入'x'之后回车,就在桌面上会生成一个shell脚本文件。
mkdir shell
cd shell
touch test.sh
使用下列命令都可以运行这个shell脚本,接下来会详细讲述这几个命令的区别。
1、bash运行shell脚本文件
bash test.sh
2、source运行
source test.sh
3、zsh运行
zsh test.sh
4、直接./test.sh , 但是需要先添加权限
chmod +x test.sh
./test.sh
3、运行shell脚本命令方法详细介绍
·$source FileName
·意思:在当前shell环境中读取并执行FileName中的命令
·特点:
·命令可以强制让一个脚本去立即影响当前的环境(一般用于加载配置文件)
·命令会强制执行脚本中的全部命令,而忽略文件的权限
·$bash FileName 、$zsh FileName
·意思:重新建立一个子shell,在子shell中执行脚本里面的命令。
·./FileName
·意思:读取并执行文件中的命令。但是有一个前提,脚本文件需要有可执行权限
4、了解查看系统所有的shell
按顺序执行下列命令,查看系统根目录下的shells
cd /private/etc
ls
cat shells
能够得到
battleMage:~ battleMage$ cd /private/etc
battleMage:etc battleMage$ ls
afpovertcp.cfg newsyslog.d
afpovertcp.cfg~orig nfs.conf
aliases nfs.conf~orig
aliases.db notify.conf
apache2 ntp.conf
asl ntp_opendirectory.conf
asl.conf openldap
auto_home pam.d
auto_master passwd
auto_master~orig passwd~orig
autofs.conf paths
bashrc paths.d
bashrc_Apple_Terminal paths~orig
bashrc~previous periodic
com.apple.screensharing.agent.launchd pf.anchors
csh.cshrc pf.conf
csh.cshrc~orig pf.os
csh.login php-fpm.conf.default
csh.login~orig php-fpm.d
csh.logout php.ini.default
csh.logout~orig php.ini.default-previous
cups php.ini.default-previous~orig
defaults postfix
dnsextd.conf ppp
efax.rc~previous profile
emond.d profile~orig
find.codes protocols
find.codes~orig protocols~previous
fstab.hd racoon
fstab.hd~previous rc.common
ftpusers rc.common~previous
ftpusers~orig rc.netboot
gettytab resolv.conf
gettytab~orig rmtab
group rpc
group~previous rpc~previous
hosts rtadvd.conf
hosts.equiv rtadvd.conf~previous
hosts~orig security
irbrc services
kern_loader.conf services~previous
kern_loader.conf~previous shells
krb5.keytab shells~orig
localtime snmp
locate.rc ssh
mach_init.d ssl
mach_init_per_login_session.d sudo_lecture
mach_init_per_user.d sudoers
mail.rc sudoers.d
mail.rc~orig sudoers~orig
man.conf syslog.conf
manpaths syslog.conf~previous
manpaths.d ttys
master.passwd ttys~previous
master.passwd~orig wfs
nanorc xtab
networks zprofile
networks~orig zshrc
newsyslog.conf
battleMage:etc battleMage$ cat shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
battleMage:etc battleMage$
这时候,我们能看到有很多shell,简介如下
/bin/bash bash这个是Linux默认的shell
/bin/csh csh已经被tcsh代替了
/bin/ksh ksh兼容bash
/bin/sh sh已经被bash替代了
/bin/tcsh 整合了C shell 和 csh,它提供了更多的功能
/bin/zsh zsh是基于ksh开发的,功能比较多,比较好用
-- END --
溪浣双鲤的技术摸爬滚打之路