JavaShuo
栏目
标签
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向,管道符和做业控制
时间 2019-12-17
标签
shell
介绍
命令
历史
补全
别名
通配符
输入
输出
重定向
管道
控制
栏目
Unix
繁體版
原文
原文链接
shell介绍
可使用 yum list |grep zsh 或者 yum list |grep ksh
这样能够搜索 zsh 和 ksh ,有须要的话能够安装
总之,默认使用的就是 .bash shell
命令历史
输入过的命令会被保存在一个文件内
在shell界面,使用 上方向键 能够往上查看以前输入过的命令
这个保存命令的文件地址在用户家目录下面
例子:root 用户的家目录就是 /root
保存过往命令的文件名称是 .bash_history
那么root用户保存过往命令的文件路径就在 /root/.bash_history
使用 history 命令就能够查看记录了多少条过往命令
上图能够看到,输入的最后一条命令是 history
序号是1003,说明.bash_history已经记录了1003条过往命令
不过 .bash_history 最多只能存储1000条命令
往上翻,能够看到,命令是从序号 4 开始的
由于记录到1003条命令,但只能存1000条命令,因此最前面的3条命令被删除了
有一个系统内置的环境变量 HISTSIZE
使用上图命令,能够看到返回的值是 1000
因此 .bash_history 最大记录的命令数量为1000
使用 history -c 命令能够清空当前 .bash_history 的内容
不过 history -c 只是清空内存中的内容,写进硬盘的内容并不会被清空
使用终端时输入的命令都是保存在内存里面的
退出终端的时候才会被写入硬盘
HISTSIZE 环境变量能够被修改
能够在 /etc/profile 文件中修改
vi 打开 profile 文件,而后找到上图中的这个变量
将变量数值修改成本身想要的数值,而后保存退出
不过如今修改尚未生效,须要执行命令 source /etc/profile
这样修改才会生效,可使用 echo $HISTSIZE 查看是否生效
或者退出终端,而后从新进入后也会生效
若是想把命令输入的时间也记录进 .bash_history
可使用上图的命令,首先赋值给环境变量 HISTTIMEFORMAT
"%Y%m%d %H:%M:%S " 表明时间的格式:年月日 时:分:秒
使用 echo $HISTTIMEFORMAT 查看格式的值是否改变了
能够看到下面返回的值是 "%Y/%m/%d %H:%M:%S "
系统默认 HISTTIMEFORMAT 的值为空,因此新建一个终端这个变量的值是为空的
如图,能够看到,再使用 history 命令查看记录在内存里面的过往命令
每一条过往命令都增长了使用时间的记录
若是但愿永久保留这个设置,而不是每次打开终端都要从新设置一遍
能够在 /etc/profile 文件里面设置这一个变量
用 vim 打开 profile
如图,找到 HISTSIZE,在它的下面增长一行,HISTTIMEFORMAT
就把以前设置变量的格式复制到这里,而后保存退出
而后须要 source /etc/profile 一下使其生效
而后从新进入终端
能够发现,默认 HISTTIMEFORMAT 的值已是以前设置的格式了
上图命令是对 .bash_history 文件追加 a 权限
增长 a 权限后,这个文件就只能被追加信息,而不会被删除信息
这样就能够无限的保存命令到这个命令历史文件里面了
可是若是不正常退出终端的话,有可能过往命令会保存不全
正常退出终端须要使用命令 logout 或者 exit
命令 !! 会执行上一条命令,也就是说命令历史里面记录的最后一条命令
好比使用 ls 命令后,再使用 !! 命令
那么就会再执行一次 ls 命令,由于上一条命令是 ls
命令 !n ,n表明数字
使用命令 history 查看命令历史,每一条命令都有一个id号码
例子,使用命令 !768 那么就会执行命令历史里面id为768的命令
命令 !word ,word表明单词
好比在命令历史里面,总共使用了3次 ls /root 命令
而后使用命令 !ls
那么就会执行命令历史里面最后一次 ls 命令
也可使用 !vim 或者 !echo
那么也会执行命令历史里面最后一次使用 vim 或者 echo 的命令
命令补全和别名
tab 补全命令或者路径
例子,输入 ls 按两下tab
系统会列出全部以 ls 开头的系统命令出来
上图是全部系统内以 ls 开头的命令
若是输入图中的 lsinit 而后按一下 tab
系统会自动补全后面缺失的 rd 变成 lsinitrd
总结,输入一个命令或者路径
好比 ls 或者 /ro
若是存在多个命令以 ls 开头或者路径以 /ro 开头
那么按两下 tab 就能够把全部目标列出来
若是只存在一个目标,那么按一下tab就能够把剩余的部分补全
如图,输入 /ro 而后按一下tab,系统会自动补全为 /root/
还能够补全命令的参数,不过须要下载一个包
使用上图所示命令安装包,能够得到补全命令参数的功能
安装完包以后,须要先退出终端再从新链接才会生效
如上图,输入 systemctl res 而后按两下 tab
下面出现三个参数选项,rescue, reset_failed, restart
或者输入 systemctl rest 而后按一下tab
就是自动补全为 systemctl restart
这就是能够自动补全命令参数的功能
上图是使用别名
如图,alias restartnet = 'systemctl restart network.service'
这样就把'systemctl restart network.service' 这条命令取了一个别名叫作 restartnet
之后只要运行 restartnet 就等因而运行了'systemctl restart network.service'这条命令
如图,使用 alias 命令就能够查看系统内全部的别名
能够看到刚才取的别名 restartnet 的信息
关于alias别名信息保存的文件位置有两个
用户家目录下的 .bashrc 文件和 /etc/profile.d 目录内的文件
有一些alias信息记录在用户家目录的 .bashrc 文件内
如上图,还有一些alias信息记录在/etc/profile.d目录内的文件内
红色箭头指到的几个文件都存在相关的alias信息
总结,alias信息主要在这两个地方记录
通配符
星号 * 就是通配符,表明任意长度的任意字符,包括字符数字符号等
如图,使用命令 ls *.txt
就把目录下面全部的 .txt 文件显示出来了
由于 * 表明任意长度的字符
因此 *.txt 就表示 任意长度字符 + .txt
因此 ls *.txt 就会列出全部 任意长度字符 + .txt 的文件
还有一个通配符是问号 ?
问号 ? 跟星号 * 的区别是*表明任意长度,?只表明一位字符
如上图,ls *.txt 会列出全部 .txt文件
若是使用 ls ?.txt 只会列出 1.txt,2.txt,3.txt
不会列出 aa.txt ,由于 aa 是两位字符,? 只表明一位字符
如图,还有一种通配符用法是 方括号+数字或者字母
ls [0-3].txt 能够显示0到3任意一个数字 + .txt 的文件
ls [13].txt 能够显示名称为 1.txt 和 3.txt 的文件
ls [0-9a-z].txt 能够显示 0-9任意一个数字 或者 a-z任意一个字母 + .txt 的文件
还能够加上大写字母如 ls [0-9a-zA-Z].txt 能够把属于方括号范围内的字母或数字的.txt文件所有显示出来
如图,还可使用花括号,做用跟方括号相似,可是书写格式不一样
花括号必须写逗号 , 用来间隔不一样的项
输入输出重定向
上图命令就是重定向,cat 1.txt > 2.txt
意思是把 1.txt 文件的内容写入 2.txt 里面,2.txt里面原来的内容会被删除
上图命令就是追加
追加是指,把 1.txt 的内容写入 2.txt
可是 2.txt 原来的内容不会被删除,1.txt的内容写在2.txt内容的后面
如图, 2> 就是错误重定向的符号
重定向通常是把正确执行的信息重定向到一个文件里面
lsaaa 这个命令不存在,因此系统返回一个错误信息
若是使用重定向符号 > ,由于这条命令是错误的,并无正确执行
因此重定向是没法生效的
可是系统返回了一个错误信息,2> 符号能够把这条系统返回的错误信息重定向到一个文件里面
上图能够看到,把lsaaa的错误信息 2> 到 a.txt 里面
cat a.txt 查看内容,能够看到内容就是系统返回的错误信息
还可使用 追加错误重定向 ,符号是 2>>
错误重定向会把文件原来的内容删除,而后把错误信息写入进去
追加错误重定向 不会把原文件信息删除
而是把错误信息追加到原文件内容的后面
如图,再运行一次 lsaaa 2>> a.txt
a.txt 以前已经记录了一条 lsaaa的错误信息
如今追加一条错误信息
cat a.txt 内容,能够看到有两条错误信息
重定向 和 错误重定向 是能够同时使用的
重定向 > + 错误重定向 2> = &>
重定向 与 错误重定向 同时使用的符号就是 &>
如图,ls [12].txt aaa.txt &> a.txt
这条命令是显示 1.txt和2.txt,还有aaa.txt
1.txt,2.txt都存在,因此能够正确执行
aaa.txt这个文件不存在,因此系统会返回错误信息
如今一条命令里面,既要把正确返回的信息记录下来
又要把系统返回的错误信息记录下来
就须要用到 &> 符号,由于 &> == > + 2>
cat a.txt 查看内容,能够看到,正确返回的信息跟错误信息都记录了
一样,也能够 正确错误重定向追加,符号是 &>>
符号 &>> == >> + 2>>
如图,从新运行一遍以前的命令,可是符号从 &> 改成 &>>
这样就把 正确错误的信息 追加到 a.txt 之中了
使用cat查看 a.txt 内容
能够看到,此次的正确错误信息被追加到上次的信息后面
还能够这样写,就是分别把 正确的信息 重定向到 1.txt
错误的信息 重定向到 a.txt
cat 分别查看 1.txt 和 a.txt 内容
能够看到正确记录了 正确返回信息 跟 错误返回信息
这样就把 正确返回 和 错误返回 分别重定向到不一样的文件里面了
wc -l 1.txt 能够查看文本文档的行数
wc -l < 1.txt 是输入重定向
就是把文件内容重定向到命令后面,只对命令有效,不能文件对文件
几乎不会用到,作个了解就行
管道符和做业控制
管道符 | ,做用就是把左边命令的结果,做为右边命令的做用对象
如图,cat 1.txt |wc -l
首先左边命令 cat 1.txt 会输出一些文本
输出的文本会做为 wc -l 的做用对象
wc -l 的做用是显示文本的行数
cat 1.txt 输出了一个文本对象
wc -l 会对这个文本对象产生做用
也就是说显示这个文本对象的行数
ctrl + z 能够暂停一个任务
好比在编辑一个文件,可是须要查看另一个文件
这时候能够不保存退出,而是暂停当前任务
如图,正在编辑 1.txt
使用 ctrl + z 暂停当前任务
能够看到,出现一行显示 已中止 的信息
如图,编辑 2.txt 而后使用 ctrl + z 暂停任务
出现中止信息,前面的序号是 2 , 1.txt的中止信息前面的序号是 1
如今已经有两个任务被暂停了
使用命令 jobs 就能够查看有多少任务被暂停了
结果显示了两个被暂停的任务信息
如今若是想回到被暂停的任务里面,继续任务
可使用 fg + 任务id 的办法回到任务
若是只有一个任务,直接 fg 就能够回到任务
若是想回到 任务2 可使用 fg 2
若是想回到 任务1 可使用 fg 1
还可使用 bg 命令把任务放到后台去
fg 命令是把任务放到前台来
bg 就能够把命令放到后台去
进入后台的命令能够继续运行,由于不在前台
因此可能没法看到
把编辑 2.txt 的任务放到后台去了
使用 bg 2 ,由于这个任务的id是2
若是只有一个任务,直接 bg 就能够放到后台了
显示信息能够看到,任务不是中止的,暂停任务会显示任务已中止的信息
不管把任务放到前台仍是后台,任务都会从中止状态恢复
存在多个任务的时候,直接fg或者bg,目标对象是最后一个任务
还可使用命令方式直接后台运行
sleep 100 能够暂停系统100秒,什么事都不干
在前台的时候,效果是命令行消失,不能输入命令
100 秒后才恢复,在后台的话就没什么做用了
直接使用命令 sleep 100 & 命令后面加上符号 &
这样命令 sleep 100 会直接在后台运行
其它命令也能够加 & 使命令直接在后台运行
jobs 只能在当前终端查看
开第二个终端使用jobs没法看到上一个终端的相关信息
相关文章
1.
shell介绍、命令历史、命令补全和别名、通配符和输入输出重定向
2.
shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
3.
shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
4.
8.1 shell介绍 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
5.
23次课(shell介绍、命令历史、命令补全和别名、 通配符、输入输出重定向)...
6.
shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向
7.
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向
8.
shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向
9.
shell介绍 、命令历史、命令补全和别名 、通配符 、输入输出重定向
10.
shell介绍、命令历史、 命令补全和别名 、通配符 、输入输出重定向
更多相关文章...
•
Rust 输出到命令行
-
RUST 教程
•
SQL 通配符
-
SQL 教程
•
Docker 清理命令
•
Java Agent入门实战(一)-Instrumentation介绍与使用
相关标签/搜索
命令
自定制命令
14-输入/输出
传输控制
linux操做命令
Vim命令大全
通配符
命令模式
下命令
HTTP/TCP
Unix
Docker命令大全
XLink 和 XPointer 教程
MyBatis教程
命令
数据传输
数据业务
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
深度学习硬件架构简述
2.
重温矩阵(V) 主成份分析
3.
国庆佳节第四天,谈谈我月收入增加 4K 的故事
4.
一起学nRF51xx 23 - s130蓝牙API介绍
5.
2018最为紧缺的十大岗位,技术岗占80%
6.
第一次hibernate
7.
SSM项目后期添加数据权限设计
8.
人机交互期末复习
9.
现在无法开始异步操作。异步操作只能在异步处理程序或模块中开始,或在页生存期中的特定事件过程中开始...
10.
微信小程序开发常用元素总结1-1
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
shell介绍、命令历史、命令补全和别名、通配符和输入输出重定向
2.
shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
3.
shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
4.
8.1 shell介绍 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
5.
23次课(shell介绍、命令历史、命令补全和别名、 通配符、输入输出重定向)...
6.
shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向
7.
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向
8.
shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向
9.
shell介绍 、命令历史、命令补全和别名 、通配符 、输入输出重定向
10.
shell介绍、命令历史、 命令补全和别名 、通配符 、输入输出重定向
>>更多相关文章<<