[toc]

一. linux的控制台

  1. linux控制台是什么

    以后学习和工作的主要工具, 接受用户输入的命令
    
  2. 怎么打开

    a. 鼠标
        桌面空白位置, 右键, 打开终端
    b. 快捷键
        默认没有直接打开终端的快捷键, 需要自己去设置
            左键最右上角 --> 选择最下左进入setting --> 左最下的Devices
            --> Keyboard --> 右边最下面的 + 号
            Name: Open Terminal             <-- 快捷键的名字
            Command: /bin/gnome-terminal   <-- 要执行的命令
            Shortcut: ctrl + alt + t        <-- 点击之后按这3个组合建

    3. 把语言环境设置成中文

    locale
        LANG=en_US.UTF-8        <-- 语言环境是英文
    sudo locale -a
        zh_CN.utf8              <-- 查看是否有这个结果,这个是简体中文
        如果没有就安装中文简体包
        sudo yum install kde-l10n-Chinese
    
    sudo vim /etc/locale.conf
        #LANG="en_US.UTF-8"     --> 注释掉
        LANG="zh_CN.UTF8"       --> 改成中文
    
    reboot          --> 重启
    
    重启结束后
        选择以后不再提示 , 保留原来的名字
    
  3. 基础使用

    a. 调整窗口字体大小
        Ctrl + Shift + =        放大字体
        Ctrl + -                缩小字体
    b. 多加一个窗口
        Ctrl + Shift + n        新建一个终端
        Ctrl + Shift + t        在终端里新建一个标签
    c. 其他的基本操作
        Alt + [1 - 9]               标签之间切换
    d. 关闭终端
        exit
    
  4. 终端配置(字体,大小,颜色,透明度)

    右键 --> 配置文件  --> 配置文件首选项
    终端字体推荐使用: dejavu sans mono bold  14
    颜色推荐取消第一个选项, 选择黑底白字
    透明度不推荐超过上方左边方框的右边框
    
  5. 关机和重启

    重启命令: reboot
               init 6
    关机命令: init 0
    
  6. 修改命令提示符

    vim ~/.bashrc
    在最后添加一行:
    
样式1
export PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\w\[\e[0m\]]\\$ "
样式2
export  PS1="\e[35m\][\[email protected]\h \W]\\$\\[\e[0m\]"
        然后输入命令 source ~/.bashrc
                        或
                    . ~/.bashrc

二. linux 基本命令

linux命令严格区分大小写

命令 shell 命令解析器

当前SHELL环境变量:

echo $SHELL
/bin/bash

1. 命令是什么
linux命令是对Linux系统进行管理的命令。
对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,
还是用户等,都是文件,Linux系统管理的命令是它正常运行的核心,与Windows的DOS命令类似。

linux 是一切基于文件的

命令的格式
所有英文书写必须使用半角(宽字符: 光标移上去显示两个位置)
命令和参数严格区分大小写

命令使用语法: 命令名 参数1 参数2 ... 参数n

    

   命令名与参数之间分隔符为空格(自动处理重复分隔符)
 参数之间分隔符为空格(自动处理重复分隔符)
         man mv
                []      可有可无
                ...     前面内容可以有多个(不限个数)
            man ip
            |       多选一
            {}      此符号表示为分组

命令的参数

     处理参数里带空格字符问题: 使用双引号, 单引号, \ 来解决

命令参数的分类:

选项 以-或--开头的参数, 控制命令的功能
长选项 --
可读性高, --后跟单词

短选项 -
便捷性高, -后跟单个字符, 如果跟多个字符代表多个短选项

选项值

无值选项  -l / list
 有值选项  -t utf8 / --to=utf8
 可选值选项 --color=auto / --color
 普通参数(多为路径)  命令处理的源

2. 命令的分类

    linux命令在系统中有两种类型:内部命令和外部命令。
        内部命令                    Shell在内部代码中实现的命令
            man type                查看bash Shell自带的命令

        外部命令                    Shell以外的命令
            用type命令查看内部命令还是外部命令
                type cd         提示cd is a shell builtin则说明是内部命令
                type mount      提示mount is /bin/bash 告诉外部命令的位置

3. 帮助命令

    a. man    注重于应用,也是最常用的帮助方法
        man 的帮助文档存放的位置
            /usr/share/man
        man 的帮助文档分类
            man 1 ls            查看ls命令的第一节手册
            1                   普通用户命令
            2                   系统核心调用的函数工具
            3                   常用的一些函数与函数库
            4                   设备文件的说明
            5                   配置文件与一些其它格式的文件
            6                   游戏相关
            7                   网络协议相关
            8                   管理员可操作的命令
            9                   系统内核相关的文件
        在 man 帮助里:
            /c                  搜索c关键字
            n                   下一个关键字
            N                   上一个关键字
            q                   退出

    b. info    注重于介绍,不常用
        帮助文档存放位置
            /usr/share/info
        info    进入页面
        进入帮助界面
            ?                   info命令帮助
            空格键              向下翻一页
            tab                 在结点之间移动,有结点的地方通常会以*显示,将光标移动结点位置按回车可进入结点
            b                   移动光标到该文章的第一个结点处
            e                   移动光标到该文章的最后一个结点处
            n                   前往下一个info页
            p                   前往上一个info页
            u                   向上移动一层
            s(/)                在info里搜索
            h                   显示帮助菜单
            q                   退出

4. 目录命令

    pwd                         查看当前所在目录的路径
    cd                          切换当前所在目录
        是change directory的简写
        绝对路径
            cd /root/Desktop    指从根目录开始的路径
        相对路径
            cd root/            指以当前目录开始的路径
        .                       代表当前所在目录
        ..                      代表当前的父目录
        -                       代表上一次所在的目录
        ~                       代表当前登录用户的家目录
        /                       代表根目录
  
    mkdir                       创建一个目录
        在当前目录下创建test目录
            mkdir test
            mkdir ./test
            cd ~

        在根目录下tmp目录里创建test目录
            mkdir /tmp/test
        在当前目录下创建file1到file100的目录
            mkdir file1  mkdir file2 ...  mkdir file100
                或者
               mkdir file{1..100}
字母也是可以的   mkdir file{a..z}
        在当前目录下创建file{1..100}目录,需要用双引号引起来
            mkdir "file{1..100}"
        
       在当前目录下创建a/b/c目录树 (PPP1)
            mkdir -p a/b/c
      在当前目录创建feile1到file100的目录树
      mkdir file{1..100}/nginx/ssl  -p
      mkdir file/cq{a..z}/nginx/ssl   -p








    rmdir                       只能删除空目录
        rmdir test              删除当前目录的test目录,test必须是空目录
        rmdir /tmp/test         删除/tmp下的test目录
        rmdir file{1..100}      删除file1到file100的目录
        rmdir "file{1..100}"    删除file{1..100}目录

5. 文件命令

 ls                          列出当前文件夹下的所有文件和文件夹
     ls -a                   列出当前目录下所有文件,包含隐藏文件
     ls -l                   以详细列表形式列出当前目录下的所有文件
     ls -R                   列出当前目录所有文件,包含子目录内所有文件
        
  文件类型:
       c        字符设备文件
                  端口的接口设备
       b           块设备
                    用来挂载硬盘分区, 一般不自己去创建
       l         链接文件
             ln -s 源文件 链接文件 软连接(指向文件系统的节点)
             ln 源文件 链接文件   硬链接(指向硬盘位置)
       s         socket文件
               这类文件经常用于网络数据连接,可以启动一个程序来监听客户端
               客户端就可以通过socket文件来进行数据通信
       p         管道文件
          解决进程之间的通信

       d           目录文件
       -           普通文件

-rwxr-xr-x. 1 root root 2475 9月   8 18:10 iptables.sh
                -           文件类型
                rwxr-xr-x   文件权限
                1           文件的链接数
                root        文件的所属用户
                root        文件的所属用户组
                2457        文件的大小
                9月 8 18:10    文件的最后修改时间
                iptables.sh   文件名

      常用搭配:
          显示所有文件包括隐藏文件列表
            ls -al
          显示按日期时间排序后的文件列表
            ls -lt
          显示计算大小为KB/m/G为单位的文件列表
            ls -lh
          显示当前文件夹详细信息
            ls -ld

  touch                       新建文件
          创建file空文件,如果file存在则更新file的存取和修改时间,
            但是不会覆盖里面的内容
            touch file
          如果file不存在,则不创建文件
            touch -c file
          更新file时间和file1相同
            touch -r file1 file
          更新file的存取时间
            touch -a file
          更新file的修改时间
            touch -m file
          同时创建file2,file3,file4三个空文件
            touch file2 file3 file4
            touch file{2,3,4}
          创建file{2,3,4}一个空文件
            touch "file{2,3,4}"

    cp                          复制文件/文件夹
          把file文件复制到dirs目录下
            cp file dirs
          把dir1目录复制到dir2目录下
            cp dir1 dir2 -r
          把file文件复制到dirs目录下,保留文件的原来属性
            cp -a file dir2
          强制复制文件夹,不提示
            cp -rf file  dir2
          把dir1目录复制到dir2目录下,并且显示复制过程
            cp -rvf dir1 dir2
          把file1..6复制到dir2目录下,直接覆盖不提示
            \cp -a file* dir2  
        
        选项:
            -a      保留文件的原来属性
            -r      复制目录
            -i      提示是否覆盖, 默认直接覆盖
            -u      更新, 比对时间,源文件比目标文件的时间新才会覆盖
            -v      显示复制进度
            -t      指定目标路径(应用复制多个文件或目录的场景)
            -f      不提示,直接执行
            
    mv                 移动和重命名文件(PPP3)
      把file1..6移动到dir2目录下,直接覆盖不提示
           \mv file* dir2/
      把file文件移动到dirs目录下
            mv file dirs/
      把file文件重命名为file2
            mv file file2
     把dir1目录下所有文件移动到dir2目录下,并且根据文件时间来决定要不要移动
            mv -u dir1/* dir2/

rename 批量文件重命名

ls
file1.conf file2.conf file3.conf file4.conf file5.conf file6.conf

rename .conf .html *.conf

ls
file1.html  file2.html  file3.html  file4.html  file5.html  file6.html

把所有后缀以.conf的文件名里出现.conf就改成.html(PPP4)
只有当前目录下面的文件名中有.conf才会去改变名字, 若出现多个,
命令执行一次只会改变一个.conf

    rm                          删除文件[夹]
         删除所有file开头的文件夹
            rm file* -rf
         删除所有.txt结尾的文件
            rm *.txt
         提示是否确定删除
            rm -i file
         不提示,强行删除
            rm -f file
         删除目录
            rm -r file
        删除文件夹的软链接而不删除源文件

        常用参数 rfv

6. 文件阅读命令

    cat                         文件查看命令
        查看/etc/passwd内容
            cat /etc/passwd
        查看/etc/passwd内容并且编号
            cat -n /etc/passwd
        查看/etc/passwd内容并且给非空行编号
            cat -b /etc/passwd
        碰到多个连续的空行, 合并成一个空行
            cat -s /etc/passwd

    head
        查看/etc/passwd前10行内容
            head /etc/passwd
        查看/etc/passwd前30行内容
            head -n 30 /etc/passwd
        查看/etc/passwd前30个字符的内容
            head -c 30 /etc/passwd

    tail
        查看/etc/passwd后10行内容
            tail /etc/passwd
        查看/etc/passwd后30行内容
            tail -n 30 /etc/passwd
        查看/etc/passwd后30个字符的内容
            tail -c 30 /etc/passwd
        实时查看/etc/passwd文件内容
            tail -f /var/log/nginx/access.log


​ less
​ 查看/etc/passwd文件内容,和more不同的是可以上下滚动
​ less /etc/passwd
​ 显示每行的行号
​ less -N /etc/passwd
​ 显示类似more的百分比
​ less -m /etc/passwd

​ 按q退出

    more
        逐屏查看/etc/passwd文件内容
            more /etc/passwd

7. 重定向 (实用)

    标准输入    代码 0      默认设备为键盘
    标准输出    代码 1      默认设备为屏幕
    错误输出    代码 2      默认设备为屏幕

      标准正确输出重定向到output.txt
        ls -hl /etc/passwd > output.txt
      标准正确输出追加重定向到output.txt
        ls -hl /etc/passwd >> output.txt
      标准错误输出重定向到error.txt
        ls -hl ddd 2> error.txt
      标准错误输出重定向到黑洞
        ls -hl dddd 2> /dev/null
      标准正确输出和标准错误输出全都重定向到黑洞
        ls ddddd /etc/passwd &> /dev/null

    > 和 >> 的区别
        >       输出重定向, 清空文件再写
        >>      输出重定向,从最后的一个有效字符的下一行开始拼接文件, 追加
 
    <       输入重定向, 后面跟文件,将文件内容作为前面命令的标准输入
        wc -l < /etc/passwd         把/etc/passwd作为wc -l的输入源

    <<      输入重定向, 后面跟结束标识符, 将结束标识符前面内容作为命令的标准输入
        wc -l << EOF
        < hello world
        < hello linux
        < bye
        < EOF
            把标识符EOF之间的内容作为前面命令的输入, 第一个标识符和<<
            之间要有空格(可以不加, 但是为了美观, 加上去),
            第二个标识符那一行的前面不能有任何的有效字符,
            后面也不能加任何的有效字符(换行符除外)
            
   <<<     输入重定向, 后面跟字符串,将字符串作为命令的标准输入

cat <<< "hello world" 把hello world字符串作为cat的输入源
cat <<< "hello word" > hallo.txt 把hello world 输入到hello.txt文件里面

wc -l <<< "hello world" 把hello world字符串作为wc -l的输入源

            假如后面的输入源字符串需要有多行的话,就需要在字符串的外面加""
            wc -l <<< "hello world
            > hello linux
            > hello shell
            > "
                后面的"只要一出现就会结束输入,和标识符的规则不一样

8. 管道(PPP7)

    cat /etc/passwd | less          | 之前的命令执行的结果做|后命令的参数

    格式: 命令1 | 命令2 | 命令3 ... | 命令n
        将管道符号前面命令标准输出重定向管道符号后面命令标准输入
       多重管道能一直起作用的前提是输入和输出不能断
        cat /etc/passwd | wc -l

三. Linux文件系统目录介绍

/                           根目录,系统所有的目录都是从根目录开始
/bin                        存放的是系统可执行的二进制文件,即常用命令
/sbin                       存放的是管理员可执行的二进制文件
/home                       普通用户的家目录
/root                       超级管理员root用户的家目录
/boot                       系统启动时引导目录
/etc                        存放系统配置文件
/dev                        存放设备文件
/var                        存放在执行过程中经常变化的数据,例如日志、邮件等
/lib                        存放系统使用的函数库,程序运行过程中会调用这些库
/usr                        存放用户安装的一些软件的各种目录
/tmp                        临时目录,存放各程序执行时产生临时文件
/lost+found                 存放分区出现问题时的一些遗失片断,只有在单独分区里才会存在
/proc                       虚拟目录,它实时记录当前系统的各种状态
/opt                        存放扩展软件包的地方
/sys                        Linux设备模型文件夹,用于统一表示和操作计算机上的所有设备
/run                        centos自动挂载的文件夹
/media                      默认用来挂载光盘等介质目录
/mnt                        默认也是用来挂载
/misc                       默认用于autofs挂载目录

四. VIM编辑器的使用

vi  vim (增强版vi,现在各版本的linux都带有vim)
安装/升级vim
    sudo yum install vim

三种模式
    普通模式(default)        快捷操作(定位, 删除 替换 查找)
        可视模式

    编辑模式
        插入模式
        替换模式

    命令行模式      文档操作/扩展操作

vim newfile  新建一vim空白文件进行编辑
普通模式切换编辑模式: i/a/A/I/s/S/R/o/O/C
编辑模式切换普通模式: ESC
普通模式切换命令行模式: 冒号(:)
命令行模式切换普通模式: ESC

普通模式
定位
    h/j/k/l             左下上右
    ctrl + d/u/f/b      换页
    b/w/e/B/W/E         单词定位
    0 零                  将光标定位到开头位置
    ^                   将光标定位到开头有效字符位置
    $                   将光标定位到行尾
    G                   将光标定位到最后一行
    gg                  将光标定位到第一行

命令行模式
    :10                 定位到第10行
    :set nu             显示行号
    :set nonu           不显示行号
    
  vim 1_passwd +21    在打开文件的时候就跳到文件的21行

配置文件(配置vim初始功能)
    全局配置    /etc/vimrc
    用户配置    ~/.vimrc

    将以下内容写入配置文件, 重启vim即可实现

        set nu

选取(可视模式)
    v           按字符进行选取
    V           按行进行选取
    ctrl + v    按列进行选取

    ggVG        全选

查找
    /                   查找
        /hello 按回车进行高亮查找关键词
        n/N     进行上下定位查找关键词
        进入命令行输入 noh 取消高亮
删除
    s       删除一个字符进入插入模式
    S       删除一行进入插入模式
    dd      删除一行
    x       删除一个字符


撤消/重做
    u           撤消
    ctrl + r    重做撤消操作

复制/剪切/粘贴
    yy      复制一行
    yw      复制一个单词(要求光标在单词开头)
    p       粘贴到光标后面
    P       粘贴到光标前面

数字前缀
    10yy        复制10行
    10dd        删除10行

命令行操作
    :w      保存
    :q      退出
    :wq     保存退出
    :w!     强制保存
    :q!     强制退出
    :qall   退出所有编辑文档
    :w /tmp/new.file    另存为到/tmp/new.file
    :e /etc/passwd  打开文件
        缓存区管理
            列表缓存区 :ls
            切换缓存区 :bn / :bp

        标签管理
            新建标签 :tabnew /tmp/hello.txt
            切换标签 gt/gT

    :r  1.txt   将1.txt内容导入本编辑文档
    :r! ls      将ls的标准输出导入本编辑文档

    :vsp /tmp/hello.txt 竖向分屏编辑
    :sp /tmp/hello.txt  横向分屏编辑
        ctrl + w + w

替换
    :1,$s/root/ROOT/g
    :10,20s/root/ROOT/g
    :%s/k365f/k365h/g 
先选取再按:s/root/ROOT/g

openoffice
    办公软件
eog
    图片查看器
gedit
    文本编辑器
evince
    PDF浏览器
cal
    日历
date                日期时间
    date -s     修改日期和时间
    date -d     计算日期
    date +"%Y"      查看当前年
    date +"%F"      查看当前年月日
    date + "%m"      查看当前月
    date + "%d"      查看当前日

bc                  命令行计算器
yum insstall -y bc
    bc
    bc <<< "(5+4)/3"
    bc <<< "scale=3;10/3"
    bc <<< "ibase=2;101"
    bc <<< "ibase=2;obase=16;1010"

echo                输出命令(脚本)
    echo "hello world"
    echo -e "hello \nworld\n"
    echo -n "hello world"       取消换行输出
    echo "$HOME"                输出变量值

read                输入命令(脚本)
    read
        如果没有指定变量,则写入REPLY变量
            echo $REPLY

    read v
        获取用户输入的内容
            echo $v

openssl             加密

/dev/null           空洞文件, 用于写
/dev/zero           用于读,永久都是二进制的零
/dev/urandom        用于读,永久都是随机二进制

五. tmux 开源的终端管理工具

安装:
    centos7:
        sudo yum install tmux -y

    配置文件 ~/.tmux.conf

    sudo mount 192.168.0.89:/soul /mnt
    cd /mnt/software
    cp tmux.conf ~/.tmux.conf

会话  -  解决客户端连接断开, 重连能还原最后操作界面
    创建会话
        在独立bash Shell中输入: tmux
            或
        tmux new-session -s 会话名称

    查看会话列表
        tmux list-session

    分离会话(会话挂起)
        在tmux终端内:
            ctrl + b   d
                或
            ctrl + b   D

    唤醒会话
        tmux attach -t 会话名称

    选择会话
        ctrl + b s
            通过上下键进行按回车进行选择

    关闭会话
        将tmux所有终端退出,即关闭会话

        tmux kill-session -t 会话名称

    重命名会话名称
        ctrl + b $

窗口   一个会话当中至少要有一个窗口(标签显示)
    创建窗口
        ctrl + b c

    关闭窗口
        退出bash即关闭窗口
            或
        ctrl + b &

    列表窗口
        ctrl + b w

    选择窗口
        选择第一个窗口: ctrl + b 0
        选择第二个窗口: ctrl + b 1
        ...
        定制化的配置
            alt + 1 ~ 9

窗格    一个窗口至少要有一个窗格(分屏显示)
    创建窗格
        竖分屏 ctrl + b |
        横分屏 ctrl + b -

    关闭窗格
        ctrl + b x

    选择窗格(切换)
        ctrl + b h/j/k/l


滚动窗口(剪切板操作)
    复制:
        进入vi操作复制模式
            ctrl + b y

            在复制模式下按v选取再按y可进行复制(退出复制模式)

    粘贴:
        ctrl + b p

    依赖配置及xclip工具
        sudo yum install xclip -y

    ip a s
    ctrl + b y
    V
    y
    ctrl + b p


简单挂载

查看192.168.0.183有哪些共享文件夹
    showmount -e 192.168.0.183
把192.168.0.89下面的/soul 挂在到本机的/mnt目录
    sudo mount 192.168.0.183:/soul /mnt
切换工作目录到/mnt
    cd /mnt
ls
cd linux/2_linuxBasics
ls
vi 2_detail.txt

取消挂载
    切换工作目录到根
        cd /
    取消挂载
        sudo umount /mnt

    强制取消挂载
        sudo umount /mnt -l
ntfs U盘挂载
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sudo yum install ntfs-3g -y





Last modification:December 9th, 2019 at 02:30 am
如果觉得我的文章对你有用,请随意赞赏