zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    POJ3693 Maximum repetition substring —— 后缀数组 重复次数最多的连续重复子串
    SPOJ
    POJ2774 Long Long Message —— 后缀数组 两字符串的最长公共子串
    POJ3261 Milk Patterns —— 后缀数组 出现k次且可重叠的最长子串
    POJ1743 Musical Theme —— 后缀数组 重复出现且不重叠的最长子串
    SPOJ
    AC自动机小结
    HDU3247 Resource Archiver —— AC自动机 + BFS最短路 + 状压DP
    POJ1625 Censored! —— AC自动机 + DP + 大数
    Herding
  • 原文地址:https://www.cnblogs.com/zissh/p/13091655.html
Copyright © 2011-2022 走看看