• Linux指令和shell脚本


    关于Shell

    在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

    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)

    例如:

    在Unix/linux中主要有:

    Bourne shell (包括 sh,ksh,and bash)
    Bourne shell ( sh)
    Korn shell ( ksh)
    Bourne Again shell ( bash)
    POSIX shell ( sh)
    C shell (包括 csh and tcsh)
    TENEX/TOPS C shell ( tcsh)

    MS-DOS系统:

    cmd.exe/ 命令提示字符(Windows NT 系统)
    Windows PowerShell(支持 .NET Framework 技术的 Windows NT 系统)

    传统意义上的shell指的是命令行式的shell,以后如果不特别注明,shell是指命令行式的shell。

    交互式与非交互式shell

    shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。

    交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。

    shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

    常用指令:

    文件管理

    cat 命令:

    用于连接文件并打印到标准输出设备上

    cat [-AbeEnstTuv] [--help] [--version] fileName
    

    ex:把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

    cat -b textfile1 textfile2 >> textfile3
    

    类似的命令:echo仅用于输出命令后面的字符串到标准输出设备上。

    diff命令:

    用于比较文件的差异,以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

    diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
    

    mv 命令:

    用来为文件或目录改名、或将文件或目录移入其它位置。

    mv [options] source dest
    mv [options] source... directory
    

    参数说明

    • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
    • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;

    rm命令:

    用于删除一个文件或者目录。

    rm [options] name...
    

    参数

    • -r 将目录及以下之档案亦逐一删除。

    直接删除当前目录下的所有文件及目录,命令行为:

    rm -rf * 
    

    cp命令:

    主要用于复制文件或目录。

    cp [options] source dest
    

    cp [options] source... directory
    

    磁盘管理

    cd命令:

    用于切换当前工作目录至 dirName(目录参数)。

    其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

    另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。

    cd [dirName]
    
    • dirName:要切换的目标目录。

    du命令:

    用于显示目录或文件的大小。

    du会显示指定的目录或文件所占用的磁盘空间。

    ex:以以K,M,G为单位,显示test文件的大小(--human-readable)

    du -h test
    

    mkdir命令:

    用于建立名称为 dirName 之子目录。

    mkdir [-p] dirName
    

    参数说明

    • -p 确保目录名称存在,不存在的就建一个。

    rmdir命令:

    删除空的目录。

    rmdir [-p] dirName
    

    参数

    • -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

    tree命令:

    用于以树状图列出目录的内容。

    执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

    tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
    

    ls命令:

    用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

     ls [-alrtAFR] [name...]
    

    系统管理

    shutdown命令:

    可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。

    使用权限:系统管理者。

    shutdown [-t seconds] [-rkhncfF] time [message]
    

    参数说明

    • -t seconds : 设定在几秒钟之后进行关机程序。
    • -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
    • -r : 关机后重新开机。
    • -h : 关机后停机。
    • -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
    • -c : 取消目前已经进行中的关机动作。
    • -f : 关机时,不做 fcsk 动作(检查 Linux 档系统)。
    • -F : 关机时,强迫进行 fsck 动作。
    • time : 设定关机的时间。
    • message : 传送给所有使用者的警告讯息。

    su命令:

    用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

    使用权限:所有使用者。

    su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
    

    参数说明

    • -f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
    • -m -p 或 --preserve-environment 执行 su 时不改变环境变数
    • -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
    • -s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
    • --help 显示说明文件
    • --version 显示版本资讯
    • - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
    • USER 欲变更的使用者帐号
    • ARG 传入新的 shell 参数

    变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)(不加 - 则不改变环境)

    su - clsung
    

    sudo命令:

    以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

    使用权限:在 /etc/sudoers 中有出现的使用者。

    ps命令:

    用于显示当前进程 (process) 的状态。

    ps [options] [--help]
    

    ex:显示当前全部进程

    ps -A 显示进程信息
    

    kill命令:

    用于删除执行中的程序或工作。

    kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。

    kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
    

    系统设置

    passwd命令:

    用来更改使用者的密码

    passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
    

    必要参数

    • -d 删除密码
    • -S 显示密码信息

    修改用户信息

    $ passwd runoob  //设置runoob用户的密码
    Enter new UNIX password:  //输入新密码,输入的密码无回显
    Retype new UNIX password:  //确认密码
    passwd: password updated successfully
    # 
    

    export 命令:

    用于设置或显示环境变量。

    在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作

    export [-fnp][变量名称]=[变量设置值]
    

    参数说明

    • -f  代表[变量名称]中为函数名称。
    • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    • -p  列出所有的shell赋予程序的环境变量。

    set 用来显示本地变量
    env 用来显示环境变量
    export 用来显示和设置环境变量

    备份压缩

    gzip命令:

    用于压缩文件。

    gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。

    gzip [-acdfhlLnNqrtvV][-S &lt;压缩字尾字符串&gt;][-&lt;压缩效率&gt;][--best/fast][文件...] 
    
    gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-&lt;压缩效率&gt;][--best/fast][目录]
    

    参数

    • -q 不显示指令执行过程。
    • -r 递归处理,将指定目录下的所有文件和子目录一并处理。
    • -v 显示指令执行过程或显示版本信息。
    • -d或--decompress或----uncompress  解开压缩文件。

    tar命令:

    用于备份文件。

    tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

    tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]
    

    参数

    • -x或--extract或--get 从备份文件中还原文件。
    • -c或--create 建立新的备份文件。
    • -t或--list 列出备份文件的内容。
    • -z或--gzip或--ungzip 通过gzip指令处理备份文件。
    • -v或--verbose 显示指令执行过程。
    • -f<备份文件>或--file=<备份文件> 指定备份文件。

    ex:

    压缩文件 非打包

    $ touch a.c       
    tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
    a.c
    

    列出压缩文件内容

    $ tar -tzvf test.tar.gz 
    -rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c
    

    解压文件

    $ tar -xzvf test.tar.gz 
    a.c
    

    zip 命令:

    用于压缩文件。

    zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip

    zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
    

    unzip命令:

    用于解压缩zip文件

    unzip为.zip压缩文件的解压缩程序。

    unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]
    

    总结

    本文仅简单解释shell和记录部分常见的交互式命令,详细信息请参考如下引文:

    [1] 菜鸟教程-Linux命令

    [2] 菜鸟教程-Shell

    [3] 百度百科-Shell

  • 相关阅读:
    CentOS 7 Docker基本特性
    linux go环境安装
    Docker部署Golang
    高可用Redis服务架构分析与搭建
    linux常用基本命令
    docker容器
    Linux 配置网络连接
    自定义泛型委托对象
    sql游标使用
    CSS 实用实例
  • 原文地址:https://www.cnblogs.com/zissh/p/13091655.html
Copyright © 2020-2023  润新知