人机交互接口Bash
- 一. 什么是Bash shell
- 二.Bash Shell能干什么?
- 三.如何使用Bash Shell
- 四.Bash Shell提示符
- 五:Bash Shell基础语法
- 六. Bash Shell基本特性
- 七.常用快捷键Carl
- 八.历史记录History
- 九.命令别名alias
- 十.帮助手册help
- 十一.linux文件管理
一. 什么是Bash shell
Bash shell 是一个命令解释器,主要负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给内核,由内核驱动硬件,最终将处理后的结果输出至Bash shell 屏幕终端。
二.Bash Shell能干什么?
使用Shell实现对linux系统的大部分管理:
1.文件管理
2.权限管理
3.用户管理
4.磁盘管理
5.网络管理
6.软件管理
7.服务管理
8.等等
三.如何使用Bash Shell
单条命令——低效率——适合少量的工作
shell脚本——高效率——适合重复性的工作
例
[root@localhost ~]# cat useradd.sh
#!/bin/bash
#********************************************************************
#Author: ZhaoJie
#QQ: 631455878
#Date: 2021-11-24
#FileName: useradd.sh
#URL; https://www.zhaojie.com
#Description: The test script
#Copyright (C): 2021 All rights reserved
#********************************************************************
for i in {1..100}
do
useradd zhaojie-$i
echo "zhaojie-$i" is create ok..
done
四.Bash Shell提示符
[root@localhost ~]#
root:当前登录Shell的用户名称
@localhost:当前系统主机名称
~:当前所在的工作目录
#:管理员提示符($:普通用户提示符)
五:Bash Shell基础语法
bash shell命令行,为用户提供命令输入,然后将执行的结果返回给用户
命令:command
选项:options
参数:parameters
例:
ls 命令
ls -a 命令+选项
ls -a /home/ 命令+选项+参数
六. Bash Shell基本特性
补全功能tab
1.命令补全:当王金命令时,可以通过tab进行补全
2.目录补全:当需要查找文件目录层级较多时,可以通过tab快速补全,并减少出错
例:
#查看IP时忘记具体命令
[root@localhost ~]# ifco
#按下Tab键会自动补全
[root@localhost ~]# ifconfig
#按两下Tab键列出所有if开头的命令
[root@localhost ~]# if
if ifcfg ifconfig ifdown ifenslave ifstat ifup
#使用Tab键进行目录补全,如果路径错误则无法补全
[root@localhost ~]# ls /etc/sysconfig/network-scripts/
七.常用快捷键Carl
1.Cart + a:光标跳转至正在输入的命令行行首
2.Cart + e:光标跳转至正在输入的命令行尾部
3.Cart + k:删除从光标到行末的所有字符
4.Cart + u:删除从光标到行首的所有字符
5.Cart + c:终止前台运行的程序
6.Cart + d:在shell中,表示推出当前shell
7.Cart + l:清屏
8.Cart + r:搜索历史命令,利用关键字
八.历史记录History
可用于追溯之前执行过什么命令,造成的故障
1.使用双!!可执行上一条执行过的命令
[root@localhost ~]# cd /etc/
[root@localhost etc]# !!
cd /etc/
2.输入!6,执行history命令历史中的第6行命令
[root@localhost etc]# !6
ifconfig
3.使用!cat,调用history命令历史最近一次执行过的cat命令
[root@localhost etc]# !cat
cat useradd.sh
cat: useradd.sh: No such file or directory
九.命令别名alias
命令别名将用户经常使用的复杂命令简单化,可以用alias别名名称='命令’创建属于自己的命令别名,若要取消一个命令别名,则是用unalias别名名称
1.定义临时别名,wk为查看ens160网卡别名
[root@localhost ~]# alias wk = 'ifconfig'
[root@localhost ~]# wk
2.永久生效,/etc/bashrc
[root@localhost etc]# echo "alias ifconfig = 'ifconfig ens160'" >> /etc/bashrc
3.如果定义命令本身,执行结果是什么?
[root@localhost ~]# alias ifconfig = 'ifconfig'
#绝对路径执行,调用命令本身
[root@localhost ~]# /sbin/ifconfig
#通过\转义字符,调用命令本身
[root@localhost ~]# \ifconfig
4.取消别名
[root@localhost ~]# unalias ifconfig
十.帮助手册help
1.命令: --help 帮助
用法: ls [OPTION]... [FILE]...
[root@localhost etc]# ls --help
2.命令man手册
#查看ls命令的手册
man ls
3.linux命令大全url传送门
linux命令手册:
Linux命令大全
十一.linux文件管理
linux目录结构
命令相关目录/bin
存放命令相关的目录**
/bin: 普通用户使用的命令 /bin/ls,/bin/date
/sbin:管理员使用的命令 /sbin/service
用户家相关目录
存放用户相关数据的家目录
/home: 普通用户的家目录 /home/username,
/root:超级管理员root的家目录,普通用户无权限操作
系统文件目录/usr
存放系统相关文件的目录
/usr 相当于C:\windows
/usr/local 软件安装的目录,相当于C:\Program
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件 Glibc 32bit
/usr/lib54 库文件 Glibc 32bit
系统启动目录/boot
存放系统时内核与grub引导菜单
/boot存放的系统启动相关的文件,例:kernel,grub(引导装载程序)
配置文件目录/etc
/etc存放系统配置文件目录,后续所有服务的配置都在这个目录中
/etc/sysconfig/network-script/ifcfg-,网络配置文件
/etc/hostname 系统主机名配置文件
设备相关目录/dev
/dev存放设备文件的目录,例:硬盘,硬盘分区,光驱…
/dev/null黑洞设备,只进不出。(类似垃圾回收站)
/dev/random生成随机数的设备
/dev/zero能源源不断的产生数据
可变的目录/var
/var,存放一些变化文件,例/var/log下的日志文件
/var/tmp,进程产生的临时文件
/tmp:系统临时目录
虚拟系统目录/proc
虚拟的文件系统(例:对应的进程停止则/proc下对应目录则会被删除)
/proc:反映当前系统正在运行进程的实时状态,类似于汽车的仪表盘
文件路径定位
绝对路径与相对路径
1:绝对路径:只要从/开始的路径,例:[root@localhost ~]# cd /etc/dhcp/
2:相对路径:相对于当前目录来说,例:[root@localhost etc]# cd ./dhcp/,…/bob/a.mp3,a.txt
3.:.和. .的是什么意思
一个点代表是当前目录
两个点代表的是当前目录的上层目录
小结:所谓(.)和(…)目录实际上属于相对路径的一种表现形式
路径切换命令cd
cd 绝对路径cd /etc/hostname
cd 绝对路径cd test/ab cd . cd ..
*****************************************************
cd #切换目录
cd . #代表当前目录
cd .. #切换回当前目录的上级目录
cd - #切换回上一次所在目录
cd ~ #切换回当前用户的家目录,注意:roo和普通用户是否有区别吗?
linux基础命令
touch文件创建
touch file #无则创建,有则修改时间
touch file1 file2
touch /home/od/file4 file5
touch file{a,b,c} #{}集合,等价于touch a b c
touch file{1..3}
touch file{a..c}
mkdir目录创建
选项:-v 显示详细信息
-p 递归创建
mkdir dir1
mkdir /home/ob/dir1 /home/ob/dir2
mkdir -v /home/ob/{dir3,dir4}
mkdir -pv /home/ob/dir5/dir6
mkdir -pv /home/{ob/{diu,but},boy}
tree显示目录结构
选项:-L 显示目录树的层级
tree /home 显示当前目录下的结构
[root@localhost zhaojie]# tree /tmp/ob
/tmp/ob
├── but
├── diu
└── zhaojie
└── zzl
4 directories, 0 files
cp 文件或目录复制
选项:
-v 详细显示命令执行的操作
-r 递归处理目录与子目录
-p 保留源文件或目录的属性
cp file /tmp/file_copy
cp name /tmp/name #不修改名称
cp file /tmp/ #不修改名称
cp -p file /tmp/file_p #保留源文件或目录的属性
cp -r /etc/ /tmp/ #复制目录需要使用-r参数,递归复制
cp -rv /etc/hosts /etc/hostname /tmp#拷贝多个文件至一个目录
cp -rv /etc/{hosts,hosts.bak}
cp -rv /etc/hosts{,-org}
mv文件移动命令
mv file file1 #原地移动算改名
mv file1 /tmp/ #移动文件至tmp目录
mv /tmp/file1 ./ #移动tmp目录的文件至当前目录
mv dir/ /tmp/ #移动目录至/tmp目录下
touch file{1..3}
mv file1 file2 file3 /tmp/ #移动多个文件至同一个目录
mkdir dir{1..3}
mv dir1/ dir2/ dir3/ /tmp #移动多个目录至通一个目录
rm文件或目录删除
选项:
-i:提示是否删除
-r:递归
-f:强制删除
-v:详细过程
******************************************************************************************
rm -i file.txt #提示删除文件
rm -f file.txt #不提示删除
******************************************************************************************
rm -r dir/ #提示,递归删除目录
rm -rf dir/ #不提示,强制删除目录(慎重)
******************************************************************************************
示例1:
[root@localhost ~]# mkdir /tmp/dir
[root@localhost ~]# touch /tmp/dir/{file2,file3,.file4}rm -f /home/dir10/*
[root@localhost dir]# ls -a
. .. file2 file3 .file4
[root@localhost ~]# rm -f /tmp/dir/* (不包括隐藏文件)
[root@localhost dir]# ls -a
. .. .file4
******************************************************************************************
示例2:
[root@localhost ~]# touch /tmp/bir/file{1..10}
[root@localhost ~]# touch /tmp/bir {1..10}.pdf
[root@localhost bir]# ls
10.pdf 2.pdf 4.pdf 6.pdf 8.pdf file1 file2 file4 file6 file8
1.pdf 3.pdf 5.pdf 7.pdf 9.pdf file10 file3 file5 file7 file9
[root@localhost ~]# rm -rf /tmp/dir file*
[root@localhost bir]# rm -rf /tmp/dir *.pdf
文件查看类命令
cat命令
cat: 查看文件的所有内容(少量的文件)
[root@localhost bir]# cat pass (正常查看文件方式)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost bir]# cat -n pass (-n:显示文件有多少行)
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost bir]# cat -A pass (查看文件的特殊符号,例:文件存在Tab键)
root:x:0:0:root:/root:/bin/bash$
bin:x:1:1:bin:/bin:/sbin/nologin$
[root@localhost bir]# tac pass (倒序查看文件)
zhaojie-8:x:1040:1040::/home/zhaojie-8:/bin/bash
zhaojie-7:x:1039:1039::/home/zhaojie-7:/bin/bash
less与more命令
查看内容较多的文件;
示例:
[root@localhost bir]# less /tmp/bir/pass #使用光标上下进行查看,空格进行翻页,q退出
******************************************************************************************
[root@localhost bir]# more /tmp/bir/pass #使用回车上下进行查看,空格进行翻页,q退出
head与tail命令
[root@localhost bir]# head pass #查看头部内容,默认前10行
[root@localhost bir]# head -n 3 pass #使用-n指定,查看头部3行
******************************************************************************************
[root@localhost bir]# tail pass #查看尾部内容,默认尾部10行
[root@localhost bir]# tail -3 pass
[root@localhost bir]# tail -f pass #查看文件尾部的变化情况
# -f = tailf命令
grep过滤数据
grep:过滤文件内容
-v: 取反
-E: 搜索多个条件
-c: count统计
******************************************************************************************
[root@localhost bir]# grep "^root" pass #匹配以root开头的行
root:x:0:0:root:/root:/bin/bash
[root@localhost bir]# grep "bash$" pass #匹配以bash结尾的行
root:x:0:0:root:/root:/bin/bash
[root@localhost bir]# grep -v "ftp" pass #匹配除“ftp”的内容,并进行打印
[root@localhost bir]# grep -i "ftp" pass #忽略大小写匹配
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
wget命令
安装命令:[root@localhost bir]# yum install -y wget
下载文件:[root@localhost bir]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
rz与sz命令
rz:上传
sz:下载
安装命令:[root@localhost bir]# yum install -y lrzsz
rz:只能上传文件,不支持上传文件夹
sz:只能下载文件,不支持下载文件夹
注意: 仅支持文件,不支持目录,同时不支持单个文件超过4g,不支持断电续传
curl命令
#仅仅查看url地址的文件内容
[root@localhost bir]# curl http://mirrors.aliyun.com/repo/Centos-7.repo
两种下载:
[root@localhost bir]# wget http://cdn.51yip.com/images/logo.png
[root@localhost bir]# curl http://cdn.51yip.com/images/logo.png
字符处理类命令
sort命令
对一个无序的文本文件进行数据的排序
sort [OPTION]... [FILE]...```
选项:
-r:倒序
-n:按数字排序
-t:指定分割符
-k:指定第几列
示例:创建一个文件,写入无规律内容
[root@localhost tmp]# cat test.txt
5
2
7
9
4
6
8
1
#进行排序
[root@localhost tmp]# sort test.txt
1
2
4
5
6
7
8
9
uniq命令
如果文件中有多行完全相同的内容,希望能删除重复的行,同时还可以统计出完全相同的行出现过的总次数
uniq [OPTION]... [INPUT [OUTPUT]]
选项:
-c 计算重复的行
#创建一个文件
[root@localhost tmp]# cat test.txt
1
a
a
1
5
6
7
3
3
#uniq需要和sort一起使用,先用sort命令排序,让重复内容连续在一起
[root@localhost tmp]# sort test.txt
1
1
3
3
5
6
7
a
a
#使用uniq去除相邻重复的行
[root@localhost tmp]# sort test.txt |uniq
1
3
5
6
7
a
#统计重复次数
[root@localhost tmp]# sort test.txt |uniq -c
2 1
2 3
1 5
1 6
1 7
2 a
wc命令
wc [OPTION]... [FILE]...
选项:
-l 显示文件行数
-c 显示文件字节
-w 显示文件单词
[root@localhost bir]# wc -l /etc/fstab #统计pass文件有多少行
63 pass
[root@localhost bir]# wc -l /etc/services #统计/etc/services文件行号
扩展:统计文件行号的方法
grep -n ".*" /etc/services | tail -1
cat -n /etc/services | tail -1
awk '{print NR $0}' /etc/services | tail -1
grep+wc: 用到了管道技术; 将前者执行命令的结果,通过管道传递给后者命令的输入;