bash基本特性

author author     2022-09-22     153

关键词:

bash基本特性

bash是Linux中最常使用到的shell,它给用户提供了许多便利的功能和特性,下面就介绍一些bash的基本特性。

 

1、命令历史history

bash能为我们提供命令的存储功能,我们也可以借由history命令来查看我们以往输入过的命令有哪些。

 

[[email protected] ~]# history

   1  ss -lnt

   2  ifconfig

   …省略…

   767  history

 

【语法格式】:

history [option]…

【参数选项】:

参数

说明

-c

clear 清除历史记录

-d num

删除某一条历史记录

-a

将现在的历史命令追加到历史文件中尾端

-w

将现在的历史命令写入到历史文件中

 

bash会把历史命令保存在用户的家目录的.bash_history文件中即 ~/.bash_history,bash默认用户在退出本次shell时自动将登陆后输入过的命令追加至文件中,在用户还未退出本次shell时,我们的历史命令记录在缓存中

 

HISTSIZE:缓存中能记录的历史命令条数,默认为1000条

HISTFILESIZE:历史文件中能保存的历史命令条数,默认为1000条

HISTFILE:历史文件路径,默认为~/.bash_history

 

[[email protected] ~]# echo $HISTSIZE

1000

[[email protected] ~]# echo $HISTFILESIZE

1000

[[email protected] ~]# echo $HISTFILE

/root/.bash_history

 

调用历史命令:

!!:再一次执行上一条命令

!#:再一次执行第#条命令

!string:再一次执行以string开头的命令

 

 

2、命令和路径补全

bash很便捷的为用户提供了,命令以及文件路径补全的功能。即当用户输入命令和路径的过程中可以使用【Tab】键来自动补全命令和路径。

当我们输入部分字符串后如果系统能锁定目标,则按一次【Tab】键就可以补全,

若系统不能锁定,则我们可以按两次【Tab】键,使系统给出命令或文件列表。

 


3、命令行展开

把命令行的给定的特殊符号自动替换为相应字符串的机制

  • ~: 自动替换为用户家目录;

  • ~USERNAME:自动替换为指定用户的家目录;

  • {}:可承载一个以逗号分隔的路径列表,能够将其展开为多个独立路径;

 

例:使用一条命令窗创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b这些目录

[[email protected] tmp]# mkdir -pv /tmp/x/{y1/{a,b},y2}

mkdir: created directory ‘/tmp/x’

mkdir: created directory ‘/tmp/x/y1’

mkdir: created directory‘/tmp/x/y1/a’

mkdir: created directory ‘/tmp/x/y1/b’

mkdir: created directory ‘/tmp/x/y2’

[[email protected] tmp]# tree /tmp/x

/tmp/x

├── y1

│   ├── a

│   └── b

└── y2

 

4 directories, 0 files

 

 

4、命令执行结果返回值

我们在bash中执行的命令都会有一个返回值来决定命令是否正确执行,这个状态码的结果保存在环境变量?中

?=0,则命令执行成功

?=1-255,则命令执行失败

 

[[email protected] tmp]# echo "hello"  

hello

[[email protected] tmp]# echo $?  当上一条命令正确执行时,返回码为0

0

[[email protected] tmp]# ehco "hello" 这里输错命令

bash: ehco: command not found...

 [[email protected] tmp]# echo $?当上一条命令错误时,返回码为非0

127

 


5、命令别名

在bash中我们可以为已有命令或命令和选项的组合、命令和命令的组合进行别名的定义,这样更加方便用户的操作,也可以保护系统的安全,我们使用alias命令进行别名定义

alias

【功能说明】:

设置别名

【语法格式】:

alias[-p] [name[=value] ... ]

【参数选项】:

参数

说明

-p

打印所有别名的定义

【实践操作】:

-p参数使用

[[email protected]]# alias -p             其实没-p 效果一样

alias cp=‘cp -i‘             别名的设置格式

aliasl.=‘ls -d .* --color=auto‘

aliasll=‘ls -l --color=auto‘

aliasls=‘ls --color=auto‘

aliasmv=‘mv -i‘

aliasrm=‘rm -i‘

aliaswhich=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘

 

使用alias使复杂的东西变简单

[[email protected]]# alias print=‘echohello world‘

[[email protected]]# print

helloworld

 

防止使用rm危险命令

[[email protected]]# alias rm=‘echo"rm can not be used,pls use mv"‘

[[email protected]]# rm test.txt

rmcan not be used,pls use mv test.txt

 

注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;

              仅对当前用户:~/.bashrc

              对所有用户有效:/etc/bashrc

 


6、快捷键

bash命令行中提供给用户一些便于操作的快捷键,下面列出部分常用的快捷键

ctrl + a:跳至命令行行首

ctrl + e:跳至命令行行尾

ctrl + u:删除光标所在位置到命令行行首的数据

ctrl + k:删除光标所在位置到命令行行尾的数据

ctrl + l:清空屏幕上的数据



7、通配符

bash使用某些特殊的符号进行对文件名的通用匹配被称为通配符

?

匹配任意单个字符

*

匹配任意长度的任意字符

[ ]

匹配[ ]中指定范围内的任意字符

[^ ]

匹配[^ ]中范围外的任意字符

专用字符集合:

                            [:digit:]:任意数字,相当于0-9

                            [:lower:]:任意小写字母

                            [:upper:]:任意大写字母

                            [:alpha:]:任意大小写字母

                            [:alnum:]:任意数字或字母

                            [:space:]:空白符

                            [:punct:]:标点符号

例:

显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;

# ls -d /var/l*[0-9]*[[:lower:]]

 

显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;

# ls -d /etc/[0-9]*[^0-9]

 

显示/etc/目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;

# ls /etc/[^[:alpha:]][[:alpha:]]*

 

复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mageedu目录中;

# cp -a /etc/m*[^0-9] /tmp/mageedu

 


8、重定向

重定向就是对数据流向的位置引导,重定向分为输入和输出重定向

 

标准输入重定向:<或<<,代码为0

标准输出重定向:>或>>,代码为1

错误输出重定向:2>或2>>,代码为2

 

输入重定向:

<:标准输入重定向,command</path/to/file,这里是由文件提供数据给命令

<<:此处创建文件,cat<<eof 文件内容 eof 这里eof是文件内容输入的提示及边界符号

 

输出重定向:

>:标准输出重定向,覆盖原有内容

[[email protected] tmp]# echo "hello world">text

[[email protected] tmp]# cat text

hello worldtext

 

>>:追加输出重定向,在文件后追加内容

[[email protected] tmp]# echo "hello linux">>text

[[email protected] tmp]# cat text                 

hello world

hello linux

 

2>:错误输出重定向,当命令执行错误时,将错误信息输出到指定位置,并对指定文件覆盖

2>>:追加错误重定向,同上,但在文件尾部追加而不是覆盖

 

[[email protected] tmp]# ehco "hello error"2>text

[[email protected] tmp]# cat text                 

bash: ehco: command not found...

Similar command is: ‘echo‘

 

&>:合并正确及错误输出流,并覆盖

&>>:合并正确及错误输出流,并追加

[[email protected] tmp]# echo "hello world again"&>text  正确输出

[[email protected] tmp]# ehoc "error again"&>>text       错误输出

[[email protected] tmp]# cat text

hello world again

bash: ehoc: command not found... 错误信息被追加到文末

 

合并正确与错误输出流也可以用下面的表示方法

command >/path/to/file 2>&1   覆盖

command >>/path/to/file2>&1  追加

 


9、管道

管道符号 “ | ”可以连接两个或多个命令,实现将前面一个命令的标准输出作为后面一个命令的标准输入

command1 | command2 | command3…

 


   10、hash命令

hash命令可以缓存使用过的命令所在路径

当用户在输入命令时,bash会在PATH环境变量下路径进行搜索,搜索到命令路径后方可使用命令,当用户使用过一次命令后,bash会把命令路径缓存下来,这样在下次使用时,就可以不要在去搜索PATH环境变量了,这样更便捷。

[[email protected] tmp]# hash

hits    command

  2    /usr/bin/grep        这里的数值是命令的使用次数

  5    /usr/bin/cat

  1    /usr/bin/mkdir

  7    /usr/bin/ls

  1    /usr/bin/tree

  2    /usr/bin/vimtutor


bash基本特性及linux基本命令

bash基本特性及linux基本命令1、命令历史      history         环境变量:            HI 查看详情

bash的基本特性

Bash基本特性: 首先得从逻辑运算来说起: 与运算 && 两个判断条件都必须为真时,状态才为真,否则都为假,在此1是真,0是假 1&&1=1 1&&0=0 0&&1=0 0&&0=0 或运算|| 两个判断条件中都必须... 查看详情

bash基本特性

特性之引用引号有三种类型:’,“,`字符引用’:强引用,其内部的变量不会被替换;“:弱引用,其内部的变量会被替换;`:命令引用。命令会被替换成命令的结果被使用变量引用:${NAME},可简写$NAME#echo‘$PATH‘//强引用$PATH#e... 查看详情

linux下部分文件管理类基本命令汇总以及bash展开特性介绍(代码片段)

一、文件管理类基本命令1.1、表格汇总今天要讲解的命令如下表所示,按照外部命令和内建命令做基本划分:内建命令列表:命令名字基本说明file检测文件类型cd改变shell的工作目录dirs显示目录堆栈信息popd从堆栈中移除目录pushd... 查看详情

04bash程序的基本特性

  我们知道Linux系统有两种操作方式,一种为GUI的图形界面化管理方式,其中图形程序常见的有Gnome、KDE、xfce;另一种管理方式就是就是GLI的命令行管理方式,而命令行的管理方式就是通过shell程序来进行管理,而shell程序则分... 查看详情

续写vim编辑器的功能和bash的特性感悟

...习了vim跟shell交互和部分另存为的命令,至此vim编辑器的基本操作就学习完了,剩下的就需要我们在日常使用中加深印象,越来越熟练的掌握操作了。Bash的特性也有好多,本次课我们开 查看详情

续写vim编辑器的功能和bash的特性感悟

...习了vim跟shell交互和部分另存为的命令,至此vim编辑器的基本操作就学习完了,剩下的就需要我们在日常使用中加深印象,越来越熟练的掌握操作了。Bash的特性也有好多,本次课我们开 查看详情

bash基础特性

bash特性及bash脚本编程初步终端,附着在终端的接口程序:    GUI:KDE,GNome,xfce    CLI:/etc/shellsbash的特性:    命令行展开:~,{}    命令别名:alias,unalias&nbs 查看详情

bash特性小结&bash变量

时间就是金钱效率就是生命一、bash编程 |---------------||应用           ||-----------|   ||壳|库函数 |    | //可以直接针对系统调 查看详情

bash特性

bash的基础特性(1): (1)命令历史history系统中history环境变量:HISTSIZE:命令历史记录的条数;HISTFILE:~/.bash_history;HISTFILESIZE:命令历史文件记录历史的条数; history-dOFFSET(具体删除第几条历史记录)history-c 清空所有... 查看详情

bash基础特性

...的环境变量可以通过ehco$#查看#为环境变量 bash的基础特性:(1)命令历史 history 环境变量: HISTSIZE:命令历史记录的条数 HISTFILE;~/.bash_history HISTFILESIZE:命令历史文件记录历史的条数 history-doffset删除某条历史命令 his... 查看详情

bash的特性

bash的特性Bash(GNUBourne-AgainShell)是许多Linux发行版的默认Shell。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,ShellScript大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shel... 查看详情

bash基础特性命令引用

...D` 这是反引号:就是ESC键下面的那个反引号bash的引用特性: 引用 强引用:‘‘单引号弱引用:""双引号命令引用:$(COMMADN) bash特性:快捷键 ctrl+a:跳转至命令行首ctrl+e:跳转至命令行行尾ctrl+u:删除行首至光标... 查看详情

bash特性

bash特性一、命令别名:(自定义命令) 用alias命令查看 alias命令可以用来定义和现实命令的别名 但是使用alias命令定义的别名,其生命仅为当前shell的生命期 对于每个用户来说,都有一个私有的bash文件,用于保... 查看详情

bash特性之五

一、bash特性之四,命令别名alias,shell的内建命令,显示当前系统所有的命令别名alias别名="原始命令"ualias别名撤销已经定义的别名。命令使用命令本身,而非命令别名。二、bash特性之五,globbing,统配符 *:匹配任意长度的... 查看详情

bash及其特性

...:Gnome,KDE,XfaceCLI:sh,csh,ksh,bash(兼具sh、csh等各种特性,功能更强大,且遵循开源协议),tcsh,zsh进程:在每个进程看来,当前主机上只存在内核和当前进程进程是程序的副本,进程是程序的执行过程用户工作环境:窗... 查看详情

bash及其特性

bash及其特性:        1.程序只有一个,但可以有多个进程,在每个进程来看,当前主机上只存在内核与当前进程          2.进程是程序的副本,进程是程序的执行实例 ... 查看详情

bash特性及用户和组管理

bash特性及用户和组管理 上篇博文中总结了bash的一些特性,这次做补充: bash变量 变量:一段由名称的连续的内存空间;这段内存空间的名称,就是变量名,在这   段内存空间存储数据 就是变量值;&nb... 查看详情