天天看点

【51码儿】【Linux学习笔记】第8章 Linux shell基础知识

本笔记由51码儿(www.51mar.com)提供

8.1shell介绍

shell是一个命令解释器,提供人机交互。

支持特定语法。

每个用户都可以有自己特定的shell(bash)。

CentOS7默认bash(Bourne Agin Shell)。

其他还有zsh、ksh等。

8.2命令历史

命令历史存放于~/.bash_history文件下。

history 查看之前用过的命令,默认保存最近1000条,由变量HISTSIZE设定条数,HISTSIZE可以到配置文件/etc/profile中去配置,配置后需要source才会生效。

history -c 清空当前内存中的命令历史,不能清除~/.bash_history中的命令。

当前的命令,存放于内存中,在退出终端的时候,才会保存到.bash_history文件中。

HISTTIMEFORMAT=”%Y/%m/%d %H:%M:%S” 设定显示时间格式,可在/etc/profile中配置永久生效。配置后,history将显示命令执行的时间。

chattr +a ~/.bashhistory 加a权限,只能追加,不能删除,使命令历史永久保存。

若不正常退出终端,命令历史保存将存在差错。

!! 执行上一条命令。

!n n为数字,执行命令历史中的第n条命令。

!word 执行最近的以word开头的命令。

8.3命令补全和别名

Tab键,敲一下(唯一自动补全),敲两下(多个列出列表)。

CentOS7支持自动补全命令参数。需安装相关包:yum install -y bash-completion,然后reboot重启系统才生效。

命令别名alias command=’comand blablabla’

alias 可查看系统中的命令别名。

~/.bashrc和/etc/profile.d/目录下的文件中,可以配置命令别名。

unalias command 取消自定义的command命令别名。

8.4通配符

  • 匹配任意多个任意字符。

    ? 匹配一个任意字符。

    [0-3]或[0123] 匹配方括号中的任意一个字符。[0-9a-zA-Z]

    {1,2,3,a} 匹配花括号中的任意一个。

8.5输入输出重定向

\> 输出重定向。

command >FILE 将command的正确输出,写到FILE中。

command >>FILE 将command的正确输出,追加到FILE中。

command 2>FILE 将command运行输出的错误信息,写到FILE中。

command 2>>FILE 将command运行输出的错误信息,追加到FILE中。

正确+错误:>+2>用&>表示。

command &>FILE 将command运行输出的正确和错误信息,写到FILE中,同样支持追加command &>>FILE。

command >FILE1 2>FILE2 可将正确和错误的信息分开保存,多用于写Shell脚本中。如:

ls 1.txt 2.txt >t.txt 2>e.txt

< 输入重定向(几乎用不到)。

command <FILE 将FILE文件内容,输入到command命令中。如:

wc -l <1.txt 查看1.txt中内容的行数。

wc -l >1.txt 是把wc -l得到的正确输出,写到1.txt中。

8.6管道符和作业控制

| 管道符。

command1 |command2 将command1输出的内容,交给command2。

作业控制:

Ctrl+Z 暂停一个任务。

fg 将后台的任务调到前台。如果后台有多个任务,可用跟编号fg 1,fg 2……来将相应任务调到前台,若多个后台任务,不加编号时,调出最后一个。

bg 将前台任务调到后台。

对于fg,bg命令,一个终端查不到另一个终端的任务,但是可以ps aux查到进程,如:ps aux |grep sleep 查看sleep任务的进程。

jobs 列出所有停止的任务,可查看到命令编号。

vmstate t(间隔时间) n(刷新次数) 监控系统状态。

sleep N 系统暂停N秒,什么也不做。

命令后加&符号,直接将命令丢到后台执行。如:sleep 100 &。

8.7shell变量(上)

env 查看系统变量。变量名通常为大写。

set 查看变量,包括用户自定义变量。

自定义变量:

变量名=变量值 设置变量。

echo $变量名 显示变量。

变量名规则:字母、数字、下划线,首位不能为数字。

变量值有特殊符号时需要用单引号括起来,单引号可以对特殊符号脱义。双引号不能脱义。

8.8shell变量(下)

全局变量(向下生效,pstree可查看):

export 变量名=变量值 设置全局变量。

unset 变量名 取消变量。

8.9环境变量配置文件

系统层次:/etc/profile、/etc/bashrc 一般不更改其内容。

用户层次:~/.bashrc、~/.bash_profile、~/.bash_history、~/.bash_logout(定义退出系统时的操作)

profile在用户登录时自动加载;bashrc不需要登录,在执行shell的时候自动调用。

变量PS1可设定命令前的显示。PS2设定进入另一个命令中的显示。

8.10shell特殊符_cut命令

* 匹配任意个任意字符。

? 匹配任意一个字符。

# 注释字符。

\ 脱义字符(设置变量时,对特殊字符,可用\取代单引号)。

cut 分割内容。

-d 指定分割符。

-f 指定段号。

-c 指定第几个字符。

应用示例:cat /etc/passwd |head -5 |cut -d “:” -f 1,2 读取/etc/passwd,显示前5行,以“:”为分割符,截取1,2段。

继续阅读