第八章 Linux Shell基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八章 Linux Shell基础相关的知识,希望对你有一定的参考价值。

8.1 Shell 介绍

技术分享图片
linux的shell简单说就是一个命令行和用户交互的一个进程。 你打命令它会出结果。 类似windows里面的cmd窗口。

8.2 Shell 命令历史
技术分享图片

所有敲过的命令都存在 <ls /root/.bash_history> ,这个文件最大可以存1000条
<history> 可以查看敲过的命令
<echo $HISTORY> 查看环境变量最大可以存多少条

技术分享图片
<history -c>清内存命令历史,不能清空命令存储的文件。
退出终端时才会将刚刚敲过的命令存储。
<vi /etc/profile> 修改 HISTSIZE的值,要使新修改的值生效,需要 <source /etc/profile>才能生效。
或者退出命令行再进入时生效。
技术分享图片
<HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S">设置查看历史命令运行的时间,也是临时在内存中的,若需使生效也需要编辑<vi /etc/profile> 修改 配置文件,并source一下,再重新打开一下xshell。

技术分享图片

技术分享图片

<chattr +a ~/.bash_history> 设置隐藏权限只能追加不能删除,运行的所有命令都会保存下来。
命令行不正常退出,保存的命令不会不全。
<!!>执行上一条命令
<!n> n为数字,第几条命令
<!echo> 再命令历史中倒序找第一个echo开头的命令并执行。

技术分享图片

8.3 Tab命令补全和别名

技术分享图片

<yum install -y bash-completion> 安装参数补全包,需要重启系统才会生效。
<alias restartnet=‘systemctl restart network.service‘> 起别名 ,存在内存中,重启后失效

技术分享图片
别名存放在 ~/.bashrc和 /etc/profile.d/下
<vim ~/.bashrc>

技术分享图片

<cd /etc/profile.d/> 进入别名存放区

技术分享图片

8.4 通配符

技术分享图片

<ls *txt> 通配所有字符
<ls ?.txt> ?表示一个任意的字符
<ls [0-5].txt> 列出0-5中的字符
<ls [23].txt> 2或3的通配
<ls [0-9a-z]> 0-9,a-z的通配
<ls {1,2,3}.txt>1,2,3或的通配

8.5 输入输出的重定向
输出重定向:
<cat 1.txt>2.txt> 把前者输出到后者中,相当于重写
<cat 1.txt>>2.txt > 把前者追加到后者后面去,相当于追加
<ls aaa.txt 2>err > 将错误信息输出到aaa.txt中
<ls aaa.txt 2>>err > 将错误信息追加到aaa.txt后面相当于追加
<ls [12].txt aaa.txt &>a.txt>> aaa.txt不存在,1.txt,2.txt存在,会将正确和错误信息输出到a.txt
<ls [12].txt aaa.txt >1.txt 2>a.txt>>将正确信息输出到1.txt,错误信息输出到a.txt
输入重定向:
<wc - l<1.txt> 将1.txt信息输入到wc指令中。左侧必须为命令

8.6 管道符和作业控制
技术分享图片

管道符:将前者的内容输出后交给后面。
<ls |wc -l > 统计ls列出了多少个文件
<find ./ -type f |wc -l> 统计所有文件数
<vmstat 1> 一个持续更新的程序
ctrl +z 暂停当前任务将它调到后台
fg 暂停当前的任务 ,将任务放到前台
bg 将当前任务调到后台去
jobs 当前的所有的任务

技术分享图片

技术分享图片

技术分享图片

sleep 200 休眠200s

技术分享图片

sleep 4000 & 创建休眠任务并丢到后台去

8.7 shell变量 (上)
8.8 shell变量 (下)

技术分享图片
env 命令可以查看系统的变量
set 很多变量,并包含用户自定义的变量;

技术分享图片

单引号‘ ‘在拓义时用,有特殊符号时用单引号‘ ‘技术分享图片

多个变量相互叠加起来输出时用多个双引号" "连起来;
为什么a="a$bc"会输出a?,实际只识别了a,后面的都未识别

技术分享图片

w 查看所有登陆的用户信息
echo $SSH_TTY 查看当前所属的终端TTY;

技术分享图片

实际上面定义的变量只在当前终端下当前bash生效。

技术分享图片

pstree 查看当前的shell路径;
通过export定义的全局变量向下有效,且必须是同一sshd下。
exit 退到上一级的shell路径;
bash 创建一层shell
sshd 登陆一个终端创建一个sshd;
技术分享图片

unset a 取消定义的名字为a的变量

8.9环境变量配置文件

技术分享图片
/etc/ 下是系统的环境变量
~/ 下是 用户自己家目录下的环境变量
PS1 定义在 /etc/bashrc中 < vim /etc/bashrc>
PPT中PS1指令,带颜色显示

技术分享图片
8.10 shell 特殊字符_cut命令
8.11 Sort_wc_uniq 命令
8.12 tee_tr_spit 命

技术分享图片

< cat /etc/passwd |head -2 |cut -d ":" -f 1-5 > 取前两行的以:为分割的1-5个段
< cat /etc/passwd |head -2 |cut -c 4 > 取第4个字符

技术分享图片

技术分享图片
<sort /etc/passwd> 排序显示,默认按ascii排序技术分享图片

<sort -n 2.txt> 按数字大小排序,字符和符号都会被当为0
<wc -l 2.txt> 统计行数
<wc -m 2.txt>统计字符数,文件默认其实每一行都有一个$符号,这个不要漏掉。
<wc -w 2.txt> 统计词,以特殊字符区分比如空格,逗号,都算。
<uniq 2.txt> 去重,将相邻的相同符号去掉。所以先排序在去重。

sort uniq head cat 命令只会对文件进行一些操作并输出,并不会更改文件内内容;

《 tee 》 相当于 重定向指令‘>‘,但会在屏幕上输出
< >a.txt > 清空文件a.txt的内容
<sort 2.txt |uniq -c > 将文件2.txt的内容去重排序。
<sort 2.txt |uniq -c > a.txt> 将2.txt的内容重定向输出,但不会在屏幕上打印出来
<sort 2.txt |uniq -c |tee a.txt> 将2.txt的内容重定向输出,并在屏幕上打印出来
<sort 2.txt |uniq -c |tee -a a.txt> 将2.txt的内容追加输出,并在屏幕上打印出来追加的内容

《 tr 》 替换字符
< echo "aminglinux" |tr ‘[al]‘ ‘[AL]‘ > 将其中的小写a和l变成大写A和L [ ]代表任选
< echo "aminglinux" |tr ‘a‘ ‘A‘ > 将其中的小写a变成大写A
< echo "aminglinux" |tr ‘[a-z]‘ ‘[A-Z]‘ > 所有字母改成大写
<echo "aminglinux" |tr ‘[a-z]‘ ‘1‘ > 所有字母改成 1

技术分享图片

<split> 切割
<split -b 100M a.txt>
<find /etc/ -type f -name "*conf" -exec cat {} >> b.txt \;> 将/etc/下所有conf文件列出来并追加到b.txt

技术分享图片

<split -b 10000 a.txt> 默认是字节

技术分享图片

<split -l 1000 a.txt> 切割成1000行

技术分享图片

8.13 shell 特殊字符 (下)

技术分享图片
; 多条命令写一行

技术分享图片

正确重定向

> 追加重定向
2> 错误重定向
2>>错误追加重定向
&> 错误和正确重定向
|| 或者 前面命令执行成功就不再执行后面命令
&& 和 前面执行成功才执行后面的命令
[ -d aminglingx] || mkdir aminglinux 若目录存在将不再创建目录

技术分享图片

以上是关于第八章 Linux Shell基础的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf(第八章)模板布局

第八章 心得体会

第八章 读书笔记

第八章

第八章 读书笔记

Android深度探索第八章总结