Linux基础篇学习——Linux系统基础管理与维护

Linux bash基础特性

1.补全

命令补全

以给定的字符串开头,敲击tab键,如果能够唯一的标识一个命令程序文件,则直接补全;如果不能唯一标识,则需要再次敲击tab键,给出列表

路径补全

在给定的起始路径下,以对应路径下的打头的字符串来逐一匹配起始路径下的每个文件


2.快捷键

快捷键 含义
Ctrl+c 终止前台运行的程序
Ctrl+d 退出
Ctrl+l 清屏
Ctrl+a 光标移动的命令行行首
Ctrl+e 光标移动的命令行行尾
Ctrl+u 删除光标之前的所有字符
Ctrl+k 删除光标之后的所有的字符
Ctrl+r 搜索历史命令

3.命令历史

HISTSIZE shell进程中可以保留的命令历史条数
HISTFILE 持久保存的命令历史文件
HISTFILESIZE 在.bash_history中保存命令的记录总数

退出shell时保存历史命令到历史文件.bash_history

[root@localhost ~]# echo $HISTFILE
/root/.bash_history
[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# echo $HISTFILESIZE
1000

命令语法

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]

OPTION

history # 列出最近的#条命令
-c 清空命令历史
-d offset 删除指定位置的命令历史
-r 从文件.bash_history中读取命令历史至命令历史列表中
-w 将命令历史列表写入到命令历史文件.bash_history中

调用命令历史列表中的命令

!# 再次执行命令历史列表中的第#条命令
!! 执行上一条命令
!STRING 再一次执行命令历史列表中最近一个以string开头的命令

调用上一条命令的最后一个参数
 快捷键 ESC+.
 字符串 !$

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# vim 【Esc+.】	;会自动将上一条命令的参数补充
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# vim !$

控制命令历史记录的方式

环境变量

HISTCONTROL 控制命令历史记录的变量
igonredups 忽略重复命令
igonrespace 忽略以空白字符开头的命令
igonreboth 以上两者同时生效
修改变量的值 NAME=‘VALUE’

[root@localhost ~]# echo $HISTCONTROL
ignoredups
[root@localhost ~]# HISTCONTROL='ignorespace'
[root@localhost ~]# echo $HISTCONTROL
ignorespace

history历史命令列表加时间戳

[root@zycentos7 ~]# vim /etc/profile
export HISTTIMEFORMAT="%F %T `whoami` "
[root@zycentos7 ~]# source /etc/profile

history实时追踪,用户行为审计

[root@zycentos7 ~]# vim /etc/profile
export HISTTIMEFORMAT="%F %T `whoami` "
if [ ! -d /usr/local/domob/record/${LOGNAME} ]
then
mkdir -p /usr/local/domob/record/${LOGNAME}
chmod 300 /usr/local/domob/record/${LOGNAME}
fi
export HISTORY_FILE="/usr/local/domob/record/${LOGNAME}/.bash_history"
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
[root@zycentos7 ~]# chmod 777 /usr/local/domob/record/	;设置目录权限
[root@zycentos7 ~]# chmod +t /usr/local/domob/record/	;+t表示
实时追踪:
[root@zycentos7 ~]# tail -f /usr/local/domob/record/root/.bash_history
[root@zycentos7 ~]# tail -f /usr/local/domob/record/zhao/.bash_history

4.Linux命令别名

查看当前系统中的命令别名 alias

[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

设置别名

alias NAME='command'
[root@localhost ~]# alias net='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost ~]# alias|grep net
alias net='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

取消别名

unalias NAME
永久别名设置

1.root每次登入就自动生效别名
把别名加在 /etc/profile~/.bashrc 中, source ~/.bashrc
2.每一位用户都生效别名,把别名加在 /etc/bashrc 最后面,然后 source /etc/bashrc


5.变量

本地变量
局部变量
环境变量


6.特殊重要符号

| 管道

把前一个命令的输出当做下一个命令的输入

[root@localhost ~]# a=10|echo $a

[root@localhost ~]#

a=10无结果,a没有定义过

. 当前目录

… 上一级目录

;分隔多条命令

`` 反单引号,命令替换

‘’ 强引用,不做命令替换

[root@localhost ~]# echo '$HISTSIZE'
$HISTSIZE

“” 弱引用,可以实现变量和命令的替换

[root@localhost ~]# echo "$HISTSIZE"
1000

{} 扩展符

示例1

[root@localhost ~]# touch test.tar.gz{,.bak}
[root@localhost ~]# ll test.tar.gz{,.bak}
-rw-r--r--. 1 root root 0 Nov  6 18:56 test.tar.gz
-rw-r--r--. 1 root root 0 Nov  6 18:56 test.tar.gz.bak

示例2

[root@localhost ~]# for i in {1..5};do echo "this is test$i" > test$i;done
[root@localhost ~]# ll test*
-rw-r--r--. 1 root root      14 Nov  6 18:57 test1
-rw-r--r--. 1 root root      14 Nov  6 18:57 test2
-rw-r--r--. 1 root root      14 Nov  6 18:57 test3
-rw-r--r--. 1 root root      14 Nov  6 18:57 test4
-rw-r--r--. 1 root root      14 Nov  6 18:57 test5

* 通配


7.输入输出重定向

详情请点击查看


8.命令行通配符

详情请点击查看


9.常见系统管理类命令

详情请点击查看

发布了43 篇原创文章 · 获赞 30 · 访问量 5932

猜你喜欢

转载自blog.csdn.net/qq_42049496/article/details/103169785