BASH
(程序或服务(系统调用接口(内核(硬件)内核)系统调用接口)程序或服务)
图形化
服务器终端切换
crl+alt+F1...F6
虚拟机终端切换
crl+shift+F1...F6
CLI
服务器终端切换
alt+F1...F6
管理方式
字符界面
shell
bash(默认)
图形化界面
gnome
kde
查看当前系统指出的shell
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
[root@localhost ~]#
编辑:
[root@localhost ~]#PS1=''
whoami
root
pwd
/root
PS1='[\u]'
[root]PS1='[\u@]'
[root@]PS1='[\u@\h]'
[root@localhost]PS1='[\u@\h \W]'
[root@localhost ~]PS1='[\u@\h \W]\$'
[root@localhost ~]#
快捷键
Ctrl + A //光标跳转至则正在输入的命令行首部
Ctrl + E //光标跳转至则正在输入的命令行尾部
Ctrl + C //终止前台运行的程序
Ctrl + D //在shell中,Ctrl-d表示退出当前shell
Ctrl + Z //将任务暂停,挂至后台
Ctrl + L //清屏,等同clear命令
Ctrl + K //删除光标到末行的所有字符
Ctrl + U //删除光标到首行的所有字符
Ctrl + R //搜索历史命令,利用关键字
history
查看历史命令
-w保存命令历史到历史文件
-c 清空命令历史记录,不会清空文件
-d 删除命令历史的第N条行
!可以调用之前的命令
!num
调用第num行命令
!!
执行上一行命令
!cmd
调用距离当前最近以cmd开头的命令
alias
设置命令别名
[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde
给命令设置别名 :
[root@localhost ~]# alias lx=ls
[root@localhost ~]# lx
anaconda-ks.cfg
取消别名
unalias name
备注:
alias 只对当前环境临时生效
如需永久生效,要将定义的别名命令写入登录配置文件
命令流程
当我们执行一个命令,整个执行流程
1、判断名是否通过绝对路径执行
2、判断是否存在别名
3、判断用户输入的是内部命令还是外部命令
内部命令:shell自带的命令
外部命令:安装软件得来的
4、内部命令直接执行,外部命令检测是否存在缓存
5、检测PATH路径,有执行,无报错
缓存
缓存命令所在位置
[root@localhost ~]#hash
命中 命令
2 /usr/sbin/ifconfig
8 /usr/bin/date
6 /usr/bin/cat
2 /usr/bin/touch
已经缓存的命令,如果移动位置会到原来位置无法找到该命令
删除缓存过的命令立即执行
[root@localhost ~]#hash -d ifconfig
[root@localhost ~]#ifconfig
清除缓存
[root@localhost ~]#hash -r
命令缓存hash需要注意如下情况
1、如果执行外部命令就会对该命令进行缓存
2、如何将命令移动
a、使用绝对路径执行
b、删除hash表的缓存指令
总结:
当我们执行一个ping命令后,整个流程
1、检查执行的是否是绝对路径
2、检查该ping命令是否又别名
3、检查是内否为内外部命令
4、内部命令直接执行,
5、外部命令检测是否存在缓存,如果没有检查PATH变量
6、检查PATH路径知道查到该命令然后执行
7、如果没有查到,返回错误
路径展开
路径展开用花括号包含{目录,目录}逗号分隔这样花括号里的内容会被展开形成列表
[root@localhost ~]#mkdir /tmp/{zz,yy}/a/b -pv
mkdir: 已创建目录 "/tmp/zz"
mkdir: 已创建目录 "/tmp/zz/a"
mkdir: 已创建目录 "/tmp/zz/a/b"
mkdir: 已创建目录 "/tmp/yy"
mkdir: 已创建目录 "/tmp/yy/a"
mkdir: 已创建目录 "/tmp/yy/a/b"
[root@localhost ~]#mkdir -pv /tmp/{tec/{init.d,sysconfig},usr/{bin,lib,include},var/{spool,run}proc,sys,bin}
转义字符
反斜杠(\):使用反斜杠后面的变量变为字符串
单引号(''):转义其中所有的变量为单纯的字符串
双引号(""):保留其中的变量属性,不进行转义处理
反引号(``):把其中的命令执行后返回结果
echo
输出指定字符串到终端设备界面(默认为电脑屏幕):
[root@localhost ~]# echo localhost
localhost
输出某个变量值内容:
[root@linuxcool ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
搭配转义符一起使用,输出纯字符串内容:
[root@linuxcool ~]# echo \$PATH
$PATH
搭配输出重定向符一起使用,将字符串内容直接写入文件中:
[root@linuxcool ~]# echo "Hello World" > Document
搭配反引号执行命令,并将执行结果输出:
[root@linuxcool ~]# echo `uptime`
16:16:12 up 52 min, 1 user, load average: 0.00, 0.00, 0.00
输出带有换行符的内容:
[root@linuxcool ~]# echo -e "First\nSecond\nThird"
First
Second
Third
指定删除字符串中某些字符,随后将内容输出:
[root@linuxcool ~]# echo -e "123\b456"
12456