Shell基础

shell基础

shell是什么

  • shell就是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序

  • shell还是一个功能相当强大的编程语言,易编写,易调试灵活性较强,shell是解释执行的脚本语言,在shell中可以直接调用linux命令

  • shell主要用来简化管理员操作,方便系统管理的,注重功能实现和清晰的逻辑,非服务器程序那样注重效率

shell将命令通过ASSIC码表翻译为计算机可以识别的指令给内核,内核执行返回执行结果给shell

###shell的分类

echo $SHELL 查看当前的系统中运行的shell

  • Bourne Shell : 从1979 起Unix就开始使用bourne shell ,主文件名为sh

不支持历史命令

  • C shell : C shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而闻名

  • shell的主要语法类型有bourne 和C这两种语法彼此不兼容,bourne 家族主要包括sh,ksh,bash,psh,zsh,C家族主要包括csh,tcsh

一般linux系统中的shell是bash,这个不分发行版本,

  • bash:bash和sh 兼容,现在使用linux就是使用bash作为用户的基本shell

在控制台键入 sh进入sh,是一种比较古老比较简单的模式,占用的资源更少,在进行系统修复的时候使用

  • linux可以在终端调用另一个shell或者子shell,可以做到层级调用

脚本的执行方法

  1. echo [选项] [输出内容] ,当输出内容有空格就需要双引号

    • 选项 -e 支持反斜线控制的字符转换 ,用来调整字符格式

    • 十六进制输出 , echo -e "\x68\t\x65\t"

  2. 字符转换

  3. 输出字体颜色, \e[1;31m 开启颜色显示,\e[0m 关闭颜色显示
    echo -e " \e[1;31m hello linux \e[0m "

!在echo中是有特殊含义的不能直接输出;真实的环境是不可以输入中文的,但是xshell之类的远程连接工具可以,除非安装中文环境;

脚本编写与执行

//vim 编写脚本
vim hello.sh;

//这不是注释,而是必须要带的规范,如果是纯shell语言没有问题,但是在shell语言中可以调用其他语言,不写规范脚本执行会报错
#!/bin/bash
#the first program
echo -e " \e[1;31m hello linux \e[0m " 
// :wq保存退出

//脚本执行 , 赋予执行权限,直接运行
chmod 755 hello.sh
//通过bash调用脚本执行(bash直接解释脚本) 或者 ./hello.sh
bash hello.sh

别名与快捷键

linux 别名

  • alias 查看系统当中已经用到了的别名

*alias 别名 = [原命令] 设定命名别名
* 实例 alias ls = 'ls --color==never'取消ls命令的颜色显示
* alias ls = 'ls --color==auto' 开启ls命令的颜色显示

vim 是vi 的增强版, 支持颜色显示,功能更加强大,可以设置别名,alias vi=vim

  • 以上方法配置别名之后只能临时生效,重启计算机别名配置就失效了
    • vi ~/.bashrc 写入环境变量配置文件,每一个用户都会有环境变量配置文件,会对对应的用户生效
alias vi='vim' //临时生效
vi /root/.bash.rc 写入 alias vi='vim'
`source .bashrc`  //直接生效

在环境变量配置之后,需要重新登陆才能生效,source .bashrc 直接生效不用重新登录

  • unalias 别名 删除别名 ,只是临时删除,如果需要永久删除,不仅要执行这一句话,并且还要在环境变量配置文件删除,并且生效
命令生效顺序
  1. 顺位执行用绝对路径或相对路径执行的命令
  2. 顺位执行别名
  3. 顺位执行bash内部命令
  4. 顺位执行按照$PATH环境变量定义的目录查找顺序找到第一个命令

以上所有的方式都没有找到命令,name终端显示命令没有找到

快捷键

  • Ctrl +c 强制终止
  • clear 命令清屏 ,快捷Ctrl +L
  • Ctrl + u 从光标所在位置删除到首行
  • Ctrl + a 光标移动到命令行首
  • Ctrl + e 光标移动到命令行尾
  • ctrl + z 把命令放入后台
  • ctrl + r 在历史命令中搜索

历史命令

  • history [选项] [历史命令保存文件]
    • 选项 -c 清空历史命令
    • -w把缓存中的历史命令写入历史命令保存文件 ~/.bash_history ,每个用户都有自己的历史命令保存文件,不同用户不会互相冲突

history中的命令和历史命令文件保存的不一定一致,一般而言要多一些,系统会在正常退出之后将缓存中的命令写入到文件中,history -w将缓存写入文件

  • 历史命令默认保存1000条,可以在环境变量配置文件中/etc/profile 中修改

历史命令的调用
  • 使用上下箭头调用以前的历史命令
  • 使用 !n重复执行第n条历史命令
  • 使用!!重复执行上一条命令
  • 使用 !字符串 重复执行最后一条以该字符串开头的命令
命令与文件补全
  • 使用 TAB 键操作来补全命令和文件,补全命令依赖 $PATH环境变量,补全文件依赖当前操作的路径

输入与输出重定向

  • 输入与输出: 将内容写入系统为输入,将执行完的结果进行显示为输出

  • 标准的输入输出,用文件描述符来表示键盘(标准输入)显示器(包括正确与错误输出)

输出重定向,将显示在控制台的结果输出到文件中(前提是有输出结果),如果文件不存在则创建,存在则修改文件

正确输出 命令 > 文件 错误输出 错误命令 2>文件 ,错误输出记得不要带上空格

输入重定向
  • wc [选项] [文件名]

    • 选项 -c 统计字节数
    • -w 统计单词数
    • -l 统计行数
  • 命令<文件把文件作为命令的输入

    • wc log.txt 等于 wc < log.txt
  • 命令<<标识符

    • 用于统计下次输入到标识符之间的输入的内容
  • 标识符把标识符之间内容作为命令的输入

多命令顺序执行

  • ls && echo yes || echo no 注意逻辑与和逻辑或不能随意调换顺序 ,当第一条命令正确执行,逻辑与生效,第二条命令才会执行,然后逻辑或生效,第三条命令也就不会执行
管道符
  • 命令格式 命令1 | 命令2 命令1的正确输出作为命令2的操作对象;
  • 管道符操作的命令比较严格,不是任何命令都可以对结果进行操作
ls -l | echo //无法正确输出
ls -l | more 分屏显示输出结果
netstat -an |grep "ESTABLISHED"
管道符和逻辑或逻辑与的区别
  • 管道符的操作的是上一条命令的执行结果,而逻辑操作没有数据交换,只是命令的执行结果影响执行逻辑

more命令分屏显示文件内容,可以先将命令操作结果输出重定向到文件,然后more 查看文件;
abc[^0-9]* 匹配以abc开头的非数字字符串

linux 通配符

  • Bash中的其他特殊符号

  • echo ls 等同于 echo $(date) 反引号的功能和 $()一致 ,调用系统命令,先执行再赋值给系统变量

bb=$(ls)将结果赋值给变量
echo $bb //打印变量结果
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值