Shell_第一章_( alias、快捷键、bg,screen、重定向2>&1cat)
2023-09-11 14:21:27 时间
一、别名 alias
1、查看Linux 别名列表
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias perlll='eval `perl -Mlocal::lib`'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#
2、临时设置别名
1、格式:alias 别名=‘设置的原数据’
2、其中可以使用单引号,或者使用双引号,效果一样。
3、临时设置别名退出当前终端(shell)或者重启Linux,设置的别名消失
4、alias 别名命令,他的本质就是解决复杂的命令组合成一个命令,所以原数据中,如果带有命令,保留命令功能。
比如:设置tt = 你好 设置lt= ls -a
[root@localhost ~]# alias tt='echo nihao'
[root@localhost ~]# tt
nihao
[root@localhost ~]# alias lt='ls -a'
[root@localhost ~]# lt
. .cshrc jiankong.sh .ssh
3、取消临时别名
比如:取消 tt
[root@localhost ~]# tt
nihao
[root@localhost ~]# unalias tt
[root@localhost ~]# tt
bash: tt: command not found...
[root@localhost ~]#
二、常用快捷键
(1)Tab补充命令
不用输入完整的命令,输入命令前几个字母后Tab键,会自动补全命令提示。
(2)移动光标命令
Ctrl+A:在命令行输入命令后,想把光标移动到开头
Ctrl+E:在命令行输入命令后,想把光标移动到结尾
(3)剪切字符
Ctrl+K:在命令行输入命令后,把当前光标位置到行尾的字符进行剪切
Ctrl+U:在命令行输入命令后,把当前光标位置到行首的字符进行剪切
Ctrl+W:执行向前删除,直到前一个字符是空格
Ctrl+Y:将剪切的字符进行粘贴
(4)中断正在运行的命令行
Ctrl+C
(5)退出当前Xshell,退出mysql 命令行界面等
Ctrl+D
(6)搜索命令行使用过的历史命令记录
Ctrl+R:按快捷键后,出现(reverse-i-search)`': 在里面输入之前执行的命令的一部分,就会自动检索最近执行的相匹配命令,如果不符合,在继续按Ctrl+R,往上继续检索,直到找到按键盘的←→,命令行定格检索命令。期间如果还想追加查询,可直接继续输入命令,后ctrl+R
(7)清屏命令
Ctrl+L:等价于命令行执行clean
(8)暂停命令
Ctrl+Z:比如yum docker,在执行途中如果按ctrl+Z会被暂停,如果想继续输入bg继续[root@localhost ~]# yum install -y docker 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 正在解决依赖关系 --> 正在检查事务 ---> 软件包 docker.x86_64.2.1.13.1-208.git7d71120.el7_9 将被 安装 --> 正在处理依赖关系 docker-common = 2:1.13.1-208.git7d71120.el7_9,它被软件包 2:docker-1.13.1-208.git7d71120.el7_9.x86_64 需要 ^Z [1]+ 已停止 yum install -y docker [root@localhost ~]# bg [1]+ yum install -y docker & [root@localhost ~]# --> 正在处理依赖关系 docker-client = 2:1.13.1-208.git7d71120.el7_9,它被软件包 2:docker-1.13.1-208.git7d71120.el7_9.x86_64 需要 --> 正在处理依赖关系 subscription-manager-rhsm-certificates,它被软件包 2:docker-1.13.1-208.git7d71120.el7_9.x86_64 需要 --> 正在检查事务 ---> 软件包 docker-client.x86_64.2.1.13.1-208.git7d71120.el7_9 将被 安装 ---> 软件包 docker-common.x86_64.2.1.13.1-208.git7d71120.el7_9 将被 安装
但是如果后期输入其他命令,导致bg不能继承ctrl+Z暂停任务,或者继续执行暂停的相同的命令,比如执行yum install -y rpm 就会提示已经被锁定,因为上一个任务没完成,需要手动删除上一个任务的配置文件
[root@localhost ~]# yum install -y docker 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 正在解决依赖关系 [1]+ 已停止 yum install -y docker [root@localhost ~]# yum install -y rpm 已加载插件:fastestmirror /var/run/yum.pid 已被锁定,PID 为 1577 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit... 另一个应用程序是:yum 内存: 72 M RSS (402 MB VSZ) 已启动: Tue Jan 11 19:12:47 2022 - 00:07之前 状态 :跟踪/停止,进程ID:1577 解决方案: [root@localhost ~]# rm -f /var/run/yum.pid
(9)锁屏,只针对图形界面有用
Ctrl+S
(10)解除锁屏,只针对图形界面有用
Ctrl+Q
(11) !! 执行上一条命令
(12) !$ 获取上一条命令的参数
[root@localhost ~]# touch /root/test1
[root@localhost ~]# ll !$
ll /root/test1
-rw-r--r-- 1 root root 0 1月 11 19:23 /root/test1
三、前后台作业控制bg,fg,jobs,screen
screen使用教程:
实现:screen能够开一个类似独立的xshell,在这里面操作如果不慎退出此xshell,里面执行的命令不会丢失,而且可以重新在进入此xshell
1、创建一个screen窗口,比如叫rpm
[root@localhost ~]# screen -S lnmp
2、输入你要执行的命令
[root@localhost ~]# yum install rpm
已加载插件:fastestmirror
.......
升级 1 软件包 (+3 依赖软件包)
Is this ok [y/d/N]:
3、这时候直接关闭当前shell,然后在启动一个shell,通过命令能查看到screen rpm
[root@localhost ~]# screen -list
There is a screen on:
1867.rpm (Attached)
1 Socket in /var/run/screen/S-root.
4、进入screen rpm
[root@localhost ~]# screen -r 1867
四、输入输出重定向
重定向可以修改、创建、清空一个文件
1、> >> 1> 2> 2>> &> 1>&2 2>&1
> 代表输出重定向,把左侧的文件内容输出重定向给右侧文件,注右侧文件原有的数据会被覆盖
>> 代表输出重定向,把左侧的文件内容输出追加重定向给右侧文件,注是在右侧文件末尾最追加内容
1> 跟>是一个东西(标准输出), >就是1> ,只不过省去了1
2> 也是代表输出,只不过代表标准错误输出,在Linxu中执行命令,没有报错就是正常,报错的内容通过2> 指定输出到一个文件或者其他位置
2>> 错误输出,追加重定向,在右侧文件末尾追加内容
&> 标准输出和标准错误输出都重定向到文件。标准输出和标准错误输出代表了所有。
1>&2 1代表正确信息,把正确信息的返回值传递给,2错误输出通道, &2表示2输出通道
2>&1 2代表错误信息,把错误信息的返回值传递给,1正确输出通道, &1表示1输出通道
注:>只把命令正常的结果输出,所以报错的部分会而不再前端显示
注:2>只把报错结果输出 ,所以正常的部分会在前端显示
注:2>> 不管怎么样,不再前端显示
注:1>&2和2>&1中,& 是一个描述符,如果1或2前不加&,会被当成一个普通文件
实验:>
[root@localhost test]# yum install -y lnmp >1.txt
Error: Nothing to do
[root@localhost test]# cat 1.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
说明>只能接受能运行的命令的正常运行的结果,报错(Error: Nothing to do)不会写入
实验:2>
[root@localhost test]# yum install -y lnmp 2>2.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
[root@localhost test]# cat 2.txt
Error: Nothing to do
说明2>只能接收报错的提示,不能接收命令正常运行的结果
实验:&>
[root@localhost test]# yum install -y lnmp &>3.txt
[root@localhost test]# cat 3.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
Error: Nothing to do
说明&>能接所有产生的结果
实验:1> 2>
[root@localhost test]# yum install -y lnmp 1>4.txt 2>5.txt
[root@localhost test]# cat 4.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
[root@localhost test]# cat 5.txt
Error: Nothing to do
将错误输出给错误的,将正常的命令输出的结果重定向给另一个文件,而不再前端显示
实验:1>&2 2>&1
1、[root@localhost test]# yum install -y lnmp >6.txt 2>&1
[root@localhost test]# cat 6.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
Error: Nothing to do
讲解:执行命令后,有正常的输出、也有错误的报错,通过>6.txt,代表你把正确的信息传递给我,这时候程序还并未执行,在继续往后执行命令,发现2>&1,告诉程序你把2错误的信息,也输出到&1正确的输出管道。所以就把所有的信息传递给6.txt
2、[root@localhost test]# yum install -y lnmp >7.txt 1>&2
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
Error: Nothing to do
[root@localhost test]# cat 7.txt
讲解:讲解:执行命令后,有正常的输出、也有错误的报错,通过>7.txt,代表你把正确的信息传递给我,这时候程序还并未执行,在继续往后执行命令,发现1>&2,告诉程序你把1正确的信息,也输出到&2错误的输出管道。导致原本正确的应该传递给7.txt,直接传递给&2,导致输出到界面上了
3、[root@localhost test]# yum install -y lnmp 2>8.txt 1>&2
[root@localhost test]# cat 8.txt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package lnmp available.
Error: Nothing to do
讲解:讲解:执行命令后,有正常的输出、也有错误的报错,通过2>8.txt,代表你把错误的信息传递给我,这时候程序还并未执行,在继续往后执行命令,发现1>&2,告诉程序你把1正确的信息,也输出到&2错误的输出管道。
2、cat 重定向
1、cat 命令无参数时,从标准输入(键盘)读取内容
[root@localhost ~]# cat
123
123
[root@localhost ~]#
cat 回车后,输入123,返回123
2、cat 后接参数,代表cat查看此参数,比如cat 1.txt,.txt是作为cat命令的参数。
3、cat < 1.txt :加了输入< 重定向,从1.txt 读内容,跟cat 1.txt 结果一样
3、cat EOF
通过cat 创建文件,并写入内容。
[root@localhost ~]# cat >3.txt <<EOF
> NIHAO
> SHIJI
> EOF
[root@localhost ~]# cat 3.txt
NIHAO
SHIJI
[root@localhost ~]#
cat << EOF 内容 EOF : 通过此形式,把内容追加给cat。注(首先必须要说明的是EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符))
cat >3.txt:由于cat 已经有了内容,所以把cat的内容,重定向给3.txt
相关文章
- UVALive3938 "Ray, Pass me the dishes!" 线段树动态区间最大和
- Oracle12c功能增强新特性之维护&升级&恢复&数据泵等
- python & shell实现业务高峰期临时动态增加服务器
- 超详细Shell学习教程第四篇shell脚本参数化
- ASP.NET MVC & Web API Brief Introduction
- AT&T确认进行400Gbps以太网连接测试
- Cocos2d-x MultipleTouch & CCControllButton's confusion
- shell &&
- 【历史上的今天】7 月 26 日:工业机器人之父诞生;《计算机欺诈和滥用法》首次应用;AT&T 合作微软
- Shell Step by Step (3) —— Stdin & if
- 使用numpy出现DeprecationWarning: The normed argument is ignored when density is provided. 解决方法&忽略警告的方法
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---41
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---17
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---13
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---10
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---07
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---41
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---25
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---20
- 单阶段实例分割SOLO-v1& SOLO-v2论文笔记
- 【Unity入门计划】Collision2D类&Collider2D类
- GAMES101作业5-从头到尾理解代码&Whitted光线追踪