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]