shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向

目录

一、shell介绍
二、命令历史
三、命令补全和别名
四、通配符
五、输入输出重定向

一、shell介绍

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于[DOS]下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

  • 每个用户都可以有自己特定的shell。
  • shell支持特定语法,比如逻辑判断、循环。
  • CentOS默认shell为bash(Bourne Agin Shell)

二、命令历史

我们执行过的命令Linux都会记录,预设可以记录1000条历史命令,该数量是由环境变量HISTSIZE进行控制。这些命令保存在用户的家目录的.bash_history文件中。但需要注意的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。

[root@minglinux-01 ~]# echo $HISTSIZE
1000
[root@minglinux-01 ~]# ls /root/.bash_history 
/root/.bash_history

环境变量HISTSIZE 可以在/etc/profile中修改,在文件中找到HISTSIZE=1000修改后面的数值,更改之后重启终端或者source /etc/profile 才会生效。

  • 给$HISTTIMEFORMAT变量赋值可以修改命令历史的格式,示例命令如下:
[root@minglinux-01 ~]# history 10
  994  reboot
  995  history 10
  996  ls /root/.bash_history 
  997  cat /root/.bash_history 
  998  echo $HISTSIZE
  999  ls /root/.bash_history 
 1000  echo $HISTTIMEFORMATE
 1001  echo $HISTTIMEFORMAT
 1002  history
 1003  history 10
[root@minglinux-01 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
[root@minglinux-01 ~]# history 10
  996  2018/10/11 22:24:19ls /root/.bash_history 
  997  2018/10/11 22:24:34cat /root/.bash_history 
  998  2018/10/11 22:31:30echo $HISTSIZE
  999  2018/10/11 22:32:19ls /root/.bash_history 
 1000  2018/10/11 22:41:05echo $HISTTIMEFORMATE
 1001  2018/10/11 22:41:10echo $HISTTIMEFORMAT
 1002  2018/10/11 22:43:59history
 1003  2018/10/11 22:44:11history 10
 1004  2018/10/11 22:44:27HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
 1005  2018/10/11 22:44:29history 10

这个变量赋值只在当前终端生效,如果想让此环境变量全局生效,需要编辑 /etc/profile把HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "加到里面。

如果我们想永久保存命令历史,不让别人删除破坏,我们可以使用chattr +a ~/.bash_history指令设置了这个文件的权限只能追加不能删除。

history命令用于显示指定数目的指令命令。该命令单独使用时,显示全部历史命令。加上参数n则显示最近的n条历史命令。

[root@minglinux-01 ~]# history 10
  986  yum install apr apr-util apr-devel
  987  ./config --prefix=/usr/local/apace2
  988  ./configure --prefix=/usr/local/apace2
  989  yum install apr-util
  990  yum install apr-devel
  991  yum install apr
  992  yum install -y gcc
  993  ./configure --prefix=/usr/local/apace2
  994  reboot
  995  history 10

history命令的几个选项:

-c:清空当前历史命令,不会清空历史命令文件。
-a:将历史命令缓冲区中命令写入历史命令文件中。
-r:将历史命令文件中的命令读入当前历史命令缓冲区。
-w:将当前历史命令缓冲区命令写入历史命令文件中。

在命令行中,可以使用符号!执行指定序号的历史命令。!符号常用的应用有以下3个:

!!:连续两个!表示执行上一条指令。示例命令如下:

[root@minglinux /]# ls
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var
[root@minglinux /]# !!
ls
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var

!n:n是数字,表示执行命令历史中的第n条指令。示例命令如下:

[root@minglinux /]# history |grep 536
  536  pwd
  539  history |grep 536
[root@minglinux /]# !536
pwd
/

!字符串(字符串大于等于1):例如!pw表示执行命令历史中最近一次以pw开头的命令。示例命令如下:

[root@minglinux /]# !pw
pwd
/

三、命令补全和别名

按tab键可以帮我们补全一个指令、一个路径或者一个文件名。连续按两次tab键,系统则会把所有的命令或者文件名都列出来。

Centos7 支持参数补全,默认不可以,需要执行yum install -y bash-completion 安装相关软件包,安装完成后重启系统才能生效。

alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。如果不想用了,还可以使用unalias命令解除别名功能。

直接执行alias命令,会看到目前系统预设的别名,如下所示:

[root@minglinux /]# 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 rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

自定义别名的格式为alias [命令别名]=['具体的命令'],示例命令如下:

[root@minglinux /]# alias ming='pwd'
[root@minglinux /]# ming
/
[root@minglinux /]# unalias ming
[root@minglinux /]# ming
-bash: ming: 未找到命令

alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。

四、通配符

在bash下,可以使用*来匹配零个或多个字符,用?匹配一个字符。示例命令如下:

[root@minglinux dir1]# ls
test1  test123  test2  test3
[root@minglinux dir1]# ls test*
test1  test123  test2  test3
[root@minglinux dir1]# ls test?
test1  test2  test3

[]匹配一个范围的字符,如[123]匹配123其中任意一个,[0-9]匹配1至9当中任一个字符。示例命令如下:

[root@minglinux-01 ~]# ls
123         1_soft.txt  anaconda-ks.cfg  dir2  dir4
1_hard.txt  1.txt       dir1             dir3  快捷键.txt
[root@minglinux-01 ~]# ls -d dir[123]
dir1  dir2  dir3
[root@minglinux-01 ~]# ls -d dir[1-9]
dir1  dir2  dir3  dir4

五、输入输出重定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输入重定向的命令是<,输出重定向的命令是>,还有错误重定向命令2>以及追加重定向命令>>,示例命令如下:

[root@minglinux-01 ~]# touch 2.txt
[root@minglinux-01 ~]# echo "123" > 2.txt 
[root@minglinux-01 ~]# cat 2.txt 
123
[root@minglinux-01 ~]# echo "123" >> 2.txt 
[root@minglinux-01 ~]# cat 2.txt 
123
123
  • 错误重定向和错误追加重定向:
[root@minglinux-01 ~]# ming
-bash: ming: 未找到命令
[root@minglinux-01 ~]# ming 2> 3.txt
[root@minglinux-01 ~]# cat 3.txt 
-bash: ming: 未找到命令
[root@minglinux-01 ~]# ming 2>> 3.txt 
[root@minglinux-01 ~]# cat 3.txt 
-bash: ming: 未找到命令
-bash: ming: 未找到命令
  • &>是错误和正确都有的输出重定向,示例命令如下:
[root@minglinux-01 ~]# ls
123         1.txt  anaconda-ks.cfg  dir3
1_hard.txt  2.txt  dir1             dir4
1_soft.txt  3.txt  dir2             快捷键.txt
[root@minglinux-01 ~]# ls [123].txt abc.txt &> a.txt
[root@minglinux-01 ~]# cat a.txt 
ls: 无法访问abc.txt: 没有那个文件或目录
1.txt
2.txt
3.txt
  • 我们还可以将正确输出和错误输出分开保存到不同文件中:
[root@minglinux-01 ~]# ls [123].txt abc.txt > a.txt 2>b.txt
[root@minglinux-01 ~]# cat a.txt 
1.txt
2.txt
3.txt
[root@minglinux-01 ~]# cat b.txt 
ls: 无法访问abc.txt: 没有那个文件或目录
  • 输入重定向:
[root@minglinux-01 ~]# wc -l 2.txt 
2 2.txt
[root@minglinux-01 ~]# wc -l < 2.txt 
2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容