- 一. 什么是Bash shell
- 二.Bash Shell能干什么?
- 三.如何使用Bash Shell
- 四.Bash Shell提示符
- 五:Bash Shell基础语法
- 六. Bash Shell基本特性
- 补全功能tab
- 七.常用快捷键Carl
- 八.历史记录History
- 九.命令别名alias
- 十.帮助手册help
- 十一.linux文件管理
- linux目录结构
- 命令相关目录/bin
- 用户家相关目录
- 系统文件目录/usr
- 系统启动目录/boot
- 配置文件目录/etc
- 设备相关目录/dev
- 可变的目录/var
- 虚拟系统目录/proc
- 文件路径定位
- 绝对路径与相对路径
- 路径切换命令cd
- linux基础命令
- touch文件创建
- mkdir目录创建
- tree显示目录结构
- cp 文件或目录复制
- mv文件移动命令
- rm文件或目录删除
- 文件查看类命令
- cat命令
- less与more命令
- head与tail命令
- grep过滤数据
- wget命令
- rz与sz命令
- curl命令
- 字符处理类命令
- sort命令
- uniq命令
- wc命令
二.Bash Shell能干什么?Bash shell 是一个命令解释器,主要负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给内核,由内核驱动硬件,最终将处理后的结果输出至Bash shell 屏幕终端。
三.如何使用Bash Shell使用Shell实现对linux系统的大部分管理:
1.文件管理
2.权限管理
3.用户管理
4.磁盘管理
5.网络管理
6.软件管理
7.服务管理
8.等等
单条命令——低效率——适合少量的工作
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提示符
五:Bash Shell基础语法[root@localhost ~]#
root:当前登录Shell的用户名称
@localhost:当前系统主机名称
~:当前所在的工作目录
#:管理员提示符($:普通用户提示符)
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
八.历史记录History1.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:搜索历史命令,利用关键字
可用于追溯之前执行过什么命令,造成的故障
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
十一.linux文件管理 linux目录结构 命令相关目录/bin3.linux命令大全url传送门
linux命令手册:
Linux命令大全
存放命令相关的目录**
/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
虚拟系统目录/proc/var,存放一些变化文件,例/var/log下的日志文件
/var/tmp,进程产生的临时文件
/tmp:系统临时目录
虚拟的文件系统(例:对应的进程停止则/proc下对应目录则会被删除)
/proc:反映当前系统正在运行进程的实时状态,类似于汽车的仪表盘文件路径定位 绝对路径与相对路径
路径切换命令cd1:绝对路径:只要从/开始的路径,例:[root@localhost ~]# cd /etc/dhcp/
2:相对路径:相对于当前目录来说,例:[root@localhost etc]# cd ./dhcp/,…/bob/a.mp3,a.txt
3.:.和. .的是什么意思
一个点代表是当前目录
两个点代表的是当前目录的上层目录
小结:所谓(.)和(…)目录实际上属于相对路径的一种表现形式
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/nologinwget命令
安装命令:[root@localhost bir]# yum install -y wget 下载文件:[root@localhost bir]# wget http://mirrors.aliyun.com/repo/Centos-7.reporz与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 9uniq命令
如果文件中有多行完全相同的内容,希望能删除重复的行,同时还可以统计出完全相同的行出现过的总次数
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: 用到了管道技术; 将前者执行命令的结果,通过管道传递给后者命令的输入;



