linux操作笔记

/
cd /

/home/  /home/centos ~
/root  /root  ~
cd ~
/bin -> /usr/bin
/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:
 chmod u+r 1.txt
 chmod 644 1.txt
 文件权限:
  读:cat
  写:echo hello >> 1.txt
  执行:chmod a-x /usr/bin/ls   which ls
   ls
 文件夹权限:
  读:ls
  写:touch rm
  执行:cd

桥接模式:相当于克隆一台物理主机,网络断开,彼此无法互联。
NAT:   相当于虚拟机搭建的局域网,
仅主机:  和NAT类似,无法访问互联网
 
虚拟机网络配置:
 
 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\网络连接
     双击VMnet8 ===> 属性 ====> Internet协议版本4 ===> 手动修改ip地址即可(192.168.xxx.1)
 
 
Centos配置静态ip:
===================================
 
 原因:保证所有客户机之间的网络连接是固定的
 配置方式:
  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
  2、重启网络适配器
  
  service network restart
  3、在VMware的虚拟机中查看ip地址是否修改成功
  ip addr
  
  4、设置客户机连接外网
  修改文件sudo vi /etc/resolv.conf
  添加
   # DNS地址
   nameserver 192.168.23.2
 
环境变量:
=============================
 操作系统运行的时候,识别的变量
 PATH是命令识别搜寻的目录集合
 Centos提取变量的方式:
  $PATH  √
  "$PATH"  √
  ${PATH}  √
  '$PATH'  ×

 windows中不区分大小写
 Linux中严格区分大小写
 
 修改环境变量:
  临时修改环境变量:
   export PATH=tom
   export PS1='[\u@\h \w]\$ '
  永久修改环境变量(/etc/profile) 系统环境变量
   sudo vi /etc/profile, 在末尾添加以下配置:
   # 配置命令提示符格式
   export PS1='[\u@\h \w]\$ '
   保存退出即可
   使环境变量生效:source /etc/profile
   
   

 Linux会话:
  Linux默认支持多用户、多会话同时访问
  一个会话控制一个终端
  修改变量  ====> 当前会话有效
  修改文件  ====> 永久有效
 使用export控制命令提示符格式
  PS1
  [\u@\h \W]\$
  \u //用户
  \h //主机名
  \W //当前目录
  \$ //提示符
  \w //当前目录的绝对路径
  \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 :将多个文件进行整合,成为单个文件
  tar -cf bcd.tar bbb ccc ddd //将bbb、ccc、ddd归档为bcd.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 //指定文件名称

  tar -xzvf  bcd.tar.gz   //将bcd.tar.gz进行解压
   
  -x extract //抽取,解压
 
在Centos上安装Linux版的JDK:
========================================
  winscp安装位置:
   D:\program\WinSCP

  任务:安装winscp,并将JDK发送到Centos中
  
  Jdk安装:centos用户
   1、创建/soft文件夹
    sudo mkdir /soft
   2、修改/soft文件夹的user
    sudo chown centos:centos /soft
   3、切换到~
    cd ~
   4、将jdk解压到/soft文件夹
    tar -xzvf jdk-8u131-linux-x64.tar.gz -C /soft
   5、给jdk创建符号链接
    ln -s /soft/jdk1.8.0_131 /soft/jdk
   6、配置环境变量
    sudo vi /etc/profile
    添加如下内容:
    # java环境变量
    export JAVA_HOME=/soft/jdk
    export PATH=$PATH:$JAVA_HOME/bin
   7、生效环境变量:两种方式
    source /etc/profile
    . /etc/profile
   8、测试环境变量
    切换到任意目录:输入java -version

  d:目录
  -:普通文件
  l:链接
  ln 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
           如果第2步ok,但是第1步不行 ====> 域名解析问题,修改/etc/resolv.conf文件(参考126行第4步)
           如果1、2均不行,查看centos的ip配置
  
 nano文本编辑器:sudo yum install nano
  
  nano 3.txt //编辑3.txt
  ctrl+o  //保存
  ctrl+x  //退出
  ctrl+k  //剪切
  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
 4、执行脚本
  ./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 (( 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实现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

变量:
=============================== 
 for99.sh 2
 $#  //参数个数
 $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
 //使用方法
 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


 
变量:
 PATH:
 修改环境变量:
  1、临时
   export PATH=tom
   echo $PATH
   export PATH=$PATH:$JAVA_HOME/bin
   
   $PATH
   ${PATH}
   "$PATH"
 
  2、永久
   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+k
 粘贴: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((
 i=1
 while(( i < 10 )) ; do
     echo $i
     i=$(( i+1 ))
 done

| //管道符 
 //作用:前一个命令输出结果,作为后一个命令的输入
 //对于前一个命令的错误没有处理能力
 ls --help | more

高级命令:
====================================================
grep //文本搜索工具
 
 grep bash for99.sh //在for99.sh中搜索所有带有bash的行
 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
      //把所有带有bash串的文件拷贝到ddd目录
 
 
系统命令:
====================================
 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  //将任务处于前台运行状态
 kill PID //杀死进程
 kill -9 PID //绝杀、强杀
 
 pkill  //通过进程名字杀死进程(pkill nano)
 
 wc 3.txt //进行单词统计,以不可见字符为分割
 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启动客户端
  windows和Linux的消息传输:需要关闭windows和Linux的防火墙
   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 localhost 8888 < nano.rpm
    Windows端:nc -w 1 localhost 8888 < readme.txt
 
 
 
 
 
 
 

 

  
 
 
 

 
 
    
 
posted @ 2018-07-25 11:06  失落的黎明  阅读(298)  评论(0编辑  收藏  举报