热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统shell基础(一)

shell是操作系统中重要的应用,尤其对linux这种命令行模式的操作系统,shell具有重要的意义。一、什么是shellshell是一个命令解释器&#

shell是操作系统中重要的应用,尤其对linux这种命令行模式的操作系统,shell具有重要的意义。

一、什么是shell

shell是一个命令解释器,提供用户和机器之间的交互。每次我们登录系统后,出现的界面就是shell,相当于我们在界面输入命令,shell把我们输入的内容转换成系统能够理解的内容传递给系统去执行。shell支持特定的语法,有点像c语言,支持逻辑判断,if while语句。
Linux系统 shell基础(一)
这就是基本的shell。
centos7默认的shell是bash,系统中还支持其他类型的shell,比如zsh、ksh。

二、历史变量(HISTSIZE)介绍及其参数

centos7系统中当前用户输入的命令都储存在用户的家目录下,比如root用户命令就存在/root/.bash_history文件中。
Linux系统 shell基础(一)
这个文件能储存的命令的数量由HISTSIZE变量决定。这个变量初始值为1000
Linux系统 shell基础(一)
每次退出终端时,你敲过的命令就会保存在/root/.bash_history文件中。
HISTSIZE变量值的设置在/etc/profile中,这个文件中能够更改很多系统的参数,包括记录命令的数量,记录命令的格式等等。

1、修改系统记录的命令数量
在/etc/profile文件中操作,用vi或者vim打开,定位到46行(顺便复习下vim命令,46j)
Linux系统 shell基础(一)
更改框中数值为你想要的数值,比如说5000
Linux系统 shell基础(一)
保存退出,用source命令重载下下 系统的profile使改动生效
Linux系统 shell基础(一)
看下结果,搞定!
Linux系统 shell基础(一)

2、修改记录内容,记录每条命令执行的时间
分两种情况,一种是仅对当前终端生效,断开后失效。
命令:HISTTIMEFORMAT="%Y%m%d %H:%M:%S"
Linux系统 shell基础(一)

永久在/root/.bash_history增加这个内容需要更改/etc/profile文件,操作如下:
跟前面一个例子一样,在/etc/profile文件中操作,用vi或者vim打开,定位到46行(顺便复习下vim命令,46j)
Linux系统 shell基础(一)
在HISTSIZE行下加入“HISTTIMEFORMAT="%Y%m%d %H:%M:%S"”内容
Linux系统 shell基础(一)
保存退出,用source命令重载下下 系统的profile使改动生效
Linux系统 shell基础(一)
断开连接重登下系统,看结果,搞定!
Linux系统 shell基础(一)

3、永久保存命令的历史纪录
只要给当前用户的家目录中的/root/.bash_history文件加上+a权限即可,即使你设定了HISTSIZE的大小,他仍然会记录你输入的所有命令。
命令:chattr +a ~/.bash_history
Linux系统 shell基础(一)

4、执行history记录中最后一条命令
命令:!!(两个感叹号)
Linux系统 shell基础(一)

5、运行第XX条命令
命令:!X(数字)
Linux系统 shell基础(一)

6、执行历史纪录中最近的一条以条关键字开头的那条历史命令
比如我要执行最近一条init开头的命令,输入!init 他就会执行history记录中最近的那条。可以看到是init 0.
Linux系统 shell基础(一)
Linux系统 shell基础(一)

三、命令补全与别名

1、tab补全命令
我们敲命令时可以按Tab键
比如说我们按ls这时按两下Tab键他就会把所有ls开头的命令全部列出来
Linux系统 shell基础(一)

2、tab补全命令参数
需要安装“bash-completion”包才能支持
yum安装
Linux系统 shell基础(一)
重启电脑(不然不生效)
检查下安装情况,生效了
Linux系统 shell基础(一)

3、命令的别名(alias)
别名功能也是系统shell的重要应用
查看系统已定义的alias
Linux系统 shell基础(一)

4、自定义自己的别名命令
每个用户都有自己的别名配置文件,默认在~/.bashrc文件中,还有一些系统定义的别名,在/etc/peofile.d下。
示例:
1)将重启网络命令做别名
命令:`alias restartnet='systemctl restart network.service'
2)查看用户自定义的alias
在文件~/.bashrc中看
命令:vim ~/.bashrc
Linux系统 shell基础(一)
3)查看系统定义的一些别名
命令:ls etc/profile.d
我们查看其中一个,比如colorgrep.sh
Linux系统 shell基础(一)
4)取消自定义的别名
Linux系统 shell基础(一)

四、通配符、输入输出重定向

(一)通配符
系统中包含了很多通配符,常见的有
:表示通配,可以代表文字
?:表示一个任意的字符,但是不能代表数字
[] :任选方括号里的任意一个字符
{}:匹配大括号里的任意字符,只是选项间要加逗号
示例:
在一个文件夹下新建一些文件演示各个通配符的用法
本身文件夹中文件
Linux系统 shell基础(一)
1、ls
.txt
Linux系统 shell基础(一)
2、ls ?.txt(注意这里要用英文的问号,中文输入法的问号系统不认)
Linux系统 shell基础(一)
3、ls [123a].txt
Linux系统 shell基础(一)
4、ls {1,2,a}.txt
Linux系统 shell基础(一)

(二)输入输出重定向
重定向主要应用在编写shell脚本时,我们可以把shell执行的结果区分输出到不同的文件中

,输出重定向
<&#xff0c;输入重定向&#xff0c;很少用

&#xff0c;追加重定向&#xff08;重定向表示不删除前面的内容&#xff09;
<<&#xff0c;追加输入重定向&#xff08;&#xff09;
2>&#xff0c;标准错误输出重定向
2>>&#xff0c;错误追加重定向
&#43;2>&#61;&#61;&>,全部重定向&#xff0c;即把正确错误信息全部输出到1个文件中
&>>全部追加重定向
命令 > 1.txt 2.txt 还可以把正确和错误的信息分别输出到不同的文件

示例
1、把命令执行的结果输入到1.txt中
命令 df -h > 1.txt
Linux系统 shell基础&#xff08;一&#xff09;
2、把命令执行的正确结果和错误结果分别输出
命令 tar -cjvf 1tar.bz2 2.txt 3.txt b.txt >1.txt 2>a.txt
Linux系统 shell基础&#xff08;一&#xff09;

转:https://blog.51cto.com/11934539/2059372



推荐阅读
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文深入探讨了Linux内核中进程地址空间的设计与实现,包括虚拟地址空间的概念、内存描述符`mm_struct`的作用、内核线程与用户进程的区别、进程地址空间的分配方法、虚拟内存区域(VMA)的结构以及地址空间与页表之间的映射机制。 ... [详细]
  • 在中标麒麟操作系统上部署达梦数据库及导入SQL文件
    本文档详细介绍了如何在中标麒麟操作系统上安装达梦数据库,并提供了导入SQL文件的具体步骤。首先,检查系统的发行版和内核版本,接着创建必要的用户和用户组,规划数据库安装路径,挂载安装介质,调整系统限制以确保数据库的正常运行,最后通过图形界面完成数据库的安装。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文介绍了在Linux环境下如何有效返回命令行状态、上一级目录及快速查找头文件和函数定义的方法。包括处理长时间运行命令、编辑器退出技巧、目录导航以及文件搜索策略。 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
  • Ubuntu 14.04 系统安装后网卡名称修改方法
    本文介绍了在安装 Ubuntu 14.04 Server 版本后,如何将默认的网卡名称从非 eth 格式修改为传统的 eth 格式,并提供了详细的步骤和示例。 ... [详细]
  • 本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ... [详细]
  • 整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 在Ubuntu 16.10 (x86) 上安装 WordPress 4.7.115
    本文介绍如何在Ubuntu 16.10 (x86) 系统上安装WordPress 4.7.115,包括下载、解压、配置等步骤,确保安装过程顺利进行。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中安装 Python 3.7 的步骤,包括编译工具的安装、Python 3.7 源码的下载与编译、软链接的创建以及常见错误的处理方法。 ... [详细]
author-avatar
处女冰水洗尘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有