shell基础知识

shell介绍

shell其实并不是shell脚本,shell脚本仅仅是shell的一种表现。shell是一个命令解释器,提供用户和机器之间的交互。

 

8.2 命令历史

history :命令历史可以查看之前敲过的命令

cat .bash_history :历史命令保存在这里

echo $HISTSIZE :默认保存1000条历史命令

history -c 清空当前内存的历史命令 ,但不能删除配置文件

history 的配置文件 /etc/progile 可以修改变量HISTSIZE的保存条数

修改后需重新加载配置文件 source /etc/profile 才能生效

shell基础知识_第1张图片

 

history命令里面只能看到号数和命令是什么,要想看到某命令是什么时候被执行的,需要给变量重新赋值

HISTTIMEFORMAT=” %Y-%m-%d %H:%M:%S ”

%Y年 %m月 %d日 %H小时 %M分钟 %S秒

想要永久生效需要修改配置文件 vim /etc/profile

写入 HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S”

shell基础知识_第2张图片

重启配置文件 source /etc/profilesource就能生效

增加隐藏权限 可以让命令历史永久保存 只能追加 不能删除,

chattr +a ~/.bash_history

 

!! : 会执行命令历史中最后一条命令

!n :(n表示数字)会执行history对应的命令

!+命令 : 会执行history以该命令开头的最后一条命令

 

命令补全和别名

tab键 :可以补全命令或者文件路径,当命令或路径开头有存在多个命令或者文件路径时,敲2次就可以查看到以这个开头或者文件路径全部选项。

centos7中就支持命令的参数补全,需要安装 yum install -y bash-completion

 

alias

alias li="ls -l" 设置别名

unalias li 取消别名

 

定义alias的配置文件在 .bashrc 和/etc/profile.d/下面

 

 

通配符

* 号 :表示通配 可以放在文件的前面或两边

?号 :表示匹配一个任意字符

[ ]号 :里面的字符表示指定的范围

{ }号 :是指定范围中的一个或者的意思,需要逗号隔开

 

 

输入输出重定向

 

cat 1.txt > 2.txt :> 表示输出重定向 把cat 1.txt的内容输出到2.txt里去 ,输入的同时会把后面文件的内容覆盖掉

cat 1.txt >> 2.txt :>> 表示追加,追加的同时不会覆盖掉后面文件里的内容

ls 111.txt 2> 2.txt :2> 表示错误重定向会把这个命令产生的错误信息输出到某文件里去并且会覆盖之前的内容

ls 111.txt 2>> 2.txt :2>> 表示错误追加重定向把错误信息追加到某个文件里并且不会覆盖之前的内容

ls 1.txt 111.txt &> 2.txt :&> 把正确的信息和错误的信息同时输出到后面文件里

同样也支持追加

ls 1.txt 111.txt > 3.txt 2>4.txt :把正确的信息输出到3.txt 把错误的信息输出到4.txt

同样支持追加

 

输入重定向

把1.txt的内容输入到wc -l 的命令里(左边必须是命令)

 

 

管道符和作业控制

find ./ -type f | wc -l :管道符表示把前面命令输出结果传递给后面的命令

 

ctrl+z :暂停任务

jobs :查看后台任务

fg +id :把任务调到前台(只有一个任务时直接 fg 返回任务)

bg +id :把任务调到后台继续继续运行 命令末尾会有个 &符号

sleep 100 & :命令后加&直接把任务调到后台

 

 

shell变量

变量包括有PATH ,HOME,PWD,LOGNAME

env :可以查看系统常用变量 ,系统变量通常是大写字母

shell基础知识_第3张图片

set :命令可以查看系统内置的变量 也可以查看用户自定义的变量

 

自定义变量

a=123

echo $a 可以查看变量

也可以在set中查找到自定义的变量

 

变量名规则

系统内置的变量可以修改配置文件,但一般不会动它。可自定义自己的变量。

变量名字可以是字母、数字下划线,但是首位不能为数字不建议下划线_为首位

shell基础知识_第4张图片

 

变量值有特殊符号时需要用单引号 ‘’ 括起来 比较严谨$符号也会失去意义只会显示成$

 

变量的累加

如果变量里引用其他变量需要使用双引号 “” 括起来

不加引号会显示错误

加单引号会让 $b 失去变量的含义

shell基础知识_第5张图片

 

全局变量export

w命令:查看所有的登录用户

echo $SSH_TTY :查看是登录用户的TTY

shell基础知识_第6张图片

假如在pts/0下定义的变量在pts/1上是不存在的。

shell就是一个进程 ,命令 bash 就是进入了子shell 相当于进入到另一个终端里面

所有定义的变量在zishell里不生效

export 设置成全局变量 生成子shell里也会生效 但只支持向下 不支持向上生效

shell基础知识_第7张图片

 

取消变量

unset 后面跟变量名 用来取消变量

 

环境变量配置文件

 

/etc/profile

/etc/bashrc

属于系统的环境变量配置文件

.bash _profile

.bashrc

.bash_history

.bash_logout

在用户家目录下 属于用户的环境变量配置文件

/etc/profile 用户环境登录,交互,登录才执行

/etc/bashrc 用户不用登录,用户或者系统执行shell脚本的时候才会去执行里面的变量或者配置

有需要的时候,可以编辑用户下的配置文件

vim .bash_profile

shell基础知识_第8张图片

修改完后需要 source .bash_profile或者. .bash_profile来加载配置文件里面的配置

.bash_profile自动调用.bashrc

.bashrc又会自动调用/etc/bashrc

.bash_logout用来定义用户退出时需要做的一些操作。

 

PS1变量

PS1='[\u@\h \W]\$ ' 临时修改

永久修改 需要 vi /etc/bashrc配置文件里面去定义

PS2 进入另一个终端里会使用PS2 比如进去mysql里

你可能感兴趣的:(shell基础知识)