天天看点

linux内核 执行shell命令,Linux学习笔记3-Shell学习

1、Shell概述

1.1、Shell是一个命令解释器,解释用户输入的命令,让Linux内核理解并执行用户命令,同时将Linux内核执行的结果进行翻译显示通知给用户。

linux内核 执行shell命令,Linux学习笔记3-Shell学习

操作系统体系结构.jpg

1.2、Shell分类

1、Bourne Shell,1979(sh,ksh,Bash,psh,zsh)

2、C Shell,Unix中使用的Shell(csh,tcsh)

3、查询当前使用的Shell版本,通过查询变量获得

echo $SHELL

4、查看支持的Shell版本

cat /etc/shells

5、Shell版本切换,直接输入:版本名+enter 进入,输入:exit 退回

2、脚本执行方式

2.1、echo输出命令

echo [选项] [输出内容]

选项:

-e 识别输出内容中的转义字符\b \t \x \e。。。。

2.2、hello word脚本,其中可以调用系统命令

vim hello.sh

#!/bin/bash

#The first program

echo -e "\e[1;34m hello word \e[0m"

执行方式

1、chmod 755 hello.sh (修改权限)+ ./hello.sh或者/home/hello.sh (执行)

2、bash hello.sh (直接执行)

3、Bash的基本功能

3.1、命令的別名

1、查看已有別名 alias

2、定義別名

临时生效:alias ls='ls --color=never'

永久生效:在用戶家目錄內的.bashrc文件中添加別名定義語句

3、刪除別名 unalias 別名

3.2、命令生效順序

1、執行絕對路徑和相對路徑執行命令

2、執行別名

3、執行bash的內部命令

4、執行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

3.3、快捷键

ctrl+c 强制终止

ctrl+l 清屏 clear

ctrl+u 删除光标位置到行首

ctrl+a 到行首

ctrl+e 到行尾

ctrl+z 将命令放到后台

ctrl+r 在历史命令中搜索

3.4、历史命令

1、history [选项] [历史命令保存文件,在家目录下的.bash_history]

选项:

-c 清空历史命令

-w 把缓冲中命令写入保存文件\

2、默认保留1000条,可以通过/etc/profile中设置

3、!n重复执行第n条命令

4、!!重复执行上一条命令

5、!字符 重复执行上一次以字符开头的命令

6、上下键返回

3.5、输出重定向

1、标准输入输出

|设备~|设备文件名~ |文件描述符|

|键盘~|/dev/stdin |0|

|显示器|/dev/stdout|1|

|显示器|/dev/stderr|2|

2、格式

命令>文件 (以覆盖形式)

命令>>文件 (以追加形式)

3、保存报错信息

命令 2>文件 (以覆盖形式)

命令 2>>文件 (以追加形式)

4、正确输出和错误输出同时保存

命令>文件 2>&1

命令>>文件 2>&1(***)

命令 &>文件

命令 &>>文件(*****)

命令>>文件1 2>>文件2(****)

3.6、输入重定向

1、wc [选项] [文件名] //统计输入内容

选项:

-c 统计字节数

-w 统计单词数

-l 统计行

2、wc < 文件名 ,统计文件内容

3、wc<

3.7、管道符

1、多命令顺序执行

cmd1;cmd2 顺序执行,无论是否出错

cmd1&&cmd2

cmd1||cmd2

命令1 && 命令2 || 命令3——ls && echo yes || echo no

2、管道符,多命令顺序执行

命令1 | 命令2 //命令1的输出结果作为命令2的操作对象

netstat -an | grep ESTABLISHED | wc -l

3.8、通配符,主要用于匹配文件名或者目录,文件内容一般采用正则表达式

?匹配任意一个字符

*匹配任意一个或多个字符

[]匹配中括号内的任意一个字符

[-]匹配中括号内的任意一个字符,-代表范围[0-9]

[^]匹配中括号内的任意一个字符,^代表逻辑非

linux内核 执行shell命令,Linux学习笔记3-Shell学习

bash中其他的特殊符号.jpg

3、reference