Linux系统入门|Bash初识

图片[1]-Linux系统入门|Bash初识-不念博客
shell

一、相关概念介绍

关于shell

命令解释器软件。就打开Linux后你面对的那块黑屏。shell是我们与系统交互的翻译官,里面是一套程序。

我们在shell中输入命令,得到相应数据 。比如输入 ip a 获得网卡信息。这个指令是交给bashshell,它再交给系统,系统再调用内核,最后内核会调动硬件。最后再一层一层反馈出你想要的结果。

你直接输入“网卡”它不认识。

关于Bash 这个Shell

我们来了解一下 Linux 使用的是哪一个shell?什么,哪一个?难道说shell 不就是一个shell 吗?哈哈,那可不,在早年的 UNIX 年代发展者众多,所以shell依据发展者的不同就有许多的版本,例如常听到的Bourne shell(sh)、在sun里面默认的C shell,商业上常用的K shell等等。每种Shell各有其特点。Linux使用的这个版本称为【Again Bourne SHell (简称 bash)】。这个shell 是 Bourne shell的增强版本,也是基准于 GNU 的架构下发展出来的。

shell 的简单历史

第一个流行的 shell 是由 Steven Bourne 发展出来的,为了纪念它所以就称为 Bourne shell,或直接简称为 sh,而后来另一个广为流传的shell 是由伯克利大学的 Bill Joy设计依附于 BSD版的 UNIX 系统中的shell,这个shell 的语法有点类似C 语言,所以才得名为C shell,简称为 csh,由于在学术界 Sun 主机势力相当庞大,而 Sun是主要的UNIX 分支之一,所以C shell 也是另一个很重要而且流传很广的shell。

那么目前我们的 Linux( 以 CentOS 7.x 为例) 有多少我们可以使用的 shells 呢?你可以检查etc/shells 这个文件,至少就有下面这几个可以用的 shells/bin/sh(已经被 /bin/bash 所替换)/bin/bash (就是Linux 默认的 shell )/bin/tcsh(整合 C Shell,提供更多的功能)/bin/csh(已经被/bin/tcsh 所替换)

虽然各家 shell 的功能都差不多,但是在某些语法的执行方面则有所不同,因此建议你还是得要选择某一种 shell 来熟悉一下较佳。Linux 默认就是使用 bash,所以最初你只要学会 bash 就非常了不起了。百度百科关于Bash的介绍:

Bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
图片[2]-Linux系统入门|Bash初识-不念博客

Shell执行方式:

输入命令方式 ===> 效率低 ===>适合少量工作

shell script (脚本)===> 效率高 ===>适合复杂的工作

比如:

#创建用户
[root@db04 ~]# useradd andrew

#如果要创建100个用户,使用shell script
for n in `seq 100`;do
      useradd andrew$n && \
       echo "用户 andrew$n 已创建成功"
done

查看当前用的什么Shell

[root@web01 ~]# echo $SHELL
/bin/bash
[root@web01 ~]# bash -version        #// 查看你用的bash版本
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

查看上条命令是否正确

echo $?
0代表正确

二、命令行提示符介绍

[root@localhost ~]#

[]:这是提示符的分隔符号,没有特殊含义
root:当前的登录用户,笔者现在使用的是 root 用户登录。可以用命令whoami查询
@:  分隔符,没有特殊含义。
localhost 当前系统的简写主机名(完整主机名是 localhost.localdomain)
~:代表用户当前所在的目录,此例中是当前所在的目录是root的家目录。即根下的/root文件夹。普通用户的家目录是/home
#:命令提示符, #代表超级用户 $:代表普通用户

# 命令行提示符由PS1环境变量控制


如何修改命令提示行格式颜色等

# 修改主机名:hostnamectl set-hostname 新的主机名称(如007)(永久生效)
配置文件:/etc/hostname

# 查看当前提示符PS1的值:
[root@localhost ~]# echo $PS1
[\u@\h \W]\$

#暂时修改:
[root@localhost ~]# PS1="\[\033[32m\][\u@\h(nanyibo) \W]\\$\[\033[0m\]"    
[root@localhost(nanyibo) ~]# 变绿色

PS1='\[\e[32;40m\] \[[\u@\h \w \t]\$ \[\e[0m\]'   加上时间
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ " 变颜色
PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\[\e[35;40m\]\h\[\e[0m\] \[\e[36;40m\]\w\[\e[0m\]]\\$ " 绿 紫 青
PS1="\[\e[37;40m\][\[\e[31;40m\]\u\[\e[37;40m\]@\[\e[33;40m\]\h\[\e[0m\] \[\e[34;40m\]\w\[\e[0m\]]\\$ " 红 黄 蓝


#永久变色:进.bashrc把上面的写进去
[root@localhost ~]# vim .bashrc

PS1的常用参数及含义

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"

\H :完整的主机名称

\h :仅取主机名中的第一个名字

\t :显示时间为24小时格式,如:HH:MM:SS

\T :显示时间为12小时格式

\A :显示时间为24小时格式:HH:MM

\u :当前用户的账号名称

\v :BASH的版本信息

\w :完整的工作目录名称

\W :利用basename取得工作目录名称,只显示最后一个目录名

\# :下达的第几个命令

\$ :提示字符,如果是root用户,提示符为 # ,普通用户则为 $
    
#颜色
30  40 黑色
31  41 红色
32  42 绿色
33  43 黄色
34  44 蓝色
35  45 紫红色
36  46 青蓝色
37  47 白色

三、Bash的作用和优点

为啥把它做为默认shell?因为它实在太强大了。

history、别名、tab补全。。。。。

敲命令

  • 适合少量工作,效率低

写脚本(Script)

  • 适合大量工作,效率高

文件管理

  • 增 touch
  • 删 rm
  • 改 vi
  • 查 find

权限管理

  • 超级管理员 root
  • 普通用户

用户管理

  • 增、删、改、查

磁盘管理

  • 查看硬盘空间 df -h
  • 查看内存 free -m

网络管理

  • 查看网卡 ifconfig 比 ip a 整洁
  • ifconfig安装:yum install -y net-tools (-y是免交互)
    查看结果:[root@localhost ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 10.0.0.250 netmask 255.255.255.0 broadcast 10.0.0.255
    inet6 fe80::152f:f2c7:21b3:412b prefixlen 64 scopeid 0x20<link>
    inet6 fe80::e1af:89d9:4338:31df prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:7b:c8:4c txqueuelen 1000 (Ethernet)
    RX packets 18104 bytes 26073080 (24.8 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 1702 bytes 133917 (130.7 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    …….

软件管理

  • 增 yum install -y +软件名称 -y 是免交互
  • 删 yum remove
© 版权声明
THE END