用Linux发挥自己的创造力,自主编写个人命令 (linux 自己写命令)

随着计算机时代的发展,软件系统不断升级,计算机应用领域日益拓宽,各种操作系统也层出不穷,其中以Linux最为经典、稳定、安全、灵活,并且有着广泛的应用场景。Linux系统不仅可以利用现成的命令完成各种操作,更可以通过自主编写命令来发挥自己的创造力。本文将会介绍Linux命令的基本构成,以及如何利用常用工具封装成自己的命令,并最终用Python脚本完成一个实用的自己编写的命令。

一、Linux命令的基本构成

正如我们平时在Linux中所用的命令一样,每一个Linux命令都由三个部分组成,即命令 + 选项 + 参数。

1. 命令:

命令是指在Linux系统下可执行的程序或脚本文件。每一个命令都有着自己的功能,在使用时通过输入命令来启动对应的功能。

2. 选项:

选项是指在执行命令时需要添加的参数,用来调整命令的参数或行为。选项的前缀一般是“-”,如果有多个选项的话,可以把它们紧密地组织在一起。举个例子,如果我们使用“ls -al”命令,其中“-a”和“-l”就是两个选项,表示显示文件的全部信息和以列表形式显示文件的详细信息。

3. 参数:

参数是指在执行命令时需要传递的特定值,用来指定需要对哪些文件或目录进行操作。参数可以是一个或多个,它们是命令的具体操作对象。比如“cd /usr”,其中的“/usr”就是参数,用来指定切换到“/usr”目录。

二、如何用常用工具封装成自己的命令

在Linux系统中,我们可以利用已有的工具封装成自己的命令,来进一步发挥自己的创造力。下面就以封装常用的“find”命令来举例。

1. 创建shell脚本

我们需要创建一个新的shell脚本,以便在其中编写我们自己的命令。在终端输入以下命令:

vi myfind

这将会创建一个名为“myfind”的文件。

2. 编写脚本

接下来,我们需要在“myfind”脚本中编写相关代码。以下是一个简单的示例:

#!/bin/bash

if [ $# -ne 2 ]; then

echo “Usage: myfind [path] [pattern]”

exit 1

fi

find $1 -name “${2}”

在脚本中,我们首先指定解释器为bash,然后通过“$#”获取参数数量,如果参数数量不等于2,则提示使用方法并返回错误代码。如果参数数量正确,则使用“find”命令查找指定路径下的所有文件名匹配指定模式的文件,并将其打印出来。

3. 为脚本添加可执行权限

我们还需要为该脚本添加可执行权限,这样才能在终端中执行该命令。在终端输入以下命令:

chmod +x myfind

现在我们就可以愉快地使用我们自己编写的命令了。例如,在终端中输入“myfind /home/user *.txt”,就可以查找“/home/user”目录下所有扩展名为“.txt”的文件。

三、用Python脚本完成一个实用的自己编写的命令

在之前的例子中,我们通过封装现有的工具来编写自己的命令。但是,如果我们想编写更加实用、功能更加丰富的命令,就需要使用Python脚本了。

1. 创建Python脚本

在终端中输入以下命令,创建一个名为“mycmd”的Python脚本文件:

vi mycmd.py

2. 编写脚本

接下来,我们可以在“mycmd.py”中编写我们自己的命令。例如,以下是一个基于Python的简单计算器命令:

#!/usr/bin/python

import argparse

parser = argparse.ArgumentParser(description=”A simple calculator command.”)

parser.add_argument(“x”, type=float, help=”the first operand”)

parser.add_argument(“y”, type=float, help=”the second operand”)

parser.add_argument(“-a”, “–add”, action=”store_true”, help=”add two operands”)

parser.add_argument(“-s”, “–subtract”, action=”store_true”, help=”subtract two operands”)

parser.add_argument(“-m”, “–multiply”, action=”store_true”, help=”multiply two operands”)

parser.add_argument(“-d”, “–divide”, action=”store_true”, help=”divide two operands”)

args = parser.parse_args()

if args.add:

print(args.x + args.y)

elif args.subtract:

print(args.x – args.y)

elif args.multiply:

print(args.x * args.y)

elif args.divide:

print(args.x / args.y)

在脚本中,我们使用了“argparse”库来实现命令行参数的解析。我们指定了4个参数(两个必须参数和4个可选参数),分别表示两个操作数和四种运算方式。当参数解析完成后,根据用户的输入进行对应的计算操作,最终输出计算结果。

3. 为脚本添加可执行权限

我们还需要为该脚本添加可执行权限,以便在终端中执行它。在终端中输入以下命令:

chmod +x mycmd.py

现在我们就可以愉快地使用我们自己编写的命令了。在终端中输入“./mycmd.py 2 2 –add”,就可以计算2+2的结果,并将其输出到终端中。

综上所述,利用Linux系统可以发挥自己的创造力,自主编写个人命令,从而方便自己在日常计算机操作中的实用性。通过本文的介绍,相信读者已经掌握了如何编写自己的命令的基本方法和原理,并且可以熟练地使用Linux系统下的各种工具进行封装,以及使用Python脚本实现更加实用和有趣的命令。欢迎读者在自己的计算机上尝试编写自己的命令,发挥自己的创造力和想象力!

相关问题拓展阅读:

centos 怎样写linux命令

Linux的常用基本命令。

  首先启动Linux。启动完毕后需要进行用户的登录,选择登陆的用户不同自然权限也不一样,其中“系统管理员”拥有更高权限。

  在启动Linux后屏幕出现如下界面显示:

  ……

  Red Hat Linux release 9 (Shrike)

  Kernel2.4.20.8 on an i686

  login:

  输入:root(管理员名)后,计算机显示输口令(password:),输入你的口令即可。当计算机出现一个“#”提示 符时,表明你登录成功!

  屏幕显示Linux提示符: #_

  这里需要说明的是“Red Hat Linux release 9 (Shrike)”表示当前使用的操作系统的名称及版本。“2.4.20.8”表示Linux操作系统的核

心版本编号。“i686”表示该台电脑使用的CPU的等级。

  下面我们来介绍常用基本命令

  一,注销,关机,重启

  注销系统的logout命令

  1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可:

  #logout

  Red Hat Linuxrelease 9(Shike)

  Kernel2.4.20.8 on an i686

  Login: ← 回到登陆的画面

  2,关机或重新启动的shutdown命令

  Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。

  参数说明如下:

   立即关机:-h 参数让系统立即关机。范例如下:

  #shutdown –h now ← 要求系统立即关机

 指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下:

  #shutdown now ← 立刻关机

  #shutdown +5 ← 5分钟后关机

  #shutdown 10:30 ← 在10:30时关机

   关机后自动重启:-r 参数设置关机后重新启动。范例如下:

  #shutdown -r now ← 立刻关闭系统并重启

  #shutdown -r 23:59 ← 指定在23:59时重启动

  3,重新启动计算机的reboot命令

  顾名思义,reboot命令是用来重新启动系统的。常用的参数如下:

   -f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。

   -I 参数:在在重新启动之前关闭所有网络接口。

  虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了

  二,文件与目录的操作

 1,列出文件列表的ls命令

  ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例

如下:

   显示当前目录的内容:

  $ ls

  Desktop mail myinstall.log test.txt ← 有两个目录及两个文件夹

   当运行ls命令时,并不会显示名称以“.”开头的文件。因此可加上“-a”参数指定要列出这些文件。范例如下:

  $ ls –a

   以“-s”参数显示每个文件所有的空间,并以“-S”参数指定按所有占用空间的大小排序。范例如下:

  $ ls –s –S

  总计36

  4 Desktop 4 mail 24 myinstall.log 4 test.txt

   在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下:

  $ ls –l/usr/games

2,切换目录的cd命令

  cd(change directory)命令可让用户切当前所在的目录。范例如下:

  $ cd tony ← 切换到当前目录下的tony子目录

  $ cd .. ← 切换到上一层目录

  $ cd / ← 切换到系统根目录

  $ cd ← 切换到用户主目录

   $ cd /usr/bin ← 切换到/usr/bin目录

  3,创建目录的mkdir命令

  Mkdir(make directory)命令可用来创建子目录。下面的范例会在所在目录下创建tool子目录。

  $ mkdir tool

  4,删除目录的rmdir命令

  rmdir(remove directory)命令可用来删除“空”的子目录。范例如下:

  $ rmdir tool ← 删除tool目录

  5,复制文件的cp命令

  cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令将以个文件复制成另一个文件或复制到某个目录时,需要指定原始文件

名与目的文件名或目录。范例如下:

  $ cp data1.txt data2.txt ← 将data1.txt复制成data2.txt

  $ cp data3.txt /tmp/data ← 将data3复制到/tmp/data目录中

   显示复制过程:加入-v参数可显示命令执行过程。范例如下:

  $ cp zip.txt zip2.txt ← 一般状态下不会显示复制过程

  $ cp –v zip.txt zip3.txt ← 以-v显示复制过程

   zip.txt ->zip3.txt

   递回复制:加入“-R”参数可同时复制目录下的所有文件及子目录。范例如下:

  $ cp –v –R * backup ← 将所有文件(含子目录文件)复制到backup目录

  6,删除文件或目录的rm命令

  rm(remove)命令可以删除文件或目录。范例如下:

  $ rm myfile ← 删除指定的文件

  $ rm * ← 删除当前目录中的所有文件

rm命令的常用参数如下:

   强迫删除:使用-f参数时,rm命令会直接删除文件,不再询问。范例如下:

  $ rm –f *.txt ← 强迫删除文件

   递回删除:-r 也是一个相当常用的参数,使用此参数可同时删除指定目录下的所有文件及子目录。范例如下:

  $ rm –r data ← 删除data目录(含data目录下所有文件和子目录)

  $ rm –r * ← 删除所有文件(含当前目录所有文件,所有子目录和子目录下的文件)

   强制删除指定目录:当使用-r参数删除目录时,若该目录下有许多子目录及文件,则系统会不间断地询问,以确认您的确要删除

目录或文件。若已确定要删除所存目录及文件,则可以使用-rf参数,如此一来,系统将直接删除该目录中所有的文件及子目录,不再询问。范

例如下:

  $ rm –rf tmp 强制删除tmp目录及该目录下所有文件及子目录

   显示删除过程:使用-v 参数。范例如下:

  $ rm –v

  7,让显示画面暂停的more命令

  为了避免画面显示瞬间就闪过去,用户可以使用more命令,让画面在显示满一页时暂停,此时可按空格键继续显示下一个画面,或按Q键停

止显示。

   当使用ls命令查看文件列表时,若文件太多则可以配合more命令使用。范例如下:

  $ ls –al   more

   单独使用more命令时,可用来显示文字文件的内容。范例如下:

  $ more data.txt

  8,连接文件的cat命令

  cat(concatenate) 命令可以显示文件的内容(经常和more命令搭配使用),或是将数个文件合并成一个文件。范例如下:

   逐页显示 preface.txt的内容:

  $ cat preface.txt   more

   将preface.txt 附加到outline.txt文件之后:

  $ cat preface.txt >> outline.txt

   将new.txt和info.txt合并成readme.txt文件:

  $ cat new.txt info.txt >readme.txt

9,移动或更换文件,目录名称的mv命令

  mv (move)命令可以将文件及目录移动到另一个目录下面,或更换文件及目录的名称。范例如下:

  $ mv a.txt .. ← 将a.txt文件移到上层目录

  $ mv z1.txt z3.txt ← 将 z1.txt改名成z3.txt

  $ cd.. ← 切换到上一层目录

  $ mv backup.. ← backup 目录上移一层

  10,显示当前所在目录的pwd命令

  pwd(print working directory)命令可显示用户当前所在的目录。范例如下:

  $ pwd

  /home/tony ← 当前所在目录为“/home/tony”

  11,查找文件的locate命令

  locate 命令可用来搜索包含指定条件字符串的文件或目录。范例如下:

  $ locate zh_CN 列出所有包含“zh_CN”字符串的文件和目录。

  由于locate命令是从系统中保存文件及目录名称的数据库中搜索文件,虽然系统会定时更新数据库,但对于刚新增或删除的文件、目录,

仍然可能会因为数据库尚未更新而无法查得,此时可用root身份运行updatedb命令更新,为此数据库得内容正确。

  12,搜索字符串得grep命令

  grep 命令可以搜索特定字符串来并显示出来,一般用来过滤先前得结果,避免显示太多不必要得信息。范例如下:

  $ grep text *.conf ← 搜索当前目录中扩展名为.conf且包含“text”字符串得文件。

  grep:amd.conf: ← 拒绝不符权限得操作

  grep:diskcheck.conf: ← 拒绝不符权限得操作

  grep:grub.conf ← 拒绝不符权限得操作

   若您是使用一般权限的用户运行,上例的输出结果会包含很多如“拒绝不符权限的操作之类的错误信息,可使用-s参数消除。

   $ grep –s text *.conf

13,重导与管道

  重导(redirect)可将某命令的结果输出导文件中,它有两中命令:“>”和“>>”。“>”可将结果输出到文件中,该文件原有的内容会被

删除:“>>”则将结果附加到文件中,原文件内容不会被清除。范例如下:

  $ ls –a>dir.txt ← 将ls –a命令执行结果输出到dir.txt文件。

  $ cat data1.txt >> data2.txt ← 将 data1.txt 内容附加到data2.txt文件之后。

  通道(pipe)命令的符号是“ ”,可将某命令的结果输出给另一命令,一下范例将ls命令的输出结果传给grep命令过滤:

  $ ls   gerp conf ← 搜索并显示ls命令运行结果中包含有“conf”字符串

  在举一个删除文件或目录的例子,可以利用yes命令重复输出“y”字符的特性,将结果传给rm命令,如此即可避免重复输入“y”:

  $ yes   rm –r mydir

  三,使用光盘及软盘

  在Linux的文字模式下要使用光盘或软盘,并不是只将光盘或软盘放入即可,用户需要运行加载的命令,才可读写数据。所谓加载就是将存

储介质(如光盘和软盘)指定成系统中的某个目录(如/mnt/cdrom或mnt/floppy)。通过直接存取此加载目录,即可读写存储介质中的数据。

以下就来看看文字模式下的加载及卸载命令。

  1,加载的mount命令

  要使用光盘时先把光盘放入光驱,然后执行加载的mount命令,将光盘加载至系统中:

  # mount/dev/cdrom/mut/cdrom ← 加载光盘

  同理,使用软盘之前也需要和光盘一样,必须先加载后才能使用:

  # mount/dev/fd0/mut/floppy ← 加载软盘

  2,卸载的umount命令

  如果不需要使用光盘或软盘,则需先执行卸载命令之后,才能将光盘或软盘退出。范例如下:

  # umount / mnt/cdrom ← 光盘卸载

  在不使用软盘时执行umount 命令卸载软盘,再将软盘拿出

  # umount / mnt/ ← 软盘卸载

四,在后台运行程序

  用户有时的程序有可能要花费很多时间,如果将它放在前台运行,将导致无法继续做其他事情,更好的方法就是将它放在后台运行,甚至

可能希望在用户注销系统后,程序还可以继续运行。让我们看看那如何实现这一目的。

  1,在后台运行程序的&、bg命令

  将程序放到后台运行的最简单方法就是在命令最后加上“&”,范例如下:

  # updatedb & ← 在后台执行 locate 数据库更新命令

  # bg ← 将更新操作放到后台运行

  2,前台运行的程序fg命令

  如果用户当前已有程序在后台运行,可以输入fg命令,将它从背景中移到前台运行:

  # fg ← 放到前台执行的命令会显示出来

  3,在退出后让程序继续运行的nohup命令

  此命令可使用户退出系统后,程序继续运行。范例如下:

  $ nohup myserver &

  然后用户就可以退出了,当再次登录的时候,可以用ps –aux命令看到程序仍在后台中运行。

  五,任务调度命令

  计算机有很多程序需要周期性的被运用,例如清理磁盘中不要的暂存盘、备份系统数据、检查远程服务器的邮件等。对于这些重复性的工

作,其实不需要每次都辛苦地运行这些程序。可利用任务调度命令,指定系统定期在某个时间运行这些程序,轻轻松松完成想要执行的工作。

  任务调度的crond常驻命令

  crond 是Linux用来定期执行程序的命令。当安装完成操作系统后,默认便会启动此任务调动命令。crond命令每分钟会定期检查是否有要

执行的工作,如果有要执行的工作,便会自动执行该工作。由于任务调度中间的操作过程十分繁杂,我们只将任务调度文件的写法介绍给大家

,供大家参阅:

  Minute Hour Day Month DayOfWeek Command

  在这段文字中除了“Command”是每次都必须指定的字段以外,其他自动皆可视需求自行决定是否指定。

  六,任务调度的系统工作

  /ect/crontab/文件是Linux系统工程的任务调度设置文件,其默认的内容如下:

  SHELL=/bin/bash ← 指定执行任务调度工作时所使用的SHELL

  PATH=/shin:/bin:/usr/in:/usr/bin ← 指定命令搜索的路径

  MAILTO=root ← 指定将输出结果给root用户

关于linux 自己写命令的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 用Linux发挥自己的创造力,自主编写个人命令 (linux 自己写命令)