zoukankan      html  css  js  c++  java
  • linux基础

    命令:
    lsb_release -a ----查看版本
    uname -r ----查看内核
    id -u ----查看用户ID
    type ----查看命令是内部命令还是外部命令
    bs ----计算器

    hash ----查看命令的缓存
    hash -d XX --删除XX命令的缓存
    hash -r ----删除全部缓存
    hash -p /usr/bin/hostname hn ----使用hn命令相当于hostname

    别名:
    alias cdnet='cd /etc/sysconfig/network-scripts' --临时生效
    删除别名:
    unalias
    修改.bashrc文件会永久生效(在该用户下),修改/etc/bashrc会全局生效
    命令执行过程(优先级):
    1,别名
    2,内部命令
    3,hash表(外部命令)
    4,$PATH(外部命令)
    内部命令集成在shell中,内部命令比外部命令更快
    . .bashrc/source .bashrc --重新读取配置文件
    sz .bashrc --将.bashrc文件传送给windows系统

    clock ----查看硬件时间
    clock -s ----硬件时间同步给系统时间
    clock -w ----按系统时间同步硬件时间

    ntpdate 172.16.0.1 ----向ntp服务器进行时间同步

    lshw ----列出硬件列表
    mandb ----生产whatis数据库(centos7)
    makewhatis ----生成whatis数据库(centos6)

    hexdump -c/-C /bin/bash --查看二进制文件
    xxd /bin/bash ----xxd也可以看文件

    内部命令:help command --内部命令的帮助信息
    外部命令:command --help --外部命令帮助信息

    man:
    1,用户命令
    2,系统调用
    3,C库调用
    4,设备文件及特殊文件
    5,配置文件格式
    6,游戏
    7,杂项
    8,管理类的命令
    9,Linu内核API
    查看man手册:man [章节] keyword
    列出所有帮助:man -a keyword
    搜索man手册:man -k passwd
    相当于whatis:man -f keyword
    打印man帮助文件的路径:man -w [章节] keyword

    本地登录前界面显示:cat /etc/issue

      man pam_issue 查看各项参数的含义
    远程登录后显示的界面:/etc/moted

      

    修改语言:localectl set-locale LANG=zh_CN.UTF-8
    查看时区:timedatectl list-timezones
    修改时区:timedatectl set-timezone

    查看ASCII表:man ascii

    关机:shutdown -h 1;


    screen命令:先运行screen,在执行命令,执行窗口关闭后,命令继续执行;如果需要返回执行命令界面,执行screen -runlevel


    两个窗口显示内容一致:
    A:screen -S wang --A启动一个screen,名称为wang
    B:screen -s wang --B加入wang,两个显示的内容就会一致
    Crtl+a +d --可以临时退出,screen -x再次加入

    echo -e "a"
    echo -e '[e[32m ok e[0m]' --绿颜色显示ok

    '':单引号,命令和变量都不识别
    ``:识别命令和变量
    "":双引号识别变量,不识别命令

    history
    !10 --执行历史命令第10条
    crtl+r:搜索历史命令,crtl+g,退出搜索
    修改默认历史命令的保存数量:/etc/profile
    HISTTIMEFORMAT="%F %T " ----配置变量后,会显示时间戳
    HISTCONTROL:
    ignoredups,默认忽略重复的命令,连续相同为重复
    ignorespace,忽略所有以空白开通的命令
    ihnoreboth,相当于ignoredups和ignorespace
    erasedups,删除重复命令

    crtl+s:锁定屏幕
    crtl+q:解除锁定


    文件系统:
    /dev:存放设备
    /sys:硬件信息
    新添加磁盘后可以通过该命令扫描磁盘:
    echo '- - -' > /sys/class/scsi_host/host0/scan 或
    echo '- - -' > /sys/class/scsi_host/host2/scan
    /proc:内存中的数据
    /etc
    /etc/DIR_COLORS --修改文件显示的颜色,目录,文件
    /lib:库
    /bin:二进制文件

    touch -- -h --可以创建以-开头的文件
    rm -- -h --可以删除以-开头的文件

    七种文件类型:
    -  普通文件
    d   目录文件
    b  块设备
    c  字符设备
    l  符号链接文件
    p  管道文件pipe
    s  套接字文件scoket

    basename --只取文件名,不取文件夹路径
    dirname --只取文件夹路径,不取文件名

    selinux配置文件:/etc/selinux/config

    systemctl disable firewalld --禁用防火墙,centos7
    chkconfig iptabled off --禁用防火墙,centos6

    文件通配符:
    *:匹配0个或多个
    ?:匹配单个
    [abc]:匹配列表中的任何一个
    [^abc]:匹配列表中字符以外的
    预定义的字符类:man 7 glob

    生成一个昨天日期的文件:touch `date -d '-1 day' +%F`.txt
    生成一个今天日期的文件:touch `date +%F`.log


    复制:cp
    cp grub2.cfg{,.bak} --复制grub2.cfg为grub2.cfg.bak
    cp -av /etc/ /data/backup`date +%F`
    移动和重命名:mv
    批量改文件:rename .log .log.bak *.log --把.log结尾的文件改为.log.bak
    删除:rm

    显示目录树:tree
    创建目录:mkdir
    删除空目录:rmdir

    数据已删除,磁盘空间未释放:
    释放磁盘空间 > /boot/bigfile; rm -f /boot/bigfile

    inode表结构
    Mode
    Owner info
    Size
    Timestamps
    直接块指针 如果一个块大小为4K,可以存放的数据大小为1024*4K,为4M
    间接块指针 如果一个块大小为4K,可以存放的数据大小为1024*1024*4K,为4G
    双重间接块指针 如果一个块大小为4K,可以存放的数据大小为1024*1024*1024*4K,为4T
    三重间接块指针

    硬链接,软链接
    ln a b
    ln -s a a1
    创建软链接如果使用相对路径话,相对的是软链接的路径,不是相对于当前工作目录
    rm -rf a2/ --如果a2为软链接,使用该方法删除,会删除a2所指的文件夹下的文件
    rm -rf a2 --删除软链接a2
    区别:
    1,本质:硬链接是同一个文件,多个名字;软链接是不同的文件
    2,跨分区:硬链接不支持跨分区,软链接可以跨分区
    3,目录:硬链接不支持目录,软链接支持目录
    4,相互关系:硬链接相互独立,软链接有依赖关系
    5,inode标号:硬链接相同,软链接不同
    6,链接数:硬链接删除后少一个链接数,软链接只是少一个文件
    7,路径:硬链接创建时相对路径是相对于当前目录,创建软链接时相对路径是相对于软链接文件的路径
    8,文件类型:硬链接是文件,软链接是一个链接文件

    cp,rm,mv,软链接,硬链接的原理???

    硬链接:
    A是B的硬链接,A和B的inode节点号相同,一个inode节点对应两个不同的文件名,指向同一个文件。
    1,新建一个文件名,并指向文件的inode,一个inode对应多个文件名

    软链接:
    A是B的软链接,A与B的inode节点号不同,指向不同的数据块。但是A的数据块中存放的只是B的路径名。
    1,分配一个inode号,A的block中存放的是B的路径名;因此访问 A 时,会读取文件 B 的路径,进而读取文件 B 的内容

    cp:
    1,分配一个未被使用的inode号,在inode表中新添一个项目(如果是覆盖复制,inode号不变,沿用之前同名的inode号)
    2,在目录中新建一个目录项,并指向inode
    3,把数据复制到block中

    rm:
    1,减少待删除文件名所对应的inode的链接数量,如果链接数变为0,则释放inode,
    同时数据库放到可用空间中(对外变现为已删除,随时可用覆盖。如果没有覆盖还可用恢复;一旦覆盖了,那么删除的数据无法恢复)
    2,删除目录中的目录项

    mv:
    1,在目标文件的目录中新建目录项
    2,删除源文件的目录中的目录项
    3,目标文件名会指向源文件名的inode,因此操作对inode没有影响,对数据的位置也没有影响,
    不移动任何数据指向源文件名的inode,因此操作对inode没有影响,对数据的位置也没有影响,不移动任何数据

    file:查看文件内容

    编辑工具VIM:
    命令模式-->插入模式:i,I,a,A,o,O
    ex模式下:
    !可以在不退出的情况下执行命令
    r! uname -r,可以把uname -r的执行结果写入进去
    /,向下查找,?,向上查找,n,正向查找,N,反向查找
    u,撤销,#u,撤销多次,U,撤销本行的所有修改
    crtl+r:撤销撤销的动作
    查找并替换:
    s/要查找的内容/替换为的内容/修饰符
    分隔符/,也可以为其他字符,@,#
    修饰符:i,忽略大小写;
    g,全局替换,每行只替换第一次出现的;
    gc,全局替换,每次替换前询问

    以二进制方式打开文件,vim -b binaryfile
    扩展命令模式下,利用xxd命令转换为可读的十六进制
    :%!xxd
    扩展命令模式下,利用xxd命令转换回二进制
    :%!xxd -r

    多窗口编辑:
    vim -o file1 file2 --水平分割
    vim -O file1 file2 --垂直分割
    crtl+w +上键,切换到上面的文件编辑
    crtl+w +下键,切换到下面的文件编辑
    :set nu --加行号,临时的
    修改文件家目录下.vimrc ,set nu ,打开文件就会有行号
    :set autoindent,简写set ai,自动缩进,set noai进行取消
    :set list,显示Tab和换行符
    :set ff=unix --将windows文件格式转为linux格式
    :set ff=dos --将linux格式转为windows格式

    vimtutor----vim帮助手册


    三种I/O设备:
    1,标准输入(STDIN) -0
    2,标准输出(STDOUT) -1
    3,标准错误(STDERR) -2
    重定向:
    重定向标准输出:
    uname -r > /data/stdout.log
    echo magedu | passwd --stdin wang > /dev/null
    标准输入重定向:
    bc < bc.txt --将bc.txt文件的内容重定向给bc命令
    标准错误重定向:
    error 2> /data/stderr.log
    ls /data /xxx > stdout.log 2> stderr.log --标准输出和错误输出分开存放
    ls /data /xxx &> stdout.log --标准输出和错误输出到一个文件
    >>,追加
    tr命令:转换或删除字符
    tr [:lower:] [:upper:] < a >> a --将a文件中的小写字母转为大写字母并追加到a
    tr -d ' ' < win1.txt > win2.txt --删除win1.txt中的' '
    tr '0-9' 'a-f' --0-9的内容转为a-f

    管道:
    seq 1 10 | tr ' ' ' '
    seq 2>&1 | tr 'a-z' 'A-Z' --如果seq输出的是错误信息
    tar -cvf - /home | tar -xvf -
    hostname | tee /data.file2.log --既输出hostname,也将内容重定向到file2.log
    uname -r | tee -a /data.file2.log --,-a,追加,不会覆盖之前的内容
    mail -s help root <<EOF
    hello,ni hao !!!
    EOF
    echo {1..100} | tr ' ' '+' | bc --计算1-100的和
    seq -s "+" 100 --计算1-100的和

    用户和组管理:
    更改加密算法:authconfig --passalgo=sha256 --update,默认使用sha512
    openssl rand -base64 9
    mkpasswd -l 12 --生成随机密码

    chage wang --修改shadow文件中wang用户的信息
    vipw == vim /etc/passwd
    vigr == vim /etc/group

    groupadd admin1 --创建普通组
    groupadd -r mysql --创建系统组

    groupmod -n admin2 admin1 --修改组admin1为admin2
    groupdel admin2 --删除

    useradd
    finger wang --查看wang用户的描述信息
    chfn wang --修改wang用户的描述信息
    用户创建相关的文件
    /etc/default/useradd --创建用户时默认读取的文件
    /etc/skel --创建用户,用户家目录下的文件,默认从这个拷贝作为模板
    /etc/login.defs --创建用户时默认指定的信息
    userdel -r wang --删除用户及用户相关文件
    newusers passwd格式文件 --批量创建用户
    echo jack:centos |chpasswd --修改jack用户密码

    su - root -c "cat /etc/shadow" --切换到root身份执行命令,执行后再退回

    echo pwd@123 | passwd --stdin wang --为用户wang修改密码

    gpasswd -a wang g1 --用户加入组g1
    gpasswd -d wang g1 --组g1中删除用户

    chown root:root file1 --修改文件所属用户和用户组
    chmod 644 file1 --修改文件读写权限
    权限对于文件夹:
    r权限,可以列出目录中文件
    w权限,可以在文件夹中创建文件,删除文件
    x权限,可以进入目录

    chmod -R +X /data/ --只给目录下的文件夹加x权限,不给文件加x权限


    特殊权限:
    SUID:作用于二进制的程序
    chmod 4755 file1,加suid权限,执行时继承所属用户的权限
    SGID:二进制程序,或文件夹
    chmod 2755 file1 ,加sgid权限,执行时继承所属组的权限
    SGID用于文件夹时,里面新创建的文件会继承文件夹所属组
    Sticky:针对文件夹
    chmod 1755 file1,要想删文件夹里面的文件,必须是拥有者的权限

    设定文件特定属性
    chattr -i file1 --不能删除,改名,更改
    chattr +a file1 --只能追加,不能修改
    lsattr file1

    默认权限umask,默认022
    文件夹: 777 - umask
    文件: 666 - umask,如果有奇数,则加1,偶数不变
    可以写入.bashrc文件,永久保存

    访问控制列表ACL:
    setfacl -m u:wang:rw file1 --wang用户对file1文件有读写权限
    setfacl -m g:g1:rw file1 --g1组对file1文件有读写权限
    getfacl file1 --查看权限
    setfacl -x u:wang --删除wang的权限
    读取权限顺序:
    1,所有者
    2,ACL权限
    对用户
    对组
    3,other
    mask权限,acl里的
    设置mask权限后,(除文件所有者和other)文件的最该权限不能超过mask权限(acl里面设置的user,group)








  • 相关阅读:
    乐字节-Java8核心特性实战-接口默认方法
    JavaScript简介和发展史,JavaScript组成和开发工具-乐字节
    乐字节-Java8新特性之Base64和重复注解与类型注解
    乐字节-Java8新特性之Date API
    乐字节-Java8新特性之Optional
    乐字节-Java8新特性-接口默认方法之Stream流(下)
    乐字节-Java8新特性之Stream流(上)
    乐字节-Java8新特性之方法引用
    乐字节-Java8新特性之函数式接口
    数字图像处理学习笔记之二 灰度变换与空间滤波
  • 原文地址:https://www.cnblogs.com/wangyanqiang/p/11728169.html
Copyright © 2011-2022 走看看