美文网首页命令之美工具癖Web前端之路
Shell终端命令行的重点知识

Shell终端命令行的重点知识

作者: 科研者 | 来源:发表于2017-08-27 19:56 被阅读269次

    对于程序员来说,命令行是常用的工具,在Mac和Linux系统中,命令行使用的是Shell语言,对于常用的工具,我都喜欢选把它研究透彻,本文就是我在学习Shell语言时收集和总结的文档,为了方便大家,现分享如下:

    1. 命令格式


    command [options] [arguments]
    

    其中,各符号的表示的含意如下:

    command:命令
    options:选项;有2种表示法:

    1. --单词:由前面2个“-”和2个(包含2个)以上的字母组成;
    2. -单字:前面1个“-”和1个字母组成;

    argument:参数

    在查看命令帮助时,会出现[],<>,|等符号,它们的含义如下:

    []:表示是可选的;
    <>:表示是可变化的;
    x|y|z:表示只能选择一个;
    -abc:表示三个参数(或任何二个)的混合使用;
    / :或者;

    2. 帮助命令


    help <Command>

    适用于内部命令

    <Command> –help/-h

    适用于外部命令

    man <Command>

    查看命令描述或手册页(Manual);
    备注:
    manual 手册是分章节的;man # Command (#表示章节号)
    各个章节的所讲的内容如下:

    1. 所有用户可以使用的命令
    2. 系统内核调用,不是每个命令都有系统调用(如:man 2 read)
    3. 库调用
    4. 特殊文件,如:/dev/tty1
    5. 文件格式(命令配置文件的语法,如:man 5 passwd)
    6. 游戏相关
    7. 杂项
    8. 管理员命令,如:fdisk

    man命令查询操作参考《vi,vim用法》中的命令模式
    man命令格式符意义:

    []:可选内容;
    <>:必须给出内容;
    a|b|c:多选一;
    …:可以有多个;

    info <Command>

    有超链接的文档,info是信息页,提供作者、版本,什么时候发布等更详细信息,man手册是告诉你怎么用;

    README

    绝大多数程序都有相应的帮助文档,保存在/usr/share/doc文件夹中;

    3. Shell的启动配置文件


    当我们登录系统后,启动 bash 程序,并且会读取一系列称为启动文件的配置脚本,这些文 件定义了默认的可供所有用户共享的 shell 环境。然后是读取更多位于我们自己主目录中的启 动文件,这些启动文件定义了用户个人的 shell 环境。精确的启动顺序依赖于要运行的 shell 会 话类型。有两种 shell 会话类型:一个是登录 shell 会话,另一个是非登录 shell 会话。

    登录 shell 会话会提示用户输入用户名和密码;例如,我们启动一个虚拟控制台会话。当我 们在 GUI 模式下运行终端会话时,非登录 shell 会话会出现。
    登录 shell 会读取一个或多个启动文件,正如表 12 - 2 所示:


    登录shell会话的启动文件.png

    非登录 shell 会话会读取以下启动文件:


    非登录shell会话的启动文件.png

    除了读取以上启动文件之外,非登录 shell 会话也会继承它们父进程的环境设置,通常是一 个登录 shell。

    浏览一下你的系统,看一看系统中有哪些启动文件。记住-因为上面列出的大多数文件名 都以圆点开头(意味着它们是隐藏文件),你需要使用带 “-a” 选项的 ls 命令。

    在普通用户看来,文件 ∼/.bashrc 可能是最重要的启动文件,因为它几乎总是被读取。非 登录 shell 默认会读取它,并且大多数登录 shell 的启动文件会以能读取 ∼/.bashrc 文件的方式 来书写。

    4. Mac系统的Shell的配置文件


    打开mac终端,输入:

    echo $SHELL
    

    如果输出的是csh或者是tcsh,那么你用的就是C Shell。
    如果输出的是bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种。
    Mac OS X 10.2之前默认的是C Shell。
    Mac OS X 10.3之后默认的是Bourne Shell。

    在这里只介绍Bourne Shell(sh)关于配置文件的等级。

    在Bourne Shell下有三种配置文件,如下:

    / ect/profile
    /ect/bashrc
    ~/.bash_profile
    

    注意:
    有些文章说:Linux里边是.bashrc 而MAC 是.bash_profile,所以Mac下只需要设置profile和.bash_profile。
    但是我发现mac下也有/ect/bashrc配置文件

    它们的作用如下:

    1. /ect/profile(一般不建议修改这个文件)

      全局(公有)配置,不管是哪个用户,登陆是都会读取该文件。

    2. ~/.bash_profile

      一般在这个文件中添加用户级环境变量;
      若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次默认情况下,他设置一些环境变量。
      在.bash_profile中设置的配置信息只有在打开终端的时候执行有效,终端关闭后,之前的设置的命令则无效;

    3. /ect/bashrc(mac没有此配置文件)

      全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
      可以加入mysqlstart、mysql和mysqladmin命令的别名,保证每一个用户都可以使用这3个命令。

    5. 应该使用哪个配置文件


    按照通常的规则,添加目录到你的 变量或者是定义额外的环境变量,要把这些 更改放置到 文件中(或者其替代文件中,根据不同的发行版。例如, 使 用 文件)。对于其它的更改,要放到 文件中。除非你是系统管理员,需要为系统 中的所有用户修改默认设置,那么则限定你只能对自己主目录下的文件进行修改。当然,有可 能会更改 目录中的文件,比如说 文件,而且在许多情况下,修改这些文件也是明智 的,但是现在,我们要安全起见。

    6. 命令的查找目录


    当在终端直接输入命令时,如:guobinyongMac:~ guobinyong$ ls,系统会在一些指定的目录中查找相应命令的可执行文件,然后执行查找到的可执行文件;如果命令的可执行文件不在默认的目录中,则需要在输入命令时写出命令的路径,如:
    假设我需要执行命令gby,而gby文件在目录./PATH/下,则需要这样输入命令:

    guobinyongMac:~ guobinyong$ ./PATH/gby
    

    这样是不太方便的,如果不想输入命令的路径,则可以把命令的所在目录配置为终端的命令查找目录;
    如何配置呢?通过PATH变量!
    PATH变量中保存的是命令查找路径的列表,目录之间用冒号 : 分隔;配置方法如下:
    在终端的配置文件~/.bash_profile(如果不存在,则创建该文件)中添加如下代码:

    export PATH=$PATH:新的路径     //把您要添加的路径写在$PATH:后面
    

    7. 重点命令讲解

    export命令

    export命令Shell内建命令 export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
    一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

    语法:

    export(选项)(参数)

    选项:

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

    参数:

    变量:指定要输出或者删除的环境变量。

    相关文章

      网友评论

        本文标题:Shell终端命令行的重点知识

        本文链接:https://www.haomeiwen.com/subject/mtdidxtx.html