美文网首页
liux命令行学习

liux命令行学习

作者: id_rsa | 来源:发表于2018-09-22 21:17 被阅读0次

    1.创建普通用户

    创建普通用户
    useradd username 添加用户
    passwd username 为添加的用户添加密码
    userdel 删除用户
    passwd +用户名 (修改 用户密码)

    finger + 用户名 显示用户状态 需要安装(yum install finger)

    id 显示当前用户的 状态

    2.查看 当前系统支持的 shell

    cat /etc/shells
    echo $0 打印的是当前运行的shell名
    bash --version 查看bash的版本信息

    3.修改ssh 配置文件

    vi /etc/ssh/sshd_config

    ls命令

    ls 显示当前目录下非隐藏文件与目录
    ls -lh 可以在列出文件的同时查看文件的大小
    ls -l 相当于(ll)
    -rw 是普通文件
    d d是文件夹

    cd命令

    cd 切换目录
    cd - 回到上一次操作的目录
    . 代表本目录
    .. 代表上一个目录
    -代表前一个工作目录
    ~
    cd ~ 到普通用户的家目录
    cd /root 到家目录

    pwd 可以显示当前路径

    mkdir创建文件

    创建一个目录
    midir test
    连续创建多个目录
    mkdir -p /123/456/789
    rmdir 删除一个目录(只能删除空目录)

    touch 创建文件

    touch 1.txt

    vim 创建文件

    vim 2.txt

    echo 创建文件

    echo hello>3.txt ( > 输出定向)(会自动创建3.txt)

    rm -rf(递归 强制删除) rm -rf / 强制删除根目录

    cp拷贝文件scp远程拷贝文件

    cp 1.txt /var/www/ 将1.txt 拷贝到 /var/www/目录下
    cp /var/www/1.txt ./2.txt
    cp -r 123/ /tmp/aaa 拷贝123 目录下的所有东西
    cp .log ( 匹配所有)可以拷贝所有以 .log 结尾的文件

    scp
    scp 1.txt root@192.168.2.64:/tmp/ 远程拷贝文件
    scp -r 远程拷贝文件夹

    UID GID

    /etc/passwd
    GID 为GroupId,即组ID,用来标识用户组的唯一标识符
    UID 为UserId,即用户ID,用来标识每个用户的唯一标示符
    UID = 0 GID = 0 (ROOT 用户) 可以用root 用户权限 修改普通用户的UID = 0
    (1-499) 系统用户预留的 GID
    (500 - 65535) 普通用户可以分配到的GID

    图片.png

    每个字段具体含义讲解

    用户名(如第一行中的root就是用户名),代表用户账号的字符串。存放的就是该账号的口令,在这里只用一个 ‘x’ 代替,早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到 ‘/etc/shadow’ 中了。代表用户标识号,也叫做uid。0就是root,通常uid的取值范围是0~65535(但实际上已经可以支持到4294967294),0是超级用户(root)的标识号,1~499由系统保留,普通用户的标识号大于等于500。表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的。shell,用户登录后要启动一个进程,作用是用来将用户下达的指令传给内核。而Redhat/CentOS的shell是bash,默认的路径为/bin/bash,如果您想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin。

    /etc/shadow

    图片.png

    用户名,跟/etc/passwd对应。加密密码,加密算法升级为SHA512散列加密算法,如果密码位为“!!”或“*”代表没有密码,不能登录,其shell为/sbin/nologin。密码最后一次修改的时间,以1970年1月1日作为标准时间,每过一天时间戳加1两次密码修改的间隔时间,要过多少天才可以更改密码,默认是0,即不限制密码的有效期,密码多少天后到期,默认为99999。若设置成20,即20天后到期,必须修改密码,不然登录不了系统。密码到期前的警告期限,若设置为6,即到期前6天将通知用户。账号失效宽限期(和第5字段相对比)。若设置为2,到期过后2天后再不修改密码,用户锁定。账号的生命周期(要用时间戳表示),到了指定的期限,账号将失效。保留字段,没有特别意义

    su

    (root) 切换到root 用户( 不能切换到root 的环境变量下 还是在普通用户的环境变量下)
    su - (root) 切换到root 的环境变量下

    sudo (临时赋予普通用户root 权限)

    用户状态

    W 查看当前用户数量
    lastlog 查看每个账号的最近登陆时间
    write 可以在不同终端和用户之间传递信息 (终端之间可以发信息)
    write +用户 +终端

    mesg命令

    用于设置当前终端的写权限,即是否让其他用户向本终端发信息。将mesg设置y时,其他 用户可利用write命令将信息直接显示在您的屏幕上。
    mesg y #允许系统用户将信息直接显示在你的屏幕上
    mesg n #不允许系统用户将信息直接显示在你的屏幕上

    vim编辑器

    :q
    :wq
    :q! 不保存并退出
    :w 保存
    :w other.txt (另存为)
    :w! 强行保存

    对文本内容进行操作

    1 行间跳转

    nG 跳转至第n行(10G跳转到第十行)
    gg 跳到第一行
    G 跳转到最后一行

    2 行内跳转

    0:绝对行首
    ^: 行首的第一个非空白字符
    $: 绝对行尾

    3.删除操作

    x :删除光标所在处的单个单词
    

    删除多个单词

    nx :删除
    10x : 删除十个单词
    

    dd :会把光标所在的哪一行删除

    10dd : 删除十行
    

    多行删除操作, 多行删除通过行号来删除。
    1.vim 打开文件,使用 “ : set nu ” 来显示行号

    1. 输入想要删除的行号进行删除 “ : 10004, 10006d ” 回车删除

    :> 清空

    :>passwd.bak (清空passwd.bak)
    echo "">passwd.bak (清空passwd.bak)

    查找 /单词

    按 n 查找下一个
    按N 查找上一个

    多行注释

    1. 首先使用 Ctrl+V进入块编辑模式
    2. 在行首通过 ↑↓ 按键来选择需要注释的行
    3. 选择完成输入大写的 i ( I ) 进入编辑模式
    4. 输入注释符 #
    5. 按Esc退出块编辑,完成

    取消多行注释的方法为:

    1. 在行首,输入ctrl+V进入块编辑模式
    2. 通过 ↑↓ 键控制取消注释的行
    3. 通过d 或者 x来删除一个字符 #
    4. 完成。

    复制 粘贴

    p :粘贴
    y: 复制
    yy : 复制一行
    yy 10p 复制一次 粘贴十次

    u: 撤销

    nu (10u 撤销十次)

    显示行号或取消显示行号

    (:set nu)
    (:set nonu)

    显示忽略或区分字符大小写

    (:set ic)
    (:set noic)

    基本替换)

    (:s/str1/str2/ 替换当前行第一个str1为str2
    :s/str1/str2/g 替换当前行所有str1为str2

    :n,\$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的 第一个  str1为str2
    :n,\$s/str1/str2/g 替换第 n 行开始到最后一行中每一行    所有   str1为str2
     (n 为数字,若 n 为 .,表示从当前行开始到最后一行)
    
    :%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的 第一个str1为str2
    :%s/str1/str2/g(等同于 :g/str1/s//str2/g) 替换每一行中 所有str1为str2
    

    2. 可以使用#作为分隔符,此时中间出现的 / 不会作为分隔符

    :s#str1/#str2/# 替换当前行第一个str1/ 为str2/
    :%s+/str11/str12/+/str21/str22+ (使用+ 来 替换 / ): /str11/str12/替换成/str21 /str22/

    要将 50 到 100 行之间的 man 改为 MAN,并且一个一个挑选是否需要修改,如何 下达指令?
     :50,100s/man/MAN/gc) 
     (50,100s/man/MAN/g)不一个一个挑选
    

    cat 查看文件内容

    cat + filename (一次性显示整个文件)
    cat > filename (从键盘创建一个文件,只能创建新文件,不能编辑已有文件)
    cat file1 file2 > file (将几个文件合并为一个文件)

    cat -n + filename  (由 1 开始对所有输出的行数编号)
    cat -b + filename  (和 -n 相似,只不过对于空白行不编号)
    cat -T    show-tabs将 TAB 字符显示为 ^I
    -E 或 --show-ends : 在每行结束处显示 $
    cat -A  show-all显示换行  (linux 和Windows 换行符不一样)
    

    重定向 >

    echo "hello" >1.txt

    >  覆盖        
    cat 1.txt > paswd
    >> 追加到文件末尾 
     cat 1.txt >> passwd
     :>1.txt  清空文件 
    

    more 根据窗口的大小进行分页显示,然后还能提示文件的百分比;

    more /etc/profile
    more -dc 显示提示
    more +4 从第四行开始显示
    more -4 每屏显示四行

    head 显示一个文件的内容的前多少行;

    head -n 5 文件前五行
    tail 显示一个文件的内容的最后多少行
    tail -n 文件后五行
    tail -f 查看日志时使用(参数 " -f ",使用此参数时,tail 不会回传结束信号,除非我们去自行去中断它)

    此时要想暂停刷新,使用ctrl+s暂停终端。
    若想继续终端,使用ctrl+q
    若想退出tail命令,直接使用ctrl+c
    

    tail -f /var/log/dracut.log

    grep 匹配文件中的词

    cat 1.txt | grep test (匹配文本中所用的 test )
    cat 1.txt | grep -w "test" 匹配 单独的单词
    grep -c "all" 1.txt 统计出现"all" 的行数
    grep "all" 1.txt 2.txt 4.txt 匹配多个文件中出现的 "all"
    grep -l "all" 1.txt 2.txt 4.txt (-l 不区分大 小写只适用于单字符)

    cat 1.txt | grep -i "ALL" (-i) 忽略大小写

     PS是LINUX下最常用的也是非常强大的进程查看命令
     ps命令将某个进程显示出来
     grep命令是查找
    中间的|是管道命令 是指ps命令与grep同时执行
    检查java 进程是否存在:ps -ef |grep java
    

    ps -ef | grep ssh
    ps -ef | grep ssh | grep -v grep (-v 取反参数)

    seq 用于产生从某个数到另外一个数之间的所有整数

    seq 10 = seq 1 10
    结果是1 2 3 4 5 6 7 8 9 10

    seq 10 | grep "test" -A 5
    seq 10 | grep "test" -C 5
    seq 10 | grep "test" -B 5
    {-A -B -C 后面都跟阿拉伯数字
    -A是显示匹配行和它后面的n行。
    -B是显示匹配行和它前面的n行。
    -C是匹配行和它前后各n行。 }

    last命令用了显示用户登录情况,以下是直接显示固定行数的记录:

    -a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
    -d:将IP地址转换成主机名称;
    -f <记录文件>:指定记录文件。
    -n <显示列数>或-<显示列数>:设置列出名单的显示列数;
    -R:不显示登入系统的主机名称或IP地址;
    -x:显示系统关机,重新开机,以及执行等级的改变等信息。</pre>

    图片.png

    awk 用来匹配列

    last -n 5 | awk '{print $1}' 匹配第一列
    last -n 5 | awk '{print $1,$3}' 匹配第一三列
    cat ss.txt | grep "3306" -B 13 | grep "Nmap" | awk '{print $5}'

    awk -F ':' 空格'‘{print \$1}       -F 用来指定分隔符
    如果只是显示/etc/passwd 的账户和账户对应的shell 而账户与shell之间以tab键分割
    
    cat /etc/passwd | awk -F ':'   '{print \$1"\t"\$7}'
    

    sed 查找/替换 增加/删除

    's/^.*for //g'  把 for 前面的全都替换为 空
    

    cat result.txt | grep "report" | sed 's/^.*for //g'

    显示行号 并 删除(不显示) 2到5行(原文件并没有删除 2 到5行)
    nl /etc/passwd | sed '2,5d'
    nl /etc/passwd | sed '3,$d' 从第三行删除到最后一行
    nl /etc/passwd | sed ‘2d’ 只删除第二行

    nl /etc/passwd | sed '2a drink tea' a:插入 在第二行后面插入一行
    nl /etc/passwd | sed '2i drink tea' 在第二行前面插入一行

    nl /etc/passwd | sed ‘2a drink tea\ 一次性多行插入
    >233333
    >dfsdsggs' 最后加单引号闭合

    nl  显示行号
    -b :指定行号指定的方式,主要有两种:
    -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
    -b t :如果有空行,空的那一行不要列出行号(默认值)
    

    以行为单位的替换与显示

    第二行到第五行替换成 No 2-5 number
    nl /etc/passwd | sed '2,5c No 2-5 number'

    nl /etc/passwd | sed -n '5,7p' 只显示五行到七行

    搜索 替换

    搜索 /etc/paswd 有 /root 关键字 的行
    cat -n test.txt 查看test.txt 全部的行
    cat -n test.txt | sed -n '/root/p'

    执行 ifconfig 命令

    只想要 ifconfig add:后面的ip地址
    ifconfig | grep "Bcast" | awk '{print $2}' | awk -F ":" '{print $2}'
    ifconfig | grep "inet addr" | sed 's/^.addr://g'
    s :代表替换 ^ :匹配行首 $ 匹配行尾
    's/^.
    addr:/(可以为空 也可以写替换的内容)/g'
    's/^.addr://g' 把 addr: 前面的任何字符替换为 空
    s/^.
    addr:/fff/g' 把 addr: 前面的任何字符替换为 ff

    提取ip

    ifconfig | grep "inet addr" | sed 's/^.addr://g' | sed 's/Bcast$:.//g'

    图片.png

    任务和进程 管理

    ps 查看进程
    ps -A (ps -A 只列出所有进程,并不显示环境变量)
    ps -ef (ps -ef 列出所有进程,并显示环境变量,而且显示全格式)
    ps -ef | grep ssh 查看ssh进程是否开启
    ps -u root 查看指定用户启动的进程

    UID 用户id PID进程id PPID子进程id

    ps -l 目前相关PID 信息显示出来
    ps aux 列出目前所有的正在内存当中的程序
    ps -aux | more 可以用 | 管道 和more 连接起来分页查看
    ps -ef > ps001.txt (可以把显示的内容导入到ps001.txt文件)

    top //运维监控利器 (相当于windows 中的任务管理器)
    0 zombie 如果不是0 代表有僵尸进程 (长期挂在那不运行的进程
    0.0%wa 等待输入输出的cpu 时间百分比
    如果出现wa%占用高 I/O 读取出现太慢


    图片.png

    kill
    用于终止后台进程
    kill -l
    列出所有信号名称:


    图片.png

    kill [-s 信号] -s <信息名称或编号>:指定要送出的信息;
    kill -9 1234 (9 强制终止)

    查找结束进程

    先用ps查找进程,然后用kill杀掉


    图片.png

    ps -ef | grep ssh (kail 系统是ssh 服务 centos 系统是 sshd服务)
    ps -ef | grep sshd | grep -v "grep"
    显示进程信号
    ps -ef | grep sshd | grep -v "grep" | awk '{print $2}'


    图片.png

    禁止某些用户用xshell连接
    kill -9 pid
    监控 watch -n 5 五秒查看一次
    watch -n 5 ps -ef | grep sshd

    磁盘管理和文件

    df 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
    df -h (-human-readable:以可读性较高的方式来显示信息)

    du命令是对文件和目录磁盘使用的空间的查看
    (说明:只显示当前目录下面的子目录的目录大小和当前目录的总的大小)
    ls -l 查看文件大小不太准
    du -h /etc
    du -h --max-depth=0
    --max-depth=n表示只深入到第n层目录,此处设置为0,即表示不深入到子目录
    du -h --max-depth = 2 /tmp (显示二级目录)最大目录深度

    fdisk

    fdisk -l 查看硬盘分区信息


    图片.png

    fdisk /dev/sdb
    m
    n 创建分区
    p 创建主分区
    w 保存
    mkfs.ext4 /dev/sdb1 对分区进行格式化
    mount /dev/shb1 image/
    df -h
    mount 磁盘挂载 卸载使用 umount 命令

    kail 系统

    光驱挂载

    cd /media/
    mkdir cdrom
    mount /dev/cdrom ./cdrom/
    cd cdrom/
    卸载umount /media/cdrom/

    移动硬盘挂载u盘
    cd /media/
    mkdir u
    mount /dev/sdb1 ./u
    卸载 umount /media/u/

    相关文章

      网友评论

          本文标题:liux命令行学习

          本文链接:https://www.haomeiwen.com/subject/roonnftx.html