Linux 基础命令:

一,查看文件:

1,cat

cat 查看文件内容      #主要用来查看小文件
    -n 显示行号
    -A 显示特殊符号 (如:从win拷贝上来的文件用Linux打开会有特殊符号,造成服务启动失败,使用-A即可查看)

#如有特殊符号使用工具转换即可:
     yum install dos2unix 
     dos2unix filename 
     cat -A filename

2,less/more 分页查看文件内容

less/more 分页查看文件内容   #主要用来查看大文件
     回车  # 下一行
     空格  # 翻页
     q    # 退出
     Ctrl + F  #下翻页
     Ctrl + B  #上翻页

3,head/tail

head 显示文件前十行内容 
   -n 显示前n行内容
   
tail 显示后十行内容
   -n 显示后n行内容
   -f 实时更新

二,查找命令类指令:

1,which

Which filename   查找文件或者目录在哪里和Where is 等价
   -b  只查看二进制文件

2,Where is

3, find

find 查看文件在哪里 默认是在当前目录下查找
   find [搜索范围] [选项]
   -name  filename   #按照文件名查找文件
   -user  username   #查找指定用户名的所有文件
   -size  filesize   #按照指定的文件大小查找文件

三,下载类命令:

1,wget /curl:从互联网上下载资源到本地Linux服务端

(1)wget:
     -o 更改下载存放目录, 改名字
     例如: wget -0 /tmp/centos.repo  http://centos.cn/centos.repo
     
(2)curl: 获取文件内容
     -o 下载

2, rz/sz:win 和 Linux 进行文件交互

(1)rz: 上传文件到Linux
(2)sz:下载文件到win
   ## 注意这俩玩意 只可以是文件,不可目录
   ## 不支持4G文件,不支持续传

四,字符处理类命令:

1,sort : 对一个无序的文本进行数据排序

sort [OPTION]...[FILE]...
   -r 倒序
   -n 按数字排序
   -t 指定分隔符(默认为空格)
   -k 指定第几列,指定几列几字符(指定1,1  3,1  3,3)

2,uniq:去重

#### 注意: 一定要先排序再去重
    uniq 
      -C 计算重复行
练习题:
# 请统计分析如下日志,打印出访问最高前十的IP。  
    分析: 1,先从从文件中将IP提取出来,     #awk '{print $1}' 文件名 > 文件
          2,对IP进行排序
          3,进行去重统计
          4,对统计后的次数进行排序
          5,使用head 提取前十。

3,wc:统计文件行数

wc 
       -l 文件行数
       -c 字母数量
练习题1:
# 过滤出 /etc/passwd 文件中以 nologin 结尾的内容,并统计有多少行。
     分析: 1,过滤出和关键字相关的行。
           2,统计有多少行

4,awk:取列

awk '{print $2}'   #打印出第二列
    awk 'NR == 2'    #取出第二行
       -F':'     #指定分隔符,默认分隔符为空格 :
练习题2:
# 取出网络中的IP地址
 分析: 1,拿到IP地址   ifconfig
       2,过滤出所需数据的这一行,    awk 'NR==2'
       3,然后掐头去尾,取所需数据     awk 'NR==2 {print $2}'
练习题3:
# 打印/etc/passwd 中用户名称及 用户的UID;
  第一列和第三列需以:为分隔符;
  默认awk是以空格为分隔符
  如何自行指定字段分隔符
[root@local ~]# awk -F : '{print $1,$3}' /etc/passwd
练习题4:
#分析如下日志,统计每个域名被访问次数
   cat web.log
   http://www.xueliangwei.com/index.html
   http://www.xueliangwei.com/1.html
   http://www.xueliangwei.com/index.html
   http://www.xueliangwei.com/2.html
   http://www.xueliangwei.com/2.html
   http://www.xueliangwei.com/index.html
   
   分析: 先排序再去重统计。
   [root@local ~]# sort -rt '/' web.log | uniq -c
练习题5:
#将/etc/passwd 文件中第一行的第一列和最后一列进行位置交换
[root@local ~]# awk -F : '{a=$1;$1=$NF;$NF=a;print}' /etc/passwd | tr " " ":"
       #NF 为最后一列
练习题6:
# 将/etc/sysconfig/selinux 文件中的SELINUX=enforcing 替换成 SELINUX=disabled
[root@local ~]# sed -i  's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

五,文件目录操作命令

1,ls

ls : list 显示目录下的内容和相关属性信息
    -l long详细信息
    -a 所有文件,包含隐藏文件
    -r 逆序排序
    -t 按照文件修改时间排序
    -d 显示目录本身信息,而不是目录内容
    -h 带单位显示文件大小
    -Sh 按文件大小进行排序

2,cd

Change directory 改变目录

3,pwd

pwd : Print Working Directory 显示当前工作目录
    -P  显示真实目录 (非软链接)

4,tree 树

以目录结构显示目录下内容,和 ls 的参数一样。

5,mkdir

mkdir : Make directory 创建目录
    -P partents 递归创建目录。

6,touch

touch : 创建空文件 或 改变文件的时间戳属性
   touch {1..100} #批量创建100个文件
   {}   #生成序列{1..100}, {a..z}

7,cp

cp : Copy 复制
  -r 递归复制
  -v 显示复制详细信息
  -f 强制覆盖
  -p 复制文件或目录保持属性不变
  -a 与-r类似
  
  #使用cp -a 相当于将原数据原封不动的拷贝过来,不改变里面的任何信息
  #使用cp -r 拷贝数据,拷贝的结果是生成新的时间戳等信息

8,mv

移动或重命名文件

9,rm

rm 删除文件或目录
   -r 递归
   -f 强制

10,vim

vim : 编辑工具 和 Notepad++ 无异
  #普通模式
    复制 yy
    粘贴 P 或 p
    删除 d 或 D x
    撤销 u
    替换 r 或 R
    进入编辑模式: i ,a ,o ,s
  #编辑模式
    编辑内容,看业务需要
  #末行模式
    保存 w
    退出 q
    搜索 /
    替换 :%s///g
  #视图模式
    可视行:   行
      Shift + v 进入行模式(批量操作)
           d 删除
           y 复制
    可视块:   列
      Ctrl + v 进入块模式
           插入内容: 选中第一列,Shift + i,输入内容,按下ESC。
           删除内容: 选中对应内容,按下 x/d 删除即可。

11, > 和 >>

> 输出重定向 和 >> 追加
  #基本语法:
     ls -l > 文件   #ls -l 查看到的内容 写入到 文件中,覆盖写
     ls -l >> 文件    #ls -l 查看的内容追加到文件的末尾
  #介绍:
    > 输出重定向: 会将原来的文件内容覆盖
    >> 追加: 不会覆盖源文件内容,而是追加到文件尾部

12,ln 创建链接

ln : 创建硬链接
   -s  创建软链接

六,系统命令

1,history

history : 查看历史记录
    -w 保存历史命令到历史文件       #历史文件 .bash_history
    -c 清空命令历史记录        #只是伪清空,真实清空需要删除历史文件内容
    -d 删除历史命令的第N条
    !n  调用之前执行编号为N的指令

2,系统别名:

#alias : 建立别名
     例如: alias net='cat /etc/sysconfig/network-scripts/ifcfg-ens32'
        输入net 即可查看
   #unalias : 取消别名
        unalias net 
   #别名只能再当前bash使用,其他窗口不可使用,关闭窗口即没,临时生效
   #如果要永久使用需要写入配置文件   .bashrc

3,日期

#date : 显示当前日期
   -S 修改日期
   例如: date -S "2020-10-21 11:22:14"
   
#cal : calendar 查看本月日历
   cal 年份  #显示这一年的日历

4,free

### free命令可以显示当前系统内存信息
   · total : 总计物理内存的大小
   · used : 已使用多少
   · free : 可用内存
   · Shared : 进程共享内存总额
   · Buffers/Cached : 磁盘缓存的大小
   
free 
   -h  以人类可读的方式显示内存信息
   -l  显示高低内存的利用率
   -t  显示linux的全部内存
   -s N 表示每隔N秒打印一次内存信息,直到Ctrl + C结束
   -c 4 表示重复打印内存信息4次
   -s 2 -c 4 表示每隔2秒打印一次内存信息,共打印4次