• 1.3 linux基础(三)


    1.3 linux基础(三)

    1.3.1 cat /etc/issue

    • 使用man帮助查看issue文件实现登录终端,时间,主机名。

    • 在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间

      whatis issue

      man 5 issue

    • 找到see Also

    • 登录后的信息查看:/etc/motd

      man motd

      man agetty

    • 搜索/hostname 找到与主机名的相关帮助说明

      S:操作系统版本
      m:内核架构
      :内核版本号
      :主机名
      l:current terminal
      :current time

    1.3.2.命令引用与变量替换

    • ''单引号:强引用,不实现变量替换
    • ""双引号:弱引用,变量替换
    • ``反引号:命令引用,相当于echo
    • $(),命令行扩展,把命令中某个子命令替换为其执行结果的过程

    1.3.3 花括号展开

    • echo file{1,2,3}.{txt,log}

    • echo file{1..20..2}

    • echo file{a..z}

    • echo file{00001..20..2}

    • echo file{A..z}

    1.3.4 tab键功能(安装一个包)

    [root@CentOS7 ~]# rpm -qa bash* ##()查看bash的包
    bash-4.2.46-30.el7.x86_64
    bash-completion-2.1-6.el7.   noarch
    [root@CentOS7 ~]# df ##查看光盘所在位置
    /dev/sr0         9176232 9176232         0 100% /run/media/zhu/CentOS 7 x86_64
    [root@CentOS7 ~]# rpm -ivh /run/media/zhu/CentOS 7    x86_64/Packages/bash-completion-2.1-6.el7.noarch.rpm  ##安装这个包
    Preparing...                          ################################# [100%]package bash-completion-1:2.1-6.el7.noarch is already installed
     (依赖两个包bash-completion  bash-completion-extras)
    

    a.命令补全

    内部命令:

    • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令,用户给定的字符串只有一条惟一对应的命令,直接补全.否则,再次Tab会给出列表
    1. 路径补全

    把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名.如果惟一:则直接补全.否则:再次Tab给出列表

    1. 双击Tab键
    • command 2Tab 所有子命令或文件补全

    • string2Tab 以string开头命令

    • /2Tab 显示所有根目录下一级目录,包括隐藏目录

    • ./2Tab 当前目录下子目录,包括隐藏目录

    • *2Tab 当前目录下子目录,不包括隐藏目录

    • ~2Tab 所有用户列表

    • $2Tab 所有变量

    • @2Tab /etc/hosts记录(centos7不支持)

    • =2Tab 相当于ls –A (centos7不支持)

    1.3.5命令行历史(history命令)

    • 保存你输入的命令历史。可以用它来重复执行命令

    • 登录shell时,会读取命令历史文件中记录下的命令~/.bash_history

    • 登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中

    • 重复前一个命令,有4种方法

      • a重复前一个命令使用上方向键,并回车执行(常用)

      • b.按!! 并回车执行

      • c.输入!-1 并回车执行

      • d.按Ctrl+p并回车执行

    • !:0 执行前一条命令(去除参数)

    • Ctrl + n 显示当前历史中的下一条命令,但不执行

    • Ctrl + j 执行当前命令

    • !n 执行history命令输出对应序号n的命令

    [root@CentOS7 ~]# history
    000  ls
    ...
    998  df
    999  rpm -ivh /run/media/zhu/CentOS 7 x86_64/Packages/bash-completion-2.1-6.el7.noarch.rpm 
    1000  rpm -qa bash*##()查看bash的包
    1001  rpm -qa bash* ##()查看bash的包
    1002  history
    1003  rpm -qa bash* ##()查看bash的包
    1004  df
    1005  history 
    [root@CentOS7 ~]# !998
    df
    
    • !-n 执行history历史中倒数第n个命令
    1003  rpm -qa bash*
    1004  df
    1005  history 
    1006  df
    1007  history 
    [root@CentOS7 ~]# !-5
    rpm -qa bash* 
    bash-4.2.46-30.el7.x86_64
    bash-completion-2.1-6.el7.noarch
    
    • !string 重复前一个以“string”开头的命令
    [root@CentOS7 ~]# !d
    df
    
    • !?string 重复前一个包含string的命令

    • !string:p仅打印命令历史,而不执行

    • !$:打印输出 (上一条命令的最后一个参数)的内容

    [root@CentOS7 ~]# cd /etc/sysconfig/network-scripts/
    [root@CentOS7 network-scripts]# !$
    /etc/sysconfig/network-scripts/
    -bash: /etc/sysconfig/network-scripts/: Is a directory
    
    • !*:打印输出(上一条命令的所有参数)的内容
    [root@CentOS7 ~]# ls /etc/sysconfig /etc/profile.d
    /etc/profile.d:
    /etc/sysconfig:
    [root@CentOS7 ~]# echo !*
    echo /etc/sysconfig /etc/profile.d
    /etc/sysconfig /etc/profile.d
    
    • ^string删除上一条命令中的第一个string

    • ^string1^string2将上一条命令中的第一个string1替换为string2

    • !:gs/string1/string2将上一条命令中所有的string1都替换为string2

    使用up(向上)和down(向下)键来上下浏览从前输入的命令

    • 要重新调用前一个命令中最后一个参数

      • !$ 表示

      • Esc, .(点击Esc键后松开,然后点击. 键)

    Alt+ .(按住Alt键的同时点击. 键)部分场合下不可用

    调用历史参数

    • command !^利用上一个命令的第一个参数做cmd的参数
    • command !$ 利用上一个命令的最后一个参数做cmd的参数
    • command !*利用上一个命令的全部参数做cmd的参数
    • command !:n利用上一个命令的第n个参数做cmd的参数
    • command !n:^ 调用第n条命令的第一个参数
    • command !n:$ 调用第n条命令的最后一个参数
    • command !n:m 调用第n条命令的第m个参数
    • command !n:* 调用第n条命令的所有参数
    • command !string:^ 从命令历史中搜索以
    • string 开头的命令,并获取它的第一 个参数
    • command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一 个参数
    • command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n 个参数
    • command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有 参数

    1.3.6 命令history

    • history [-c] [-d offset] [n]

    • history -anrw[filename]

    • history -psarg[arg...]

    • -c: 清空命令历史(常用)

    [root@CentOS7 ~]# history -c
    [root@CentOS7 ~]# history
    17  history
    
    • -d offset: 删除历史中指定的第offset个命令(常用)
    [root@CentOS7 ~]# history
    17  history
    18  cd
    19  cd 
    20  pwd 
    21  ls
    22  history
    [root@CentOS7 ~]# history -d 18
    [root@CentOS7 ~]# history
    17  history
    18  cd 
    19  pwd 
    20  ls
    21  history
    22  history -d 18
    23  history
    
    • n: 显示最近的n条历史

    • a: 追加本次会话新执行的命令历史列表至历史文件(常用)

    [root@CentOS7 ~]# cat .bash_history 
    useradd -u 2002 -g distro -G linux mandriva
    userdel -r mandriva
    ifconfig
    ls -a 
    [root@CentOS7 ~]# history -a 
    [root@CentOS7 ~]# cat .bash_history 
    ls -a
    cat .bash_history 
    history -a ##history -a 被追加到.bash_history 
    
    • -r: 读历史文件附加到历史列表

    • -w: 保存历史列表到指定的历史文件

    • -n: 读历史文件中未读过的行到历史列表

    • -p: 展开历史参数成多行,但不存在历史列表中

    • -s: 展开历史参数成一行,附加在历史列表后

    1.3.7 命令历史相关环境变量

    • HISTSIZE:命令历史记录的条数

    • HISTFILE:指定历史文件,默认为~/.bash_history

    • HISTFILESIZE:命令历史文件记录历史的条数

    • HISTTIMEFORMAT=“%F %T “ 显示时间

    • HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史

    1.3.8 控制命令历史的记录方式:

    • 环境变量:HISTCONTROL

    • ignoredups默认,忽略重复的命令,连续且相同为“重复”

    • ignorespace忽略所有以空白开头的命令

    • ignoreboth相当于ignoredups, ignorespace的组合

    • erasedups删除重复命令

    1.3.9 修改环境变量值:export 变量名="值“

    • 存放在/etc/profile 或~/.bash_profile

    1.3.10 bash的快捷键

    • Ctrl + l清屏,相当于clear命令

    • Ctrl + o执行当前命令,并重新显示本命令

    • Ctrl + s阻止屏幕输出,锁定

    • Ctrl + q允许屏幕输出

    • Ctrl + c终止命令

    • Ctrl + z挂起命令

    • Ctrl + a光标移到命令行首,相当于Home

    • Ctrl + e光标移到命令行尾,相当于End

    • Ctrl + f光标向右移动一个字符

    • Ctrl + b光标向左移动一个字符

    • Alt + f光标向右移动一个单词尾

    • Alt + b光标向左移动一个单词首

    • Ctrl + xx光标在命令行首和光标之间移动

    • Ctrl + u从光标处删除至命令行首

    • Ctrl + k从光标处删除至命令行尾

    • Alt + r 删除当前整行

    1.3.11 文件系统

    • 文件和目录被组织成一个单根倒置树结构

    • 文件系统从根目录下开始,用“/”表示

    • 根文件系统(rootfs):root filesystem

    • 文件名称区分大小写

    • 以.开头的文件为隐藏文件

    • 路径分隔的 /

    • 文件有两类数据:元数据:metadata
      数据:data

    1.3.12 文件系统分层结构:LSB Linux Standard Base

    • inux有一个组织叫LSB定义的发行版基础目录命名法则及功用规定标准

    • FHS: (Filesystem Hierarchy Standard)文件系统层级标准

    • http://www.pathname.com/fhs/

    • /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录,

    • /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序,centos7的/bin相当于/usr/bin,

    • /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序。centos7下的 /sbin 相当于/usr/sbin,是同一文件

    • /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)centos7下的/lib 相当于/usr/lib属同一文件

    • /lib64:专用于x86_64系统上的辅助共享库文件存放位置centos下的/lib64 相当于 /usr/lib64,属同一文件

    • /etc:配置文件目录

    • /home/USERNAME:普通用户家目录

    • /root:管理员的家目录

    • /media:便携式移动设备挂载点

    • /mnt:临时文件系统挂载点

    • /dev:设备文件及特殊文件存储位置

      b: block device,随机访问
      c: character device,线性访问

    • /opt:第三方应用程序的安装位置

    • /srv:系统上运行的服务用到的数据

    • /tmp:临时文件存储位置

    • /usr: universal shared, read-only data

      bin: 保证系统拥有完整功能而提供的应用程序

      sbin:

      lib:32位使用

      lib64:只存在64位系统

      include: C程序的头文件(header files)

      share:结构化独立的数据,例如doc, man等

      local:第三方应用程序的安装位置bin, sbin, lib, lib64, etc, share

    • /var: variable data files

      cache: 应用程序缓存数据目录

      lib: 应用程序状态信息数据

      local:专用于为/usr/local下的应用程序存储可变数据;

      lock: 锁文件

      log: 日志目录及文件

      opt: 专用于为/opt下的应用程序存储可变数据;

      run: 运行中的进程相关数据,通常用于存储进程pid文件

      spool: 应用程序数据池

      tmp: 保存系统两次重启之间产生的临时数据

    • /proc: 用于输出内核与进程信息相关的虚拟文件系统

    • /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

    • /selinux: security enhancedLinux,selinux相关的安全策略等信息的存储位置

    1.3.13 Linux上的应用程序的组成部分

    • 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

    • 库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

    • 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

    • 帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man,/usr/local/share/doc

    1.3.14 绝对和相对路径

    • .表示当前工作目录

    • .. 表示当前工作目录的父目录

    • 绝对路径

      以正斜杠开始,从根目录开始如/etc/sysconfig
      完整的文件的位置路径
      可用于任何想指定一个文件名的时候

    • 相对路径

      不以斜线开始
      指定相对于当前工作目录或某目录的位置 ./ ..
      可以作为一个简短的形式指定一个文件名

    • 基名:basename

    [root@CentOS7 ~]#basename /etc/sysconfig/network
    network
    
    • 目录名:dirname
    [root@centos7 ~]# dirname /etc/sysconfig/network 
    /etc/sysconfig
    

    1.3.15 stat查看文件状态

    • stat
    [root@centos7 ~]# stat /etc/sysconfig/network
      File: ‘/etc/sysconfig/network’
      Size: 22        	Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d	Inode: 67598244    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
        Access: 2018-09-28 22:09:29.513999733 +0800
        Modify: 2018-09-28 22:07:29.009625927 +0800
        Change: 2018-09-28 22:08:09.414624582 +0800
         Birth: -
    
    • 文件:metadata, data

    • 三个时间戳:

      • access time:访问时间,atime,读取文件内容
      • modify time: 修改时间,mtime,改变文件内容(数据)
      • change time: 改变时间, ctime,元数据发生改变

    1.3.16 实现光盘自动挂载(即使权限不够也可)

    • ls /misc/cd

    • 进入光盘(如果不行执行以下三条命令)

    • systemctl status autofs 查看服务启动情况

    • systemctl start autofs 启动服务

    1.3.17 录像命令

    script -t 2> time.log -a cmd.session ##开始录像
    exit ##退出
    scriptreplay time.log  cmd.session ##播放
    

    1.3.18 触发一个文件,引起磁盘自动扫描

    • 添加一块磁盘sdb
    [root@CentOS7 ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0   50G  0 part /
    ├─sda3   8:3    0   50G  0 part /data
    ├─sda4   8:4    0    1K  0 part 
    └─sda5   8:5    0    3G  0 part [SWAP]
    sr0     11:0    1  8.8G  0 rom  /run/media/zhu/CentOS 7 x86_64
    [root@CentOS7 ~]# echo '- - -' > /sys/class/scsi_host/host2,0/scan
    [root@CentOS7 ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0   50G  0 part /
    ├─sda3   8:3    0   50G  0 part /data
    ├─sda4   8:4    0    1K  0 part 
    └─sda5   8:5    0    3G  0 part [SWAP]
    sdb      8:16   0   20G  0 disk 
    sr0     11:0    1  8.8G  0 rom  /run/media/zhu/CentOS 7 x86_64  
    

    1.3.19 文件名通配glob(文件名称中的字符串通配)

    • *: 任意长度的任意字符未限制长度,匹配零个或多个字符

    • ?:任意单个字符,限制长度几个就是几个问号

    • []:匹配指定范围内的任意单个字符[ab]指的是a或b

    • [^]:匹配指定范围以外的任意单个字符

    • [a-z]:任意单个字母(不区分大小写)

    • [0-9]:任意单个数字

    • [0-9a-z]:任意单个字母或数字

    • [0-9]:任意单个数字

    • [0-9a-z]:任意单个字母或数字

    • [:space:]:空白字符

    • [:punct:]:标点符号

    • [:lower:]:小写字母

    • [:upper:]: 大写字母

    • [:alpha:]: 大小写字母

      • [[:alpha:]]:任意一个字母
    • [:digit:]: 数字

      • [[:digit:]]:任意一个数字
    • [:alnum:]: 数字和字母

      • [[:alnum:]]:任意一个数字或字母
  • 相关阅读:
    Go-结构体
    Go-指针
    Go-函数
    pycharm激活码
    python Ajax的使用
    python djangjo完整的实现添加的实例
    python 获取表单的三种方式
    python django ORM
    python django 模板语言循环字典
    python djangjo 文件上传
  • 原文地址:https://www.cnblogs.com/huangsefeizhu/p/11505769.html
Copyright © 2020-2023  润新知