>

五分钟解决Bash功用与利用本领,Shell基本作用

- 编辑:www.bifa688.com -

五分钟解决Bash功用与利用本领,Shell基本作用

可以看到,lsls --color=auto的别名,当键入ls并运行时,实际上运行的是 ls --color=auto命令。

linux中Shell历史命令记录文件的路径是什?

Bash shell在“~/.bash_history”(“~/”表示用户目录)文件中保存了500条使用过的命令,这样能使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件。

bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。
第一步:
“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行确定所有用户的“.bash_history”文件中能保
存的旧命令条数。强烈建议把把“/etc/profile”文件中的“HISTFILESIZE”和“HISTSIZE”行的值设为一个较小的数,比如
30。编辑profile文件(vi /etc/profile),把下面这行改为:
HISTFILESIZE=30
HISTSIZE=30
这表示每个用户的“.bash_history”文件只能保存30条旧命令。
第二步:
网管还应该在"/etc/skel/.bash_logout" 文件中添加下面这行"rm -f $HOME/.bash_history" 。这样,当用户每次注销时,“.bash_history”文件都会被删除.  

1).火狐浏览器通过前端启动,使得当前Shell将暂时无法使用:

在Shell提示符后按<Up><Down>(上箭头和下箭头)按键,可以翻出上一条和下一条命令,这是命令历史的功能。

别名,shell基本功能

一. 历史...

图片 1

使用 history 查看命令历史:

[Shell]Shell基本功能:历史命令 & 别名,shell基本功能


一. 历史命令

  history         #查看历史命令

 

  history -c     #清空历史命令

 

  history -w     #不等退出,直接把缓存中的历史命令写入历史命令保存文件~/.bash_history

 

  vim /etc/profile  #默认历史命令保存1000条,可修改HISTSIZE保存条数(无限制),命令保存在 ~/.bash_history 文件中

 

历史命令的调用:

  1. 上下箭头调用

  2. !n    #执行行号为n行的命令,history显示的命令前面会显示各自行号

  3. !his  #执行最后一条以his开头的命令

 

命令与文件补全:Tab

[email protected]黑眼诗人 <www.chenwei.ws>----------------------------------

二. 别名与快捷键

  alias vi = "vim"   #定义别名,临时生效

  alias          #查看所有别名

 

命令执行顺序:

  第一顺位执行用绝对路径或相对路径执行的命令

  第二顺位执行别名

  第三顺位执行Bash的内部命令

  第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令;echo $PATH;可以看到一系列命令所在的路径,系统命令之所以不用路径,是因为设置了这个环境变量,自动寻找。

 

永久保存别名:

  用户编辑家目录下的 .bashrc 文件,将alias vi='vim'写入即可。

  vim /root/.bashrc

  vim /home/.bashrc

 

删除别名:

  unalias vi      # unalias 别名

 

Bash常用快捷键:

  ctrl c   终止命令

  ctrl l     清屏

  ctrl u    删除或剪切光标之前的命令

  ctrl k    删除或剪切光标之后的内容

  ctrl y    粘贴ctrl u 或 ctrl k 剪切的内容

  ctrl r    在历史命令中搜索,按下ctrl r后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。

  ctrl d    退出当前终端(等同exit)


3.管道与重定向

事实上,Shell会首先执行 date命令,得到 Sat Jun 30 12:31:28 CST 2018,之后再执行echo "Time is Sat Jun 30 12:31:28 CST 2018",这样就实现了将 date嵌入到 echo中执行的命令。

shell 在操作系统中的作用(详细点)

shell的一项主要功能是在交互方式下解释从命令行输入的命令。shell解析命令行,将其分解为词(也称为token),词之间由空白分隔,空白由制表符、空格键或换行组成。如果词中有特别的元字符,shell会对其进行替换。shell处理文件I/O和后台进程。对命令行的处理结束后,shell搜索命令并开始运行他。
shell的另一项重要功能是制定用户环境,这通常在shell的初始化文件中完成。初始化文件中有非常多定义,包括设置终端键和窗口属性,设置用来定义搜索路径、权限、提示符和终端类型的变量,设置特定应用程式所需的变量,如窗口、字处理程式和编程语言的库等。Korn/Bash shell和C/TC shell还提供了更多的制定功能:历史添加、别名、设置内置变量防止用户破坏文件或无意中退出,通知用户作业完成。
shell还能用作解释性的编程语言。shell程式(也称为shell脚本)由文件中的一列命令组成。shell程式用编辑器生成(也能在命令行上直接输入脚本)。他们由UNIX命令组成,命令之间插入了一些基本的程式结构,如变量赋值、条件测试和循环。shell脚本不必编译。shell会逐行解释脚本,就似乎他是从键盘输入相同。shell负责解释命令,因此,用户需要了解可用的命令有哪些。附录A中列出了一些有用的命令。
1.3.2 shell的职责
shell负责确保用户在命令提示符后输入的命令被正确执行。其职责包括:
(1) 读取输入并解析命令行
(2) 替换特别字符,比如通配符和历史命令符
(3) 设置管道、重定向和后台处理
(4) 处理信号
(5) 程式执行的相关设置  

图片 2

用户也可以自行创建或修改别名:

3).通过Ctrl r快捷键打开搜索功能,接着输入关键字即可在命令历史中搜索相关命令,回车完成执行操作。如果没有搜索到适合的命令按ESC键退出搜索。

命令别名

在CentOS 6.3系统中我们可以直接使用ll命令来显示文件的详细信息,其实系统中并没有ll这样一个命令,它仅是被提前定义好的一个别名而已,别名的好处是可以把本来很长的指令简化缩写,为常用且复杂的命令及选项创建别名可以大大提高日常工作效率。

$ alias dt='date -d today  "%Y-%m-%d %H:%M:%S"'
$ dt
2018-06-30 12:15:37

很多时候自动运行的脚本编写完成后,是要在深夜服务器负载最低时以无人职守方式运行的,那么当管理员去检查脚本运行情况时会希望看到哪些命令执行成功了,哪些命令出现了问题,并且为了方便管理需要将正确输出与错误输出分写保存在两个不同的记录文件中,那么分离重定向就显得尤为重要了。下面我们检查系统中是否存在tom用户,如果存在则将tom相关信息记录至user文件中,否则记录至error文件中:

上面的例子将 dt作为 date -d today "%Y-%m-%d %H:%M:%S"的别名,当运行前者时,实际上运行的是后者。

1).上下键翻阅历史命令,找到合适的命令后直接回车即可执行。

使用 ` 完成将命令嵌入到另一条命令:

3).所有命令按顺序执行(不管前面的命令是否成功,后面的命令一定正常执行):

$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s*[0-9] s*//;s/[;&|]s*alert$//''')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
[root@centos6 ~]# firefox 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

记录命令历史的除了可以查看历史记录外,还可以在需要时直接调用历史记录再次执行该命令:

$ echo "Time is `date`"
Time is Sat Jun 30 12:31:28 CST 2018
[root@centos6 ~]# gedit || vim 

您可能感兴趣的文章:

  • Shell 命令替换的两种方式

Bash拥有自动记录命令历史的功能,用户所执行的命令会在注销时自动记录到自己家目录下的.bash_history 这样一个隐藏文件中。查看这些命令历史记录的方法有很多,可以通过直接打开文件来查看,也可以通过键盘的上下键来上翻或下翻历史记录,还可以通过history命令查看历史记录,所有的命令历史都有记录编号。命令历史能够记录的信息数量由HISTSIZE变量所决定,CentOS 6.3默认通过/etc/profile文件定义了HISTSIZE=1000,也就是最多可以记录最近所使用的1000条命令,当有第1001条命令执行时第一条命令会被覆盖,执行history -c命令可以清空所有的历史记录。

命令历史

5).如果有gedit编辑器则打开该程序,否则打开vim编辑器:

每一条命令都被赋予一个编号,使用!编号 即可运行该编号的命令:

1.重定向技巧

!! 可以运行上一条命令:

2). 输入!string调用命令历史(string为关键字),如!vim将调用最后一次执行的以vim开头的命令。或者通过!n来准确定位历史记录,如!242将直接调用命令历史的第242条记录并执行。

640 ls ~

BASH功能介绍

上面的命令删除了 dt 别名。

在Linux环境下,我们一般通过Shell来与内核交流,并最终实现我们想要使用计算机资源的目的。由于Linux的开放性特点,使得在Linux下对Shell的选择也很多,CentOS 6.3系统中可以使用的Shell有/bin/sh、/bin/bash、/bin/tcsh、/bin/csh这几种,/etc/shells文件说明了当前系统有哪些可用的Shell。不同的Shell有不同的特点以及操作方式,我们这里以CentOS默认使用的Shell为讲解案例即Bash。

$ unalias dt

3.作业控制

命令替换

[root@centos6 ~]# ls test.txt && cat test.txt 
$ !635
date
Sat Jun 30 12:21:11 CST 2018
[root@centos6 ~]# id tom &>/dev/null && echo “Hi,tom” || echo “No such user” 
$ history

# 省略

634 ls
635 date
636 history

2).后台运行浏览器,不影响当前Shell的使用:

可以使用 alias 命令查看和修改命令别名。

1).如果你编写了一个脚本实现自动修改系统帐号的密码,那么默认当密码修改成功后系统会提示successfully这样的提示信息,如果需要修改20个账户密码则显示20条这样的信息。像这样的案例,大量的成功提示信息并不是我们关注的重点,管理员更多的是关心错误提示。所以这时可以考虑将标准正确输出屏蔽,Linux中提供了一个特殊设备/dev/null,它很像太阳黑洞,任何东西往里写入都将永远消失。对大量无意义的输出信息可以通过管道导入至/dev/null设备。

$ !!
date
Sat Jun 30 12:21:42 CST 2018

还可以对历史命令进行部分替换并执行,例如使用 history 查看时有一条这样的命令:

2).标准输出与错误输出分离重定向

下面是一个查看系统中命令别名的示例:

图片 3

$ !640:s/~/./

对于标准的输出信息是输出至显示器,而有时你可能并不需要这些输出信息,又或者是暂时不需要在屏幕上看到这些信息;另外对于输入一般是通过键盘输入,而有时你或许希望可以从文件中读取输入信息。输出重定向可以使用>或>>符号,使用>可以将输出导入至文件,如果文件不存在则创建该文件,如果文件已经存在则会覆盖该文件的内容;而使用>>可以将输出追加至文件;另外,对应错误信息的重定向需要使用2>或2>>符号实现。输入重定向可以使用<符号,它可以可以帮助我们从文件中提取输入信息。

使用!number:s/pattern/replacement/将编号为number的命令中的 pattern替换为 replacement,比如将上面命令中的~替换为 .,即执行ls . ,可使用下面的命令:

4).如果某个文件存在则显示该文件内容,否则报错(仅当ls执行成功才会执行cat):

用户还可以删除别名:

图片 4

2.命令序列

[root@centos6 ~]# firefox &  [root@centos6 ~]# jobs  [1]  Running firefox &  [root@centos6 ~]# fg 1  

通过括号扩展可以生产命令行或脚本需要的字串,括号中可以包含连续的序列或使用逗号分割的多个项目,连续的序列包括一个起点与一个终点并使用..分割。接下来看看具体的语法格式案例:

6).如果id tom执行成功则说明用户存在屏幕将显示Hi,tom,否则显示No such user:

[root@centos6 ~]# firefox & 

实例5首先通过&>重定向符将id命令的所有输出屏蔽,让后使用&&与||来判断id命令是否执行成功,成功就显示问候语否则显示没有该用户。

[root@centos6 ~]# ls /tmp ; ls /root ; ls /home 

4.花括号{}的使用

一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无法与硬件或内核打交道的,用户通过应用程序或部分系统软件发出指令(可能是通过浏览器发送一封邮件),这些指令会被翻译并传给内核,内核在得知用户的需求后调度硬件资源来完成操作(比如,使用网卡发送数据包)。

4.快捷键

Bash的标准输入设备是键盘、鼠标、手写板等设备,标准输出为显示器,一般我们通过键盘输入命令并执行,系统将返回信息显示在屏幕上,默认不管是正确的还是错误的信息都将输出至显示器。标准输入的文件描述符为0,标准输出的文件描述符为1,错误输出的文件描述符为2。但有时我们需要改变这样的标准输入与输出方式,Linux中我们可以使用重定向符(<、>、<<、>>、|)重新定义输入与输出。

Bash准备了大量的快捷键为用户使用,熟练掌握这些快捷键的全部或部分会使你在工作中受益颇多,开始的时候你可能需要花费大量的时间来记忆这些快捷键,但一旦你记住了他们,你的工作效率会直线上升。下面列出了常用的快捷键及其功能描述。

图片 5

以下通过几个简单的实例演示重定向的使用方法:

在Linux中我们可以使用控制字符(;、&&、||、&)来控制命令的执行方式。其中[&]控制符使得命令开启一个子Shelll并在后台执行;使用[;]控制字符可以把多个命令组合,但多个命令之间没有任何逻辑上的关系,仅按循序执行;使用[&&]控制字符也可以将多个命令组合,但仅当前一个命令执行成功后才会执行[&&]控制符后面的命令;[||]控制字符的作用与[&&]刚好相反,仅当前一个命令执行失败才会执行[||]控制符后面的命令。下面通过实例演示。

1. 命令历史

管道使得我们可以将多条命令连接在一起使用,它的作用是将一个命令的标准输出重定向给下一个命令并作为该命令的标准输入。例如,使用ifconfig eth0 | grep ‘inet addr’命令过滤包含IP地址的行,ifconfig本身会输出大量网络接口的信息,由于这里使用了管道符号(|)所以ifconfig命令的所有输出都将作为grep命令的输入内容,最终实现过滤包含IP地址的行。

2. 命令别名

【编辑推荐】

图片 6

图片 7

Bash环境中通过命令开启进程的时候使用&符可以使得该进程进入后台执行,或者一个命令执行后使用Ctrl z快捷键可以将该进程放入后台并暂停执行,以后随时使用jobs命令可以查看这些后台进程,并且会为每个这样的进程分配一个编号,通过fg <编号>的形式可以将这些后台进程再次调回前台执行。

BASH使用技巧

本文由bifa688.com发布,转载请注明来源:五分钟解决Bash功用与利用本领,Shell基本作用