shell基础知识
1. 记录历史命令:
!!:连续两个!表示执行上一条命令
!n:执行命令历史中的第n条命令(n表示数字)
!字符串(字符串大于等于1):例如!pw字符串表示执行命令历史最近一次以pw开头的命令
2.别名
格式:alias 【命令别名】=【'具体的命令'】
alias:取别名
unalias:解除别名
3.通配符
*匹配零个或多个字符
?匹配一个字符
4.输入输出重定向
5.管道符:
6.作业控制
Ctrl+Z:暂停
fg:恢复
bg:后台运行
jobs:查看被暂停或者在后台运行的任务
ps aux:查看进程pid
&:把这个放在后面会显示pid信息
7.变量:
(1)env命令:
HOSTNAME:表示主机的名称。
SHELL:表示当前用户的shell类型。
HISTSIZE:表示历史记录数。
PATH:该变量决定了sel将到哪些目录中寻找命令或程序。
PMD:表示当前目录。
LANG:这是与语言相关的环境变量,多语言环境可以修改此环境变量。
HOME:表示当前用户的家目录。
LOGNAME:表示当前用户的登录名。
(2)set命令:
显示用户定义的变量:
bash:进入一个子shell环境
使用bash命令可以再打开一个shell,此时先前设置的myname变量已经不存在了。退出当前shel回到
原来的shll, myname变量还在。让设置的环境变量一直生效:
允许系统内所有用户登录后都能使用该变量。具体的操作方法是:在/etc/profile 文件的最后一
行加入export myname-Aming, 然后运行source /etc/profile就可以生效了。此时再运行bash
命令或者切换到其他账户(如su - test )就可以看到效果。如下所示:
仅允许当前用户使用该变量。具体的操作方法是:在用户主日录下的.bashre文件的最后- -行
加人export myname Aming,然后运行source ,bashrc就可以生效了。这时再登录test账户,
myname变量则不会生效了。这里source命令的作用是将目前设定的配置刷新,即不用注销再
登录也能生效。
设定变量的格式为a-b,其中a为变量名,b为变量的内容,等号两边不能有空格。
变量名只能由字母,数字以及下划线组成,而且不能以数字开头。
当变量内容带有特殊字符(如空格)时,需要加上单引号。示例命令如下:
变量内容中本身带有单引号,加双引号
如果变量内容中需要用到其他命令,运行结果则可以使用反引号,
变量内容可以累加其他变量的内容,但需要加双引号。
在当前shell中运行bash命令会进入一个新的shell
父shell设定的变量进入子shell中,该变量不会生效,让其生效方法是用export指令
取消变量:
8.系统环境变量与个人环境变量的配置文件
/ete/profile:这个文件预设了几个重要的变量,例如PATH、USER、 LOGNAME.、MAIL、 INPUTRC 、
HOSTNAME、HISTSIZE、 umask等。
/etc/bashrc:这个文件主要预设umask以及PS1。这个PS1就是我们在输人命令时前面的那串字符。
例如,阿铭的Linux系统的PS1就是[root@localhost ~]#,我们不妨看一-下PS1的值,如下所示:
# echo $P51
[\u@\h \W]\$
其中,\u指用户,\h指 主机名,\W指 当前目录,\$指字符# (如果是普通用户,则显示为$ )
除了以上两个系统级别的配置文件外,每个用户的主目录下还有以下几个隐藏文件。
bash_ profile: 该文件定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用
该文件输入专属于自己的shell信息,当用户登录时,该文件仅仅执行一次。
bashre: 该文件包含专属于自已的shell的bash信息, 当登录或每次打开新的shell时, 该文件
会被读取。例如,你可以将用户自定义的别名或者自定义变量写到这个文件中。
bash_history: 该文件用于记录命令历史。
bash_logout: 当退出shell时, 会执行该文件。你可以将一些清 理的工作放到这个文件中。
9.特殊字符:
*代表零个或多个任意字符
?只代表一个任意的字符
注释符号#
脱义字符\(这个字符会将后面的特殊符号(如* )还原为普通字符。)
10.cut命令:用来截取某一个字段
格式:cut -d '分隔字符' [-cf] n(这里的n是数字)
-d:后面跟分隔字符,分隔字符要用单引号括起来。
-c: 后面接的是第几个字符。
-f:后面接的是第几个区块。
11.sort命令:排序
格式:sort [-t 分隔符] [-kn1,n2] (n1,n2为数字)
-t:后面跟分隔字符,作用跟cut的-d选项一样。
-n:表示使用纯数字排序。
-r:表示反向排序。
-u: 表示去重复。
-kn1,n2:表示由n1区问排序到n2区间,可以只写-kn1,即对n1字段排序。
-k选项后面跟单个数字表示对第几个区域的字符串排序,-n选项则表示使用纯数字排序
12.wc命令:统计文档的行数、字符数或词数
-l:统计行数
-m:统计字符数
-w:统计词数
13.uniq命令:删除重复的行
-c:统计重复的行数,并把行数写在前面
使用uniq前必须先排序
14.tee命令:
tee命令后面跟文件名,其作用类似于重定向>,但它比重定向多一个功能,即把文件写人后面所
跟的文件时,还显示在屏幕上(该命令常用于管道符|后)
15.tr命令:替换字符,常用来处理文档中的特殊符号
-d:表示删除某个字符,后而跟要删除的字符。
-s:表示删除重复的字符。
把小写字母变成大写字母:
替换字符:
16.split命令:切割文档
-b:表示依据大小来分制文档,单位为byte
-l:表示依据行数来分割文档
17.特殊符号
$:用做变量前的标识符
;在一行中运行两个或两个以上的命令
~用户的家目录
&把一条命令放在后台执行,用于运行时间比较长的情况
重定向符号>、>>、2>和2>>
重定向符号>和>>,它们分别表示取代和追加的意思。当我们运行一个命令报错时,报
错信息会输出到当前屏幕。如果想重定向到一个文本,则要用重定向符号2>或者2>>它们分别表示
错误重定向和错误追加重定向。
[]中括号内为字符组合,代表字符组合中的任意一个,可以是范围
$$和||