BASH个人学习与理解

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值