当前位置: 首页 > Linux

LinuxShell基础

时间:2023-04-07 01:22:55 Linux

一、Shell概述1.1概述Shell是什么:命令行解释器,将程序指令翻译给内核,请求硬件功能。通俗地说:内核和用户之间的命令解释器相当于一个翻译器。计算机识别:二进制(依赖ASCII码表翻译)为用户提供一个-》Linux内核(发送请求)-》运行程序本质:接口系统级程序目的:启动、暂停、停止、编写程序编程语言:解释和executionLinux系统的脚本语言,可以直接调用Linux系统命令Shell:Linux中的字符界面(接受命令,并将命令转换成二进制)Windows:有没有shell?该操作界面可以称为外壳。1.2Shell分类1.BourneShell:Unix从1979年开始使用bourneshell,bourneshell的主要文件名为sh。2、CShell:CShell主要用于BSD版本的Unix系统,其语法类似于C语言,故而得名。3.shell的两种主要语法类型是bourne和C,两者互不兼容。echo$SHELL查看ShellBash:Bash与sh兼容,目前的Linux使用Bash作为用户的基本shell。Linuxvi/etc/shells支持的shell目录。1.3shell的主要作用是帮助管理员简化Linux系统脚本语言的管理,简化管理操作。没有Java、PHP等语言的复杂功能。2、脚本执行方法2.1echo输出命令格式:echo[选项][输出内容]选项:-e:支持反斜杠控制的字符转换\a-输出警告音\b-退格符\n-换行符\r-回车回车键\t-制表符,即制表键\v-垂直制表符\0nnn-按八进制ASCII码输出字符\xhh-按十六进制ASCII码表输出字符echo"bolshecanglsnixihuannayige"echo-e"bolshecanglsnibxihuannayige"echo-e"hellbo"echo-e"htetlnltot"echo-e"x68tx65tx6cnx6ctx6f"echo-e"e[1;31mShellbasicse[0m"输出颜色:\e[1;xxm-彩色显示;\e[0m-彩色显示关闭30m=black,31m=red,32m=green,33m=yellow34m=blue,35m=magenta,36m=cyan,37m=white2.2脚本执行方式一:授予执行权限,直接运行chmod755hello.sh./hello.sh(或者用绝对路径执行/root/hello.sh)方法二:通过Bash调用并执行脚本bashhello.sh注意:#firstOK:#!/bin/Bash不是注释,它声称下面的内容是Linux的标准脚本程序。如果脚本是使用纯shell语句完成的,请不要添加#!/bin/Bash,运行正常,但是如果脚本调用其他语言,就会报错。3.Bash基本功能3.1命令别名及快捷键3.1.1别名alias:查看系统中所有命令别名aliasls='ls--color=never'设置别名(暂时有效,重启后无效或重新登录)aliasalias='originalcommand'(temporary)permanenteffectvi~/.bashrc(多个环境变量文件)--写环境变量配置文件(~代表用户家目录)vi/root/.bashrc---addaliasls='ls--color=never'(系统重启后永久有效)source.bashrc--使当前环境变量设置生效(不需要系统重启后永久生效)删除别名:unaliasls命令的有效顺序是第一个执行绝对路径或相对路径的命令第二个顺序执行别名第三个顺序执行Bash的内部命令第四个顺序执行第一条命令按照$PATH环境变量设置定义的目录顺序执行3.1.2快捷键ctrl+c强制终止ctrl+l清屏相当于clearctrl+a光标快速返回到行首ctrl+e光标快速移至行尾ctrl+u从光标位置删除至行首ctrl+z将命令置于后台--此命令非常谨慎使用ctrl+rhistorycommandto搜索3.2历史命令历史命令是指将操作过的命令保存在系统中,需要时再调用。cat~./history,该文件记录的命令保存在上次登录和注销后。查看历史命令,不仅可以查看之前保存的命令,还可以查看本次登录后的新操作命令。这些命令只会在正确退出后写入~./bash_history。history[option][历史命令保存文件]option:-c:clearhistorycommand#不建议清除原因一:当本次操作出错时,可以与历史命令对比排查#不建议toclear原因二:登录后如果发现历史命令被清除,则可以判断该账号或服务器有人登录过。#不建议清空原因3:即使保存命令数量,文件体积也不大,不会对服务器造成太大压力。history命令强制写入history命令保存文件~/.bash_historyhistory命令默认保存1000条,可在环境变量配置文件/etc/profile(HISTSIZE)中修改history命令调用:使用上下箭头调用之前的历史命令使用“!n”重复执行第n条历史命令。使用”!!”重复执行最后一条命令。使用“!string”重复执行以该字符串开头的最后一条命令。例如执行servicenetworkrestart后输入!ser执行同样的命令。命令和文本补全在Bash中,命令、目录和文件补全是一个非常方便和常用的功能。我们只需要在输入命令或文件时按下“Tab”键就可以自动完成。系统的命令完成依赖于:$PATH3.3输出/输入重定向3.3.1输出重定向关于2>&1的含义含义:将标准错误输出重定向到标准输出符号>&是一个整体,不能分开。分开之后,就不是上面的意思了。例如,有人可能会这样想:2是标准错误输入,1是标准输出,>是重定向符号,那么“将标准错误输出重定向到标准输出”应该写成“2>1”?是这样吗?如果你试过就会知道,2>1的写法其实是将标准错误输出重定向到一个名为“1”的文件中去写2&>1,这是不允许的。Q&A:写“>log2everytime>&1”太麻烦了,可以简写吗?有两种简写方法:1.&>log2.>&log以上两个方法与“>log2>&1”语义相同。那么以上两种方式的&>和>&有区别吗?语义上没有区别,但第一种方法是最好的选择。一般使用第一个命令&>/dev/null将命令的结果丢进null(类似垃圾桶)只执行不显示。.3.3.2输入重定向(用得少,了解一下)wc[option][filename]option:-c:统计字节数-w:统计字数-l:统计行数wc/etc/|more用于分页显示命令执行结果。网络统计-an|grep已建立|wc-l用于查看本机当前连接的客户端,统计客户端数量。3.4通配符(文件名或目录名)1.?匹配任意一个字符2.*匹配0个或任意个字符3.[]匹配括号内任意一个字符4.[-]匹配括号内任意一个字符,-代表一个范围5.[^]匹配的不是任意字符括号中如:lstest*Bash中的其他特殊符号:''单引号,单引号中的左右特殊符号,如$,&没有特殊意义""双引号,双引号中的左右特殊符号没有特殊意义,但“$”、“`”、“\”除外。它具有“调用变量值”??、“引用命令”和“转义字符”的特殊含义``反引号,反引号内的内容是系统命令,在Bash中将首先执行。与$()相同。$()用于引用系统命令#在shell脚本中,#开头的行代表注释$用于调用变量的值,如果需要调用变量名的值,需要用$name来获取变量\转义符的值,\后面的特殊符号会失去特殊意义,变成普通字符。例如\$会输出“$”符号