shell体验一

简介:

shell是什么,能干什么?
1.程序
    狭义:操作系统程序和应用程序。
    操作系统程序是用来调用监控内核的,在这个操作系统上面运行着所有我们可以应用的程序。
    计算机的运行是这样一个联系(或是支持)
    硬件==》内核 ==》操作系统 ==》 shell ==》程序  
    ***内核 ==》操作系统 ==》 shell(我觉得他们都被包含在操作系统中)****
    (这里我们只是从程序和作用的的角度看操作系统。大家说的linux操作系统是个大集合是一个全面的概念。就好比
        china  是瓷器。也是中国)。
    简化下:  硬件 ==》操作系统 ==》 程序
shell是一个命令解释器。处于linux的操作系统(内核)与应用程序之间。通过操作系统提供的方法解释并运行应用程序。
    bash shell是centos默认的shell。包含简单的语法和环境。查看本机的shell类型 (echo $SHELL),查看shell的版本(
    bash --version ).
    shell脚本的开服环境
        任何编辑器都可以。(类windows的记事本)centos下的vi或vim ,简单的操作也可以 echo  "" >filename 
shell的文件名:
        其实,linux一切都是文件。不像window,以后缀名为区别。这里我们给的.sh 后缀是一种约定俗成的方式。方便
        大家的识别和管理。因此,不加.sh也是没有问题的。
        举个例子:
        $ cat -n test_hello.sh 
         1  #!/bin/bash
         2  #author:swallow
         3  echo 'hello world'

shell的语法格式: 
        1 #! 这2个字符是shell解释器开始读取shell的开始符号。 /bin/bash 是在创建用户的时候。定义的shell的类型。关系到shell的运行环境。
        2 # 是shell头部的注释内容一般是日期。作者。 如果是在shell脚本里面大段的#就是为了方便理解语法而写的注释。
        3 echo 'hello world' 这些就是脚本的主体。就是一些基础命令或是if while for 等逻辑结构。
            可以简单的理解:shell 主体就是一堆可以实现我们需要的功能的命令的集合。
shell的执行:
       linux的文件权限体系由 r  w  x 组成。
       如果有x权限的可以直接:用文件名来执行
       一般用户创建的文件如果没有 x 权限没有办法执行的。
       在练习的时候可以赋予权限: chmod +x  test_hello.sh
       或者通过 bash 或者 sh  test_hello.sh   (bash/sh 可以写全路径名 /bin/bash  /bin/sh)
       这里 sh  是bash 的软链接(类似于win的快捷方式)
       $ ll /bin/sh
       lrwxrwxrwx. 1 root root 4 Jan 18 15:01 /bin/sh -> bash
       (了解linux的人,应该一目了然)
       $ bash <test_hello.sh  (这样子也可以)
       如果在脚本里面 可以通过管道 | bash  执行
       另一种方法就是: .   或者 source  本质是一样的(读入脚本并且执行)
       举个例子比较下:source和 sh 的区别;
       $ cat -n /home/swallow/test_source.sh 
         1  #!/bin/bash
         2  # 
         3  cd /tmp
         4  echo "the script is ok"
         5  pwd
       [swallow@swallow ~]$ sh test_source.sh 
        the script is ok
        /tmp
        [swallow@swallow ~]$ source test_source.sh 
        the script is ok
        /tmp
        [swallow@swallow tmp]$ ************用source执行完程序切换到/tmp目录下)
        sh执行没由进入到/tmp ,而source 进入到/tmp目录下。
        因为:sh命令在执行的时候shell会开启一个子进程。shell的执行在子进程里面执行。在我们
        执行shell的时候实际还在父进程里面。而没有切到子进程下面。
        而source  命令执行时直接在父进程里面执行没有开启新的子进程。一般如果脚本里面还包含其它的
        shell脚本。建议,用source 执行。
查看shell的执行结果:
         echo $?
        一般为0 是正常执行。因为linux源于Unix。Unix里面的文件执行后释放进程的标记符里面0就代表成功.
    查看当下的shell的具体环境可以通过: env 命令查看全局变量(系统级) set 命令输出所有变量。包括
    全局变量和局部变量。declare 命令输出所有的变量,函数,整数,和已经导出的变量。
        一般修改变量的方法:
        在 /etc/profile 文件的结尾添加一句;
        export PATH=/softwaredirectory/bin:$PATH
        一般就是讲新安装软件的路径的bin目录放入/etc/profile 文件的末尾。并且重新定义PATH.为了不影响原
        PATH 。一般的赋值写法:  PATH=directory:$PATH  (新目录和引用原来的目录)
几种引用的对比:"" ' '  $   ``
        # var=123
        # echo "$var"
        123
        # echo '$var'
        $var
        # echo $var
        123# echo `date`
        Sat Jan 21 16:29:15 CST 2017
        # echo $(date)
        Sat Jan 21 16:32:15 CST 2017
    一般 单引号:比较直接里面是什么,就直接输出。  双引号遇到例如\ $ 会转义  
     ·· 双反引号的作用和 $() 类似:一般用于命令的引用。
    技巧: 生成有序列 {a..z}  {1..100}  seq 30
一个例子明白:$0:当前脚本名称 $$;脚本执行的PID $# :传入的参数的个数
        $ vim test.sh     
        #!/bin/bash
        #
        echo -e "script name is : $0\n"
        echo -e "pid  is :$$ \n"
        echo -e "sum_file is :$# \n"
        $ sh test.sh test1 test2  test3
        script name is : test.sh

        pid  is :26918 

        sum_file is :3 










本文转自 swallow_zys  51CTO博客,原文链接:http://blog.51cto.com/12042068/1893578,如需转载请自行联系原作者
目录
相关文章
|
Shell Windows Linux
|
10月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
885 9
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
10月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
958 2
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
422 60
|
10月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1284 1
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
738 17
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
2301 25