树莓派 4B 下 Linux 系统命令行(9)

2021SC@SDUSC

实验九:其他命令部分 

1.实验目的 

1)掌握 Ubuntu 系统下文件系统中其他命令部分命令行的原理及使用 

2.实验内容 

本次实验主要是掌握 Linux 系统下的其他部分的使用,主要包括以下内容: 
第九部分(其他部分): 
1.hash 命令 – 显示与清除命令运行时查询的哈希表 
2.wait 命令 – 等待指令 
3.bc 命令 – 浮点运算 
4.rmmod 命令 – 删除模块 
5.history 命令 – 显示与操纵历史命令 

3.实验环境 

树莓派 4B,系统为 Ubuntu 21.10 系统 。实验的编程环境为 Terminal 终端程序

4.实验步骤 

1.hash 命令 – 显示与清除命令运行时查询的哈希表 

(1)语法 

         hash  [参数]  [目录]

(2)功能

Linux系统下会有一个hash表,每个SHLL独立,当你新开一个SHELL的时候,这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。

注:hash表的作用:大大提高命令的调用速率。

(3)参数 

-l 显示哈希表中的命令 
-p<指令> 将具有完整路径的命令加入到哈希表中 
-r 清除哈希表中的记录 
-t 显示哈希表中命令的完整路径 

(4)实例

hash 显示hash缓存:

[root@localhost ~]$hash
hits    command
   3    /usr/bin/apropos
   3    /usr/bin/whatis
   1    /usr/bin/systemctl
  22    /usr/bin/man

hash –l 显示hash缓存,可作为输入使用:
-l参数带有命令的全路径

[root@localhost ~]$hash -l
builtin hash -p /usr/bin/apropos apropos
builtin hash -p /usr/bin/whatis whatis
builtin hash -p /usr/bin/systemctl systemctl
builtin hash -p /usr/bin/man man

hash –p path name将命令全路径path起别名为name:

[root@localhost ~]$hash
hits    command
   0    /usr/bin/free
   2    /usr/bin/lsblk
   2    /usr/bin/uname
   1    /usr/bin/man
   1    /usr/bin/tr
   1    /usr/bin/ls
   1    /usr/bin/tree
   2    /usr/bin/free
[root@localhost ~]$hash -p /usr/bin/free Myfree

`free=Myfree`
[root@localhost ~]$Myfree
              total        used        free      shared  buff/cache   available
Mem:         995896      187620      426380        3532      381896      596012
Swap:       2097148       26276     2070872
[root@localhost ~]$free
              total        used        free      shared  buff/cache   available
Mem:         995896      187404      426596        3532      381896      596228
Swap:       2097148       26276     2070872

hash –t name 打印缓存中name的路径:

[root@localhost ~]$hash
hits    command
   1    /usr/bin/lsblk
   2    /usr/bin/uname
   1    /usr/bin/man
   1    /usr/bin/tr
   1    /usr/bin/ls
   1    /usr/bin/tree
   2    /usr/bin/free
[root@localhost ~]$hash -t lsblk
/usr/bin/lsblk

2.wait 命令 – 等待指令  

(1)语法 

        wait  [参数]

(2)功能

 wait命令 用来等待指令的指令,直到其执行完毕后返回终端。该指令常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务。该指令等待作业时,在作业标识号前必须添加备份号”%”。

(3)参数 

进程或作业标示:指定进程号或者作业号。

(4)实例

使用命令wait等待作业号为1的作业完成后再返回,输入如下命令:

wait %1       #等待作业号为3的作业完成

执行上面的指令后,将输出指定作业号的指令,如下所示:

find / -name password

3.bc 命令 – 浮点运算  

(1)语法 

        bc  [选项] 

(2)功能

bc 命令是任意精度计算器语言,通常在linux下当计算器用。它类似基本的计算器, 使用这个计算器可以做基本的数学运算。

常用的运算:

  • + 加法
  • – 减法
  • * 乘法
  • / 除法
  • ^ 指数
  • % 余数

(3)参数 

  • -i:强制进入交互式模式;
  • -l:定义使用的标准数学库
  • -w:对POSIX bc的扩展给出警告信息;
  • -q:不打印正常的GNU bc环境信息;
  • -v:显示指令版本信息;
  • -h:显示指令的帮助信息。

(4)实例

$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2+3
5
5-2
3
2+3*1
5
输入 quit 退出。

通过管道符

$ echo "15+5" | bc
20

scale=2 设小数位,2 代表保留两位:

$ echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30

bc 除了 scale 来设定小数位之外,还有 ibase 和 obase 来其它进制的运算:

$ echo "ibase=2;111" |bc
7

进制转换 

#!/bin/bash

abc=192 
echo "obase=2;$abc" | bc
<pre>
<p>
执行结果为:11000000,这是用bc将十进制转换成二进制。</p>


<pre>
#!/bin/bash 

abc=11000000 
echo "obase=10;ibase=2;$abc" | bc

执行结果为:192,这是用bc将二进制转换为十进制。

4.rmmod 命令 – 删除模块

(1)语法 

         rmmod  [参数]  [模块名称] 

(2)功能

rmmod命令用于删除模块。执行rmmod指令,可删除不需要的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。

(3)参数 

  • -a  删除所有目前不需要的模块。
  • -s  把信息输出至syslog常驻服务,而非终端机界面。

(4)实例

显示已安装的模块

# lsmod
Module         Size Used by
cramfs         39042 1 
nfsd         238935 11 
lockd         64849 1 nfsd
nfs_acl         2245 1 nfsd
auth_rpcgss      33735 1 nfsd
sunrpc        193181 10 nfsd,lockd,nfs_acl,auth_rpcgss
exportfs        3437 1 nfsd
xt_TCPMSS        2931 0 
xt_tcpmss        1197 0 
xt_tcpudp        2011 0 
iptable_mangle     2771 0 
ip_tables        9991 1 iptable_mangle
x_tables        14299 4 

……省略部分结果
pppoe          8943 0 
pppox          2074 1 pppoe
binfmt_misc       6587 1 
snd_ens1371      18814 0 
gameport        9089 1 snd_ens1371
snd_ac97_codec    100646 1 snd_ens1371
ac97_bus        1002 1 snd_ac97_codec
snd_pcm_oss      35308 0

卸载模块

# rmmod -v pppoe //卸载模块pppoe
Checking ppoe for persistent data

安装模块

# insmod -v pppoe >1.log //安装模块

~# tail -b 30 1.log //显示文件信息

5.history 命令 – 显示与操纵历史命令 

(1)语法 

       history  [参数]  [目录] 

(2)功能

history命令 用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。

(3)参数  

-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中。

(4)实例

使用history命令显示最近使用的10条历史命令,输入如下命令:

[root@localhost ~]# history 10
   92  ls
   93  cd ..
   94  ls
   95  exit
   96  ls -a
   97  cd .ssh/
   98  ls
   99  cat known_hosts
  100  exit
  101  history 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值