Linux学习——Shell基础[通俗易懂]

Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至编写一些程序。Shell 还是一个功能强大的编程,易编写、易调试、灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。用户通过shell向Linux内核发指令,Linux内核通过shell将返回

大家好,又见面了,我是全栈君。

1 shell概述

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

  • Shell 还是一个功能强大的编程,易编写、易调试、灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

  • 用户通过shell向Linux内核发指令,Linux内核通过shell将返回内容显示给用户。

    B Shell 和 C Shell , Linux中标准的shell 为bash。

    echo $SHELL :当前系统shell

[root@localhost shell]# echo $SHELL
/bin/bash

2 脚本执行方式
(1)echo 输出命令

echo [选项]  [输出内容]

注:输出的内容中间有空格,需要加”“双引号,使用 ! 会报错。

(2)第一个脚本

#!/bin/bash 这句中的#不是注释,必须要写。
#!/bin/bash #这个必须是第一行,其他行会认为是注释
#This is my first shell

echo -e "\e[1;30mHello World\e[0m"

echo -e "\e[1;35m good do it\e[0m"

注: \e[1; 开启颜色 , \e[0m 结束开启颜色

(3)脚本写完:脚本执行
1.赋予执行权限,直接运行

    chmod 755 hello.sh  # chmod u+x hello.sh
    ./hello.sh

2.通过Bash 调用执行脚本

    bash hello.sh
    sh hello.sh #sh 是bash的软连接

重要:虽然下面的不是必需的,但是优秀来源于规范和好的习惯!
(1):Shell脚本的第一行是指定的脚本解释器。(虽然有些Linux系统不写也可以执行,但是规范起见,还是写为好)

#!/bin/bash
或
#!/bin/sh

(2)Shell脚本开头注释(注释内容不要使用中文)

#Date 20:13:14 2017-07-01
#Author dufy
#Description This is a test shell
#Version 1.0

3 别名与快捷键
(1)别名:命令别名 == 人的小名

    查看别名: alians 
    设定别名: alias 别名='原命令' #重启失效
            vi ~/.bashrc  # ~:家目录
            source .bashrc
    删除别名:unalias 别名  #临时生效,永久生效需删除配置文件内容
命令生效顺序:
    1.绝对路径或相对路径
    2.别名

注:别名不要和系统命令重名!

(2)快捷键

    Ctrl + c # 强制终止当前命令
    Ctrl + l # 清屏
    Ctrl + a # 光标移动到命令行首
    Ctrl + e # 光标移动到命令行尾
    Ctrl + u # 从光标所在位置删除到行首

4 历史命令

history #查看执行过的历史命令
/etc/profile -- historysize  #修改历史记录的数量

5 输出重定向
输出重定向:从原来的输出到屏幕现在输出到文件。

    >  输出,并覆盖
    >> 输出,追加
例子;
    ls > test.log
    ll > test.log  #覆盖 test.log
    ifconfig >> test.log #追加内容到test.log

6 管道符
(1)多命令顺序执行

>   ; 顺序      # 命令1 ; 命令2 ; 命名3 
场景例子:
    a: date  执行命令 date # 查看执行时间
    b:  多个命令执行,中间某个命令报错,还会继续执行
> && 逻辑与  #命令1  &&  命令2
命令1错误,命令2不执行
>   || 逻辑或 #命令1 || 命令2
-- 命令1正确执行。命令2不执行

ls && echo yes || echo no
    命令1正确 :yes
    命令1错误 : no

(2)管道符

命令格式: 命令1 | 命令2

#命令1的正确输出作为命令2的操作对象

    #ls -l /etc | more
    # netstat -an | grep 8080

7 通配符

    ? 匹配一个任意字符
    * 匹配0个或任意多个任意字符
    [] 匹配中括号中任意一个字符
    [-] 配置中括号中任意一个字符,-代表一个范围
    [^] 逻辑非,表示匹配不是中括号内的一个字符
    '' 单引号,单引号中所有的特殊字符没有特殊含义
    "" 双引号,特殊字符如$ 有特殊含义
    `` 反引号, 括起来的是系统命令, 和$()使用一样
    $()
    # shell 中注释
    $ 用于调用变量的值
    \ 转义符 ,使用\$ 使$失去含义

欢迎访问我的csdn博客,我们一同成长!

“不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!”

博客首页:http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121156.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASP.NET MVC 5 学习教程:数据迁移之添加字段

    ASP.NET MVC 5 学习教程:数据迁移之添加字段

    2021年8月25日
  • goland2021.10激活码(注册激活)「建议收藏」

    (goland2021.10激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlFDZIAAVGQ5-eyJsaWNlbnNlSW…

    2022年3月28日
  • 磁盘占用率100%——哪些程序可以禁用(详细版)【还讲到独立显卡、集成显卡、双显卡、固态硬盘卡机卡死卡顿解决】

    磁盘占用率100%——哪些程序可以禁用(详细版)【还讲到独立显卡、集成显卡、双显卡、固态硬盘卡机卡死卡顿解决】我买内存条之前,电脑超级卡的,我不喜欢用完电脑就关机,经常晚上用完就“睡眠、待机”,第二天早上用电脑,一般都打开谷歌浏览器、网易云音乐、有道词典、Eclipse、Oracle、Tomcat、电脑管家、文件资源管理器;我使用Eclipse编写代码,我都输完一行代码,电脑卡的呀,30分钟至一分钟才有反应,这算是快的,最恶心的是“卡至Eclipse软件自己关闭了”!!!所以只能看看哪些服务进程可以禁用…

    2022年6月26日
  • java生成license_使用truelicense实现用于JAVA工程license机制(包括license生成和验证)…

    java生成license_使用truelicense实现用于JAVA工程license机制(包括license生成和验证)…开发的软件产品在交付使用的时候,往往会授权一段时间的试用期,这个时候license就派上用场了。不同于在代码中直接加上时间约束,需要重新授权的时候使用license可以避免修改源码,改动部署,授权方直接生成一个新的license发送给使用方替换掉原来的license文件即可。下面将讲述使用truelicense来实现license的生成和使用。Truelicense是一个开源的证书管理引擎,详细介…

    2022年7月26日
  • python3、sqlmap下载与安装教程

    一、前提需要安装python3,可以参考其他教程二、下载官网下载http://sqlmap.org/三、安装将下载的sqlmap.zip解压到文件夹sqlmap中,并拷贝到Python安装路径下四、配置在桌面上创建一个cmd进入python的快捷方式(这步可以不做,只是比较方便启动),右键新建快捷方式输入cmd快捷方式命名可随意,不作要求,这里用sqlmap右键–属性修改起始位置为sqlmap文件夹路径测试启动sqlmap,双击刚才创建的快捷方式,

    2022年4月7日
  • HTML CSS整理笔记[通俗易懂]

    HTML CSS整理笔记[通俗易懂]常见字体单位:1.em移动端常用的字体尺寸单位,说白em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5。但当div进行嵌套时,em始终按当前div继承的字体大小来缩放。2.remr是root的意思,即相对于根节点html的font-size进行缩放,当有嵌套关系时,嵌套关系的元素的字体大小始终按照根节点的字体大小…

    2022年6月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号