linux操作笔记
/
cd /
/home/ /home/centos ~
/root /root ~
cd ~
/bin -> /usr/bin
/sbin -> /usr/sbin
/sbin -> /usr/sbin
/etc
.
.
.
.
.
文件
touch 1.txt
rm 1.txt
vi echo helloworld > 1.txt
cat more head tail
文件夹:
mkdir [-p] aaa
rm -r aaa
对文件夹内容的增删
ls aaa
权限:
r: 4
w: 2
x: 1
u:
g:
o:
g:
o:
chmod u+r 1.txt
chmod 644 1.txt
文件权限:
读:cat
写:echo hello >> 1.txt
执行:chmod a-x /usr/bin/ls which ls
ls
读:cat
写:echo hello >> 1.txt
执行:chmod a-x /usr/bin/ls which ls
ls
文件夹权限:
读:ls
写:touch rm
执行:cd
读:ls
写:touch rm
执行:cd
桥接模式:相当于克隆一台物理主机,网络断开,彼此无法互联。
NAT: 相当于虚拟机搭建的局域网,
仅主机: 和NAT类似,无法访问互联网
虚拟机网络配置:
NAT连不上互联网,但是宿主机正常联网:VMnet8虚拟网卡
查看子网ip:192.168.23.0,说明NAT模式建立的所有虚拟机网段都是192.168.23开头
NAT连不上互联网,但是宿主机正常联网:VMnet8虚拟网卡
查看子网ip:192.168.23.0,说明NAT模式建立的所有虚拟机网段都是192.168.23开头
VMnet8的ip地址是192.168.23.1
windows--- VMnet8 ---centos
解决方案:查看VMnet8的ip地址是否是192.168.xxx.1
如果不是,修改ip地址(windows端)
修改方式:控制面板\网络和 Internet\网络连接
如果不是,修改ip地址(windows端)
修改方式:控制面板\网络和 Internet\网络连接
双击VMnet8 ===> 属性 ====> Internet协议版本4 ===> 手动修改ip地址即可(192.168.xxx.1)
Centos配置静态ip:
===================================
原因:保证所有客户机之间的网络连接是固定的
===================================
原因:保证所有客户机之间的网络连接是固定的
配置方式:
1、修改文件(/etc/sysconfig/network-scripts/ifcfg-ens33)
1、修改文件(/etc/sysconfig/network-scripts/ifcfg-ens33)
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9b4c784c-8910-4fb7-a1f4-5be34cc970f3
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.23.100
PREFIX=24
GATEWAY=192.168.23.2
DNS=192.168.23.2
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9b4c784c-8910-4fb7-a1f4-5be34cc970f3
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.23.100
PREFIX=24
GATEWAY=192.168.23.2
DNS=192.168.23.2
2、重启网络适配器
service network restart
service network restart
3、在VMware的虚拟机中查看ip地址是否修改成功
ip addr
4、设置客户机连接外网
4、设置客户机连接外网
修改文件sudo vi /etc/resolv.conf
添加
# DNS地址
nameserver 192.168.23.2
添加
# DNS地址
nameserver 192.168.23.2
环境变量:
=============================
操作系统运行的时候,识别的变量
=============================
操作系统运行的时候,识别的变量
PATH是命令识别搜寻的目录集合
Centos提取变量的方式:
$PATH √
"$PATH" √
${PATH} √
'$PATH' ×
$PATH √
"$PATH" √
${PATH} √
'$PATH' ×
windows中不区分大小写
Linux中严格区分大小写
修改环境变量:
临时修改环境变量:
export PATH=tom
export PS1='[\u@\h \w]\$ '
永久修改环境变量(/etc/profile) 系统环境变量
sudo vi /etc/profile, 在末尾添加以下配置:
sudo vi /etc/profile, 在末尾添加以下配置:
# 配置命令提示符格式
export PS1='[\u@\h \w]\$ '
export PS1='[\u@\h \w]\$ '
保存退出即可
使环境变量生效:source /etc/profile
Linux会话:
Linux默认支持多用户、多会话同时访问
一个会话控制一个终端
修改变量 ====> 当前会话有效
修改文件 ====> 永久有效
使用export控制命令提示符格式
PS1
PS1
[\u@\h \W]\$
\u //用户
\h //主机名
\W //当前目录
\$ //提示符
\h //主机名
\W //当前目录
\$ //提示符
\w //当前目录的绝对路径
\t //时间
\T //时间
\d //当前日期
...
\t //时间
\T //时间
\d //当前日期
...
[\u@\h `pwd`]\$
反引号`` ====> 强制命令解析
echo `pwd`
export PS1='[\u@\h \w]\$ '
压缩和归档:
========================
查看帮助方法:
-h //
--help //ls --help
help //help ls
man //man ls
info //info ls
archive:归档
tar:归档
jar:java
tar:
har:hadoop归档
war:web归档文件
ear:enterprise归档
..
tar:
har:hadoop归档
war:web归档文件
ear:enterprise归档
..
tar :将多个文件进行整合,成为单个文件
tar -cf bcd.tar bbb ccc ddd //将bbb、ccc、ddd归档为bcd.tar
tar -tvf bcd.tar //列出bcd.tar的内容
tar -xf yz.tar //抽取yz.tar中所有文件
tar -tvf bcd.tar //列出bcd.tar的内容
tar -xf yz.tar //抽取yz.tar中所有文件
压缩:gzip
gzip 1.txt //压缩1.txt ===> 1.txt.gz
gunzip 1.txt.gz //解压1.txt
将yyy文件夹进行归档+压缩
tar -czvf bcd.tar.gz bbb ccc ddd //将bbb、ccc、ddd归档并压缩为bcd.tar.gz
-z gzip //调用压缩
-c create //创建新文件
-v verbose //输出详细信息
-f file //指定文件名称
-c create //创建新文件
-v verbose //输出详细信息
-f file //指定文件名称
tar -xzvf bcd.tar.gz //将bcd.tar.gz进行解压
-x extract //抽取,解压
在Centos上安装Linux版的JDK:
========================================
winscp安装位置:
D:\program\WinSCP
========================================
winscp安装位置:
D:\program\WinSCP
任务:安装winscp,并将JDK发送到Centos中
Jdk安装:centos用户
1、创建/soft文件夹
sudo mkdir /soft
sudo mkdir /soft
2、修改/soft文件夹的user
sudo chown centos:centos /soft
sudo chown centos:centos /soft
3、切换到~
cd ~
cd ~
4、将jdk解压到/soft文件夹
tar -xzvf jdk-8u131-linux-x64.tar.gz -C /soft
tar -xzvf jdk-8u131-linux-x64.tar.gz -C /soft
5、给jdk创建符号链接
ln -s /soft/jdk1.8.0_131 /soft/jdk
ln -s /soft/jdk1.8.0_131 /soft/jdk
6、配置环境变量
sudo vi /etc/profile
sudo vi /etc/profile
添加如下内容:
# java环境变量
export JAVA_HOME=/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin
# java环境变量
export JAVA_HOME=/soft/jdk
export PATH=$PATH:$JAVA_HOME/bin
7、生效环境变量:两种方式
source /etc/profile
. /etc/profile
source /etc/profile
. /etc/profile
8、测试环境变量
切换到任意目录:输入java -version
切换到任意目录:输入java -version
d:目录
-:普通文件
l:链接
ln xxx yyy //将xxx创建链接,指向yyy(硬链接)
ln -s xxx yyy //将xxx创建链接,指向yyy(软链接 || 符号链接)
ln -s xxx yyy //将xxx创建链接,指向yyy(软链接 || 符号链接)
硬链接:
在Linux中,文件存放形式是名字空间+真实数据
硬链接的作用是对真实数据创建额外一个对真实数据的引用。
软链接:
相当于快捷方式
Centos软件安装:
==================================
第一次使用yum,yum会自动更新源数据库。
yum:黄狗 Yellowdog Updater Modified //
安装:sudo yum install [-y] nano
卸载: sudo yum remove [-y] nano
下载:sudo yum install --downloadonly --downloaddir=/home/centos nano
本地安装:sudo yum localinstall nano-2.3.1-10.el7.x86_64.rpm
搜索包名:yum search ifconfig
问题1:在本地下载的时候,1、如果已经安装:sudo yum reinstall --downloadonly --downloaddir=/home/centos nano
2、如果未安装: sudo yum install .....
问题2:无法下载:
测试,是否能连接到外网:1、ping www.baidu.com
2、ping 119.75.216.20
测试,是否能连接到外网:1、ping www.baidu.com
2、ping 119.75.216.20
如果第2步ok,但是第1步不行 ====> 域名解析问题,修改/etc/resolv.conf文件(参考126行第4步)
如果1、2均不行,查看centos的ip配置
如果1、2均不行,查看centos的ip配置
nano文本编辑器:sudo yum install nano
nano 3.txt //编辑3.txt
ctrl+o //保存
ctrl+x //退出
nano 3.txt //编辑3.txt
ctrl+o //保存
ctrl+x //退出
ctrl+k //剪切
ctrl+u //粘贴
ctrl+u //粘贴
ctrl+w //搜索
ifconfig: sudo yum -y install net-tools
shell脚本:脚本语言,需要解释器进行解释 //所见即所得
==========================
创建脚本步骤
1、创建文件
touch hello.sh
2、给文件增加执行权限
chmod a+x hello.sh
3、编辑文件,nano hello.sh,添加以下内容
#!/bin/bash
echo helloworld
==========================
创建脚本步骤
1、创建文件
touch hello.sh
2、给文件增加执行权限
chmod a+x hello.sh
3、编辑文件,nano hello.sh,添加以下内容
#!/bin/bash
echo helloworld
4、执行脚本
./hello.sh
./hello.sh
for循环:
============================
for NAME [in WORDS ... ] ; do COMMANDS; done //将WORDS中的单词进行分词
eg:
for x in `cat 3.txt` ; do echo $x ; done //将3.txt中的单词进行分词,以列表形式打印
============================
for NAME [in WORDS ... ] ; do COMMANDS; done //将WORDS中的单词进行分词
eg:
for x in `cat 3.txt` ; do echo $x ; done //将3.txt中的单词进行分词,以列表形式打印
for (( i=0; i<10; i++ )); do echo $i; done
for打印99乘法表:
=================================
#!/bin/bash
for (( i=1; i<10; i++ )); do
for (( j=1; j <= $i; j++ )); do
echo -ne "$j"x"$i"=$(( j*i ))'\t'
done
echo
done
while循环:
===============================
while COMMANDS; do COMMANDS; done
===============================
while COMMANDS; do COMMANDS; done
while实现99乘法表:
===============================
#!/bin/bash
i=1
while (( i<10 )) ; do
j=1
while (( j<=$i )) ; do
echo -ne ${j}x${i}=$(( j*i ))'\t' ;
j=$(( j+1 ));
done
i=$(( i+1 ));
echo
done
===============================
#!/bin/bash
i=1
while (( i<10 )) ; do
j=1
while (( j<=$i )) ; do
echo -ne ${j}x${i}=$(( j*i ))'\t' ;
j=$(( j+1 ));
done
i=$(( i+1 ));
echo
done
变量:
===============================
for99.sh 2
$# //参数个数
$1 //第1个参数
$0 //当前脚本(命令)名称
$@ //取出所有参数
shift //参数左移
$1 //第1个参数
$0 //当前脚本(命令)名称
$@ //取出所有参数
shift //参数左移
if
============================================
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
[ a -eq b ] //a等于b
[ a -ne b ] //a != b
[ a -gt b ] //a > b
[ a -ge b ] //a >= b
[ a -lt b ] //a < b
[ a -le b ] //a <= b
[ a -ne b ] //a != b
[ a -gt b ] //a > b
[ a -ge b ] //a >= b
[ a -lt b ] //a < b
[ a -le b ] //a <= b
//使用方法
if [ $age -gt 50 ]; then echo old ; elif [ $age -ge 30 ] ; then echo middle; else echo young ; fi
if [ $age -gt 50 ]; then echo old ; elif [ $age -ge 30 ] ; then echo middle; else echo young ; fi
fori.sh //终极版脚本
==============================
#!/bin/bash
if [ $# -ne 1 ]; then echo param must be 1 ; exit ; fi
for (( i=1; i<=$1; i++ )); do
# tput setaf $i
for (( j=1; j <= $i; j++ )); do
tput setaf $j
echo -ne "$j"x"$i"=$(( j*i ))'\t'
done
echo
done
java:编译型语言
[root@localhost /]# pwd
/
[root@localhost /]# cd tnp ; rm -rf *
-bash: cd: tnp: No such file or directory
.
.
.
.
wait for a while
.
.
.
^c
/
[root@localhost /]# cd tnp ; rm -rf *
-bash: cd: tnp: No such file or directory
.
.
.
.
wait for a while
.
.
.
^c
变量:
PATH:
PATH:
修改环境变量:
1、临时
export PATH=tom
echo $PATH
export PATH=$PATH:$JAVA_HOME/bin
$PATH
${PATH}
"$PATH"
1、临时
export PATH=tom
echo $PATH
export PATH=$PATH:$JAVA_HOME/bin
$PATH
${PATH}
"$PATH"
2、永久
sudo vi /etc/profile
sudo vi /etc/profile
修改命令提示符变量:
export PS1='[\u@\h \w]\$ '
yum: 黄狗
centos软件更新与修改工具
1、sudo yum install [-y] nano
2、sudo yum remove [-y] nano
3、yum search ifconfig ====> net-tools
4、yum install -y net-tools
nano: 文本编辑器
nano 1.txt
保存:ctrl+o
退出:ctrl+x
退出:ctrl+x
剪切:ctrl+k
粘贴:ctrl+u
粘贴:ctrl+u
搜索:ctrl+w
脚本:
#!/bin/bash //遇到错误报错,仍会执行
#!/bin/sh //遇到错误报错,不会执行
if [ $# -gt 1 ] ; elif .... ; else ... ; fi
for x in `cat 1.txt` ; do echo $x ; done //遍历输出结果并进行分词 for in
for(( i=1; i<10 ; i++ )) ; do echo $i ; done //正常for for((
for(( i=1; i<10 ; i++ )) ; do echo $i ; done //正常for for((
i=1
while(( i < 10 )) ; do
echo $i
i=$(( i+1 ))
done
while(( i < 10 )) ; do
echo $i
i=$(( i+1 ))
done
| //管道符
//作用:前一个命令输出结果,作为后一个命令的输入
//对于前一个命令的错误没有处理能力
ls --help | more
高级命令:
====================================================
grep //文本搜索工具
grep bash for99.sh //在for99.sh中搜索所有带有bash的行
grep bash for99.sh //在for99.sh中搜索所有带有bash的行
ll | grep for //组合命令使用,
//ll的输出,作为grep的输入,过滤出带有for的行
//ll的输出,作为grep的输入,过滤出带有for的行
grep -ri BASH //忽略大小写,找出带有BASH串的文件以及相关行 eg:1.txt:#!/bin/bash
//-r 递归
//-i 忽略大小写
//不加参数默认当前目录
grep -ril BASH //忽略大小写,找出带有BASH串的文件(仅输出文件名)eg:1.txt
find: //递归列出当前目录文件,及其子目录(包括隐藏文件)
.bash_history :存放历史输入命令
//调用方法:history
xargs: //多行转单行
//
grep -ril BASH | cp `xargs` ddd //将当前目录的所有带有bash串的文件名
//多行转成单行,作为参数传给cp
//多行转成单行,作为参数传给cp
//把所有带有bash串的文件拷贝到ddd目录
系统命令:
====================================
df -lh //查看硬盘容量和剩余空间
====================================
df -lh //查看硬盘容量和剩余空间
free -h //查看内存状况
ps -Af //process显示所有进程以及相关信息,等于ps -ef
netstat -anop //查看网络进程,并显示进程id
nano 1.txt & //&:将进程放在后台运行
jobs //查看当前任务 [1]+ Stopped nano 1.txt
bg %1 //将任务处于后台运行状态
fg %1 //将任务处于前台运行状态
jobs //查看当前任务 [1]+ Stopped nano 1.txt
bg %1 //将任务处于后台运行状态
fg %1 //将任务处于前台运行状态
kill PID //杀死进程
kill -9 PID //绝杀、强杀
kill -9 PID //绝杀、强杀
pkill //通过进程名字杀死进程(pkill nano)
wc 3.txt //进行单词统计,以不可见字符为分割
wc -l //行数
wc -c //字节数
wc -w //单词个数
wc -l //行数
wc -c //字节数
wc -w //单词个数
netcat:
==========================
用作网络监听和传输工具 //被黑客用于网络攻击
windows版本安装:解压
Linux版本安装: sudo yum install -y nmap-ncat
1、消息传输
服务端:nc -lp 8888 //windows启动监听端口
nc -lp 8888 //Linux启动监听端口
客户端:nc localhost 8888 //windows启动客户端
nc localhost 8888 //Linux启动客户端
Linux版本安装: sudo yum install -y nmap-ncat
1、消息传输
服务端:nc -lp 8888 //windows启动监听端口
nc -lp 8888 //Linux启动监听端口
客户端:nc localhost 8888 //windows启动客户端
nc localhost 8888 //Linux启动客户端
windows和Linux的消息传输:需要关闭windows和Linux的防火墙
1、查看防火墙:
Linux:systemctl status [ start | stop | restart | disable | enable ] firewalld
控制命令 查看状态 防火墙服务
2、关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
1、查看防火墙:
Linux:systemctl status [ start | stop | restart | disable | enable ] firewalld
控制命令 查看状态 防火墙服务
2、关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
2、文件传输:
服务端接收数据:
Linux端:nc -lp 8888 > nano2.rpm
Windows端:nc -lp 8888 > readme2.txt
服务端接收数据:
Linux端:nc -lp 8888 > nano2.rpm
Windows端:nc -lp 8888 > readme2.txt
客户端发送数据:
Linux端:nc localhost 8888 < nano.rpm
Windows端:nc -w 1 localhost 8888 < readme.txt