Linux基础-1

Linux基础-1

Linux基本原则

  • 由目的单一的小程序组成,组合小程序完成复杂任务;
  • 一切皆文件;
  • 尽量避免捕获用户接口;
  • 配置文件保存为纯文本格式。

bash

bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。

[root@localhost ~]# echo $SHELL				// 当前使用的SHELL
/bin/bash
[root@localhost ~]# cat /etc/shells 		// 能够使用的SHELL
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

bash支持以下特性:

  • 支持命令历史、命令补全、目录补全
  • 支持管道、重定向
  • 支持命令别名
  • 支持命令行编辑
  • 支持命令行展开
  • 支持文件名通配
  • 支持变量
  • 支持编程

bash支持的引号

``      //反引号,键盘左上角Esc下面的键,用于命令替换
""      //双引号,弱引用,可以实现变量替换
‘‘      //单引号,强引用,不完成变量替换
[root@localhost ~]# echo ‘a‘
a
[root@localhost ~]# echo "a"
a
[root@localhost ~]# echo a
a
[root@localhost ~]# a=1
[root@localhost ~]# echo $a
1
[root@localhost ~]# echo ‘$a‘			//强引用
$a
[root@localhost ~]# echo "$a"			//弱引用
1
[root@localhost ~]# echo "a"b"
> ^C
[root@localhost ~]# echo "a\"b"			//加了转义符"\"后,可识别
a"b
[root@localhost ~]# echo ‘a‘b‘			
> ^C
[root@localhost ~]# echo ‘a\‘b‘			//单引号加了转义符"\"后也无法识别
> ^C
[root@localhost ~]# ls `mkdir {1..10}`		//反引号可以先执行命令在将结果赋予变量
1  10  2  3  4  5  6  7  8  9

bash常用操作

光标跳转

    Ctrl+a      //跳到命令行首
    Ctrl+<-		//跳到离光标左边最近单词前面
    Ctrl+e      //跳到命令行尾
    Ctrl+-> 	//跳到离光标右边最近的一个单词前面
    Ctrl+w 		//删除光标前一个字符串
    Ctrl+u      //删除光标至命令行首的内容
    Ctrl+k      //删除光标至命令行尾的内容
    Ctrl+l      //清屏

命令历史

history //默认只记录1000条
[root@localhost ~]# history 
  1  echo $SHELL
  2  cat /etc/shells 
  3  history 
-d //删除指定位置的命令历史
[root@localhost ~]# history -d 1
  1  cat /etc/shells
  2  history  
-c //清空命令历史
[root@localhost ~]# history -c
  1  history 

命令历史的使用技巧

!n //执行命令历史中的第n条命令
[root@localhost ~]# !3					// 执行第三条历史命令
  1  echo $SHELL
  2  cat /etc/shells 
  3  history 
!-n //执行命令历史中倒数第n条命令
[root@localhost ~]# !-1					// 执行倒数第一条历史命令
  1  echo $SHELL
  2  cat /etc/shells 
  3  history 
!! //执行上一条命令
[root@localhost ~]# !!
  1  echo $SHELL
  2  cat /etc/shells 
  3  history
!string //执行命令历史中最近一个以指定字符串开头的命令
[root@localhost ~]# !hi
history
  1  echo $SHELL
  2  cat /etc/shells 
  3  history
!$ //引用前一个命令的最后一个参数
[root@localhost ~]# !$
history
  1  echo $SHELL
  2  cat /etc/shells 
  3  history
esc+. //按下esc松开后按"."(英文的.)引用前一个命令的最后一个参数

命令、目录补全

搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表,否则将直接补全。

[root@localhost ~]# h
halt         hdparm       hexdump      hostname     
hardlink     head         history      hostnamectl  
hash         help         hostid       hwclock    
[root@localhost ~]# cd /etc/sys
sysconfig/          sysctl.d/           system-release
sysctl.conf         systemd/            system-release-cpe

命令别名

[root@localhost ~]# cdnet
-bash: cdnet: command not found
[root@localhost ~]# alias cdnet=‘cd /etc/sysconfig/network-scripts/‘
[root@localhost ~]# cdnet
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts

文件名通配

“*” //匹配任意长度的任意字符

[root@localhost ~]# ls
1    14  2   25  30  36  41  47  52  58  63  69  74  8   85  90  96
10   15  20  26  31  37  42  48  53  59  64  7   75  80  86  91  97
100  16  21  27  32  38  43  49  54  6   65  70  76  81  87  92  98
11   17  22  28  33  39  44  5   55  60  66  71  77  82  88  93  99
12   18  23  29  34  4   45  50  56  61  67  72  78  83  89  94
13   19  24  3   35  40  46  51  57  62  68  73  79  84  9   95
[root@localhost ~]# rm -rf *
[root@localhost ~]# ls

“?” //匹配任意单个字符

[root@localhost ~]# touch {1..100}
[root@localhost ~]# ls
1    14  2   25  30  36  41  47  52  58  63  69  74  8   85  90  96
10   15  20  26  31  37  42  48  53  59  64  7   75  80  86  91  97
100  16  21  27  32  38  43  49  54  6   65  70  76  81  87  92  98
11   17  22  28  33  39  44  5   55  60  66  71  77  82  88  93  99
12   18  23  29  34  4   45  50  56  61  67  72  78  83  89  94
13   19  24  3   35  40  46  51  57  62  68  73  79  84  9   95
[root@localhost ~]# ls ?
1  2  3  4  5  6  7  8  9
[root@localhost ~]# ls ??
10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95
11  16  21  26  31  36  41  46  51  56  61  66  71  76  81  86  91  96
12  17  22  27  32  37  42  47  52  57  62  67  72  77  82  87  92  97
13  18  23  28  33  38  43  48  53  58  63  68  73  78  83  88  93  98
14  19  24  29  34  39  44  49  54  59  64  69  74  79  84  89  94  99
[root@localhost ~]# ls ???
100

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

 [abc],[a-m],[0-9]
        [[:space:]]    //表示空白字符
        [[:punct:]]    //表示标点符号
        [[:lower:]]    //表示小写字母
        [[:upper:]]    //表示大写字母
        [[:alpha:]]    //表示大小写字母
        [[:digit:]]    //表示数字
        [[:alnum:]]    //表示数字和大小写字母
[root@localhost ~]# ls
1    14  2   25  30  36  41  47  52  58  63  69  74  8   85  90  96
10   15  20  26  31  37  42  48  53  59  64  7   75  80  86  91  97
100  16  21  27  32  38  43  49  54  6   65  70  76  81  87  92  98
11   17  22  28  33  39  44  5   55  60  66  71  77  82  88  93  99
12   18  23  29  34  4   45  50  56  61  67  72  78  83  89  94
13   19  24  3   35  40  46  51  57  62  68  73  79  84  9   95
[root@localhost ~]# ls [158]
1  5  8
[root@localhost ~]# ls [1-8]
1  2  3  4  5  6  7  8
[root@localhost ~]# ls [1-9][0-9]				//看10-99的文件
10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95
11  16  21  26  31  36  41  46  51  56  61  66  71  76  81  86  91  96
12  17  22  27  32  37  42  47  52  57  62  67  72  77  82  87  92  97
13  18  23  28  33  38  43  48  53  58  63  68  73  78  83  88  93  98
14  19  24  29  34  39  44  49  54  59  64  69  74  79  84  89  94  99
[root@localhost ~]# ls [[:digit:]]
1  2  3  4  5  6  7  8  9

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

[root@localhost ~]# ls [^1-3]					//看除了1-3以外的文件
4  5  6  7  8  9

环境变量

PATH //命令搜索路径

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# PATH=
[root@localhost ~]# echo $PATH

[root@localhost ~]# ls
-bash: ls: No such file or directory			//PATH为空后很多命令就用不了了
[root@localhost ~]# mkdir a
-bash: mkdir: No such file or directory
[root@localhost ~]# touch a
-bash: touch: No such file or directory

HISTSIZE //命令历史缓冲区大小

[root@localhost ~]# echo $HISTSIZE				//默认是显示1000条
1000

bash内置变量

RANDOM //保存着0-32768之间的随机数

[root@localhost ~]# echo $RANDOM
10685
[root@localhost ~]# echo $RANDOM
27424
[root@localhost ~]# echo $RANDOM
9735
[root@localhost ~]# echo $RANDOM
16552
[root@localhost ~]# echo $RANDOM
1271

命令类型

Linux命令分为两种类型:

  • 内部命令(shell内置)
  • 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
type //显示指定命令属于哪种类型
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]# type ls
ls is aliased to `ls --color=auto‘

Linux基础-1

上一篇:一、linux系统安装.md


下一篇:Linux学习-管理文件(2)