ssplyh 发表于 2018-8-23 11:38:56

shell破冰

  以前写过C++代码,一直没有系统的学习过shell的语法,每次写脚本的时候都是用到什么就查什么,很不方便,所以决定在此全面的学习一下shell。
  ------------------------------------------------------------------------------------------------------
  常用命令行下的快捷键:
  ctrl d 退出当前shell 同exit
  bash 打开一个子shell
  ctrl a 光标移动到本行最前
  ctrl e 光标移动到本行最后
  ctrl z 命令转到后台
  ctrl s 暂停屏幕输出
  ctrl q 恢复屏幕输出
  ctrl k 从光标所在处删除到结尾
  ctrl u 删除整行
  esc f 光标移到下一个单词的开始处
  esc b 光标移到当前单词的开始处
  -----------------------------------------------------------------------------------------------------
  查看终端支持哪些shell类型:cat /etc/shells
  查看当前使用的bash类型:which bash
  locale -a 查看支持的语言
  locale -a | grep zh 查看中文语言的支持
  将英文界面改成中文:
  1.安装中文包 必须用yum安装
  2.vim /etc/sysconfig/i18n 或者 system-config-language(要有图形界面)
  ----------------------------------------------------------------------------------------
  bash环境设置文件:
  全局
  /etc/profile 为系统的每个用户设置环境信息,当用户第一次登陆时,该文件被执行。并从/etc/profile.d目录的配置文件中搜索shell的设置。
  /etc/bashrc 每个运行bash shell的用户都会执行此文件,当bash shell被打开时,该文件被读取。继承/etc/profile文件中的变量。
  用户
  ~/.bashrc 包含专用于你的bash shell的bash信息,当登陆时以及每次打开新的shell时,该文件被读取。交互式non-login方式进入bash运行。
  ~/.bash_profile 交互式login的方式进入bash运行。通常会先执行调用 ~/.bashrc文件。
  Bash其他设置文件:
  ~/.bash_logout 每次退出bash shell时执行
  ~/.bash_history 记录bash shell的历史记录,及时执行了history -c后文件中也仍然存在
  /etc/profile.d/*.sh
  环境变量
  查看环境变量: env
  查看环境变量和局部变量:set
  设定执行脚本的环境变量:
  PATH=$PATH:/tmp 在原来路径的基础上加上目录就可以 这样执行tmp下的脚本的时候 就不用指定绝对路径或者切换到tmp下就可以执行脚本
  set常见用法:
  -f 使路径名替换(匹配)无效
  -n 读取命令,但不执行(多用于脚本语法检查)
  -o option
  emacs 使用emacs风格命令行的快捷键
  ignoreeof当EOF(ctrl+d)被读取时,不退出shell
  vi 使用vi风格命令行的快捷键
  -v 在命令被读取时,打印命令(用于调试脚本)
  -x 在替换被应用之后打印命令(用于调试脚本和检查shell替换)
  -C 不允许shell在重定向中损坏文件
  系统变量都是在用户登录的时候创建的
  登录shell 环境变量都是存在于以下几个文件中的
  /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
  即 su - 用户
  每个用户的家目录里面都有一个logout文件在退出bash shell时执行
  非登录shell
  ~/.bash_profile --> ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
  即 su 用户
  ------------------------------------------------------------------------------------------------------
  别名
  定义别名:alias la="ls -a" 这样在终端输入la就相当于输入ls -a
  取消别名:unalias la
  hash 用来显示,添加和清除哈希表
  hash table是shell在解释命令的时候首先会查找的对象,当指令表不在hash table中时,才会去PATH中设定的路径寻找命令,然后加以解释执行。同时也会将之放入hash table中,当下次执行同名命令时。不需要寻找PATH,shell以此来提高命令的执行效率。
  hash命令常用参数:
  -l 显示记忆的命令
  -r 清除记忆的命令包括路径
  -p filename 向哈希表中增加内容
  -d filename 从哈希表中删除内容
  -t command 显示指定命令的完整路径
  在启动服务的时候/etc/init.d/sshd start 太过于麻烦 可以hash -p /etc/init.d/sshd bbb
  这样启动的时候就可以bbb start hash的优先级是最高的(高于别名)
  优先级:hash --> 别名 --> 关键字

页: [1]
查看完整版本: shell破冰