Bash初识与常用命令
转至:https://www.cnblogs.com/baishou/p/13850258.html
Shell介绍
Shell在中文的意思是壳,寓意是操作系统的壳。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,简而言之就是只要能够操作应用程序的接口都能够称之为Shell。狭义的Shell指的是命令行方面的软件,广义的Shell则包括图形界面。
Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种解释器,也是一种程序设计语言。通常将使用Shell语言写的程序称之为脚本程序(Shell Script)。
Bash
sh(Bourne Shell)是一个早期的重要Shell,1978年由史蒂夫•伯恩编写,并同Version 7 Unix一起发布。
Bash(Bourbon-Again Shell)是一个为GNU计划编写的Unix Shell。1987年由布莱恩•福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对Sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。
Dash(Debian Almquist Shell)是一种Unix Shell。它比Bash小,只需要较少的磁盘空间,但是它的对话性功能也比较少。它由NetBSD版本的Almquist Shell(Ash)发展而来,于1997年由赫伯特•许(Herbert Xu)移植到Linux上,于2002年改名为Dash。
在CentOS 7上查看可以使用哪些Shell可以查看/etc/shells这个文件
[chirou@Chirou ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
Shell交互式环境
用户登录后进入解释器Bash的交互式环境,可以输入命令
[chirou@localhost ~]$ $表示当前登录的是普通用户
[root@localhost ~]# #表示当前登录的是超级用户root
chirou 表示当前登录的用户名
localhost 表示当前的主机名
~ 表示当前所在目录为家目录
Shell命令语法
命令组成格式:
Command [Option1] [Option1]... [Parameter1] [Parameter2]...
Command: 命令(必选)
Option: 选项,命令具体某个功能,根据需要可以有多个。
Parameter:参数,命令操作的对象,也可以有多个。
Linux对大小写敏感,大多数命令都是小写。
命令选项和参数之间必须要用空格分隔,有多个空格Bash视为一个。
使用选项时,通常会在前面加上横杠 - ,如果使用的是长选项则需要加上两个横杠 --,例如ls -a 和 --all,其实它俩指的是一个意思。多个短选项可以组合起来,只写一个横杠 -
[root@Chirou ~]# ls -al
[root@Chirou ~]# ls -a -l
# 这俩是一个意思
命令输入完成后,按下Enter就立即执行。
命令与路径补全
在Linux中可以使用Tab键进行命令和路径的补全。
在输入命令的时候使用Tab键,Bash会自动寻找以已键入字符开头的命令。如果有多个相同开头的命令,连按两下Tab键会显示出所有的命令。
对于某些特别长的路径,我们在输入的过程中也可以使用Tab键,Bash会寻找当前路径所有以已输入字符开头的文件补全。
Bash常用快捷键
- Ctrl+c:立即停止前台正在运行的程序
- Ctrl+d:退出,相当于exit命令。删除光标后的字符。
- Ctrl+l:清屏,相当于clear命令。
- Ctrl+a:光标移动到命令行的行首
- Ctrl+e:光标移动到命令行的行尾
- Ctrl+u:删除光标所在处至行首的字符
- Ctrl+k:删除光标所在处至行尾的字符
- Ctrl+r:利用关键字搜索命令历史
- Alt+. :引用上一个命令的最后一个参数,想当于!$
- Shift+PageUP/PageDown:如果某些命令的输出特别长,导致前面的内容以不在当前屏幕中,就可以使用这两个快捷键进行上下翻页。
命令历史
Bash会记录用户所有的输入,可以通过history命令来查看记录。history是记录在内存中的,当用户退出或登出shell时,会自动保存到~/.bash_history文件中。登录时,又会从文件中读取到内存。在内存中,历史命令默认能够存储1000条命令,数量是由环境变量HISTSIZE进行控制,HISTSIZE变量存在于/etc/profile中。
- -c:将当前登录shell中的历史记录消除。对history文件没影响。
- -w:将本次登录的历史记录写入命令历史文件中,默认在用户登出时才会写入文件中。
- -r:将命令历史文件中的内容读入到目前shell的history记录中。
- !n :执行历史中第n条命令
- !字符串:执行命令中最近一个以‘字符串’开头的命令。
- !$:引用上一个命令的最后一个参数
命令别名
Bash中为了简化用户输入,可以将一行命令设置一个别名。
alias:查看所有别名
alias a_name='ls /etc/sysconfig/network-scripts/'
#设置别名
unalias a_name
#取消别名
alias命令设置别名是临时设置,登出后即消失。若要永久设置,需要将设置的别名写入~/.bashrc配置文件。
type查看命令类型
Bash解释器自带有一些内置命令。这些命令通过man命令查询帮助手册时,显示的是Bash解释器的手册页,而非命令的手册页。通过type命令就可以查看命令是否输入内置命令。type会显示命令的路径,和which命令类似。
[root@Chirou ~]# type [-tpa] command_name
不加任何选项与参数时,type会显示出name是外部指令还是内置指令
-t :当加入-t参数时,type会将name以底下这些字符显示出它的意义:
file :表示为外部指令;
alias :表示该指令为命令别名所设定的名称;
builtin :表示该指令为bash内建的指令功能;
-p :如果后面接的name为外部指令时,才会显示完整档名;
-a :会由PATH变数定义的路径中,将所有含name的指令都列出来,包含alias
命令查找优先级
Bash 查找命令的顺序:
- 1、以绝对路径或相对路径执行命令
- 2、alias
- 3、Compound Command (复合命令)
- 4、function
- 5、build_in
- 6、hash
- 7、PATH环境变量所包含的路径
- 8、上面都找不到就会报错,command not found
Linux查询帮助信息
--help选项
很多命令可以通过--help选项查看命令的大致用法。
[root@Chirou ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
-b, --escape 以八进制溢出序列表示不可打印的字符
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
man手册页
man是manual的简写。
[root@Chirou ~]# man [-a] command
# 不带选项会直接显示该命令的详细文档
-a:显示所有匹配项
man命令一共有9个章节,通过man 7 man命令可以查看
- 1 普通用户在shell中可以使用的命令的用法
- 2 系统内核可调用的函数与工具等
- 3 一些常用的库文件调用
- 4 查看一些设备文件,通常是/dev下的文件例如:# man 4 null
- 5 配置文档的信息
- 6 内置游戏的玩法
- 7 一些杂项,比如网络协议等
- 8 只有管理员能够执行的文件,例如一些系统管理类命令。
- 9 Linux 内核 API
常用的是1、5、8章节。
info命令
info与man的用途其实差不多,都是用来查询指令详细信息的命令。 但是与man page一口气输出一堆文档不同的是, info page则是将档拆成一个一个的段落,每个段落用自己的页面来撰写,并且在各个页面中还有类似网页的“超链接”来跳到各不同的页面中,每个独立的页面也被称为一个节点(node) 。
不过你要查询的目标资料的说明文件必须要以info的格式来写成才能够使用info的特殊功能(例如超链接)。而这个支援info指令的文件预设是放置在 /usr/share/info/ 这个目录当中的。
参考文件/配置模块文件
一般而言,命令或者软件制作者,都会将自己的命令或者软件的说明制作成线上说明文件。但是,毕竟不是每个都需要做成线上说明文件,还有相当多的说明需要额外的文件!这些说明文件一般就放在/usr/share/doc这个目录里。
对于新手用户来说,这些通篇英文的文档可能会大大增加学习Linux的难度,所以一般而言,如果对某些命令不了解,更推荐通过上网找答案。但如果要真正深入理解,还是需要看官方文档才行。
常用命令
hostnamectl设置主机名,重启生效
[root@Chirou ~]# hostnamectl set-hostname chirou
在集群系统中,使用主机名能方便管理员识别每台服务器。
date
查看时间
~~~Python
[chirou@duorou ~]$ date '+%Y-%m-%d %H:%M:%S'
2020-10-20 19:18:25
~~~
设置时间
[chirou@duorou ~]$ date -s '2222-1-3 22:22:6'
2222年 01月 03日 星期四 22:22:06 CST
注意,Linux有两个时间,一个是系统时间,是由Linux系统启动后维护的。另一个是硬件时间,硬件时间是指主板上的时钟设备,在BIOS设定的时钟。硬件时间存放于CMOS中。当Linux启动时,Linux系统将时间从CMOS中读到系统时间变量中,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
Linux系统设置硬件时钟时,提供两种时区选择,一种为本地时区,中国使用的是东8区,此时硬件时间与系统时间相同。另一种是UTC时区,就是世界标准时间,此时硬件时间存的是UTC时间,系统初始化时会转换为本地时间后再设置为系统时钟的时间。
为了保证系统时间与CMOS时间的一致性,Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约11分钟)进行的,在我们执行date -s 后,如果马上重启机器,修改时间就有可能没有被写入CMOS。
将系统时间写入CMOS
[root@duorou ~]# date -s '2020-2-2 2:2:2'
2020年 02月 02日 星期日 02:02:02 CST
[root@duorou ~]# hwclock
2020年10月20日 星期二 19时54分56秒 -0.416221 秒
[root@duorou ~]# hwclock -w
2020年02月02日 星期日 02时02分31秒 -0.056272 秒
将硬件时间同步给系统时间
[root@duorou ~]# date
2222年 01月 03日 星期四 22:50:35 CST
[root@duorou ~]# hwclock
2020年10月20日 星期二 19时50分19秒 -0.964076 秒
[root@duorou ~]# hwclock -s
[root@duorou ~]# date
2020年 10月 20日 星期二 19:50:35 CST
为了使系统时间准确,最好还是使用ntp方式。Centos7用chrony替换ntp。
NTP(Net Time Protocol)网络时间协议。
使用ntpdate命令从网络同步时间,再同步到硬件时钟。
[root@duorou ~]# date
2020年 02月 02日 星期日 02:07:28 CST
[root@duorou ~]# hwclock
2020年02月02日 星期日 02时07分19秒 -1.033182 秒
[root@duorou ~]# ntpdate ntp1.aliyun.com
20 Oct 20:17:55 ntpdate[2323]: step time server 120.25.115.20 offset 22615794.922528 sec
[root@duorou ~]# date
2020年 10月 20日 星期二 20:18:13 CST
[root@duorou ~]# hwclock -w
[root@duorou ~]# hwclock
2020年10月20日 星期二 20时19分06秒 -0.611573 秒
阿里云提供了7个NTP时间服务器。
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
重启命令
init 6 # 将系统级别设置为6,即重启级别
reboot # 立即重启
shutdown -r 0 # 立即重启,0相当于now
shutdown -r 3 # 3分钟后重启,且会显示在登录用户的当前屏幕中
shutdown -r 8:30 # 会在最近的8点30分重启
关机命令
init 0 # 将系统级别设置为0,即关机级别
halt # 立即关机
poweroff # 立即关机
shutdown -h 0 # 立即关机,0相当于now
取消已设定的关机或重启任务
[root@duorou ~]# showdown -c
Linux系统一般作为服务器系统,服务器在生产环境中很少会关机。若要关机,一定要将内存中的数据写入硬盘后再关机。推荐使用shutdown命令,它在关机前会先将内存中的数据写入硬盘,然后再关机。另外只有管理员root权限才能执行关机命令。
注销或登出账号
[root@duorou ~]# exit
[root@duorou ~]# logout
或使用快捷键 Ctrl+d
Bash初识与常用命令的更多相关文章
- bash 和 powershell 常用命令集锦
Linux Shell # 1. 后台运行命令 nohup python xxx.py & # 查找替换 ## 只在目录中所有的 .py 和 .dart 文件中递归搜索字符"main ...
- 初识linux&常用命令&目录文件的浏览和管理
Linux系统的主要用途:主要用于服器务器,特别是网络服务 Linux命令格式 命令 [选项] [ 参数] 命令:告诉操作系统做什么,执行什么 选项:说明命令的运行方式(可以改变命令的功能).选 ...
- windows下通过Git Bash使用Git常用命令
Git跟SVN最大不同的地方就是分布式.SVN的集中式与Git的分布式决定各自的业务场景.既然是分布式的,那么大部分操作就是本地操作.一般Git操作都是通过IDE,比如Eclipse,如果装了Git ...
- linux初识-02常用命令
文件目录操作命令 ls 现实文件和目录列表 ls -l 列出文件的详细信息 ls -a 列出当前目录所有文件 包括隐藏的文件 mkdir 创建目录 -p 父目录不存在的情况下先生成父目录 cd 切换目 ...
- bash vim等常用命令
生成的txt一不小心带了./,用vim: :%s/\.\/single/single #%s/xxx/yyy/g是全文本替换,这里用\将特殊字符.和/转换成普通字符 结果还不错: ---------- ...
- Linux bash脚本及常用命令--不断更新中
1.如何在向alias命令传递参数: 这种用法的话就需要使用函数来配合使用. 如要cd到指定目录,并且ls当前目录下的文件可以使用: alias cdls='cdls(){ cd $1; ls; } ...
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
- Bash,Vim,gdb&git常用命令
Bash 目录 pwd //查看当前目录 mkdir dir1 dir2 //创建目录 tree dir1 mv test1.cpp test2.cpp dir1 dir //移动文件/目录到目 ...
- bash shell学习笔记(一)—— 常用命令
一.基本的bash shell命令 1.默认bash shell 提示符是美元符号($); 2.bash手册 使用man命令来访问存储在Linux系统上的手册页面,如: bogon:~ Mac$ ma ...
随机推荐
- Go 函数,包(二)
#### Go 函数,包(二)***百丈峰,松如浪,地势坤,厚德载物之像*** 今天又到周五啦,你们有没有激动呢,反正我很激动,又有两天的自由了; 上一节我们学习了Go 的函数和包的一些知识 , 今天 ...
- 操作系统的发展史(并发与并行)<异步与同步>《进程与程序》[非堵塞与堵塞]
目录 一:一:手工操作 -- 穿孔卡片 1.简介 二:手工操作方式两个特点: 三:批处理 -- 磁带存储 1.联机批处理系统 2.脱机批处理系统 3.多道程序系统 4.多道批处理系统 四:总结发展史 ...
- netstat in Linux
# netstat -unlt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address ...
- java秒杀系列(1)- 秒杀方案总体思路
前言 首先,要明确一点,高并发场景下系统的瓶颈出现在哪里,其实主要就是数据库,那么就要想办法为数据库做层层防护,减轻数据库的压力. 一.简单图示 我用一个比较简单直观的图来表达大概的处理思路 二.生产 ...
- http中的8种请求介绍
HTTP协议的8种请求类型介绍 HTTP协议中共定义了八种方法或者叫"动作"来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特 ...
- Java8之Stream常用操作方式
哈喽!大家好,我是[学无止境小奇],一位热爱分享各种技术的博主! [学无止境小奇]的创作宗旨:每一条命令都亲自执行过,每一行代码都实际运行过,每一种方法都真实实践过,每一篇文章都良心制作过. [学无止 ...
- Filter、Listener
Filter(过滤器) 概念: 对请求参数.请求头以及响应参数进行过滤.一般用于完成通用的操作,如:登录验证.统一编码处理.敏感字符过滤.... 代码: public class FilterDemo ...
- 浅谈AngularJS中使用$resource
这个服务可以创建一个资源对象,我们可以用它非常方便地同支持RESTful的服务端数据源进行交互,当同支持RESTful的数据模型一起工作时,它就派上用场了. REST是Representational ...
- ImageMagick转换图片格式
/usr/bin/convert data/manager/tongji/Html/WebData/images/code0/xingfumima0_1000_0.jpg -colorspace cm ...
- 利用系统APP实现导航---By张秀清
苹果系统本身自带一个地图APP,但是功能并不是很强大,但是一些简单的导航功能还是能做出来的,下面贴上我的代码 // // ViewController.m // 系统APP导航 // // Creat ...