Linux_Shell基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

大连东软信息学院大学生创业实训中心LinuxShell基础目录Shell简介1文件安全与权限2变量和运算符3过程4前言•1965年AT&T贝尔实验室Multics的操作系统•1969年贝尔实验室基本文件系统.UNIX分支版本(AT&T、BSD)•1991年LinuxTorvalds类似于Unix的操作系统内核•POSIX标准•Shell定义的标准:IEEE1003.2POSIXShellShell的简介•Shell是一种特殊的程序。如图ShellrunwcwhomvdateiscatLpratrshmoreawkcpshsedpscalfindpwdfingerwddpgfindccypcckshlppssedkernel%youShell的定义和功能•创建和控制进程,管理内存、文件系统和通信等。•Shell是一个工具程序,在用户登录系统后。它解释并运行命令或脚本,从而实现用户与内核的交互。•当用户登录成功,系统会启动一个交互的Shell来提示用户输入指令。开始执行解析命令开始执行任务键入命令Shell的功能Shell主要功能命令表解释编程语言初始化解释Shell的种类•UNIX系统支持主流的Shell;•Bash符号($)CShell符号(%)KShell符号(%)LinuxShell•Shell的职责Shell负责确保用户在输入的命令被正确执行。包括:读取解析替换字符管道重定向执行设置处理信号Shell的职责用户输入命令LinuxShell•LinuxShell介绍用户可以访问到GNU的Shell和工具(非标准UNIX的Shell和工具)。BASH是当前UNIX/LINUX用户使用得昀为普遍的Shell。默认提示符号为($)。•LINUX用户常用的另一个Shell是TCShell。TCShell是UNIXCShell的一个兼容分支,但是新增了许多附加功能,默认的提符是()。•ZShell也是LINUX一种Shell,它结合了BournedAgainShell、TCShell和KornShell的许多功能。LinuxShell•查看自己所使用的Linux有哪些版本的Shell,可以查看/etc/Shell目录下的文件。例如:结果:more/etc/shells/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh/bin/ksh/bin/zshLinuxShell•系统启动和登陆BASHShellLogin/etc/passwd/etc/shadowUser用户名不存在密码错误Returnhome/Shell/user/pathLinuxShell处理顺序读取输入并解析命令行历史记录替换进行命令拆分历史更新处理引用定义别名替换\函数定向\后台\管道变量替换命令替换文件名替换程序执行Shell进程查看进程运行ps查看进程pstree查看进程和子进程什么是进程什么是进程什么是系统调用什么是系统调用Shell就以寻找内建命令或者外部可执行程序来响应,接着安排命令运行.这是依靠呼叫系统来完成的,称为系统调用.Shell就以寻找内建命令或者外部可执行程序来响应,接着安排命令运行.这是依靠呼叫系统来完成的,称为系统调用.进程是处在执行状态下,可以用唯一的PID标识程序.进程是处在执行状态下,可以用唯一的PID标识程序.LinuxShell建立和终止进程的系统调用Fork:用于创建一个新进程.Wait:当子进程处理细节的时候如重新定向\管道和后台进程等父亲进程被设计为休眠状态(待机).Exec:当在终端输入一条命令,Shell通常会派生出一个新的进程(子进程),子进程的Shell负责执行你输入终端的命令.Exit:调用exit系统调用可以在任何时候终止程序的执行.0表示子进程退出成功,非0状态表示发生某种失败.LinuxShell父Shell子Shell新进程211212213PIDPID第一步环境第二步环境第三步环境0标准输入1标准输出2标准错误0标准输入1标准输出2标准错误0标准输入1标准输出2标准错误waitfork执行(子Shell的新程序)PID环境与继承•环境与继承当登录系统时,Shell启动并从启动它的/bin/login程序中继承了多个变量\I/O流和进程.继承环境所有权文件创建掩码:当文件被建立的时候,它被赋予一套默认访问权限.通过umask进行修改.umask的值是000,权限访问777,默认的文件权限是666(rw-rw-rw).改变所有权和权限chmod命令用于改变目录和文件的权限.所有权和权限对照表注:r表示读的权限,w表示写的权限,x表示执行的权限,u表示用户(所有者),g表标组,o表示其他人,a表示所有人10进制数字2进制数字权限0000none1001--x2010-w-3011-wx4100r--5101r-x6110rw-7111rwx权限实例•权限实例:$chmod755/home/usera/start.sh$ls–l/home/usera/start.sh-rwxr-xr-x1rootroot27Mar2714:07$chmodg+w/home/usera/start.sh$ls–l/home/usera/start.sh-rwxrwxr-x1rootroot27Mar2714:07$chmodgo-rx/home/usera/start.sh$ls–l/home/usera/start.sh-rwx-w----1rootroot27Mar2714:07$chmoda=r/home/usera/start.sh$ls–l/home/usera/start.sh-r--r--r--1rootroot27Mar2714:07文件所有组实例•chown-R命令改变文件和目录的所有者和组.实例:$ls–lfiletest$chownrootfiletestchown:filetest:Operationnotpermitted$surootPassword:#ls–lfiletest-rw-rw-r--1userausera0Mar1012:19filetest#chownrootfiletest#ls–lfiletest-rw-rw-r--1rootusera0Mar1012:19filetest#chownroot:rootfiletest-rw-rw-r--1rootroot0Mar1012:19filetestLinuxShell•工作目录•变量局部变量环境变量•文件说明符•重定向和管道LinuxShell•重新定向当文件说明符被分配给一非终端的时候,它就被称为I/O重新定向.012199PID父ShellgrepJackdatafiletemp标准输入标准输出标准错误键盘监视器监视器012200PID子Shell键盘temp文件监视器标准输入标准输出标准错误waitfork012200PIDgrep键盘temp文件监视器标准输入标准输出标准错误execLinuxShell•实例:#whousefile#catusefilefile#catusefileusefile2usefile3#find/-nameroot–print2errorsLinuxShell•管道管道为进程之间的通信服务,它是把一个命令的输出作为另外一个命令输入的机制.“|”例如:who|wc如果没有管道,需要三个步骤#whotempfile#wctempfile#rmtempfileLinuxShell•Shell与信号当信号发送一个信息给进程时通常会导致进程终止.例如挂起\电源掉电或者是程序错误.(事例)LinuxShell•从脚本执行命令1Shell脚本格式.每个命令一行.在第一行#!后面输入你希望使用的Shell和路径.2保存文件并打开执行权限3执行例如:vidoshell#!/bin/bashlswho……(录一个实际操作)变量与运算符•变量与运算符变量替换位置变量进程变量Bash引号规则运算符表达式替换标准Shell变量影响命令的变量LinuxShell•变量:初始化文件•系统初始化文件/etc/profile•用户初始化文件用户主目录bash_profile设置用户别名和函数,并建立用户指定的环境变量和启动脚本.LinuxShell•文件初始化的顺序/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrcLinuxShell变量赋值练习vivariable.sh执行后显示执行后显示为内容为空利用source命令可强行上一个脚本影响当前Shell的环境例如上述例子sourcevariable.sh#!/bin/bashlogfile=“monday.dat”echo“Thevalueoflogfileis:”Thevalueoflogfileis:monday.dat.echo$logfile“LinuxShell•父Shell环境变量的变动会产生对子Shell的变量影响例如:profile文件内容:使用exportPATH影响当前Shell环境下的子Shellexport/etc/profilePATH=$PATH:/usr/java/j2sdk1.4.2_14/bin:/usr/java/j2sdk1.4.2_14/jre/bin:/usr/local/apache/http/binLinuxShell•变量替换:用变量的值替换它的名字利用花括号表示变量替换${VARIABLE}基本变量替换.花括号限定变量名的开始和结束${VARIABLE:-DEFAULT}如果VARIABLE值为空,返回DEFAULT${VARIABLE:=DEFAULT}如果VARIABLE没有值,返回DEFAULT;另外,如果VARIABLE没有设置,则把DEFAULT的值赋予它.${VARIABLE:+VALUE}如果VARIABLE被设置,返回VALUE;否则,返回一个空串${#VARIABLE}返回VARIABLE值的长度,除非VARIABLE是*或者@.在为*或者@的特殊情况下,则返回$@表示的元素的个数.${VARIABLE:?MESSAGE}如果VARIABLE值为空,则返回MESSAGE的值.Shell也显示出VARIABLE的名字,对捕获错误很有用注:$@保存传给脚本的参数清单,字符用在$字符前面,告诉Shell忽略$字符的特殊含义LinuxShell例:参加shell_variable替换的事例;SHELL源码•位置变量Shell变量使用位置变量来存取脚本参数.例:variable_2.sh:#!/bin/bashecho\$0=*$0*echo\$1=*$1*LinuxShell执行:当存取的参数超过第10个时,就要用花括号;例如:${14}${19}#variable_2.shone.dattwo.dat#./variable_2.shone$0=*./variable_2.sh*$1=*one*LinuxShell•变量表示的用法$*包括参数的列表$@包括参数的列表$#包括参数的个数例:listparam脚本,它实不了上述三个变量的用法#!/bin/bashechoThereare$#parameters.echoTheparametersare*${*}*echoTheparametersare*$@*“#listparam.shonetwothreeThereare3parameters.Theparametersare*onetwothree*Theparametersare*onetwothree*LinuxShell$@的作用listfiles执行结果#!/bin/bashforfilein$@dols-l$filedone#./listfileslistfileslistparam.sh-rwxr-xr-x1rootroot49May1809:

1 / 60
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功