一 grep find  cut 


1.grep 搜索一个字符串

-n   显示行号
-R   递归子目录

"^string"    以string开头的行
"string$"    以string结尾的行
"^string$"   只搜索string的行不包含其他字符

*            当前目录下所有的文件

常用用法:
grep  "string"  *   -n -R
grep  "string"  *   -nR

2.find  寻找一个文件

find  -name  文件名字 (从当前目录开始,在所有的子目录寻找指定的文件)

例如:
find  -name   file.c
find  -name   *file*

3.cut  对子字符串进行分割

-d  指定分割符
-f  指定需要的区域

cut  -d ":" -f  1
cut  -d " " -f  1,2,4


二 cat , head ,tail , more ,less

功能:查看一个文件的内容

1.cat

cat  file  => 将文件的内容输出到终端上显示

2.head

head  file => 从文件头开始显示10行
head -n file => 从文件头开始显示n行

2.tail

tail file => 显示文件的倒数10行
tail -n file => 显示文件的倒数n行

问题:如何显示文件中指定行?
回答:head -line file | tail -1

3.more,less
局部显示,通过 回车键 向下显示

问题:从/etc/passwd文件中提取用户信息,向终端上输出用户的信息,name:uid:gid?
     head -34 /etc/passwd | tail -1 |cut -d ":" -f 1,3,4

问题:如何确定用户所在的行号?
    cat /etc/passwd | cut -d ":" -f 1 (提取用户名)| grep "^linux$" -n | cut -d ":" -f 1

三 对文件或目录打包压缩

gzip 和 bzip2 和 xz 对文件压缩 
gzip  file  => file.gz
bzip2 file  => file.bz2
xz    file  => file.xz

gunzip  bunzip2  unxz  对文件解压

注意:只针对文件操作

--------------------------------------------------
对目录操作

命令:tar

c 创建
x 释放
z gz格式
j bz2格式
J xz格式
v 显示过程
f 指定文件名

1.对目录打包不压缩
  tar -cvf dir.tar  dir

2.对目录打包并且压缩
 tar -czvf dir.tar.gz   dir
 tar -cjvf dir.tar.bz2  dir
 tar -cJvf dir.tar.xz   dir

3.解压操作
 tar -xzvf dir.tar.gz  
 tar -xjvf dir.tar.bz2 
 tar -xJvf dir.tar.xz  

注意:
<1>f必须在组合的最后面
<2>tar -xvf dir.tar.x   自动根据压缩包的格式选择对应的解压方式进行解压


四 文件权限,文件所有者,所在组修改

1.chmod  修改指定文件的权限

chmod  u/g/o/a  +/-  r/w/x  file
chmod  666  file

2.chown  修改文件所有者或所在组
chown  用户名  file
chown  用户名:组名  file

3.chgrp  修改文件所在的组

chgrp  组名  file

问题:如何修改所有文件的权限或所有者或所在组,包括子目录?
回答:chown  root * -R (将所有文件的所有者名都修改成root,包括子目录)

五 文件的链接

(1)软链接
它是一种文件类型,类似windows快捷方式,用来记录目标文件的路径

ln  -s  目标文件(普通文件或目录文件)   软连接文件

(2)硬链接
本质:给文件取一个别名,并没有创建一个新文件,不占用磁盘空间

ln   目标文件    硬连接文件

注意:
(1)硬链接不能对目录操作
(2)硬链接不能跨文件系统
(3)在Linux操作系统中只有当一个文件的打开次数为0并且硬链接数为0,此时表示文件不存在被删除

问题:如何做到文件在关闭的时候,自动删除?
回答:打开文件一次,将这个文件硬件变成0


六 用户管理

(1)adduser  用户名

/etc/passwd  存放系统用户的信息 
/etc/shadow  用户密码
/etc/group   存放系统组的信息
/etc/skel    创建新用户的时候,拷贝这个目录下的配置文件到用户主目录

(2)临时切换用户

su 用户名

(3)退出临时的用户
exit

(4)将用户添加到指定的组

usermod -a -G 组名 用户名

(5)删除一个用户
deluser  用户名 --remove-home(删除用户的时候,删除这个用户的用户主目录)

(6)修改用户密码
sudo passwd  用户名

七 硬盘管理

(1)查看系统中硬盘信息 
sudo fdisk  -l

(2)查看分区的使用情况
sudo df -h

(3)手动挂载自己的设备
挂载:将一个块设备的信息映射到一个指定的目录下
sudo mount /dev/设备文件名   挂载目录

(4)取消挂载的目录
sudo umount  挂载目录

八 网络管理

1.网络基础

(1)IP   : 在网络中主机的唯一标示
(2)组成 : 网络号(主机所在的网络) + 主机号(网络中主机编号)
(3)表示 : 点分十进制
(4)IPv4(32bit,4byte),IPv6(128bit,16byte)
(5)分类
    
         1000 0000
         1011 1111

         1100 0000
         1101 1111
         网络号 + 主机号     最高位规定      第一个字节范围
   A      1     +  3            0            [0-127]
   B      2     +  2            10           [128-191]
   ----------------------------------------------------------
   C      3     +  1            110          [192,223]
           
   容纳的主机数:1byte [0-255]

   192.168.0.0(表示网络)    192.168.0.255(广播地址)
   ---------------------------------------------------------
   D         组播               1110         [224,239]
   E       未使用

   问题:局域网内,主机间通信,遵从什么呢?
   回答:网络号一样,主机号不一样

(6)子网掩码
   获取网络号  => submask  & 目标IP获取网络号,来判定目标主机和当前主机是否在同一个网络

(7)网关
   可以和外网通信的主机ip地址都可以作为网关,习惯用路由器的IP地址作为网关
   如果当前的主机判别目标主机不在同一个网络中,向目标主机发送的数据将发送到网关,由网关将数据包转发外网

(8)DNS
   域名解析,将域名转换成IP地址

   www.baidu.com  -> ip
   
   免费使用的域名服务器:
   8.8.8.8
   114.114.114.114

2.查看IP地址
ipconfig(windows)/ifconfig(linux)

临时修改ip地址
sudo ifconfig eth0  ip地址

3.ping 测试网络是否连接

ping 目标主机IP地址 或 域名

ping 192.168.0.1
ping www.baidu.com
ping 192.168.0.42

九  环境变量

1.查看系统中的环境变量
  env

2.PATH环境变量 
shell在执行一个命令的时候,会从PATH环境变量保存的路径中去搜索,如果搜索到则执行,否则提示命令没有找到

问题:如何让自己的应用程序可以在任何路径下执行?
回答:
(1)将它拷贝到PATH环境变量保存的路径下

(2)将自己的路径添加到环境变量中


3.永久添加环境变量

shell程序在运行的时候,会自动执行如下文件:
/etc/bash.bashrc            针对所有用户有效
用户主目录下的.bashrc文件   只针对当前用户有效

我们只需要将环境变量的修改,添加到这些配置文件中的任何一个中就可以了