1.3 linux基础(三)
1.3 linux基础(三)
- 1.3 linux基础(三)
- 1.3.1 cat /etc/issue
- 1.3.2.命令引用与变量替换
- 1.3.3 花括号展开
- 1.3.4 tab键功能(安装一个包)
- 1.3.5命令行历史(history命令)
- 1.3.6 命令history
- 1.3.7 命令历史相关环境变量
- 1.3.8 控制命令历史的记录方式:
- 1.3.9 修改环境变量值:export 变量名="值“
- 1.3.10 bash的快捷键
- 1.3.11 文件系统
- 1.3.12 文件系统分层结构:LSB Linux Standard Base
- 1.3.13 Linux上的应用程序的组成部分
- 1.3.14 绝对和相对路径
- 1.3.15 stat查看文件状态
- 1.3.16 实现光盘自动挂载(即使权限不够也可)
- 1.3.17 录像命令
- 1.3.18 触发一个文件,引起磁盘自动扫描
- 1.3.19 文件名通配glob(文件名称中的字符串通配)
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会给出列表
- 路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名.如果惟一:则直接补全.否则:再次Tab给出列表
- 双击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)文件系统层级标准
-
/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:]]:任意一个数字或字母