Linux系统管理之Linux bash 特性

目录

1.补全

2.快捷键

3.命令历史

4.命令别名

5.特殊符号

6.重定向

正确输出重定向

错误输出重定向

正确输出和错误混合输出

7.命令行通配符


1.补全

命令补全:在给定的一个打头的字符串,敲击Tab键,如果这个字符串能够唯一标识程序文件,直接补全。如果不能唯一标识程序文件,需要再次敲击Tab键,会给出列表。

路径补全:在给定的起始路径下,以对应路径下的打头的字符串逐一匹配给定的起始路径下的每一个文件。敲击Tab键,如果能够唯一标识,直接补全。否则再次敲击Tab键,给出列表。

2.快捷键

Ctrl+l
Ctrl+c终止前台运行的程序
Ctrl+a光标移动到命令行的最前端
Ctrl+e光标移动到命令行的最后端
Ctrl+d退出
Ctrl+r搜索历史命令,利用关键词
Ctrl+u删除光标前的字符
Ctrl+k删除光标后的字符

3.命令历史

命令历史(history):shell进程会在其会话中保存此前用户提交执行过的命令。

变量:    查看变量的方法:echo $变量名

HISTSIZE:shell进程可保留的命令历史的条数;

[root@localhost ~]# echo $HISTSIZE
1000

HISTFILE:持久保存命令历史的文件;
[root@localhost ~]# echo $HISTFILE
/root/.bash_history

HISTFILESIZE:命令历史文件的大小

[root@localhost ~]# echo $HISTFILESIZE
1000

history:

命令历史列表: shell进程中保留的命令历史

命令历史文件:.bash_history 非实时

history 查看历史命令: [root@localhost ~]# history

-c 清空命令历史列表 :[root@localhost ~]# history -c

-d offset 指定删除命令历史:[root@localhost ~]# history -d 1  删除第一条命令
-r 从命令历史文件中读取命令历史到命令历史列表:[root@localhost ~]# history -r

-w 把历史列表中的命令追加到历史文件中:[root@localhost ~]# history -w

!! 在一次执行上一次命令:[root@localhost ~]# !!

!# 执行命令历史列表中的第#命令:[root@localhost ~]# !1

! string 再一次执行命令历史列表中最近一个以string打头的命令:[root@localhost ~]# ! string

!$ 调用上一个命令的最后一个参数  快捷键:Esc+.  Esc键加点号:[root@localhost ~]# !$

控制命令历史记录的方式

HISTCONTROL

     ignoredups  忽略重复命令:[root@localhost ~]# HISTCONTROL='ignoredups'

     ignorespace  忽略以空白开头的命令:[root@localhost ~]# HISTCONTROL='ignorespace'

     ignoreboth  以上两者都有效:[root@localhost ~]# HISTCONTROL='ignoreboth'

修改变量方法:只在当前shell环境有效

NAME='VALUE'

HISTCONTROL='ignorespace'

4.命令别名

查看命令别名 alias:[root@localhost ~]# alias

定义别名 alias NAME='commond'  在当前shell环境有效:[root@localhost ~]# alias NAME='commond'

撤销别名 unalias:[root@localhost ~]# unalias NAME
永久生效别名 vi /etc/bashrc 添加一行  alias NAME='commond'   重载 source /etc/bashrc

跳过别名 执行原有命令\command

5.特殊符号

| :管道符 把上一个命令的执行结果当作下一个命令的输入

          [root@localhost ~]# ip a | grep "inet"
          inet 127.0.0.1/8 scope host lo
          inet6 ::1/128 scope host
          inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
          inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute
tee :可以把执行中的信息保留下来

          [root@localhost ~]# ip a | grep "inet" | tee file
          inet 127.0.0.1/8 scope host lo
          inet6 ::1/128 scope host
          inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
          inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute

          [root@localhost ~]# cat file
          inet 127.0.0.1/8 scope host lo
          inet6 ::1/128 scope host
          inet 192.168.88.148/24 brd 192.168.88.255 scope global noprefixroute dynamic ens33
          inet6 fe80::e57f:9d2d:1af1:e5b4/64 scope link noprefixroute

. :在Linux中代表当前目录

.. :在Linux中代表上一级目录

; :在Linux中执行多条命令时可以用分号隔开,每个命令之间互不干扰,所有命令都会执行

`` :反单引号 命令交替,反单引号引起的内容当作命令执行

'' :单引号 强引用,不做变量替换

          [root@localhost ~]# echo '$SHELL'

          $SHELL

"" :双引号 若引用,可以实现命令替换

          [root@localhost ~]# echo "$SHELL"
          /bin/bash

{} :做扩展使用

* :通配作用

          [root@localhost ~]# ls a*
          anaconda-ks.cfg

6.重定向

Linux提供的三种I/O设备

STDIN          标准输入      0      默认来自于键盘

STDOUT      标准输出      1      默认到终端窗口

STDERR      标准错误      2      默认到终端窗口

[root@localhost ~]# cd /dev/
[root@localhost dev]# ll
lrwxrwxrwx. 1 root root          15 Jan 19 15:48 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root          15 Jan 19 15:48 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root          15 Jan 19 15:48 stdout -> /proc/self/fd/1

正确输出重定向

1> 覆盖     1>>追加

[root@localhost dev]# date
Wed Jan 19 18:58:47 CST 2022
[root@localhost dev]# date 1> date.file
[root@localhost dev]# cat date.file
Wed Jan 19 18:58:58 CST 2022

[root@localhost tmp]# ls /home/
[root@localhost tmp]# ls /aaaa
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# ls /home/ /aaaa
ls: cannot access /aaaa: No such file or directory
/home/:
[root@localhost tmp]# ls /home/ /aaaa 1> stdout
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# cat stdout
/home/:

[root@localhost tmp]# ls /home/ /aaaa 1>> stdout
ls: cannot access /aaaa: No such file or directory
[root@localhost tmp]# cat stdout
/home/:
/home/:

错误输出重定向

2> 覆盖     2>>追加

[root@localhost tmp]# ls /home/ /aaaa 2> stderr
/home/:
[root@localhost tmp]# cat stderr
ls: cannot access /aaaa: No such file or directory

[root@localhost tmp]# ls /home/ /aaaa 2>> stderr
/home/:
[root@localhost tmp]# cat stderr
ls: cannot access /aaaa: No such file or directory
ls: cannot access /aaaa: No such file or directory
 

正确输出和错误混合输出

&>       2>&1(1>&2)

[root@localhost tmp]# ls /home/ /aaaa &> std
[root@localhost tmp]# cat std
ls: cannot access /aaaa: No such file or directory
/home/:
 

7.命令行通配符

*  :匹配任意长度的任意字符

?  :匹配任意单个字符

[] :匹配指定范围内的任意单个字符

[^] :匹配指定范围外的任意单个字符

[0-9] :所有数字

[a-z] :aAbBcC...z

[A-Z] :AbBcC...zZ

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

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

[[:digit:]] :数字

[[:alpha:]] :所有字母

[[:punct:]] :标点符号

[[:alnum:]] :数字+字母

[[:space:]] :空白字符

[^[:lower:]] :除小写字母

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值