linux 清空文件_Linux系统入门:Bash初识

Bash Shell介绍

什么是Bash Shell

Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,讲用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。

当我们使用远程连接工具连接linux服务,系统则会打开一个默认的shell,我们可以在这个界面执行命令,比如:获取系统当前时间,创建一个用户等等...

3655ce39797955c789d6f97512af2bca.png


Bash Shell的作用

使用Shell实现对Linux系统的大部分管理,例如:

1)文件管理

2)权限管理

3)用户管理

4)磁盘管理

5)网络管理

6)软件管理

7)应用管理

...等等管理


平时我们该如何使用Bash Shell

#获取当前时间[root@db04 ~]# date2019年 05月 29日 星期三 07:53:49 CST#创建用户[root@db04 ~]# useradd zls#如果要创建100个用户,使用shell scriptfor n in `seq 100`;do useradd oldboy$n &&  echo "用户 oldboy$n 已创建成功"done[root@db04 ~]# bash user.sh

总结shell执行方式

输入命令方式 ===> 效率低 ===>适合少量工作

shell script ===> 效率高 ===>适合复杂的工作

我们使用的shell版本

[root@db04 ~]# bash -versionGNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)Copyright (C) 2009 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later This is free software; you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.

shell提示符

'$' = 普通用户'#' = root用户(超级管理员)#查看当前用户[root@db04 ~]# whoamiroot#查看当前命令提示符[root@db04 ~]# echo $PS1[u@h W]$root:当前系统的用户db04:当前系统的主机名~:当前所在的位置#:超级管理员身份(root用户)$:普通用户

shell基础语法

命令行bash shell,为用户提供输入,执行命令的界面

#命令 选项 参数command [-options] [arguments][root@db04 ~]# ls //命令[root@db04 ~]# ls -l //命令+选项[root@db04 ~]# ls -l /home/ //命令+选项+参数#命令:整条shell命令的主体#选项:用于调节命令的具体功能 #以'-'引导段个事选项(单个字符),例如”-a“ #以'--'引导长格式选项(多个字符),例如”--all“ #多个短格式选项可以卸载一起,只用一个”-“引导,例如”-la“#参数:命令操作与偶的对象,如文件、目录名等#命令必须开头,选项和参数位置可以发生变化

Bash Shell的基本特性

命令补全

当使用windows查找一个目录层级特别多的文件时,打开的效率会非常的慢,但如果使用linux查找一个目录层级特别多的文件时,可以通过tab键快速补全。

命令补全

选项补全

参数补全

PS:tab键可以实命令补全,路径补全,在实际生产中tab补全往往是我们使用的最多的,因为可以减少执行命令以及路径出错率,还能提高输入效率。

#查看本机IP,忘记了具体命令[root@db04 ~]# ifcifcfg ifconfig#按下tab键会自动补全[root@db04 ~]# ifconfig#按一下tab没有反应,那么需要按两下tab键,列出所有if开头的命令[root@db04 ~]# ifif ifcfg ifconfig ifdown ifenslave ifnames ifrename iftop ifup#Linux目录比较深,经常会使用tab键进行补全,如果路径出错是没有办法补全的[root@db04 ~]# ls /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0

如果无法补全选项,那么需要安装一个扩展包

[root@db04 ~]# yum install -y bash-completion

命令快捷键

命令的快捷键可以帮助我们大大提升工作效率

Ctrl + a #光标跳转至正在输入的命令行的首部Ctrl + e #光标跳转至正在输入的命令行的尾部Ctrl + w #按照空格来删除bash内容Ctrl + c #终止前台运行的程序Ctrl + d #在shell中,ctrl-d表示退出当前shell。(logout、exit)Ctrl + z #将任务暂停,挂至后台Ctrl + l #清屏,和clear命令等效。Ctrl + k #删除从光标到行末的所有字符Ctrl + u #删除从光标到行首的所有字符Ctrl + r #搜索历史命令, 利用关键字Ctrl + s #锁屏Ctrl + q #解锁Ctrl + 左右 #按照单词快速跳转光标(Xshell提供的)ESC + . #获取最后的指令#在命令行前加面加 "#" 则该命令不会被执行

历史命令

历史命令的作用:追溯之前的发生情况,在企业中,十分重要,涉及到运维的责任,记录历史命令对于运维人员来说,也有一个专业名词:审计

-w:保存命令历史到文件 write

-c:清空命令历史记录,不会清空文件 clear

-d:删除命令历史的第N行 delete

#查看历史记录[root@db04 ~]# history#清空历史记录[root@db04 ~]# history -c#指定一条历史记录删除[root@db04 ~]# history -d 110#保存历史命令[root@db04 ~]# history -w#执行上一条命令[root@db04 ~]# !!#执行上一条ls相关命令[root@db04 ~]# !lsls /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0#执行历史命令中的第74条命令[root@db04 ~]# !74

命令的别名

命令别名讲用户经常使用的复杂命令简单化,创建出属于自己的命令别名。

创建语法:alias 别名=”命令“取消语法:unalias 别名#定义临时别名,查看网络是否可以通,ping 百度,只对当前shell生效[root@db04 ~]# alias tong="ping baidu.com"[root@db04 ~]# tongPING baidu.com (123.125.114.144) 56(84) bytes of data.64 bytes from 123.125.114.144: icmp_seq=1 ttl=128 time=44.2 ms64 bytes from 123.125.114.144: icmp_seq=2 ttl=128 time=47.5 ms64 bytes from 123.125.114.144: icmp_seq=3 ttl=128 time=46.3 ms#查看所有定义的别名[root@db04 ~]# aliasalias cp='cp -i'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 tong='ping baidu.com'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'#取消别名[root@db04 ~]# unalias oldboy[root@db04 ~]# oldboy-bash: tong: command not found#永久生效[root@db04 ~]# vim /etc/bashrcalias oldboy="ping baidu.com"

获取命令帮助

#获取ls命令的帮助[root@db04 ~]# ls --help用法:ls [选项]... [文件]...#ls常见选项-a //查看目录下的所有文件,包括隐藏文件-l //以长格式的方式显示文件的详细内容-h //以人性化的方式显示内容,配合-l使用-d //只列出目录名,不列出目录以下的内容-t //按修改时间进行排序-i //显示文件的inode(该文件在该分区的一个编号)-r //倒叙 [root@db04 ~]# man ls

查看Linux命令的站点:

http://linux.51yip.com/

http://man.linuxde.net/


命令执行的流程

当我们执行一个命令, 整个命令执行流程如下:

1.判断命令是否通过绝对路径执行

2.判断命令是否存在别名

3.判断用户输入的是内部命令还是外部命令

4.内部命令直接执行, 外部命令检测是否存在缓存

5.检测PATH路径, 有执行, 无报错

内部命令: shell程序自带的命令。

外部命令: 在系统PATH变量的某个路径下的可执行程序。

使用type命令检测用户输入的命令属于内部命令还是外部命令。

#cd命令属于shell内部命令[root@linux-node1 ~]# type -a cdcd is a shell builtincd is /usr/bin/cd#ping属于外部命令, 同时会打印当前命令路径[root@xuliangwei ~]# type -a pingping is /bin/ping

PATH变量定义的路径, 作用是告诉Bash执行的外部命令存放的位置,Bash会在这些路径中进行逐个扫描。

事实上执行过的外部命令都会保存在内存缓存中, 当再次执行相同的命令, 会通过缓存调取执行, 也就意味着不会搜索PATH路径。

//表缓存命令所在位置[root@xuliangwei ~]# hashhits command 1 /usr/bin/tty 3 /sbin/ifconfig//已缓存命令,如果移动位置会导致无法找到该命令[root@xuliangwei ~]# mv /sbin/ifconfig /bin/[root@xuliangwei ~]# ifconfig-bash: /sbin/ifconfig: No such file or directory//删除缓存过的ifconfig命令, 即可执行[root@xuliangwei ~]# hash -d ifconfig[root@xuliangwei ~]# ifconfig//当然可以清空缓存表[root@xuliangwei ~]# hash -r//命令缓存hash需要注意如下情况:1.如果执行外部命令1次就会对该命令进行缓存2.如果将命令移动了位置 a.使用绝对路径执行 b.删除hash表的缓存指令

总结, 当我们执行了一个ping命令之后, 整个命令执行的流程步骤如下:

1.检查执行的是否是绝对路径执行

2.检查该ping命令是否存在别名

3.检查该ping命令是内部命令还是外部命令

4.如果是内部指令直接执行, 如果是外部命令

5.检测该命令是否有缓存,如果没有,查找PATH变量

6.检查PATH路径直到查找到该命令然后执行

7.如果没有找到该命令则返回错误。command not found


http://www.niftyadmin.cn/n/1849606.html

相关文章

JavaScript学习笔记(十五) 事件模型

0、DOM 标准 在开始学习 JavaScript 事件模型前,我们首先来了解一下什么是 DOM(Document Object Model) 简单来说,DOM 是 W3C 定义的访问 HTML 和 XML 文档的标准 按照不同的发展阶段,分为不同的级别,分…

Android 一个程序A启动程序B

2019独角兽企业重金招聘Python工程师标准>>> 1.首先,要获得程序B的包名 2.Intent intentgetPackageManager.getLaunchIntentForPackage(packageName); startActivity(intent); android获取程序包名:getPackageManager.getInstalledPackage…

如何求地球上两点之间的最短距离_蔡司三坐标Calypso平行平面之间距离的测量方法...

求平行平面之间的距离,这个命题的概念是模糊不清的。例如:1. 求平面1的中心到平面2的垂线?在Calypso内可以使用垂直线或者笛卡尔距离/直角坐标距离实现。但考虑实际两平面不可能理论平行,平面1的各顶点到平面2的垂直距离是不同的&…

马斯诺的行为科学体系的基础

马斯诺的行为科学体系的基础之一是把人的需求分成五个方面:一、生存需要;二、安全需要;三、从属和爱的需要;四、自尊的需要;五、自我实现的需要。东方人与其不完全一样,东方人的需求可分为:富余…

c# 用BitArray来管理包含关系

BitArray是.net自带的引用类型,在名称空间Systems.Collections下面。输入BitArray可以看到它的摘要:“管理位值的压缩数组,该值表示为布尔值,其中 true 表示位是打开的 (1),false 表示位是关闭的 (0)”。 定义一个BitA…

loss下降auc下降_随机梯度下降法介绍及其参数讲解

算法介绍简单来说,梯度下降就是从山顶找一条最短的路走到山脚最低的地方。但是因为选择方向的原因,我们找到的的最低点可能不是真正的最低点。如图所示,黑线标注的路线所指的方向并不是真正的地方。既然是选择一个方向下山,那么这…

JavaScript学习笔记(十六) XMLHttpRequest

1、介绍 (1)AJAX(Asynchronous JavaScript and XML) AJAX 原来是指通过异步 JavaScript 从服务器 XML 文档获取数据,然后更新部分网页,避免刷新整个网页 后来,这个词语慢慢成为在浏览器通过脚…

目前在看的书Visual c++ Net 技术内幕第六版

这本书,讲ATL不错。书上以VC2003.net 为环境讲的。