1 / 25

Shell 基础知识

Shell 基础知识. 乐山师范学院计科系 张 波. ※ LSTC. 什么是 Shell ?. Linux. Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。 Shell 有自己的编程语言,允许用户编写由 shell 命令组成的程序。 Shell 类似高级语言编程。用这种编程语言编写的 Shell 程序与其他应用程序具有同样的效果。. ※ LSTC. Linux 中中常见的 Shell. Linux.

kasia
Télécharger la présentation

Shell 基础知识

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Shell 基础知识 乐山师范学院计科系 张 波 ※ LSTC

  2. 什么是Shell ? Linux Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。Shell有自己的编程语言,允许用户编写由shell命令组成的程序。Shell类似高级语言编程。用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 ※LSTC

  3. Linux中中常见的Shell Linux • 修改登陆的shell:chsh 常用的shell(默认)/bin/bash 可以使用的常见的shell : bash "Bourne Again" shell sh 在很多UNIX下是标准的shell csh C shell,和C编程语言语法相近, 在大部分UNIX下有效 tcsh 微型 C shell, 在小的系统里经常使用 其它:pdksh、ash, zsh等 ※LSTC

  4. Red Hat默认Shell: Bash Linux • Bash :bash "Bourne Again" shell 当新建一个用户时默认的shell 可以使用命 令chsh修改。通过查看/etc/passwd可以知 道用户登陆的shell。临时改变shell可以直 接输入shell名直接回车。如:tcsh • 用户登陆后看见的 [用户名@主机名 当前目录名] $ _ 就是bash产生的 ※LSTC

  5. Bash 的基本定义: Linux • 通配符:* ? [ ] - 等 • 路径的定义 • 转义字符: \ ‘ “ \放在特殊字符前,\将忽略字符的特殊含义 例如:ls -l a\?1 注意:a?1这样的文件是合法的 下面的也合法: a*1 统配符可以在文件名 内,但是不能在充当文件名开始和结束 例如:?1 abc* 不合法 ※LSTC

  6. Linux 将字符串放在一对单引号中,全部的特殊 符号含义将失效 。 例如: ls ‘a*b*c*’ a*b*c* 会显示。 a*b*c*dds 不被显示 将字符串放在一对双引号中,除了bash使 用的一些特殊符号(如$)外,路径扩展 特殊字符都将被忽略。比较: [guest@linux /] echo “my friend is $USER” my friend is $USER [guest@linux /] echo my friend is $USER my friend is guest ※LSTC

  7. Linux • 命令补全按键 tab 键 :按下以后能补充完成。若没有出 现表示没有类似信息或有很多类似信息。 你可以再按tab来确认 例如:想看看以k开头的命令: $ k按下两次tab键选择补偿 kill killall kinit • 文件补全: 类似。例如: cp /etc/pas按下tab补偿swd cp /etc/passwd ※LSTC

  8. Bash登陆设置 Linux • 查看当前shell : echo $SHELL • 查看当前提示符设置 echo $PS1 [\u@\h \W]\$ • /etc/bashrc :设置所有用户登陆bash 例如: 找到: PS1="[\u@\h \W]\$ " 可以进行修改。 参数如下: ※LSTC

  9. Linux • \u - 当前用户的用户名(=$LOGNAME) • \h - 运行shell的计算机名(hostname) • \H - 完整的计算机名 • \W - 当前工作目录名 • \w - 当前工作命令全路径名 • \$ - 对于普通用户显示$,对于超级用户显示# • \! - 当前命令的历史编号 • \# - 当前命令编号(在当前的shell下运行的命令) ※LSTC

  10. \d -当前日期 \t -当前时间24小时制\T - 当前时间12小时制\@ - 当前时间(AM/PM格式)\s - shell的类型 \a - 告警声音\j - 用户的任务数 \n - 新行等等。 例如:修改为:PS1=“\u \w \t> “临时改变也可直接执行。结果举例:guest ~ 23:56:13 > 你也可以将此加入到你的.bashrc文件中 例如:PS1=“\w 我是老大 ¥ ” ※LSTC

  11. Linux中的重定向 Linux • 分类:输入、输出重定向 • 标准输入设备:键盘标准输出设备:屏幕 • 输入重定向:如果命令所需的输出不是来自键盘,而是来自指定的文件,这就是输入重定向。 常见输入重定向: < 和 << 例如:wc < /etc/passwd 和 wc /etc/passwd 功能几乎相同 ※LSTC

  12. Here文档: 输入重定向 << Linux 另一种输入重定向称为here文档,它告诉 shell当前命令的标准输入来自命令行。 here文档的重定向操作符使用<<。它将一 对分隔符(本例中用 abc 表示)之间的正 文重定向输入给命令。下例将一对分隔符 abc 之间的正文作为wc命令的输入,统计 出正文的行数、单词数和字符数。 ※LSTC

  13. 例如: [guest@obglinux guest]$ wc << abc > kkk > kkkk > kkkkk > kkkkkk > abc 4 4 22 最后不输入abc的话也可用ctrl+d结束 Linux ※LSTC

  14. 输出重定向:命令的输出也可以不显示在屏幕上,而是写入到指定文件中,这就是输出重定向。 常见:> 和 >> > : 可以覆盖和新建一个文件 例如: cat > abc , man ls > lshelp cat a1 > a2…… >>:可以在已存在的文件后面添加新内容 例如:如果a1、a2都存在: cat a1 >> a2表示 a2 = a2 + a1 如果a2不存在,则相当于 cat a1 > a2 ※LSTC

  15. Linux 其它输出重定向: • 2>(或追加符号2>>)表示对错误输出设备重定向。例如: 如果有文件a1,没有文件a2: cat a1 2> err1 : err1内容为空 cat a2 2> err2 : err1内容为: cat: a2 : 没有那个文件或目录 >&:同上,只是err1为a1的内容 请自己对比理解和 2>> 。 ※LSTC

  16. 管道 pipe 操作 Linux • 管道操作: | 利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。 下面看几个例子: ※LSTC

  17. Linux 例1:ls -l |more 将ls –l在屏幕上显示的内容作为more的参 数输入。这个过程相当于是: more ( ls –l ) 例2:cat e.txt|grep 'hi'|wc -l 管道将cat命令的输出送给grep命令。Grep 命令在输入里查找单词High,grep命令的 输出则是所有包含单词High的行,这个输 出又被送给wc命令,wc命令统计出输入中 的行数 ※LSTC

  18. 其它特殊符号使用 Linux • 符号`` 命令替换是将一个命令的输出作为另外一个命令的参数。例如: cd `pwd` (符号`在tab键的上面) • 符号&& 是用于连接两个命令的“与操作” cat f1 && cat f2只有当f1 正常显示时, f2 才能被显示。 • 符号|| 是用于连接两个命令的“或操作” 例:cat f3 || cat f4只有当显示f3出 错时,f4才能被显示。 ※LSTC

  19. Linux • 符号&:后台执行程序 & 使当前命令在后台运行 (有它自己独立 的进程),所以下一条命令不需要等待前 一条命令结束才能开始。 例:locate –u当这条命令完成后才能继续 换成:locate –u & 屏幕显示 [1] 3024 在这条命令执行后转入后台,我们可以继续 操作其它的命令。一段时间后回车看见: [1]+ Done locate –u 任务结束。 ※LSTC

  20. 别名的使用:alias Linux 例如:alias c=‘cleaq’ Shell的历史记录功能 bash能自动跟踪每次输入的命令,并 把它保存在历史表中。所以我们要修 改执行以前的命令直接使用键盘上的 ↑翻出来修改就OK了。 历史表文件:.bash_history ※LSTC

  21. Linux的shell script Linux shell编程:shell script (shell脚本) 类似于dos的批处理文件。 基本操作方式: (语句#代表注释) 假设文件名为t1,当前目录为用户目录: 1、使用vi编辑建立一文件t1。 2、编写命令代码并存盘退出。 3、chmod u+x t1 4、执行: ./t1 或 ~/ t1 注意:不能直接写t1 ※LSTC

  22. Shell 的变量和语句 Linux • 变量分类:用户变量、系统变量 • 系统变量分为环境变量、内部变量等 • 用户变量想只读的话定义时格式为: • readonly 变量名 • 查看变量的值:echo $ 变量名 • 例如: • abc=‘this is a book’ • readonly ScripLineMax=200 • echo $abc • echo PS1 ※LSTC

  23. 常用环境变量: Linux $HOME :用户目录 $PATH : 用户目录 $MAILCHECK :每隔多少时间检查邮件 $TZ :时区 $MANPATH : man搜索路径 $PS1 : shell提示符 $PS2 : 命令尚未打完,shell要求再输入 的提示符 $HISTSIZE : history历史表长度 $USER : 用户名 $PWD : 当前路径 $HOSTNAME : 主机名 ※LSTC

  24. 常用内部变量: Linux $# 存储shell程序中命令行参数的个数 $? 存储上一个执行命令的返回值 $* 存储shell程序的所有参数 $0 shell脚本的名称 ‘$@’ 存储所有命令行输入的参数。 分别表示为“$1”“$2”…… $$ 存储shell程序的进程号 $! 存储上一个后台执行命令的进程号 例如:echo $! (前五页locate –u &后) 3024 ※LSTC

  25. Shell 基本语句 : Linux if 条件 case 字符串 in …… then 表达式 1) 命令 ;; else 表达式 2) 命令 ;; fi …… esac while until for do do do done done done ※LSTC

More Related