博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell介绍
阅读量:7040 次
发布时间:2019-06-28

本文共 3799 字,大约阅读时间需要 12 分钟。

hot3.png

shell介绍

介绍(摘自百度百科):

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行 。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就像Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。GNOME。
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
同Linux本身一样,Shell也有多种不同的版本
主要有下列版本的Shell: Bourne Shell:是贝尔实验室开发的。 BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。 Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。 C Shell:是SUN公司Shell的BSD版本。 Z Shell:The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。

历史命令

  • 介绍 我们执行过的命令Linux都会记录,预设可以记录1000条历史命令。这些命令保存在用户的家目录的.bash_history文件中。但需要注意的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。
  • 命令选项

history:显示使用过的所有命令;

history -c:清空当前内存中的历史命令,无法清空配置文件;
!!:执行上一条命令;
!n:执行命令历史中的第n条;
!字符串:执行最近一次使用这个字符串开头的命令

  • 环境变量HISTSIZE

系统内置的环境变量,它决定了你所能保存的命令历史的条数

[root@centos001 ~]# echo $HISTSIZE1000
  • 修改变量HISTSIZE

在/etc/profile中修改;

用/HISTSIZE找到并修改;
source /etc/profile重启生效。

[root@centos001 ~]# vi /etc/profile[root@centos001 ~]# source /etc/profile[root@centos001 ~]# echo $HISTSIZE5000
  • 让使用history命令时,显示命令使用的时间(临时
[root@centos001 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"[root@centos001 ~]# history    1  2017/11/15 23:35:22dhclient    2  2017/11/15 23:35:22ip addr    3  2017/11/15 23:35:22vi /etc/sysconfig/network-scripts/ifcfg-ens33     4  2017/11/15 23:35:22systemctl restart network.service
  • 让使用history命令时,显示命令使用的时间(永久

需更改配置文件;

打开配置文件/etc/profile; 找到HISTSIZE变量的位置并在下面添加HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
保存退出后并重启服务

[root@centos001 ~]# vim /etc/profile[root@centos001 ~]# source !$source /etc/profile
  • 永久保存命令历史

chattr +a ~/.bash_history追加权限(无法删除);

在没有正常退出的情况下,history保存的命令历史是不完整的。

命令、文件名补全和别名

  • 补全介绍

之前多次使用的 TAB键,可以帮我们补全一个指令、路径或文件名。连续按两次,则会吧所有的相关文件名或指令列出来。注:centos7默认不支持补全命令须安装一个包bash-completion,且 重启后生效。

  • 别名alias

语法:**alias【别名】=‘命令’ **, 当命令过长时我们可以给它设置别名,方便我们使用;

存放位置:第一个是存放在用户家目录下的 .bashrc 文件中,第二个是存放在 /etc/profile.d 目录下的 colorls.sh 和 colorgrep.sh 脚本中定义的。

通配符

  • 介绍

在bash下,可以使用***来匹配零个或多个字符。用?**来匹配一个字符

[root@centos001 ~]# ls111     234        3.txt  aminglinux         dir3           ls2123     2.txt      aling  anaconda-ks.cfg.1  dir3.tar       test22.txt  2.txt.zip  aming  d6z                linux计划.txt  yum.log[root@centos001 ~]# ls *.txt22.txt  2.txt  3.txt  linux计划.txt[root@centos001 ~]# ls *txt22.txt  2.txt  3.txt  linux计划.txt[root@centos001 ~]# ls *txt*22.txt  2.txt  2.txt.zip  3.txt  linux计划.txt[root@centos001 ~]# ls 1*111:aming3123:[root@centos001 ~]# ls ?.txt2.txt  3.txt[root@centos001 ~]# ls [0-3].txt //可一用括号加数字显示范围2.txt  3.txt[root@centos001 ~]# ls {1,2}.txt // 花括号也可以 但是里面用逗号 ,表或者的意思ls: 无法访问1.txt: 没有那个文件或目录2.txt

输入、输出重定向

  • 介绍

输入定向用于改变命令的输入,输出定向用与改变命令的输出。输出定向更常用,用于将命令的结果输入文件中,而不是屏幕上

输入是**<,且输入重定向,左边必须是命令,不支持文件输入重定向到文件中的;
输出
>** ;
错误重定向命令:2>:它会把命令产生的错误信息指定输入到一个文件中去;
追加重定向命令:**>>**在原来基础上增加。

  • 示例
[root@centos001 ~]# lsaaa-bash: lsaaa: 未找到命令[root@centos001 ~]# lsaaa 2> 2.txt-bash: 2.txt: 权限不够[root@centos001 ~]# lsaaa 2> 1.txt[root@centos001 ~]# cat 1.txt -bash: lsaaa: 未找到命令[root@centos001 ~]# lsaaa 2>> 1.txt[root@centos001 ~]# cat 1.txt -bash: lsaaa: 未找到命令-bash: lsaaa: 未找到命令[root@centos001 ~]# ls [12].txt aaa.txt & > a.txt  //1.把正确错误一起输出到一个文件[2] 27725[root@centos001 ~]# ls: 无法访问aaa.txt: 没有那个文件或目录1.txt  2.txt^C[2]-  退出 2                ls --color=auto [12].txt aaa.txt[root@centos001 ~]# ls [12].txt aaa.txt > 1.txt 2>a.txt       //第二种写法[root@centos001 ~]# cat 1.txt 1.txt2.txt[root@centos001 ~]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件或目录 [root@centos001 ~]# cat a.txt ls: 无法访问aaa.txt: 没有那个文件或目录[root@centos001 ~]# wc -l <1.txt         //输入重定向2[root@centos001 ~]# 2.txt < 1.txt        //语法错误-bash: 2.txt: 未找到命令

转载于:https://my.oschina.net/u/3707523/blog/1574243

你可能感兴趣的文章
solais 10中执行crontab -e报unkown terminal type
查看>>
jar包下载网址
查看>>
virtualbox使用总结
查看>>
CentOS7上搭建VNC服务
查看>>
Apache select与Nginx epoll模型区别
查看>>
Vue组件入门
查看>>
广告条
查看>>
『中级篇』Docker-cloud介绍(54)
查看>>
到期的Navicat需要注册码--解决方案
查看>>
【Unity3D基础教程】给初学者看的Unity教程(二):所有脚本组件的基类 -- MonoBehaviour的前世今生...
查看>>
×××小程序接口调试
查看>>
OpenSSL安装
查看>>
我是如何沉迷于linux系统的?
查看>>
微软正式释出基于 Chromium 的全新版本 Edge
查看>>
SHELL菜单select练习
查看>>
aaa
查看>>
wwballizer以及awstat下的apache日志监控
查看>>
NO3.Shell脚本学习——编写Shell脚本
查看>>
Linux 磁盘管理及基础命令使用
查看>>
FormsAuthentication.SetAuthCookie是必须写的吗?
查看>>