接着上一篇的应用签名(应用签名内容太多,篇幅大,会比这个要晚点更),直接上今天的干货部分php
一、操做系统简介Linux,Unix
二、用户、组、权限
三、初识Shell脚本及简单练习
复制代码
操做系统(Operation System,简称OS)ios
操做系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在‘裸机’上的最基本的系统软件,任何其余软件都必须在操做系统的支持下才能运行。‘裸机’就是没有安装操做系统的计算机。shell
一、我的计算机PC(personal computer)操做系统apache
· Windows 系列
· MacOS
· Linux
复制代码
二、服务器操做系统bash
· Linux
· Windows
复制代码
三、嵌入式以及移动设备操做系统服务器
· Linux (嵌入式)
· iOS (基于Unix)
· Android (基于Linux)
复制代码
四、系统诞生session
Unix诞生:1969年 肯·汤姆逊 为了他的名为星际旅游的游戏可以跑起来,先后花了一个月的时间,写出了Unix的原型。app
C语言的诞生:肯的另外一个同事丹尼斯·里奇对Unix有很大的兴趣,在当时高级语言BCPL的基础上开发了一种新的高级语言将Unix从新写了一遍,这个语言就是C语言!ssh
MacOS诞生:刚开始乔布斯的苹果公司采用的仍是Unix操做系统,后期通过乔布斯对产品卓越的追求和不断的改进,发展成了MacOS。tcp
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独领风骚。
一、权限的概念
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权限(非所属组,非所属用户的其余人对这个文件的操做权限)。
二、终端权限示例部分
接着咱们来使用终端示例一下:
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------),这个权限字符串的意义以下图
一、Mac文件属性介绍图
二、文件类型与权限介绍图
三、改变文件权限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脚本介绍
Shell是一种特殊的交互式工具,它为用户提供了启动程序、管理文件系统中的文件以及运行在系统上的进程的途径。(有点相似于一个系统,咱们经常使用的交互系统好比MacOS系统,是有可视化交互界面的,而Shell这个系统是经过脚本指令来交互的)。
Shell通常指命令行工具。它容许你输入文本命令,而后解释命令,并在内核中执行。Shell脚本,也就是用各种命令预先放入到一个文本文件中,方便一次性执行的一个脚本文件。
苹果Mac电脑自带的Shell版本是bash,还有不少好用的Shell版本好比公认好用的zsh
复制代码
二、Shell脚本简单练习
咱们先来简单熟悉一下Shell脚本指令
好比如今有这样一个需求:在指定路径下新建一个叫'shell脚本'的件夹,而后在这个文件夹中新建一个'test.txt'的文本文件。
用Shell指令执行这样的需求须要
一、先cd到指定文件夹下,好比桌面Desktop
cd ~/Destop
二、新建文件,文件名‘shell脚本’
mkdir shell脚本
三、指定路径为新的文件夹
cd shell脚本
四、建立'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脚本,接下来会详细讲述这几个命令的区别。
一、bash运行shell脚本文件
bash test.sh
二、source运行
source test.sh
三、zsh运行
zsh test.sh
四、直接./test.sh , 可是须要先添加权限
chmod +x test.sh
./test.sh
复制代码
三、运行shell脚本命令方法详细介绍
·$source FileName
·意思:在当前shell环境中读取并执行FileName中的命令
·特色:
·命令能够强制让一个脚本去当即影响当前的环境(通常用于加载配置文件)
·命令会强制执行脚本中的所有命令,而忽略文件的权限
·$bash FileName 、$zsh FileName
·意思:从新创建一个子shell,在子shell中执行脚本里面的命令。
·./FileName
·意思:读取并执行文件中的命令。可是有一个前提,脚本文件须要有可执行权限
复制代码
四、了解查看系统全部的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 --