首页 > 代码库 > Bash shell 基础命令

Bash shell 基础命令

1.       Shell启动

Gun bash shell为用户提供交互式访问,登录时系统依赖于用户账户的配置,在/etc/passwd 文件中存放所有系统用户账户列表及基本配置,以下为条目样本:

root:x:0:0:root:/root:/bin/bash

每个条目共有七个字段,分别以冒号隔开,代表的含义依次为“用户名:密码:UID(用户ID号):GID(用户主组ID号):GECOS(用户详细描述信息):用户家目录:用户默认shell程序”。当用户登录以后将会启动默认shell程序。

2.       命令帮助

2.1 which命令

说明:查看命令完整路径,如果有命令设置了别名,还可以显示别名。

格式:which COMMAND

示例:

[root@localhost ~]# which ls         

alias ls=‘ls --color=auto‘           ####别名

                             /bin/ls                  ####ls命令的详细路径,在制作shell脚本时,经常需要用到命令的完整路径。

 

命令帮助方法有几种:

2.2 man命令

说明:查看命令的帮助文档,通常放置于/usr/share/man 目录中

格式:man [ 章节] COMMAND

Man手册根据对应内容区域分为八个章节

1章节:用户命令

2章节:系统调用

3章节:库调用

4章节:设备文件及特殊文件

5章节:配置文件格式

6章节:游戏

7章节:概览、约定和杂项

8章节:超级用户和系统管理员命令

 

Man手册格式

Name:命令名和命令的描述

Synopsis:命令的语法

Description:命令一般性描述

Option:命令选项描述

Example:命令用法示例

Authors:命令开发人员信息

Reporting BugsBUG提交方法

See Also:与命令相关的其他命令

 

内部命令帮助查看可以使用COMMAND –helphelp COMMAND

3.       浏览查看命令

3.1 cd命令

说明:进入到指定路径下,通常使用格式为 cd COMMAND

使用场景:

cd /root 进入/root路径下

cd ~ :进入到当前用户的家目录

cd - :返回上次目录

cd .. :进入此目录的上一级目录

cd / :进入根目录

 

3.2 ls命令

说明:查看指定路径下的目录和文件

格式:ls   [参数]     路径

参数:

不带任何参数和路径时表示查看当前目录下非隐藏属性的所有文件和目录

-a:查看当前目录下包含隐藏文件的所有文件和目录

-l:显示文件和目录的长格式

-h:人性化显示文件容量数据,与-l一起使用

-i:显示每个文件的inode编号

-d:只显示目录

-F:在显示的文件和目录队列中,目录会跟上/,更加醒目

-R:递归显示该路径下所有目录下的全部文件

 

常用组合:

-alh:显示长格式目录下包含隐藏文件在内的所有文件信息,文件大小人性化显示;

-il:以长格式显示路径下文件和文件夹信息并显示inode编号

 

长格式内容信息描述

[root@localhost ~]# ls -il

total 52

1572873 -rw-------. 1 root root  2392 Oct 27  2014 anaconda-ks.cfg

从左至右一次解析:

1572873:文件的inode编号

-:文件类型,一般文件类型有-(普通文本文件)、d(目录)、s(套接字文件)、c(字符设备文件)、b(块设备文件)、l(符号链接文件)、p(管道文件)

rw-------:共计有9位,依次表示文件的属主、属组、其他用户的权限。

1:文件被硬链接的次数

root:属主

root:属组

2329:文件大小,以字节为单位

Oct 27  2014:最后一次被修改时间

anaconda-ks.cfg:文件名

 

4.       文件处理命令

4.1 touch命令

说明:touch命令主要用于改变文件的时间戳,当文件不存在时会创建该文件。可以通过stat filename来查看文件的时间戳

格式:touch [ 参数 ]   文件名

参数:

touch  filename :表示创建名为filename的文件

-a:修改文件的访问时间

-m:修改文件的修改时间

-c:修改文件的变更时间,一般为文件最晚的时间戳

小技巧:可以通过 ls -l –time=atime  filename来显示该文件的最后一次访问时间。

 

4.2 cp命令

说明:cp命令主要用于复制文件或文件夹到指定路径

格式1cp 原路径目标路径

原路径为文件会有一下四种情况:

           如果目标路径不存在则会创建目标路径并将文件复制到目标路径中

         如果目标目录存在

                    如果目标路径是文件则会被源路径文件覆盖,建议此时使用-i选项。

                    如果目标路径是目录则会在目标目录下新建一个同名文件,将源文件内容填充至目标文件中。

格式2cp 多个源文件目标路径

如果复制多个文件到目标路径,则目标路径必须存在且为目录

格式3cp 源路径目标路径

如果源路径为目录则目标路径必须为目录,且必须使用-r选项,如果目标路径目录不存在则会创建该目录并将源路径目录填充只目标目录中,如果目录路径是目录且已存在,则会直接将源路径目录及目录中的文件填充至目标目录中。

参数:

-a:归档复制

-i:交互式,复制每一个文件和目录都需确认

-r:递归复制目录下的所有文件

-f:强制复制

 

4.3 mv命令

说明:用于移动文件到指定路径下,也可用于文件重命名

格式:

mv [OPTION]... [-T] SOURCE DEST

       mv [OPTION]... SOURCE... DIRECTORY

       mv [OPTION]... -t DIRECTORY SOURCE...

参数:

       -i:交互式

       -f:强制

 

4.4 ln命令

说明:创建符号连接文件和硬链接,链接到同一个文件的硬链接文件inode编号为同一编号,在磁盘中存放的位置一致,符号连接文件相当于源连接文件的一个快捷方式。

创建硬链接:ln 原文件硬链接文件路径和文件名

创建软链接:ln 源文件符号连接路径和文件名

 

4.5 rm命令

说明:删除指定目录和文件

参数:

-i:交互式

-r:递归删除

-f:强制删除

rm -rf 命令会在不通知的情况下强制删除所制定的目录和文件,慎用。

 

mkdir命令

说明:删除空目录,当目录中有文件时,无法删除,可使用rm -rf 强制删除。

 

5.       shell通配符

shell支持通配符机制,可用通配符如下:

*:代表任意长度的任意字符

?:代表一位任意字符

[]:位于[]中的字符为可选字符。

示例:

ls  /etc/p*  表示列出/etc目录下所有以P开头的文件和文件夹

ls /etc/p?sswd 表示列出/etc目录下以任意以P开头sswd结尾的文件

 

6.       绝对路径和相对路径

绝对路径:表示完整路径,例如 /bin/bash

相对路径:./ 表示当前路径,../表示当前路径的上一级路径。

 

7.       文件查看命令

7.1 file命令

说明:查看文件类型,使用格式 flie 文件名即可。

 

7.2 cat命令

说明:仅查看文本文件文件的命令,-n参数表示查看文件时带上行号,-b参数表示仅在有文字的行前加行号,-T表示显示时去表文件中的制表符

 

7.3 more命令

说明:more支持翻页,cat在查看大文件时不受控制,more可以自动分页,仅支持向下翻页。

 

7.4 less命名

说明:功能类似于more,不过可支持来回翻页

 

7.5 tail命令

说明:只从尾部开始查看文件,默认查看最后10行,-n 20 则表示查看倒数20行,-f参数可动态显示文件尾部追加的内容。

 

7.6 head命令

说明:从头部开始查看文件,默认显示从头部开始10行文件, -20则表示查看从头部开始往后20行文件

 

以上文件查看命令仅支持查看文本文件。

 

7.7 tree命令

说明:tree命令可以树型结构查看指定路径的文件和文件夹。一般系统默认不安装此命令,可使用yum -y install tree安装。

 

8.       监测程序

8.1 ps命令

说明:ps是一个功能强大的进程查看工具,可查看进程和系统关键参数。

BSD风格的常用组合:ps aux

 

解析:

USER:启动进程的用户

PID:进程编号

%CPU:CPU占用率

%MEM:内存占用率

VSZ:虚拟内存集

RSS:常驻内存集

TTY:进程启动时的终端

STAT:进程当前状态

R:正在运行

S:可中断睡眠

D:不可终端睡眠

T:停止的进程

Z:父进程已被结束的僵死进程

 

+:前台进程

<:高优先级进程

N:低优先级进程

s:该进程是控制进程

l:多线程

START:进程启动时的系统时间

TIME:进程占用的CPU时间

COMMAND:程序名

参数:

-a:与终端相关的进程

-u:以用户为中心组织显示进程状态

-x:与终端无关的进程

 

Unix风格的常用组合:ps -ef

 

解析:

UID:用户ID

PID:进程编号

PPID:父进程进程编号

C:进程声明周期中的CPU利用率

STIME:进程启动时的系统时间

TTY:进程启动时的终端

TIME:运行进程累计需要使用的CPU时间

CMD:启动的程序名称

参数:

-e:显示所有进程

-f:显示完整格式的进程信息

 

ps -eFH

参数:

-F:显示完整的进程信息

-H:以层级格式显示进程信息

 

ps -efl

解析:

F:内核分配给进程的系统标记

S:进程的状态(O代表正在运行,S代表休眠,R代表可运行正在等待运行,Z代表僵死状态,T代表停止)

PRI:进程优先级,数字越大优先级越低

NINICE值,用来动态调整优先级

ADDR:进程的内存地址

SZ:假如进程要被换出,所需的交换分区大小

WCHAN:进程休眠的内核函数的地址

 

参数:

-l:显示长格式输出

 

8.2 top命令

说明:top命令功能与ps命令类似,都是用于查看进程信息,不过top命令是动态显示进程当前状态,可以用来追踪某些资源占用高的进程

解析:

首部top项表示当前系统时间、系统运行时间、登录的用户数,cpu的平均负载,分为表示1分钟、5分钟、15分钟的平均负载

第二行Tasks项表示进程大致统计信息,依次为总进程数、正在运行的进程数、休眠态的进程数、停止的进程数、僵死的进程数

第三行表示CPU的负载情况

第四行表示内存使用情况

第五行表示交换分区使用情况

 

PR:进程优先级

NI:进程nice值用于调节进程优先级

VIRT:内存占用的虚拟内存总量

RES:进程占用的物理内存总量

S:进程状态(R代表正在运行、S代表休眠、D代表可中断睡眠、T代表跟踪或停止状态、Z代表僵死态)

%CPU:进程使用CPU的时间比例

%MEM:进程占用的内存占可用内存的比例

TIME+:启动进程到目前位置使用CPU时间的总和

COMMAND:进程名

 

内置命令

排序:

           P:    CPU进程占用CPU时间比例排序

           M:  以进程内存占用比例排序

           T:   累计占据CPU时长排序

首部显示:

           l:    uptime首部时间显示

           ttaskCPU显示

           1CPU分核显示

         m:内存显示

退出命令:q

修改刷新间隔:s

杀死进程:k

 

参数:

-d # :指定刷新时间

-b :以批次方式显示

-n :显示多少批次

 

8.3 htop

说明:htoptop功能更强大,可以实时显示当前进程状态,而且可以跟踪显示指定进程,htop系统并不自带需额外配置EPEL源安装。

解析:

首部为CPU、内存、交换分区使用情况

下部PIDUSER等与top相同

 

内置命令:

s:跟踪进程的系统调用

l:查看进程打开的文件列表

a:将进程绑定在某CPU核心

t:将进程以层级方式显示

 

参数:

-d # :指定延时刷新时间

-u username :仅显示指定用的进程

-s COLONM:以指定字段排序

 

8.4 kill命令

说明:kill命令用于给进程发送信号,以实现对进程的管理,一般不带信号参数时,默认发送15号信号。

常用信号种类:(可以使用kill -l 命令查看所有可以发送的信号)

1SIGHUB:无须关闭进程而重读进程配置文件

2SIGINT:中止正在运行的指定进程,相当于Ctrl+c

9SIGKILL:杀死正在运行的进程

15       SIGTERM:终止正在运行的进程

18       SIGCONT:启动之前停止的进程

19       SIGSTOP:停止正在运行的进程

指定信号的方法:

通过信号对应的数字,例如12915

通过信号的完整名称,例如SIGHUBSIGINT

通过信号的简称,例如HUBINT

向进程发信号的方法:kill  [ -SIGNAL ] 进程名

终止某进程名下的所有进程:killall [ -SIGNAL ] 进程名

 

9. 磁盘挂载及监测相关命令

9.1 mount命令

说明:用于把设备关联到挂载点。仅用命令,重启后失效,如果需要永久生效可以通过配置/etc/mtab来实现

mount:查看当前所有已挂载的设备

mount [ -fnrsvw ] [ -t vfstype] [ -o options ] device dir

device:指明要挂载的设备

           1)设备文件:例如/dev/dsa5

           2)卷标: -L ‘LABEL’ , 例如 -L ‘MYDATA’

           3UUID-U ‘UUID’ ,例如:-U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘

           4)伪文件系统:procsysfsdevtmpfsconfigfs

dir:挂载点,尽量使用空目录,如果挂载前目录中已存在文件则在挂载后会暂时隐藏。正在使用中的设备无法挂载

常用命令选项:

           -t vsftype:指定要挂载的设备的文件系统类型;

           -rreadonly,只读挂载

           -wread and write,读写挂载

           -n:不更新/etc/mtab

           -a:自动挂载所有支持自动挂载的设备;(定义在/etc/fstab文件中,且挂载选项中有自动挂载功能

           -L ’LABEL’:以卷标指定挂载的设备

           -U ‘UUID’:以UUID指定要挂载的设备

           -B--bind:绑定一个目录到另一个目录上

注意:查看内核追踪到的已挂载设备,可用 cat /proc/mounts

 

-o options:挂载文件系统的选项

           async:异步模式

           sync:同步模式

           atime/noatime:包含目录和文件

           diratime/nodiratime:目录的访问时间戳

           auto/noauto:是否支持自动挂载

           exec/noexec:是否支持将文件系统上的应用程序运行成进程

           dev/nodev:是否支持在此文件系统上使用设备文件

           suid/nosuid:是否在此文件系统中使用SUID

           remount:重新挂载

           ro:只读

           rw:读写

           user/nouser:是否允许普通用户挂载此设备

           acl:启用此文件系统的ACL功能

           注意:上述选项可多个同时使用,以,号隔开,默认挂载选项default包含rwsuiddevautonouserasync

卸载命令:

umount DEVICE

umount MOUNT_POINT

查看正在访问指定文件系统的进程:fuser -v MOUNT_POINT

终止所有正在访问指定的文件系统的进程:fuser -km MOUNT_POINT

9.2 df命令

说明:df用来查看挂载点的详细参数,包含挂载的设备、可用容量、已用容量和所占百分比等

格式:df [ 选项 ] [挂载点]

选项:

-h:已人性化的方式显示挂载点设备、可用和已用容量等,不加挂载点时会显示当前系统所有挂载的设备

-i:同-h,但是显示的容量信息将以inode为单位

-P:以posix兼容的格式输出

9.3 du命令

说明:查看指定文件夹所占用空间容量

格式:du [ 选项 ] DIR

选项:

-h :以人性化显示

-s:仅显示占用的总容量

本文出自 “学海无涯” 博客,谢绝转载!

Bash shell 基础命令