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:内核架构
    \r:内核版本号
    \n:主机名
    \l:current terminal
    \t:current time

1.3.2.命令引用与变量替换

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

1.3.3 花括号展开

  • echo file{1,2,3}.

  • echo file

  • echo file

  • echo file

  • echo file

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:]]:任意一个数字或字母
posted @ 2019-09-11 13:32  马老师的笨学生  阅读(217)  评论(0编辑  收藏  举报