zoukankan      html  css  js  c++  java
  • linux系统shell基础知识入门

    什么是shell

    shell就是我们常说的命令行程序,它是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入要执行的命令。在Linux中安装多个shell是可行的,一般系统有默认的shell,linux中默认的为Bash

    查看系统所有shell及当前起作用shell

    [liangc@ip-10-30-20-114 ~]$ cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    
    查看当前shell,通过shell变量查看
    [liangc@ip-10-30-20-114 ~]$ echo $SHELL
    /bin/bash
    

    如何编写shell

    使用文本编辑工具,将命令组合到一个文件中即可,在linux中,扩展名无特别意义,它只是为了更清楚标识这个文件而已,所以你的shell脚本文件可以无扩展名。但是一般都会加上.sh作标识
    vi first
    敲入如下命令

    #!/bin/sh
    echo "hello world"
    exit 0
    

    以上是一个简单的shell脚本
    第一行#!是一种特殊注释,后面的/bin/sh表示这个脚本将使用此shell来解析执行,需使用绝对路径
    exit的使用确保脚本返回一个有意义的状态码,如果其它脚本需要调用这个脚本程序,那么返回一个有意义的状态码是很有必要的。但建议时,即使这个程序不会被其它程序调用,还是返回一个状态码吧。一般用0表示成功。

    运行shell

    两种运行方式
    1 调用shell,把脚本名当成一个参数

    /bin/sh first
    

    2 使用chmod赋予可执行权限

    chmd +x first
    ./first
    

    shell语法

    变量,在shell里,变量可以不先声明,只是通过使用它们(比如赋初值时)来创建它们。所有变量被看作字符串并以字符串存储,即使值为数字时也如此。linux区分大小写,所以Hello和hello是不同的哦。
    在变量面前加上“$"可访问该变量。

    hello="hello world"
    echo $hello
    echo "$hello"
    echo '$hello'
    echo $hello
    输出
    hello world
    $hello
    $hello
    

    注意,如果字符串里面包含空格,必须用引号把它们括起来。此外,等号两边不能有空格
    使用单引号和反斜线不会进行变量的替换

    环境变量

    环境变量 说明
    $HOME 当前用户家目录
    $PATH 以冒号分隔的用来搜索命令的目录列表
    $0 shell脚本的名字
    $# 传递级脚本的参数个数
    $$ shell脚本的进程号,脚本通常用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$

    参数变量

    参数变量 说明
    $1 ,$2.... 脚本程序的参数
    $* 在一个变量中列出所有参数,各参数之间用环境变量IFS中第一个字符分隔开
    $@ 是$*的变体,它不使用IFS变量,即使IFS为空,参数也不会挤在一起
  • 相关阅读:
    多个类定义attr属性重复的问题:Attribute "xxx" has already been defined
    好用的批量改名工具——文件批量改名工具V2.0 绿色版
    得到ImageView中drawable显示的区域的计算方法
    得到view坐标的各种方法
    实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置
    Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat
    Android 自带图标库 android.R.drawable
    解决 Attempting to destroy the window while drawing!
    解决Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 4
    Material Designer的低版本兼容实现(四)—— ToolBar
  • 原文地址:https://www.cnblogs.com/smartrui/p/10231124.html
Copyright © 2011-2022 走看看