linux shell 基础知识
8.1 shell 基本介绍
什么是shell :
1. shell 是一个命令解释器,提供用户和机器之间的交互
2. 支持特定语法,比如逻辑判断,循环
3.每个用户都可以有自己特定的shell
4. CentOS7 默认shell 为bash (Bourne Agin shell)
5. 还有zsh,ksh等 (系统默认没有安装,需要用 yum 命令进行安装)
8.2 命令历史
通过上下方向键 可以查看输入的历史命令。这些命令的存储地址是在
/root/.bash_history 目录下:
可以t通过history 命令查看输入的条目数。
这个文件下,可以最多存储1000条历史记录。HISTSIZE 系统内置的变量,最大为1000
history -c 把内存当中的命令给清空了。
HISTSIZE 是 /etc/profile 文件下的系统参数变量。
在修改了HISTSIZE 这个参数之后,需要输入SOURCE 命令才能够生效。
记录命令是什么时候运行的命令: HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 此命令,尽在当前终端是生效的,如果再开一个终端,打开就是为空的。
永久保存 chattr + a ~/.bash_history
! n (n 是执行命令的条目编码)!echo 倒叙找echo 最近的命令
!! 执行上一个命令(相当于按了向上键)
总结:
1. history n:列出最近的N条命令行的意思。
2. history -c : 将当前shell 中的所有history内容全部清除
3.history -a: 将目前新增的history 命令新增入:histfies中。
4.history -r:将hisfiles的内容读到目前这个shell的history 历史里。
5. history -w:将目前history 记忆内容写入histfiles中
6.!number: 执行第几条命令
7.! command: 由最近的命令向前搜寻命令串开头为command的那个命令,并执行。
8.3 命令补全和别名
tab 键自动补全。
alias 别名,给命令重新起名字
各用户都有自己配置别名的文件 ~/.bashrc
ls /etc/profile.d/
自定义的alial 放到~/.bashrc 文件中。
8.4 通配符
通配符的格式比较灵活,请看如下:* 代表一个或多个字符
? 代表一个字符。
【】 代表一个范围。
{ } 和[ ]基本一致,只不过中间需要加上逗号。
8.5 输入输出重定向
> 表示把前一个文件的内容输出,输入到后一个文件里面;原来的文件的内容被清除掉了。
>> 和>功能一致,只不过不清除原来文件的内容,叫追加。
2> err 把一个命令产生的错误信息,输入到err文件中。表示错误的信息。
2>> err 追加错误的信息
输入重定向:
8.6 管道符和作业控制
管道符:表示把前面一个文件的输入,传递给后面的一个命令。grep 表示过滤。
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
作业控制:
Ctcl+z 暂停当前作业。bg 回到暂停的作业中。
8.7 shell变量(上)
变量:
PATH : 环境变量。 系统内置的变量。HOME, PWD,LOGNAME.
通过env 来获取到变量。
set : 不仅仅查看系统内置的变量,还可以查看到用户自定义的变量。
定义变量:echo 查看变量?
在文件中,/ + 字符。表示在文件中,查询该字符的关键字。
变量名规则: 字母、数字下划线、首位不能为数字。
变量值有特殊符号时需要用单引号括起来。
8.8 shell变量(下)
w 可以看到当前用户登录系统的详细信息
查看当前登录,在哪个PTY中。可用命令: echo $SSH_TTY
Linux pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
- -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
- -c 如果有重覆的行程名, 则分开列出(预设值是会在前面加上 *)
全局变量:export
全局变量是向下兼容的,不能向父BASH生效,只能在子BASH中生效。
8.9 环境变量配置文件
以上文件分了两个层次,一个层次是系统层面的 /etc/ 下的。一个层次是用户家目录下的~/.
系统的配置文件不能去编辑。可以编辑用户家目录下的配置文件。
source命令用法:source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令".”来替代。
~/.bash_logout : 用来定义用户退出的时候,要做的一些操作。
PS1 是在/etc/bashrc 里面定义的 。就是可以改前面的参数