1.虚拟机和linux安装
vmware14注册码:YA18K-0WY8P-H85DY-L4NZG-X7RAD
ctrl+alt 切换windows和虚拟机的鼠标
vi命令:
打开文件:vi ifcfg-ens33
按i进入编辑模式
编辑完按esc,:wq退出
dhcp 动态获取网址
切换网络配置目录 cd /etc/sysconfig/network-scripts
删除HDADDR和UUID(方便克隆)
设置 网络
IPADDR:192.168.192.130
netmask:255.255.255.0
GATEWAY:192.168.192.2
DNS1:114.114.114.114
DNS2:192.168.192.1
service network start 重启网卡
2.克隆
克隆完
修改IPADDR
修改hostname:vi /etc/hostname
删除文件: /etc/udev/rules.d/70-persistent-net.rules
3.判断内部命令、外部命令
type cd
cd is a shell buildin–内部命令
type yum
yum is /bin/yum–外部命令
PATH环境变量提高外部命令的执行效率
4.man查看外部命令说明、help查看内部命令说明
man yum
help cd
5.bash shell定义变量
a=1 等号前后不能有空格
echo $a
arr=(1 2 3 4) 数组元素之间用空格
echo ${arr[0]} 获取数组元素用大括号
6.简单的进程管理
echo $$ 获取当前bash进程号
ps -ef 获取当前系统的所有进程
kill -9 pid 杀死pid进程
7.hash优化查询的原理
第一次执行命令的时候先从path环境变量的目录中查找
如果找到就执行命令同时将命令放到hash中,下次再执行相同命令直接从hash中查找
echo $PATH
yum install man
hash
8.linux文件系统
/bin 用户命令
/sbin 管理命令
/boot 引导文件(系统启动相关文件)
/home 普通用户的家目录
/root 管理员的家目录
/etc 配置文件
/dev 设备文件(鼠标键盘等等)
/lib 库文件
/proc 内核映射文件(包括进程的内核映射文件,进程死亡进程的映射文件就被删除了)
/media 挂载点目录,移动设备
/mnt 挂载点目录,额外的临时文件系统
/opt 可选目录,第三方程的安装目录
/sys 跟硬件设备相关的属性映射文件
/tmp 临时文件,/var/tmp
/var 可变化的文件
9.查看磁盘和文件的使用情况
df 查看分区的使用情况
df -u 查看分区的使用情况附带单位
du home 查看文件的使用情况
du -h home 查看文件的使用情况附带单位
file 文件名 查看文件类型
10.ls命令
ls 显示当前文件夹下的目录和文件
ls -l 显示当前文件下的目录和文件的详细信息
ls /home 显示home文件夹下的文件和目录
ls -a 显示当前文件夹下的目录和文件包括隐藏文件
lrwxrwxrwx. 1 root root 7 Aug 3 05:42 bin -> usr/bin
l rwx rwx rwx. 1 root root 7 Aug 3 05:42 bin -> usr/bin
文件类型 属主权限 属主所在组权限 其他用户权限 硬链接次数 属主 属主所在组 大小 最后修改时间 目录
r 可读
w 可写
x 可执行
文件类型:
‘-’ 普通文件
d 目录文件
b 块设备文件
c 字符设备文件
l 符号链接文件
p 管道命令文件
s 套接字文件
11.mkdir、cp、mv
mkdir abc 当前目录创建abc文件夹
mkdir -p abc/a/b 创建级联目录
mkdir abc/a abc/b abc/c 创建多个目录
mkdir abc/{a,b,c} 创建多个目录
cp /bin/yum . 拷贝文件到当前目录
cp /bin/yum /root/abc 拷贝文件到abc目录下
cp a b 拷贝目录,a到b
mv yum 123 修改文件名
mv yum /root/abc/123.txt 移动文件并改名
12.rm、ln
rm -f 123.txt 强制删除文件
rm -r -f abc 强制删除文件夹
ll -i 查看文件ID号
ln yum xx 给yum创建硬链接xx,yum和xx指向同一个文件,删除yum,xx不受影响
ln -s yum yy 给yum创建软链接yy,xx指向yum,删除yum,yy就不存在了
13.stat、touch
[root@node01 abc]# stat a
File: ‘a’
Size: 4096 Blocks: 8 IO Block: 4096 directory – 文件夹
Device: fd00h/64768d Inode: 262155 Links: 6
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-08-03 20:47:53.421613527 +0800 访问文件的时间
Modify: 2020-08-03 20:47:52.046613561 +0800 修改文件内容的时间
Change: 2020-08-03 20:47:52.046613561 +0800 修改文件元数据(权限、大小、路径等等等)的时间
Birth: -
touch aaa aaa不存在则创建文件aaa,存在则刷新Access、Modify、Change时间
14.cat、more、less、head、tail
cat profile 显示文件的所有内容
cat -n profile | grep “profile” 显示有profile字符串的行并展示行号
more profile 分页显示文件内容,enter逐行显示,空格键逐页显示
more +10 profile 从第十行开始显示
less profile 显示部分文件内容,空格键往下翻,B键往上翻
head profile 默认显示前十行内容
head -6 profile 显示前6行内容
tail profile 默认显示后十行内容
tail -2 profile 显示后2行内容
tail -f profile 追加显示文件后面的内容
15.管道
head -75 profile | tail -1 显示第75行内容
cat profile | grep “profile” 显示包含profile字符串的行
echo “/” | xargs ls -l 打印根目录
xargs 当管道前面的输出不能作为后面命令的输入则使用xargs
16.vi文本编辑器
-
编辑模式
移动光标 :
h左 l右 j下 k上
0 跳到当前行绝对行首
^ 跳到当前行第一个不为空的字符
$ 跳到当前行的绝对行尾
w 移到下一个单词的首字母
b 跳到当前或前一个单词的首字母
e 跳到当前或下一个单词的最后一个字母
G 跳到文件的最后一行
3G 跳到第三行
gg 跳到文章的开头
ctrl+f 往后翻屏
ctrl+b 往前翻屏
删除和替换字符:
x 删除光标位置的字符
3x 删除光标位置开始往后的三个字符
dd 删除当前行
dw 删除光标所在往后的单词
r 替换光标位子的字符
复制、粘贴、撤销
yw 复制光标位置的字符
yy 复制光标所在行
p 光标所在位置后粘贴
P 光标所在位置前粘贴
u 撤销
ctrl+r 恢复,恢复一次操作
. 重复上一次的操作
-
输入模式
i 光标字符前进入输入模式
a 光标字符后面进入输入模式
o 光标所在行下方新建一行进入输入模式
O 光标所在行上方新建一行进入输入模式
A 跳到行尾进入输入模式
esc 回到编辑模式
-
-
末行模式
- 编辑模式下进入末行模式
:q 未修改内容退出
:q! 修改内容撤销修改退出
:w 保存
:w! 强制保存
:wq 强制保存并退出
shift +zz 保存并退出
:set nu 显示行号
:set nonu 隐藏行号
:set readonly 设置只读模式
:/after 搜索after字符串
n 向下搜索
N 向上搜索
:?after 搜索after字符串
n 向上搜索
N 向下搜索
😒/after/before 光标所在行第一个after替换为before
😒/after/before/g 光标所在行所有after替换为before
😒/after/before/gi 光标所在行所有after忽略大小写替换为before
:0,+2s/after/befor/gi 光标所在行以及往下2行所有after忽略大小写替换为before
:%s/after/before/gi 所有after忽略大小写替换为before
:!ls -l 感叹号表示执行命令
:1d 删除第一行
:1,3d 删除前三行
:$d 删除最后一行 $表示最后一行
:1y 复制第一行
:0,$y 复制全文
17.文本处理命令cut、sort、wc
cut -d ‘:’ -f1 password 按照:切割并显示第一行
cut -d ‘:’ f1-3 -s password 按照:切割并显示第一到三行,不显示没有分隔符的行
sort -t ‘:’ -k1 password 按照:切割并按照字典对第一列排序
sort -t ‘:’ -k1 -n password 按照:切割并按照数值对第一列排序
sort -t ‘:’ -k1 -n -r password 按照:切割并按照数值对第一列排序倒序
sort -t ‘:’ -k1 -n -f password 按照:切割并按照数值对第一列排序忽略大小写
sort -t ‘:’ -k1 -n -f -u password 按照:切割并按照数值对第一列排序忽略大小写并合并相同的行
wc -c profile 查看文件的字节数
wc -l profile 查看文件的行数
wc -w profile 查看文件的单词数
18.行编辑器sed
sed “3d” txt 删除第三行并显示其他行,不会修改源文件
sed “3p” txt 显示所有行并重复复显示第三行
sed -n “3p” txt 显示第三行
sed “aword” txt 在每一行下方创建一行填充内容word并显示,不会修改源文件
sed “iword” txt 在每一行上方创建一行填充内容word并显示,不会修改源文件
sed “chello world” txt 每一行替换为hello world并显示,不会修改源文件
sed -i “3d” txt 删除第三行,修改源文件
19.awk文本分析工具
awk -F ‘:’ ‘{print $1}’ passwd 按照:分割并打印第一列
awk -F ‘:’ ‘BEGIN{print “name,bashell”}{print $1 “,” $7}END{print “end”}’ passwd 按照:分割,打印name,bashell然后打印第一列和第七列用逗号拼接,最后打印end
awk ‘/root/ {print $0}’ passwd 打印包含root的行
awk -F ‘:’ ‘{print NR “\t” NF “\t” $0}’ passwd 按照:分割,并打印行号、行的分割数和行的内容
aaa文件内容如下:
Tom 0 2012-12-11 car 3000
John 1 2013-01-13 bike 1000
vivi 1 2013-01-18 car 2800
Tom 0 2013-01-20 car 2500
John 1 2013-01-28 bike 3500awk ‘{split($3,date,"-");if(date[2]“01”){names[$1]+=$5};if($2"0"){types[$1]=“Manager”}else{types[$1]=“woker”}} END{for (i in names) print i “\t” types[i] “\t” names[i]}’ aaa 统计每个人一月份发的工资
结果:
vivi woker 2800
Tom Manager 2500
John woker 4500
abc.in文件内容如下
{
split($3,date,"-");
if(date[2]“01”){
names[$1]+=$5
};
if($2"0"){
types[$1]=“Manager”
}else{
types[$1]=“woker”
}
} END{
for (i in names)
print i “\t” types[i] “\t” names[i]
}awk -f abc.in aaa
结果如下:
vivi woker 2800
Tom Manager 2500
John woker 4500
20.用户与权限
useradd ss 添加用户
userdel ss 删除用户
rm -rf /home/ss 删除家目录
rm -rf /var/spool/mail/ss 删除邮件
groupadd share 添加组
useradd aaa 添加用户
useradd bbb 添加用户
useradd ccc 添加用户
passwd aaa 修改密码
usermod -G share aaa 添加到组中
usermod -G share bbb 添加到组中
id aaa 显示用户的信息,uid,gid,groups
mkdir /share 创建共享文件夹
chown root:share share/ 修改共享文件夹的所属组为share
chown :share share/ 修改共享文件夹的所属组为share
chmod g+w share/ 所属组添加写权限
chmod o-r share/ 删除其他用户的读权限
chmod o-x share/ 删除其他用户的运行权限
su aaa 切换用户,需要密码
root切换到普通用户不需要密码,普通用户之间切换需要密码