Linuxshell基础分析_第1页
Linuxshell基础分析_第2页
Linuxshell基础分析_第3页
Linuxshell基础分析_第4页
Linuxshell基础分析_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Shell基础基础 Shell的作用 命令解释器,“翻译官” 介于系统内核与用户之间,负责解释命令行 straceShell的作用的作用2-1Shell计算机用户应用程序Linux内核输入输入控制控制系统硬件输出输出 用户的登录Shell 登录后默认使用的Shell程序,一般为 /bin/bash 不同Shell的内部指令、运行环境等会有所区别Shell的作用的作用2-2rootlocalhost # cat /etc/shells/bin/sh/bin/bash #gnu/sbin/nologin/bin/tcsh #sun/bin/csh /bin/ksh #IBMBash( Bourne

2、 Again SHell)是GNU计划的一个组件与Unix上的Bourne Shell完全兼容,是其增强版本支持命令行输入、操作历史、快捷键、输入输出重定向、管道、变量等功能Bash简介简介在Bash中输入history指令可以查询用户的过往操作内存中记录的过往指令数根据环境变量HISTSIZE而定,默认1000。(/etc/profile)History表存储在内存中,在用户logout时会记录入用户家目录的.bash_history文件中,在下次login时载入history使用!来调用过往指令: !:重复执行上一条命令 !关键字:重复执行以关键字为首的指令 !number:重复执行在hi

3、story表中记录号码为 number的指令 !-number:重复执行前第number条指令 !$:表示获得前面命令行中的最后一项内容可以用来在history表中查询某条过往指令 History的使用的使用用户可以为某一个复杂的指令创建一个简单的别名,当用户使用这个别名时,系统就会自动找到并执行这个别名对应的真实指令,从而提高工作效率;用户可以键入alias指令,来查询当前已经定义的alias列表;使用alias指令创建别名 alias usb=mount t vfat /dev/sdb2 /mnt/usb用户也可以用unalias来取消一条别名记录;Alias记录在shell中总是先行。

4、别名别名alias tab 按键 1、Tab 接在命令的第一个字的后面,则为命令补全; 2、Tab 接在命令的第二个字以后时,则为档案补齐; 3、 连续两下Tab 可以输出以前面字母开头的所有命令; 命令与档案补全功能命令与档案补全功能 交互式硬件设备标准输入:从该设备接收用户输入的数据标准输出:通过该设备向用户输出数据标准错误:通过该设备报告执行出错信息重定向与管道操作重定向与管道操作3-1类型类型设备文件设备文件文件描述编号文件描述编号默认设备默认设备标准输入标准输入/dev/stdin/dev/stdin0 0键盘键盘标准输出标准输出/dev/stdout/dev/stdout1 1显示

5、器显示器标准错误输出标准错误输出/dev/stderr/dev/stderr2 2显示器显示器 重定向操作重定向与管道操作重定向与管道操作3-2类型类型操作符操作符用途用途重定向输入重定向输入 将输出结果保存到指定将输出结果保存到指定的的文件(覆盖原有内容)文件(覆盖原有内容)将输出结果追加到指定的文件将输出结果追加到指定的文件 标准错误输出标准错误输出22将错误信息保存到指定的文件(覆盖原有内容)将错误信息保存到指定的文件(覆盖原有内容)22将错误信息追加到将错误信息追加到指定的文件中指定的文件中混合输出混合输出&将标准输出、标准错误的将标准输出、标准错误的内容保存到同一个文件中内容

6、保存到同一个文件中 管道操作符号“|”将左侧的命令输出结果,作为右侧命令的处理对象 格式:cmd1 | cmd2 . | cmdn重定向与管道操作重定向与管道操作3-3rootlocalhost # grep bash$ /etc/passwdroot:x:0:0:root:/root:/bin/bashteacher:x:500:500:BENET Linux Teacher:/home/teacher:/bin/bashrootlocalhost # grep “bash$” /etc/passwd | awk -F: print $1,$7 root /bin/bashteacher /

7、bin/bash以冒号以冒号: :分隔,输出第分隔,输出第1 1、7 7个字段个字段 变量的定义:简单的说,就是让某一个特定字符串代表不固定的内容就是了。变量具有可变性和方便性,为灵活管理Linux系统提供特定参数,有两层意思: 变量名变量名:使用固定的名称,由系统预设或用户定义 变量值变量值:能够根据用户设置、系统环境的变化而变化变量的类型 自定义变量:自定义变量:由用户自己定义、修改和使用 环境变量:环境变量:由系统维护,用于设置工作环境 位置变量:位置变量:通过命令行给脚本程序传递参数 预定义变量:预定义变量:Bash中内置的一类变量,不能直接修改Shell变量描述变量描述 定义一个新的

8、变量格式:变量名=变量值变量名以字母或下划线开头,区分大小写,建议全大写 查看变量的值格式:echo $变量名 或者 echo $变量名 自定义变量自定义变量4-1rootlocalhost # Product=Benetrootlocalhost # Version=4.0rootlocalhost # echo $ProductBenetrootlocalhost # echo $Product $VersionBenet 4.0变量的设定规则 1、变量与变量内容以一个等号来连结,如下所示: PS1=“u h w t :”PS1= “ C:”2、 等号两边不能直接接空格符,如下所示为错误:

9、 myname = Vbird 或 myname=VBird Tsai3. 变量名称只能是英文字母和数字,但是开头字符不能是数字,如下为错误: 2myname=Vbird 4、可用转义字符“ ”将特殊符号(如 Enter, $, , 空格符, 等)变成一般字符; 赋值时使用引号双引号:允许通过$符号引用其他变量值单引号:禁止引用其他变量值,$视为普通字符反撇号:命令替换,提取命令执行后的输出结果, 也可用也可用$(命令命令) 从键盘输入内容为变量赋值 格式: read -p 提示信息 变量名 取消变量unset 变量名自定义变量自定义变量4-2 设置变量的作用范围格式1:export 变量名

10、.格式2: export 变量名=变量值 . 两种格式可以混合使用自定义变量自定义变量4-3rootlocalhost # echo $Product $VersionBenet 4.0rootlocalhost # export Product Versionrootlocalhost # bashrootlocalhost # echo $Product $VersionBenet 4.0rootlocalhost # exit导出为全局变量导出为全局变量子程序引用全局变量子程序引用全局变量 整数变量的运算格式:expr 变量1 运算符 变量2 运算符 变量3 . 常用运算符加法运算:+减

11、法运算: -乘法运算: *除法运算: /求模(取余)运算: % 自定义变量自定义变量4-4 环境变量由系统提前创建,用来设置用户的工作环境用户可以用set或者env来查询环境变量 常见的环境变量:PWD、PATHUSER 、LOGNAME、UID、SHELL、HOMEPS1、$PS2特殊的特殊的Shell变量变量3-1rootlocalhost # echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binrootloc

12、alhost # PATH=$PATH:/root rootlocalhost # echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root 位置变量表示为 $n,n为19之间的数字rootlocalhost # ./myprog.sh one two three four five six特殊的特殊的Shell变量变量3-2$1$1,第,第1 1个位置参数个位置参数$2$2,第,第2 2个位置参数个位置参

13、数$6$6,第,第6 6个位置参数个位置参数 预定义变量$#:命令行中位置变量的个数$*:所有位置变量的内容$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错$0:当前执行的进程/程序名特殊的特殊的Shell变量变量3-3rootlocalhost # cat mybak.sh#!/bin/bashTARFILE=beifen-date +%s.tgztar zcf $TARFILE $* & /dev/nullecho 已执行 $0 脚本,echo 共完成 $# 个对象的备份echo “具体内容包括: $*” rootlocalhost # .

14、/mybak.sh /etc/passwd /etc/shadow 已执行 ./mybak.sh 脚本,共完成 2 个对象的备份具体包括:/etc/passwd /etc/shadow默认情况下,在shell下的用户变量、alias等,只在此次登录中有效。一旦关闭终端或注销后,则将会设置恢复初始值。用户可以将这些设置放入一个系统环境配置文件中,使其长期生效。每一个用户都有一个登录shell,且默认为bash,当用户打开一个bash时,系统就去读取/.bashrc配置文件。因此可以将相关的用户设定放入次文件中。有效期有效期Bash会在用户登录时,主要读取下列4个环境配置文件: 全局配置文件: 1

15、、/etc/profile 4、/etc/bashrc 用户设置文件: 2、/.bash_profile 3、/.bashrc环境配置文件环境配置文件 * 代表 0 个到无穷多个任意字符 。echo /etc/httpd/* ? 代表一定有一个任意字符。echo /etc/httpd/? 代表一定有一个在括号内的字符(非任意字符)。例如 abcd 代表一定有一个字符, 可能是 a, b, c, d 这四个任何一个 。echo /etc/httpd/ml* - 若有减号在中括号内时,代表在编码顺序内的所有字符。例如 0-9 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!。echo

16、 /etc/httpd/a-l* 若中括号内的第一个字符为指数符号 () ,那表示反向选择,例如 abc 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。echo /etc/httpd/ml*通配符通配符常见特殊符号常见特殊符号Shell命令行支持在同一行的两条命令中插入&(逻辑与)与|(逻辑或)。 & 当前一条指令执行成功时再执行后一条 | 当前一条指令执行失败时再执行后一条逻辑运算符逻辑运算符-e filename 如果 filename存在,则为真 -e /var/log/syslog -d filename 如果 filename为目录,则为真

17、-d /tmp/mydir -f filename 如果 filename为常规文件,则为真 -f /usr/bin/grep -L filename 如果 filename为符号链接,则为真 -L /usr/bin/grep -r filename 如果 filename可读,则为真 -r /var/log/syslog -w filename 如果 filename可写,则为真 -w /var/mytmp.txt -x filename 如果 filename可执行,则为真 -L /usr/bin/grep filename1-nt filename2 如果 filename1比 file

18、name2新,则为真 /tmp/install/etc/services -nt /etc/services filename1-ot filename2 如果 filename1比 filename2旧,则为真 /boot/bzImage -ot arch/i386/boot/bzImage 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)-z string 如果 string长度为零,则为真 -z $myvar -n string 如果 string长度非零,则为真 -n $myvar string1= string2 如果 string1与 string2相同,则为真

19、 $myvar = one two three string1!= string2 如果 string1与 string2不同,则为真 $myvar != one two three 算术比较运算符num1-eq num2 等于 3 -eq $mynum num1-ne num2 不等于 3 -ne $mynum num1-lt num2 小于 3 -lt $mynum num1-le num2 小于或等于 3 -le $mynum num1-gt num2 大于 3 -gt $mynum num1-ge num2 大于或等于 3 -ge $mynum 常用运算符常用运算符Ctrl + d 输

20、入已结束Ctrl + c 键盘中断请求Ctrl + s 暂停屏幕输出Ctrl + q 恢复屏幕输出Ctrl + l 清屏,相当于clearTab 自动补完命令行与文件名Ctrl + u 删除当前光标前的所有字符Ctrl + k 删除当前光标后的所有字符常用的热键常用的热键Ctrl + d 输入已结束Ctrl + c 键盘中断请求Ctrl + s 暂停屏幕输出Ctrl + q 恢复屏幕输出Ctrl + l 清屏,相当于clearTab 自动补完命令行与文件名Ctrl + u 删除当前光标前的所有字符Ctrl + k 删除当前光标后的所有字符常用的热键常用的热键功能说明:显示文件中的某一列语 法:

21、 cut 文件常用选项: -d:指定分隔符 -f:指定显示某一列 -c:指定几个字符对应的列截取命令截取命令 cut功能说明:查找文件里符合条件的字符串语 法: grep 选项 常用选项: -c:计算匹配关键字的行数 -i:忽略字符大小写的差别 -n:显示匹配的行及其行号 -s: 不显示不存在或不匹配文本的错误信息 -h: 查询多个文件时不显示文件名 -l: 查询文件时只显示匹配字符所在的文件名 -color=auto:将找到的关键字部分加上颜色显示截取命令截取命令 grep功能说明:将文本文件内容加以排序语 法: sort 选项 常用选项: -o :将排序后的结果存入指定文件 -r:以相反的

22、顺序来排序 -n:显示匹配的行及其行号 -t : 指定排序时所用的栏位分隔字符。 -k: :以那个区间 (field) 来进行排序的意思 文件操作命令文件操作命令 sort范例:个人账号都记录在 /etc/passwd 下,请将账号进行排序。 rootwww # cat /etc/passwd | sort adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin 功能说明:合并文件中相邻的行 语 法: unip 选项 文件 常用选项: -i :忽略大小写字符的不同 -c :进行重复出现行计数 -d: 仅显示重复出现的行列 -u: 仅显示出一次的行列文件操作命令文件操作命令 uniq范例一:使用 last 将账号列出,仅

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论