Linux的shell与bash

本文详细介绍了Linux的shell,特别是Bash shell,包括shell的概念、环境配置、命令历史、通配符与特殊符号、命令执行判断依据、重定向、管道与命令替换等。重点讨论了Bash的特性如命令补全、别名设置和shell脚本,并阐述了环境变量PS1的设置方法及其在颜色和特殊显示中的应用。同时,提到了配置文件的载入过程,如~/.bashrc、~/.bash_profile等。
摘要由CSDN通过智能技术生成

  版权声明本文章参考了《鸟哥的Linux私房菜》《Linux命令手册》《Linux命令大全》以及《Linux man pages》未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


1 shell的概念

  shell就是向用户提供操作系统的接口。

  系统支持的shell存放在/etc/shells文件中。

  Bash shell的特点:

  • 命令历史——~/.bash_history记录的是此次登入以前所执行过的指令, 而此次登入所执行的指令都被暂存在内存中,当你成功的注销系统后,该指令记忆才会记录到~/.bash_history当中。
    • TAB键命令与文件补全
    • [Tab] 接在一串指令的第一个字的后面,则为命令补全;
    • [Tab] 接在一串指令的第二个字以后时,则为『文件补齐』!
  • 命令别名
    • alias new_commad=’old_commad’——用新命令名取代原命令名
    • alias ——查看当前命令别名。
  • 工作控制、前景背景控制
  • shell脚本
  • 支持通配符

2 shell环境配置

2.1 欢迎信息与登陆提示

  本地登陆时欢迎信息记录在/etc/issue中,telnet登陆时欢迎信息记录在/etc/issue.net中。支持特殊代码。
  登陆后的提示信息记录在/etc/motd中。不支持特殊代码。

特殊代码 含义
\4或\4{interface} 将IPv4地址插入指定的网络接口(例如\ 4 {eth0}),如果未指定接口参数,则选择第一个完全配置的接口。如果未找到任何已配置的接口,则返回到机器主机名的IP地址。
\6或\6{interface} 与\ 4相同,但对于IPv6。
\b 插入当前行的波特率。
\d 插入当前日期。
\s 插入系统名称,操作系统的名称。与’uname -s’相同。
\S或\S {VARIABLE} 从/etc/ os-release插入VARIABLE数据,如果文件不存在,回退到/usr/lib/ os-release。如果未指定VARIABLE参数,则使用文件中的PRETTY_NAME或系统名称
\l 插入当前tty的名称。
\m 插入机器的架构标识符。与`uname -m’相同。
\n 插入机器的节点名称,也称为主机名。与`uname -n’相同。
\o 插入机器的NIS域名。与`hostname -d’相同。
\O 插入机器的DNS域名。
\r 插入操作系统的版本号。与`uname -r’相同。
\t 插入当前时间。
\u 插入当前登录用户的数量。
\U 插入字符串“ users”,其中是当前登录用户的数量。
\v 插入操作系统的版本,例如。建造日期等
          

2.2 配置文件载入过程

  • login shell——取得bash时需要完整的登入流程。login shell 只读取两个配置文件:

    • /etc/profile——系统整体设定,每个使用者登入取得bash 时一定会读取该文件!
      • 设置一些环境变量
        • PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
        • MAIL:依据账号设定好使用者的 mailbox 到 /var/spool/mail/账号名;
        • USER:根据用户的账号设定此一变量内容;
        • HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
        • HISTSIZE:历史命令记录笔数。CentOS 7.x 设定为 1000 ;
        • umask:包括 root 默认为 022 而一般用户为 002 等!
      • 读取设定文件/etc/bash.bashrc
      • 读取外部设定文件 /etc/profile.d/*.sh——只要在 /etc/profile.d/这个目录内且扩展名为 .sh ,使用者能够具有 r 的权限, 那么该文件就会被 /etc/profile 调用进来。在 CentOS 7.x 中,这个目录底下的文件规范了 bash 操作接口的颜色、 语系、ll 与 ls 指令的命令别名、vi的命令别名、which的命令别名等。如果你需要帮所有使用者设定一些共享的命令别名时, 可以在这个目录底下自行建立扩展名为 .sh 的文件,并将所需要的数据写入即可!
        • /etc/locale.conf——这个文件是由 /etc/profile.d/lang.sh 调用进来的!决定bash预设使用何种语系的配置文件!文件里最重要的就是LANG/LC_ALL 这变量的设定。
        • /usr/share/bash-completion/completions/*—— [tab]进行指令的选项/参数补齐功能,就是从这个目录里面找到相对应的指令来处理!其实这个目录底下的内容是由/etc/profile.d/bash_completion.sh 这个文件载入!
    • ~/.bash_profile~/.bash_login~/.profile——属于使用者个人设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝月心语

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值