shell 订阅
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。 展开全文
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
信息
性    质
命令解析器
外文名
shell
用    途
接收用户命令
中文名
shell术语
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。在排序算法中,Shell是希尔排序的名称。基本上shell分两大类:一:图形界面shell(Graphical User Interface shell 即 GUI shell)例如:应用最为广泛的 Windows Explorer (微软的windows系列操作系统),还有也包括广为人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE。二:命令行式shell(Command Line Interface shell ,即CLI shell)例如:bash / sh / ksh / csh / zsh(Unix/linux 系统)(MS-DOS系统)cmd.exe/ 命令提示字符(Windows NT 系统)Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell (sh)和C shell (csh)。交互式shell和非交互式shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。shell的类型在UNIX中主要有:Bourne shell (包括 sh,ksh,and bash)Bourne shell ( sh)Korn shell ( ksh)Bourne Again shell ( bash)POSIX shell ( sh)C shell (包括 csh and tcsh)C shell ( csh)TENEX/TOPS C shell ( tcsh)Bourne Shell  首个重要的标准Unix Shell是1979年底在V7 Unix(AT&T第7版)中引入的,并且以它的创始科技部基础条件平台“国家气象网络计算应用节点建设”(2004DKA50730)资助者Stephen Bourne的名字命名。Bourne shell 是一个交换式的命令解释器和命令编程语言。Bourne shell 可以运行为login shell或者login shell的子shell(subshell)。只有login命令可以调用Bourne shell作为一个login shell。此时,shell先读取/etc/profile文件和$HOME/.profile文件。/etc/profile文件为所有的用户定制环境,$HOME/.profile文件为本用户定制环境。最后,shell会等待读取你的输入。C Shell Bill Joy于20世纪80年代早期,在伯克利的加利福尼亚大学开发了C shell。它主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。Korn Shell 有很长一段时间,只有两类shell供人们选择,Bourne shell用来编程,C shell用来交互。为了改变这种状况,AT&T的bell实验室David Korn开发了Korn shell。ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法。因此,Korn shell广受用户的欢迎。它还新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能。Korn Shell 是一个交互式的命令解释器和命令编程语言.它符合POSIX——一个操作系统的国际标准.POSIX不是一个操作系统,而是一个目标在于应用程序的移植性的标准——在源程序一级跨越多种平台。Bourne Again Shell (bash) bash是GNU计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。POSIX Shell POSIX shell 是Korn shell的一个变种. 当前提供POSIX shell的最大卖主是Hewlett-Packard。在HP-UX 11.0,POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.各主要操作系统下缺省的shell:AIX下是Korn Shell.Solaris缺省的是Bourne shell.FreeBSD缺省的是C shellHP-UX缺省的是POSIX shell.Linux是Bourne Again shell.Windows PowerShell是一种新的交互式的命令行和基于任务脚本编写技术,它使信息技术(IT) 管理员能够全面地自动操作和控制系统管理任务,从而提高了管理员的生产力。Windows PowerShell 包括多个系统管理实用工具、一致的语法和命名惯例、及对普通管理数据更好地导航,如登记、证书存储 或 Windows Management Instrumentation (WMI)。Windows PowerShell 还专门针对 IT 管理,提供直观的脚本编写语言。Shell也是一个VB函数,它的作用是运行程序,语法是Shell(命令字符串[,窗口类型])
收起全文
精华内容
参与话题
问答
  • shell

    万次阅读 多人点赞 2019-09-16 20:00:00
    shell 什么是shell: 现在我们使用的操作系统(Windows、Mac OS、Android、iOS等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及...

    shell

    什么是shell:

    现在我们使用的操作系统(Windows、Mac OS、Android、iOS等)都是带图形界面的,简单直观,容易上手,对专业用户(程序员、网管等)和普通用户(家庭主妇、老年人等)都非常适用;计算机的普及离不开图形界面。
    然而在计算机的早期并没有图形界面,我们只能通过一个一个地命令来控制计算机,这些命令有成百上千之多,且不说记住这些命令非常困难,每天面对没有任何色彩的“黑屏”本身就是一件枯燥的事情;这个时候的计算机还远远谈不上炫酷和普及,只有专业人员才能使用。
    对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。换句话说,图形界面和命令行要达到的目的是一样的,都是让用户控制计算机。然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
    由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
    用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做 Shell。

    2.shell 作用详析:

    Shell 除了能解释用户输入的命令,将它传递给内核,还可以:
    调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果;
    在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入;
    Shell 本身也可以被其他程序调用。
    由此可见,Shell 是将内核、程序和用户连接了起来。
    Shell 本身支持的命令并不多,但是它可以调用其他的程序,每个程序就是一个命令,这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作,如文本或字符串检索、文件的查找或创建、大规模软件的自动部署、更改系统设置、监控服务器性能、发送报警邮件、抓取网页内容、压缩文件等。
    Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程,这和使用 C/C++、Java、Python 等常见的编程语言并没有什么两样。
    Shell 虽然没有 C/C++、Java、Python 等强大,但也支持了基本的编程元素,例如:
    if…else 选择结构,switch…case 开关语句,for、while、until 循环;
    变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
    函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)。
    站在这个角度讲,Shell 也是一种编程语言,它的编译器(解释器)是 Shell 这个程序。我们平时所说的 Shell,有时候是指连接用户和内核的这个程序,有时候又是指 Shell 编程。
    Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件,例如检测计算机的硬件参数、一键搭建Web开发环境、日志分析等,Shell 都非常合适。

    3.3.常见的shell类型有 sh、bash、csh、tcsh、ash 等。

    常见的 Shell

    sh
    sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。
    sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

    csh
    sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。
    Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。
    BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。

    tcsh
    tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

    ash
    一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

    bash
    bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。
    bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。
    bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。
    尽管如此,bash 和 sh 还是有一些不同之处:
    一方面,bash 扩展了一些命令和参数;
    另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

    历史命令

    1.history 查询历史命令
    历史命令文件存放在 /root/.bash_history

    [root@localhost ~]# ls  /root/.bash_history  
    /root/.bash_history
    [root@localhost ~]# cat !$
    cat /root/.bash_history
    chmod ~/.ssh 700
    chmod /~.ssh 700
    iptable
    ipaddr
    ip addr
    dhclient
    ip addr
    ping www.baidu.com
    ip route
    vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    ip addr
    ifconfig
    vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    systemctl restart network
    ping www.baidu.com
    mkidr ~/.ssh/
    mkdir ~/.ssh/
    ls
    cd /
    cd 
    ls
    cd ..
    ls
    cd /.ssh
    cd
    ls
    cd ~/.ssh
    vi authorized_keys
    chmod 600authorized_keys
    chmod 600 authorized_keys
    ls
    cd ..
    ls
    cd ..
    cd ~
    ls
    cd ~/.ssh
    ls
    ll
    vi authorized_keys 
    chmod 600 authorized_keys 
    vi authorized_keys 
    chmod 600 authorized_keys 
    cd 
    ls
    cd ..
    ls
    chmod 700 home
    yum install -y lrzsz
    ls
    sz anaconda-ks.cfg 
    ls
    rz
    
    

    3.修改系统摩恩的存储历史命令的条数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    4.设定history命令显示时间

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    5.历史命令的调用

    使用上下箭头调用以前的历史命令
    使用 !n 重复执行第n条历史命令
    使用 !! , !-1 重复执行上一条命令 Ctrl+p+enter亦可
    使用 !ls 重复执行最后一条以ls开头的命令

    命令补全和别名

    tab键补全命令:在输入命令的时候,输入命令的一部分,可以按两下tab键补全命令

    centos6 可以使用tab键补全命令,不支持补全选项;
    centos7 也可以使用tab键补全命令,也支持补全选项,但是需要安装一个bash-completion的包,安装完成后需要重启。

    在这里插入图片描述

    自定义别名

    在这里插入图片描述

    别名的配置文件:~/bash.rc 和 /etc/profile.d/

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    取消别名

    在这里插入图片描述

    通配符、输出重定向

    通配符

    符号 作用
    * 匹配任何字符串/文本,包括空字符串;*代表任意字符(0个或多个)
    匹配任何一个字符(不在括号内时)?代表任意1个字符
    [abcd] 匹配abcd中任何一个字符
    [a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符
    {…} 表示生成序列. 以逗号分隔,且不能有空格
    [!abcd]或[^abcd] 表示非,表示不匹配括号里面的任何一个字符

    在这里插入图片描述

    在这里插入图片描述

    输出重定向

    符号 作用
    > 正确输出重定向
    >> 正确追加输出重定向
    2> 错误输出重定向
    2>> 错误追加输出重定向
    &> 不管正确与否,输出重定向
    &>> 不管正确与否,追加输出重定向
    < 输入重定向

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    管道符、作业控制

    符号 作用
    | 把前面命令的结果给后面的命令

    在这里插入图片描述

    作业控制

    命令 作用
    ctrl+c 发送SIGINT信号,终止一个进程。
    ctrl+z 发送SIGSTOP信号,挂起一个进程,将作业放置到后台(暂停状态)。与此同时,可以通过fg重启前台被中断的任务,也可以通过bg把中断的任务放到后台执行。
    jobs 查看当前有多少在后台运行的命令
    fg 将后台中的命令调至前台继续运行,如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    bg 将一个在后台暂停的命令,变成继续执行,如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
    命令+& 这个用在一个命令的最后,可以把这个命令放到后台执行

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • shell脚本--sed的用法

    万次阅读 多人点赞 2018-05-17 01:04:27
    sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳...本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。 1.sed的使用方法,调用sed 命令的语法有两种: 一.在命令...

    sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过

    sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。

    1.sed的使用方法,调用sed 命令的语法有两种:

    一.在命令行指定sed指令对文本进行处理:sed +选项  ‘指令’ 文件

    二.先将sed指令保存到文件中,将该文件作为参数进行调用:sed   +选项  -f  包含sed指令的文件  文件

    sed的常用选项:

    -r:使用扩展正则表达式

    -e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项

    -f:后跟保存了sed指令的文件

    -i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改

    -n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行

    sed中的编辑命令:

    a:追加  向匹配行后面插入内容

    c:更改  更改匹配行的内容

    i:插入  向匹配行前插入内容

    d:删除  删除匹配的内容

    s:替换  替换掉匹配的内容

    p:打印  打印出匹配的内容,通常与-n选项和用

    =:用来打印被匹配的行的行号

    n:读取下一行,遇到n时会自动跳入下一行

    r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件

    2.sed命令实例:

    示例1:向文件中添加或插入行

    sed '3ahello' 1.txt   #向第三行后面添加hello,3表示行号

    sed '/123/ahello' 1.txt #向内容123后面添加hello,如果文件中有多行包括123,则每一行后面都会添加

    sed  '$ahello'  1.txt  #在最后一行添加hello

    sed '3ihello'  1.txt    #在第三行之前插入hello

    sed '/123/ihello'  1.txt   #在包含123的行之前插入hello,如果有多行包含123,则包含123的每一行之前都会插入hello

    sed '$ihello'  1.txt     #在最后一行之前插入hello

    示例2:更改文件中指定的行

    sed  '1chello'  1.txt  #将文件1.txt的第一行替换为hello

    sed  '/123/chello'  1.txt  #将包含123的行替换为hello

    sed '$chello'  1.txt  #将最后一行替换为hello

    示例3:删除文件中的行

    sed  '4d'  1.txt    #删除第四行

    sed '1~2d' 1.txt   #从第一行开始删除,每隔2行就删掉一行,即删除奇数行

    sed   '1,2d'  1.txt   #删除1~2行

    sed  '1,2!d'  1.txt   #删除1~2之外的所有行

    sed  '$d'   1.txt      #删除最后一行

    sed  '/123/d'   1.txt   #删除匹配123的行

    sed  '/123/,$d'  1.txt  #删除从匹配123的行到最后一行

    sed  '/123/,+1d'  1.txt   #删除匹配123的行及其后面一行

    sed  '/^$/d'    1.txt    #删除空行

    sed   '/123\|abc/!d'  1.txt    #删除不匹配123或abc的行,/123\|abc/ 表示匹配123或abc ,!表示取反

    sed  '1,3{/123/d}'   1.txt     #删除1~3行中,匹配内容123的行,1,3表示匹配1~3行,{/123/d}表示删除匹配123的行

    示例4:替换文件中的内容

    sed  's/123/hello/'   1.txt   #将文件中的123替换为hello,默认只替换每行第一个123

    sed  's/123/hello/g'  1.txt #将文本中所有的123都替换为hello

    sed 's/123/hello/2'   1.txt  #将每行中第二个匹配的123替换为hello

    sed  -n 's/123/hello/gpw  2.txt'   1.txt    #将每行中所有匹配的123替换为hello,并将替换后的内容写入2.txt

    sed  '/#/s/,.*//g'  1.txt   #匹配有#号的行,替换匹配行中逗号后的所有内容为空  (,.*)表示逗号后的所又内容

    sed  's/..$//g'  1.txt  #替换每行中的最后两个字符为空,每个点代表一个字符,$表示匹配末尾  (..$)表示匹配最后两个字符

    sed 's/^#.*//'  1.txt      #将1.txt文件中以#开头的行替换为空行,即注释的行  ( ^#)表示匹配以#开头,(.*)代表所有内容

    sed 's/^#.*//;/^$/d'  1.txt  #先替换1.txt文件中所有注释的空行为空行,然后删除空行,替换和删除操作中间用分号隔开

    sed 's/^[0-9]/(&)/'   1.txt   #将每一行中行首的数字加上一个小括号   (^[0-9])表示行首是数字,&符号代表匹配的内容

    或者  sed 's/\(^[0-9]\)/(\1)/'   1.txt  #替换左侧特殊字符需钥转义,右侧不需要转义,\1代表匹配的内容

    sed  's/$/&'haha'/'  1.txt   # 在1.txt文件的每一行后面加上"haha"字段

    示例5:打印文件中的行

    sed  -n '3p'  1.txt   #打印文件中的第三行内容

    sed  -n '2~2p'  1.txt   #从第二行开始,每隔两行打印一行,波浪号后面的2表示步长

    sed -n '$p'  1.txt  #打印文件的最后一行

    sed -n '1,3p'  1.txt  #打印1到3行

    sed  -n '3,$p'  1.txt  #打印从第3行到最后一行的内容

    sed  -n '/you/p'  1.txt   #逐行读取文件,打印匹配you的行

    sed  -n '/bob/,3p'  1.txt  #逐行读取文件,打印从匹配bob的行到第3行的内容

    sed  -n  '/you/,3p'  1.txt  #打印匹配you 的行到第3行,也打印后面所有匹配you 的行

    sed  -n '1,/too/p'  1.txt    #打印第一行到匹配too的行

    sed  -n  '3,/you/p'  1.txt   #只打印第三行到匹配you的行

    sed  -n '/too/,$p'  1.txt  #打印从匹配too的行到最后一行的内容

    sed  -n '/too/,+1p'  1.txt    #打印匹配too的行及其向后一行,如果有多行匹配too,则匹配的每一行都会向后多打印一行

    sed  -n '/bob/,/too/p'  1.txt   #打印从匹配内容bob到匹配内容too的行

    示例6:打印文件的行号

    sed  -n "$="   1.txt   #打印1.txt文件最后一行的行号(即文件有多少行,和wc -l 功能类似)

    sed  -n '/error/='  1.txt     #打印匹配error的行的行号

    sed  -n '/error/{=;p}'   1.txt    #打印匹配error的行的行号和内容(可用于查看日志中有error的行及其内容)

    示例7:从文件中读取内容

    sed  'r 2.txt'  1.txt  #将文件2.txt中的内容,读入1.txt中,会在1.txt中的每一行后都读入2.txt的内容

    sed '3r 2.txt'  1.txt       #在1.txt的第3行之后插入文件2.txt的内容(可用于向文件中插入内容)

    sed  '/245/r   2.txt'   1.txt    #在匹配245的行之后插入文件2.txt的内容,如果1.txt中有多行匹配456则在每一行之后都会插入

    sed  '$r  2.txt'   1.txt     #在1.txt的最后一行插入2.txt的内容

    示例8:向文件中写入内容

    sed  -n  'w 2.txt'   1.txt   #将1.txt文件的内容写入2.txt文件,如果2.txt文件不存在则创建,如果2.txt存在则覆盖之前的内容

    sed   -n '2w  2.txt'   1.txt   #将文件1.txt中的第2行内容写入到文件2.txt

    sed  -n -e '1w  2.txt'  -e '$w 2.txt'   1.txt   #将1.txt的第1行和最后一行内容写入2.txt

    sed  -n -e '1w  2.txt'  -e '$w  3.txt'  1.txt   #将1.txt的第1行和最后一行分别写入2.txt和3.txt

    sed  -n  '/abc\|123/w  2.txt'    1.txt   #将1.txt中匹配abc或123的行的内容,写入到2.txt中

    sed  -n '/666/,$w 2.txt'   1.txt   #将1.txt中从匹配666的行到最后一行的内容,写入到2.txt中

    sed  -n  '/xyz/,+2w  2.txt'     1.txt     #将1.txt中从匹配xyz的行及其后2行的内容,写入到2.txt中

    示例9:sed 在shell脚本中的使用

    实例1:替换文件中的内容

    #!/bin/bash
    if [ $# -ne 3 ];then            #判断参数个数
      echo "Usage:  $0 old-part new-part filename"    #输出脚本用法
      exit
    fi

    sed -i "s#$1#$2#"  $3          #将 旧内容进行替换,当$1和$2中包含"/"时,替换指令中的定界符需要更换为其他符号

    实例2:删除文件中的空白行

    #!/bin/bash

    if [ ! -f $1 ];then         #判断参数是否为文件且存在

       echo "$0 is not a file"

       exit

    fi

    sed -i "/^$/d"   $1 #将空白行删除

    实例3:格式化文本内容

    #!/bin/bash
    a='s/^  *>//      #定义一个变量a保存sed指令,'s/^ *>//':表示匹配以0个或多空格开头紧跟一个'>'号的行,将匹配内容替换
    s/\t*//                 #'s/\t*//':表示匹配以0个或多个制表符开头的行,将匹配内容替换

    s/^>//               #'s/^>//' :表示匹配以'>'开头的行,将匹配内容替换

    s/^ *//'               #'s/^ *//':表示匹配以0个或多个空格开头的行,将匹配内容替换
    #echo $a
    sed "$a" $1        #对用户给定的文本文件进行格式化处理

    实用脚本:批量更改当前目录中的文件后缀名:

    示例1:

    #!/bin/bash
    if [ $# -ne 2 ];then               #判断用户的输入,如果参数个数不为2则打印脚本用法
      echo "Usage:$0 + old-file new-file"
      exit
    fi
    for i in *$1*                         #对包含用户给定参数的文件进行遍历
    do
      if [ -f $i ];then
         iname=`basename $i`        #获取文件名
         newname=`echo $iname | sed -e "s/$1/$2/g"`         #对文件名进行替换并赋值给新的变量
         mv  $iname  $newname          #对文件进行重命名
       fi
    done

    exit 666

    示例2:

    #!/bin/bash
    read -p "input the old file:" old        #提示用户输入要替换的文件后缀
    read -p "input the new file:" new
    [ -z $old ] || [ -z $new ] && echo "error" && exit      #判断用户是否有输入,如果没有输入怎打印error并退出
    for file in `ls *.$old`
    do
      if [ -f $file ];then
         newfile=${file%$old}                        #对文件进行去尾
         mv $file ${newfile}$new                   #文件重命名
      fi

    done

    示例3:

    #!/bin/bash

    if [ $# -ne 2 ];then        #判断位置变量的个数是是否为2
       echo "Usage:$0  old-file  new-file"
       exit
    fi
    for file in `ls`                      #在当前目录中遍历文件
    do
      if [[ $file =~ $1$ ]];then   #对用户给出的位置变量$1进行正则匹配,$1$表示匹配以变量$1的值为结尾的文件
         echo $file                      #将匹配项输出到屏幕进行确认
         new=${file%$1}             #对文件进行去尾处理,去掉文件后缀保留文件名,并将文件名赋给变量new                  
         mv $file ${new}$2          #将匹配文件重命名为:文件名+新的后缀名
      fi

    done

    示例4:使用sed匹配文件中的IP地址

    sed -nr  '/([0-9]{1,3}\.){3}([0-9]{1,3})/p'  1.txt

     

    展开全文
  • Shell脚本

    万次阅读 2020-10-04 20:29:52
    这里写目录标题Shell脚本1.Shell脚本简介2.Shell2.1 Shell 脚本的解释器2.2 脚本的编写规范2.3 执行脚本的三种方式2.4变量的声明2.5变量的引用2.6删除变量 只读变量2.7字符串使用2.8字符串长度及截取2.9脚本参数传递...

    Shell脚本


    1.Shell脚本简介

    Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。Shell 既是一种命令语言,又是一种程序设计语言。Shell script 是一种为 shell 编写的脚本程序。Shell 编程一般指 shell脚本编程,不是指开发 shell 自身。Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。Linux 的 Shell 解释器 种类众多,一个系统可以存在多个 shell,可以通过 cat /etc/shells 命令查看系统中安装的 shell解释器。Bash 由于易用和免费,在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

    2.Shell

    2.1 Shell 脚本的解释器

    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh
    /bin/csh
    

    2.2 脚本的编写规范

    首行描述解释器 #!/bin/bash

    2.3 执行脚本的三种方式

    1、bash 脚本名称 脚本参数
    2、 sh 脚本名称 脚本参数
    3、 ./脚本名称 脚本参数【./脚本名称之间没有空格】【chmod 777 脚本名称】

    2.4变量的声明

    变量名=”值”【中间不能有空格】
    变量名要求 字母或下划线或数字(开头不能是数字)构成

    2.5变量的引用

    使用$ 或 ${}引用变量

    2.6删除变量 只读变量

    删除 unset 变量名
    只读 readonly 变量名

    2.7字符串使用

    双引号(””):内部可以使用变量
    单引号(‘’):内部所有的原样输出
    反引号(``):表示可执行

    2.8字符串长度及截取

    长度: echo ${#skill}
    截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】

    2.9脚本参数传递

    bash 脚本名 参数1 参数2 参数3 。。。。。。
    脚本内
    $0 脚本名称
    $1 参数1
    $2 参数2
    $n 参数n
    $* 所有参数
    $# 参数的个数

    2.10算数运算符

    加法计算 expr 2 + 2
    乘法计算 expr 2 \* 2

    2.11流程控制if

    if [ $a -gt 10 ];then
    代码1
    elif [ $a -lt 10 ];then
    代码2
    else 代码3
    fi

    2.12关系运算符

    在这里插入图片描述

    2.13循环

    For 循环
    For aa in XXXX
    do
    循环体
    done

    While循环
    While 条件 ;
    do
    循环体
    done

    跳出循环
    跳出所有循环 break
    跳出当前循环,进入下一次循环 continue

    case ()

    case 值 in
    结果1) 结果1对应的操作;;
    结果2) 结果2对应的操作;;
    结果3) 结果3对应的操作;;
    esac

    2.14接收控制台数据

    read 变量名
    函数的使用
    函数声明:
    [function] 函数名(){
    函数体
    $参数1
    $参数2
    $参数3
    }

    函数调用 函数名 参数1 参数2 参数3

    2.15数组

    数组声明: 数组名称=(元素1 元素2 元素3 元素4)
    数组的使用
    单个使用 echo 数组名[角标] 【角标从0开始】
    遍历数组
    for var in ${my_arr[*]}
    do
    echo $var
    done

    2.16文件加载

    在文件中添加 . 脚本名称 或者 source 脚本名称
    #!/bin/bash
    source ./test1.sh # 加载test1.sh 的文件内容

    展开全文
  • Linux中编写Shell脚本

    万次阅读 多人点赞 2018-10-08 11:22:35
    Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令的用法 $[]符号的运算示例 Shell脚本的条件测试 ...

    目录

    Shell

    Shell脚本的执行

    Shell脚本编写规范

    Shell 中的变量

    变量的算术运算

    双小括号 (())  数值运算命令的用法

    let 运算命令的用法

    expr 命令的用法

    br 命令的用法

    $[] 符号的运算示例

    Shell脚本的条件测试

    几种条件测试语句

    文件测试操作符

    字符串测试操作符

    整数二元比较操作符

    逻辑操作符

    测试表达式 test 、[] 、[[]] 、 (()) 的区别

    if 条件判断语句

    case 条件判断语句

    for循环语句

    while循环语句

    Break、Continue、exit 循环控制语句

    Shell脚本执行scrapy爬虫和python脚本


    Shell

    Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。

    当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。
    Shell 脚本的类型
    Shell脚本语言是弱类型语言(无须定义变量的类型即可使用),在Unix/Linux中主要有两大类shell: 
    一类是 Bourne  shell ,另一类是 C shell

    1. Bourne shell 包括 Bourne shell (sh)、Korn shell(ksh)、Bourne Again Shell 三种类型。 
    2. C shell包括csh、tcsh两种类型

    查看系统默认的shell: echo  $SHELL
    查看系统支持的shell: cat  /etc/shells

    Shell脚本的执行

    Shell脚本的执行通常可以采用以下几种方式。

    1、bash script-namesh script-name     这是当脚本文件本身没有执行权限时常使用的方法

    2、path/script-name./script-name    在当前路径下执行脚本,需要将脚本文件的权限改为可执行。然后使用脚本的绝对路径或相对路径就可以直接执行脚本了。

    3、source script-name.  script-name 这种方法通常是使用source或 “.”(点号)读入或加载指定的Shell脚本文件,然后依次执行指定的Shell脚本中的语句。这些语句将在当前父 shell 脚本进程中执行(其他几种模式都会启用新的进程执行该脚本进程)。

    Shell脚本编写规范

    Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。

    1、一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:#!/bin/bash  或 #!  /bin/sh     bash 与 sh 的区别 , sh 为 bash的软连接,大多数情况下,脚本使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用    #!/bin/bash 

    2、在shell脚本中,跟在 # 后面的内容表示注释,用来对脚本进行注释说明,注释部分不会被当做程序来执行,仅仅是给开发者和使用者看的,系统解释器是看不到的,更不会执行。注释可以自成一行,也可以跟在脚本命令的后面与命令在同一行。 注释尽量不要使用中文,在脚本中最好也不要有中文。

    3、Shell脚本的开头会加版本、版权等信息

    # Date:16:29 2018-10-20 
    # Author: Create by xiaoxie
    # Description: This script function is …… 
    # Version: 1.1 

    4、在shell脚本中尽量不用中文注释,尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰。

    5、Shell脚本的命名应以.sh为扩展名 例如:1.sh

    6、成对的符号应尽量一次性写出来,然后退格在符号内增加内容,以防止遗漏。这些成对的符号包括: {}、[]、‘’、“”  等

    7、中括号[]两端至少要有1个空格,因此,键入中括号时即留出空格[  ],然后在退格键入中间内容,并确保两端都至少由一个空格。

    8、对于流程控制语句,应一次性将格式写完,再添加内容。 如:一次性完成for循环语句的格式

    for
    do
         内容
    done

    9、通过缩进让代码更易读,如:

    if 条件内容     
           then         
                内容 
    fi 

    10、对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格,需要强引用的,则用单引号(‘’),如果是命令的引用,则用反引号(``)。

    11、脚本中的单引号、双引号及反引号必须为英文状态下的符号。

    Shell 中的变量

    简单地说,变量就是用一个固定的字符串(也可能是字符、数字等的组合)代替更多、更复杂的内容,该内容里可能还会包含变量、路径、字符串等其他内容。 变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过正确地调用内存中变量的名字就可以读取出与变量对应的数据。

    变量的赋值方法为: 先写变量名称,紧接着是 "=" ,最后是值。中间无任何空格。 通过echo命令加上  $变量名,即可输出变量的值。 双引号,以防止出错变量的值一般要加上。

    定义变量时变量名建议用大写,如  A=xie     B=99

    read  -p  “提示信息”   变量名      #交互式赋值方法

    查看变量内容 echo $A  或  echo ${A}

    赋值时使用引号的作用

    • 双引号:允许通过$符号引用其他变量值
    • 单引号:禁止引用其他变量值,$视为普通字符
    • 反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名

    位置参数

    位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。 位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推。$0 是一个特殊变量,它的内容是当前这个shell程序的文件名,所以 $0 不是一个位置参数。

    假如我现在有一个 1.sh脚本文件,内容如下

    #! /bin/bash
    echo $1
    echo $(($2+$3))
    

    当我执行时,我在文件名后加3个参数

    预定义变量

    预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成。 常见的Shell预定义变量有以下几种。

    • $# :位置参数的数量
    • $* :所有位置参数的内容
    • $? :命令执行后返回的状态,0表示没有错误,非0表示有错误
    • $$ :当前进程的进程号
    • $! :后台运行的最后一个进程号
    • $0 :当前执行的进程名

    假如我现在有一个 1.sh脚本文件,内容如下

    #! /bin/bash
    
    echo $1
    echo ${2}+${3}
    
    echo $#             #打印出位置参数的数量
    echo $*             #打印出位置参数的内容
    echo $?             #打印出命令执行后返回的状态
    echo $$             #打印出当前进程的进程号
    echo $0             #打印出当前进程的进程名
    

    当我执行时,我在文件名后加3个参数

    参考文章:Linux中环境变量的设置

    变量的算术运算

    Shell中常见的算术运算符

    Shell 中常见的算术运算命令

    双小括号 (())  数值运算命令的用法

    双小括号 (()) 的作用是进行数值运算与数值比较,它的效率很高,用法灵活,是Linux下常用的运算操作符。其操作方法如下:

    let 运算命令的用法

    let运算命令的语法格式为: let 赋值表达式  

    let 赋值表达式的功能等同于“((赋值表达式))” 范例:  给变量 i 加8

     

    expr 命令的用法

    1、expr 用于运算 
       语法:expr 表达式 
       范例:expr 2 + 2 ; expr 2 – 2 ; expr 2  \*  2 ;  expr 2  /  2    
       注意:运算符号和数字之间要有空格!!

    2、expr配合变量计算

    expr在Shell中可配合变量进行计算,但需要用反引号将计算表达式括起来。

    3、利用 expr 计算字符串的长度

    br 命令的用法

    bc 是UNIX/Linux下的计算器,除了作为计算器来使用,还可以作为命令行计算工具使用

    交互模式 在shell命令行直接输入 bc 及能进入bc语言的交互模式

    bc也可以进行非交互式的运算,方法是与 echo 一起使用,所以我们就可以写在脚本里面

    $[] 符号的运算示例

    Shell脚本的条件测试

    通常,在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误。

    几种条件测试语句

    文件测试操作符

    常用文件测试操作符 说明
    -d   , d的全拼为 directory 文件存在且为目录则为真
    -f   ,   f的全拼为  file 文件存在且为文件则为真
    -e , e的全拼为 exists 文件存在则为真
    -s ,s的全拼为 size 文件存在且大小不为0则为真
    -r ,r的全拼为 read 文件存在且可读则为真
    -w ,w的全拼为write 文件存在且可写则为真
    -x ,x的全拼为executable 文件存在且可执行则为真
    -L ,L的全拼为link 文件存在且为链接文件则为真
    f1 -nt  f2  ,nt的全拼为 newer than 文件f1比文件f2新则为真
    f1 -ot f2 ,ot的全拼为older than 文件f1比文件f2旧则为真

    注:(())不能用于文件测试,文件测试一般常用的是 []

    字符串测试操作符

    常用字符串测试操作符 说明
    -n   若字符串长度不为0,则为真
    -z 若字符串长度为0,则为真
    “字符串1”  ==  “字符串2” 若字符串1等于字符串2,则为真
    “字符串1”  !=  “字符串2” 若字符串1不等于字符串2,则为真

    注: == 和 !=  两端要有空格  ,(())不能用于字符测试

    整数二元比较操作符

    在[]以及test中使用的比较符号 在(())和[[]]中使用的比较符号 说明
    -eq == 或 = 相等,全拼为  equal
    -ne !=

    不相等,全拼为 not equal

    -gt > 大于,全拼为 greater than
    -ge >= 大于等于,全拼为 greater equal
    -lt < 小于,全拼为 less than
    -le <= 小于等于 ,全拼为less equal
    • "="和"!="也可以在[]中作比较使用,但在[]中使用包含"<"和">"的符号时,需要用反斜线转义,有时不转义虽然语法不会报错,但是结果可能不对。
    • 也可以在[[]]中使用包含“-gt”和“-lt”的符号,但是不建议使用
    • 比较符号两端也要有空格,[] (())  [[]]  两端都要有空格

    逻辑操作符

    在[]和test中使用的操作符 在[[]]和(())中使用的操作符 说明
    -a && and ,与,两端都为真,才为真
    -o || or ,或, 两端有一个为真,就为真
    ! ! not ,非, 两端相反,则结果为真

    测试表达式 test 、[] 、[[]] 、 (()) 的区别

    测试表达式符号 test [] [[]] (())
    边界是否需要空格 需要 需要 需要 不需要
    逻辑操作符 ! 、-a、 -o ! 、-a、 -o ! 、&& 、 || ! 、&& 、 ||
    整数比较操作符 -eq 、 -gt 、-lt、-ge 、-le -eq 、 -gt 、-lt、-ge 、-le -eq 、 -gt 、-lt、-ge 、-le 或  = 、>  、< 、 >= 、 <= = 、>  、< 、 >= 、 <=
    字符串比较操作符 = 、 == 、!= = 、 == 、!= = 、 == 、!= 不支持
    文件操作 -d、-f、-e、-r、-s、-w、-x、-L、-nt、-ot -d、-f、-e、-r、-s、-w、-x、-L、-nt、-ot -d、-f、-e、-r、-s、-w、-x、-L、-nt、-ot 不支持
    是否支持通配符匹配

    不支持

    不支持 支持 不支持

    if 条件判断语句

    #####单条件判断##############
    if  条件判断
      then 
          命令
    else
          命令
    fi
    
    #或
    
    if  条件判断;then 
         命令
    else
         命令
    fi

    ###双条件判断#####
    if 条件判断
      then
          命令
    elif 条件判断
      then 
          命令
    else
       命令
    fi
    
    ##或
    if 条件判断;then
        命令
    elif 条件判断;then 
        命令
    else
        命令
    fi
    

    if语句对于字符串的匹配

    case 条件判断语句

    case条件语句相当于多分支的if/elif/ellse条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中。

    case  变量  in
            one)
                命令
    ;;
            two)
                 命令
    ;;
             *) 
                 命令
    esac

    for循环语句

    for  条件
    do
       命令
    done
    
    ##或
    
    for  条件;do
       命令
    done

     

    while循环语句

    while  条件
    do
       命令
    done

    Break、Continue、exit 循环控制语句

    break 、continue在条件语句及循环语句(for、while、if等)中用于控制程序走向;而exit则用于终止所有语句并退出当前脚本。

    命令 说明
    break   n 如果省略 n ,则表示跳出整个循环,n 表示跳出循环的成熟
    continue n 如果省略 n ,则表示跳过本次循环,忽略本次循环的剩余代码,进行循环的下一次循环。n表示退到第 n 层继续循环
    exit n 退出当前 shell 程序,n 为上一次程序执行的状态返回值。n 也可以省略,在下一个 shell 里可通过  $?  接收 exit  n 的n值

    Shell脚本执行scrapy爬虫和python脚本

    #! /bin/bash
    cd /opt/project/
    scrapy crawl xx
    python3 test.py

     

    展开全文
  • Shell编程

    万次阅读 2019-10-21 09:42:07
    大数据学习基础:Shell编程
  • 1. shell 参数换行 Linux参数太长,一般可取续行符 "\"进行参数换行/续行。反斜杠\ 后面紧跟回车,表示下一行是当前行的续行. 如下的代码所示 python target_attack.py \ --input_dir="${INPUT_DIR}" \ --output_...
  • IDEA中编写并运行shell脚本

    万次阅读 多人点赞 2018-07-31 09:25:37
    IEDA中的bashsupport插件支持在IDEA中编写shell脚本文件,有友好的代码格式,支持自动补全,检查错误,并且配置完之后,还可以在IEDA中直接运行shell脚本。下面将一步一步演示插件的安装和配置。 打开IEDA,安装...
  • 什么是shellshell编程

    千次阅读 多人点赞 2018-04-10 22:58:02
    1.什么是shellshell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 说到底,Shell是用户与内核进行交互操作的一种接口...
  • 1. 为什么使用shell组件 2. LiteOS中的shell组件 源码 LiteOS中的shell组件源码如图: 组件自动初始化 使用方法 3. shell组件使用示例
  • ShellShell入门解析

    千次阅读 2020-06-02 23:11:49
    一、Shell概述 为什么要学习Shell呢? 1)需要看懂运维人员编写的Shell程序 2)编写一些简单Shell程序来管理集群、提高开发效率 Shell解析器 1)Linux提供的Shell解析器有: cat /etc/shells /bin/sh /bin/bash ...
  • Shell——你只需要了解这么多

    万次阅读 多人点赞 2018-06-30 20:34:09
    一.Shell简介 Shell是一个用C语言编写的程序,通过Shell用户可以访问操作系统内核服务,类似于DOS下的command和后来的cmd.exe。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行...
  • shell编程

    千次阅读 2019-08-05 21:06:35
    什么是shell编程 高大上的解释,往往让人摸不住头脑。一句话概括就是:shell编程就是对一堆Linux命令的逻辑化处理。 为什么要会shell编程 就是批处理动作,解放双手,避免重复性劳动。 第一个...
  • 首先我们需要把bash理解为一种模式,我们不如把这种模式想象成类似于洋葱一样的结构,我们可以一层一层剥开,也就是说我们可以一层一层的进入子shell。就好比我们进入一栋楼,打开一个房间是一个环境,在当前这个...
  • Shell脚本入门:介绍

    万次阅读 2020-10-22 23:45:50
    学会shell语言是成为java架构师必经之路,想要部署好自己的服务器,只需要通过一个命令,就能构建起整个微服务庞大工程,此等通天手法,还不快学习起来?
  • 一、Shell编程--windows下的shell开发运行工具

    万次阅读 热门讨论 2018-04-28 22:34:51
    对于shell脚本使用vim在linux开发可能效率比较底下,而且大多都是windows开发,当然能够在windows下运行更好。1、开发工具:subli text 3 1)安装插件ShellScriptImproved,用于语法提示以及关键字高亮&lt;1&...
  • Shell编程基础

    万次阅读 2019-04-20 00:09:14
    Shell编程基础(一) 如果经常使用linux系统,不会点shell编程,很难让你工作高效起来。我觉得shell脚本是这个世界上最简单的脚本语言。 学习shell,你无需搭建相关开发环境,只要有一台linux服务器即可。下面通过...
  • 之前想着在windows下和linux下调用一些python Scrapy的接口,发现路径问题,传参数问题都挺麻烦,遂改为在bat文件和shell中具体写方法,然后执行他们就好了 1.执行bat脚本 (1)传入参数 bat处理文件中可引用的参数...
  • PHP执行shell_exec方法失败

    万次阅读 2020-05-06 11:56:28
    多半原因在php.ini文件中未打开方法权限 在php.ini开启即可
  • [shell]shell简介

    万次阅读 2018-07-11 12:02:21
    一、简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核...
  • shell 脚本单行 if 语句

    千次阅读 2019-09-02 22:07:11
    如下: "NUM=`docker images | grep '<none>' | wc -l`; if [ $NUM -gt 0 ]; then docker rmi `docker images | grep '<none>' | awk '{print \$3}'`; fi" 其命令的作用是,判断是否有 none 镜像,如果...
  • 我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~ 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑...
  • 然后我想在shell脚本里调用这个compare.py获取函数return的值 代码如下: #!/bin/bash var1=`python compare.py` echo $var1 $var1并没有输出我想看到的return值1或0,而是执行了整个py文件 我只想接受这个...

空空如也

1 2 3 4 5 ... 20
收藏数 388,475
精华内容 155,390
关键字:

shell