zoukankan      html  css  js  c++  java
  • 学习Shell(一)

    查看 Shell

    Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。

    通过 cat 命令来查看当前 Linux 系统的可用 Shell:

    $ cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /usr/bin/sh
    /usr/bin/bash
    /usr/sbin/nologin

    在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。

    如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:

    $ echo $SHELL
    /bin/bash

    输出结果表明默认的 Shell 是 bash。

    Shell 提示符

    对于普通用户,Base shell 默认的提示符是美元符号$;对于超级用户(root 用户),Bash Shell 默认的提示符是井号#。该符号表示 Shell 等待输入命令。

    [root@localhost ~]# 

    这种格式包含了以下三个方面的信息:

    • 启动 Shell 的用户名,也即 mozhiyan;
    • 本地主机名称,也即 localhost;
    • 当前目录,波浪号~是主目录的简写表示法。


    Shell 通过PS1PS2两个环境变量来控制提示符格式:

    • PS1 控制最外层命令行的提示符格式。
    • PS2 控制第二层命令行的提示符格式。


    要显示提示符的当前格式,可以使用 echo 输出 PS1 和 PS2:

    [root@localhost ~]# echo $PS1
    [u@h W]$
    [root@localhost ~]# echo $PS2
    >

    Shell 使用以为前导的特殊字符来表示命令提示符中包含的要素,这使得 PS1 和 PS2 的格式看起来可能有点奇怪。下表展示了可以在 PS1 和 PS2 中使用的特殊字符。

    Bash shell 提示符可以包含的要素
    字符描述
    a 铃声字符
    d 格式为“日 月 年”的日期
    e ASCII转义字符
    h 本地主机名
    H 完全合格的限定域主机名
    j shell当前管理的作业数
    1 shell终端设备名的基本名称
    ASCII换行字符
    ASCII回车
    s shell的名称
    格式为“小时:分钟:秒”的24小时制的当前时间
    T 格式为“小时:分钟:秒”的12小时制的当前时间
    @ 格式为am/pm的12小时制的当前时间
    u 当前用户的用户名
    v bash shell的版本
    V bash shell的发布级别
    w 当前工作目录
    W 当前工作目录的基本名称
    ! 该命令的bash shell历史数
    # 该命令的命令数量
    $ 如果是普通用户,则为美元符号$;如果超级用户(root 用户),则为井号#
    nn 对应于八进制值 nnn 的字符
    \ 斜杠
    [ 控制码序列的开头
    ] 控制码序列的结尾


    注意,所有的特殊字符均以反斜杠开头,目的是与普通字符区分开来。您可以在命令提示符中使用以上任何特殊字符的组合。

    我们可以通过修改 PS1 变量来修改提示符格式,例如:

    [root@localhost ~]# PS1="[	][u]$ "
    [22:12:45][root]$ 

    新的 Shell 提示符现在可以显示当前的时间和用户名。不过这个新定义的 PS1 变量只在当前 Shell 会话期间有效,再次启动 Shell 时将重新使用默认的提示符格式。

  • 相关阅读:
    jquey插件开发
    平常问题传送门
    Angular1实战总结01:了不起的$cacheFactory
    node基础15:events模块
    node基础14:连接数据库
    node基础13:异步流程控制
    node基础12:动态网页
    node基础11:接受参数
    node基础10:处理异常
    IOS子视图超过父视图frame后,无法交互响应
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/9895974.html
Copyright © 2011-2022 走看看