Linux上增加自定义脚本的展现量
前言
在一台Linux机器上写好一个脚本以后,希望这个脚本让这台机器上其他用户使用,但是不可能会让别人记住这个脚本的路径,这个时候该怎么办呢?
原理
在回答上面的问题之前,我们首先思考下面这个问题:为什么我们用的很多指令都不需要绝对路径的文件名呢?
我以最常用的ls指令为例子。首先要查看指令的执行文件位置:which ls。输出的内容为:/bin/ls。
为什么ls指令就不需要以绝对路径名就能调用呢?
这是因为环境变量PATH指定了默认的检索路径。那么要怎么去查看环境变量呢?
1. 输出内置变量PATH:echo $PATH
2. 查看所有变量:env
但是有时候我们使用ll也能调用带有参数的ls指令,但是使用which ll却找不到执行文件。这是使用了别名alias指令指定了指令的别名。
其实除此之外我们还可以在PATH的路径中添加链接文件指向我们的指令。
由此可知,可以通过以下方式指定脚本的路径:
1. 在PATH变量中添加脚本路径
2. 使用alias指令设置别名
3. 在PATH中的路径目录中增加链接文件
实战
准备自定义脚本
- 创建脚本文件:touch mysh.sh
- 编辑脚本文件(如果没安装vim可以改为用vi):vim mysh.sh
- 按Insert键进入编辑模式,文件内容如下:
#!/bin/bash
echo "Hello World!"
- 按Esc键退出编辑模式,输入:wq保存并退出
- 授予脚本文件执行权限:chmod +x mysh.sh
- 尝试执行脚本:./mysh.sh
修改环境变量PATH
- 修改profile文件:vim /etc/profile,在文件尾部添加以下内容:export PATH=$PATH:/root。内容中的/root可以替换为脚本所在的目录。
- 使修改后的profile文件生效:soruce /etc/profile
- 检查PATH修改是否生效:echo $PATH
- 尝试执行脚本:mysh.sh
设置别名
- 修改profile文件:vim /etc/profile,在文件尾部添加设置别名的内容,注意要使用全路径名:alias mysh=/root/mysh.sh内容中的/root可以替换为脚本所在的目录。
- 使修改后的profile文件生效:soruce /etc/profile
- 检查增加别名是否生效:alias mysh
- 尝试执行脚本:mysh
使用链接文件
- 创建链接文件:ln -s /root/mysh.sh /usr/bin/mysh
- ln为创建链接文件的指令,-s参数为创建软链接文件。/root/mysh.sh为目标文件,即需要创建软链接的文件。/usr/bin/mysh为创建的软链接文件。
- 通过软链接文件名执行脚本:mysh
题外话
有时候解压一些工具,想尝试运行的时候,不是全路径名执行,就是跳转到执行文件所在的目录,然后./执行文件名。
如果是懒得打./,可以在profile文件的底部添加以下内容:export PATH=$PATH:./。注意这段内容尽量保证在文件最后一行。
总结
在最后汇总以下使用到的指令和工具:
1. 查看文件信息:ls
2. 跳转到某个目录:cd
3. 输出指令:echo
4. 文本编辑器:vim
5. 查看环境变量:env
6. 查看指令或者工具的执行文件所在路径:which
7. 别名指令:alias
8. 配置刷新:source
9. 文件授权:chmod
10. 设置环境变量:export
11. 创建链接文件:ln
相关推荐
-
Linux 在Bash脚本中怎么关闭文件描述符的实例
Linux 在Bash脚本中怎么关闭文件描述符的实例 在写一个Bash脚本的时候碰到一个问题,这个脚本是用来启动一个程序B的,而这个脚本又被另一个程序A调用,结果发现新启动的B进程中有很多A进 程打开的文件描述符(如Socket).因此决定在脚本中将它们关闭,因为为了简单起见,我在A程序中使用了system()来启动该脚本. 增加了关闭文 件描述符的脚本如下: #!/bin/sh cd $(dirname "$0") || exit 1 exec 3>&- exec 4&
-
Linux Shell制作录制回放功能脚本
不久前在书上看到两个很有趣的命令--script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还只是一般的文本文件,文件的大小非常小,真是非常有意思.下面是本人写的两个shell程序,来方便进行这个有趣并有意义的操作. 一.实现代码 文件:Record.sh #! /bin/bash # Filename:Record.sh read -p "Please input the sesso
-
Linux下文件剪切的shell脚本实现代码
需求描述 编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作. 其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录.要求当源目录不存在.源目录下无文件及剪切文件成功时,均要在屏幕上输出相关的日志信息:并且,在程序执行之前,只有源目录是存在的,目的目录需要由程序创建. shell脚本 umask 0000 if [ -d $1 ] then fcnt=`ls -l $1 | wc -l` if [ $fcnt -ne 1 ] then mkdir
-
Linux下服务器重启的脚本命令
Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdown命令 Shutdown命令可以安全地关闭系统,有些用户会使用直接断电源的方式来关闭计算机,这是十分危险的. Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,在有的系统中甚至会损坏硬件设备. 如果在系统关机前使用shutdown命令
-
如何使用Shell脚本掩盖Linux服务器上的操作痕迹(推荐)
使用Shell脚本在Linux服务器上能够控制.毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数攻击也留下踪迹.当然,这些踪迹也可通过Shell脚本等方法来隐藏. 寻找攻击证据就从攻击者留下的这些痕迹开始,如文件的修改日期.每一个 Linux 文件系统中的每个文件都保存着修改日期.系统管理员发现文件的最近修改时间,便提示他们系统受到攻击,采取行动锁定系统.然而幸运的是,修改时间不是绝对可靠的记录,修改时间本身可以被欺骗或修改,通过编写 Shell 脚本,攻击者可将备
-
Linux下Python脚本自启动与定时任务详解
前言 最近同事问了一个关于Python脚本自启动与定时任务的问题,发现很多的朋友对这块都不是特别的熟悉,所以本文主要给大家介绍的是关于Linux下Python脚本自启动与定时任务的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 一.让Python随Linux开机自动运行 准备好要自启的脚本auto.py 用root权限编辑以下文件 sudo vim /ect/rc.local 在exit 0上面编辑启动脚本的命令 /usr/bin/python3.5 /home/edgar
-
Linux定义变量脚本分享
本文实例为大家分享了Linux定义变量脚本,供大家参考,具体内容如下 现有两段基本一样的代码,只是变量进行改变,其他都没有变化,但是执行过程中出现了不一样的结果 代码一: vi back.sh #backup import file,such as /etc/rc.local /var/spool/cron/root IP=$(ifconfig eth1|sed -nr '2s#.*addr:(.*) B.*#\1#gp') Path=/backup if [ $(date +%w) -eq 0
-
Linux上增加自定义脚本的展现量
前言 在一台Linux机器上写好一个脚本以后,希望这个脚本让这台机器上其他用户使用,但是不可能会让别人记住这个脚本的路径,这个时候该怎么办呢? 原理 在回答上面的问题之前,我们首先思考下面这个问题:为什么我们用的很多指令都不需要绝对路径的文件名呢? 我以最常用的ls指令为例子.首先要查看指令的执行文件位置:which ls.输出的内容为:/bin/ls. 为什么ls指令就不需要以绝对路径名就能调用呢? 这是因为环境变量PATH指定了默认的检索路径.那么要怎么去查看环境变量呢? 1. 输出内置变量
-
Linux上为你的任务创建一个自定义的系统托盘指示器
系统托盘图标如今仍是一个很神奇的功能.只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击. 一说到有用的系统托盘图标,我们很容易就想到 Skype.Dropbox 和 VLC: 然而系统托盘图标实际上要更有用得多:你可以根据自己的需求创建自己的系统托盘图标.本指导将会教你通过简单的几个步骤来实现这一目的. 前置条件 我们将要用 Python 来实现一个自定义的系统托盘指示器.Python 可能已经默安装在所有主流的 Linux 发行版中了,因此你只需要
-
在linux上定期执行命令、脚本(cron,crontab,anacron)
人类把时间做了切割,想象一条笔直的线永远向前,本来这条直线上什么都没有,但是人类根据时间的长短(单位)在这条直线上做了密密麻麻的标记(世纪-年-月-日-时-分-秒-纳秒......),通过这样的方式历史上的每一个时刻都能够被单独拿出来,而未来的每一个时刻也能被单独计划.更重要的是,每一个单独的时刻又能跟相邻的被更大单位所控制的相似时刻做比较,比如,今天的晚上12点跟明天的晚上12点,相似的是,两个时刻都是12点,不同的是今天跟明天,她们是相邻的更大单位.因为这样的缘故,在被更大单位所隔开的每一个
-
在Linux上用forever实现Node.js项目自启动
那么能否利用forever加启动脚本方式解决上述问题呢?答案当然是肯定的,只不过有点麻烦,而且forever官方缺少详细的配置文档.我在配置的时候也走了一些弯路,下面详细来说. 注:本文的实验环境是Ubuntu Server 12.04 LTS x86_64,在CentOS上的配置更简单一些 最早,我想着试试在/etc/rc.local中增加一句forever start xxx看看,结果发现Ubuntu(其他系统一样)就不鸟我,主要矛盾就是mongodb使用这种方式就可以跑起来,forever
-
PHP在linux上执行外部命令的方法
目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用专门函数.2>反引号.3>popen()函数打开进程,三种方法来实现: 方法一:用PHP提供的专门函数(四个): PHP提供4个专门的执行外部命令的函数:exec(), system(), passthru(), shell_exec() 1)exec() 原型: string exec ( st
-
CentOS 开机启动自定义脚本详解及实现
CentOS 开机启动自定义脚本 有些时候我们需要在服务器里设置一个脚本,让他一开机就自己启动.方法如下: cd /etc/init.d vi youshell.sh #将youshell.sh修改为你自己的脚本名 编写自己的脚本后保存退出. 在编写脚本的时候,请先加入以***释 #add for chkconfig #chkconfig: #description: #关于脚本的简短描述 #processname: #第一个进程名,后边设置自启动的时候会用到 说明: 2345是指脚本的
-
Linux CentOS 定时运行脚本配置的方法
很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如使用七牛的工具上传,如果同步文件里面有新增加一个文件,这个时候我们可以提供定时脚本去完成我们需要的同步命令(七牛的qrsbox工具是自动会同步的,只需要在同步文件夹里面增加一个文件就会自动监听上传). 1.安装crontab [root@CentOS ~]# yum install vixie-cron [root@CentOS ~]# yum install crontabs vixie-cron软件包是cron的主程序: cron
-
Linux Centos下使用脚本安装Docker的方法
Docker的主要作用是什么? 目前来看bai,Docker至少有以下应用场景: 1)测试:Docker 很适du合用于测试发布,将 Docker 封装后可zhi以直接提dao供给测试人员进行运行,不再需要测试人员与运维.开发进行配合,进行环境搭建与部署. 2)测试数据分离:在测试中,经常由于测试场景变换,需要修改依赖的数据库数据或者清空变动 memcache.Redis 中的缓存数据.Docker 相较于传统的虚拟机,更轻量与方便.可以很容易的将这些数据分离到不同的镜像中,根据不同需要随时进行
-
在Linux上搭建一个Java部署环境的详细步骤
目录 在Linux上搭建一个Java部署环境 1. 安装jdk 2.操作步骤: 3. 安装mysql 小结 上篇介绍了如何在 Linux 上搭建 java 部署环境(安装jdk/tomcat/mysql) + 将程序部署到云服务器上的操作). 在Linux上搭建一个Java部署环境 为了部署java web程序,需要安装:jdk.tomcat.mysql.(注意:所有的安装yum都需要管理员权限) 1. 安装jdk 安装jdk有很多种方式,但是我们这里推荐的是使用yum直接安装openjdk.
-
在Linux上安装Python的Flask框架和创建第一个app实例的教程
无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会.回到大学我希望他们教我的是Python而不是Java,这学起来很有趣且在实际的应用如yum包管理器中很有用. 本篇教程中我会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函数.模块.HTML/CSS (基础). 学习这篇教程你不必是一个python高级开发者,但是首先我建议你阅读http
随机推荐
- 如何理解Vue的render函数的具体用法
- 原生JavaScript实现AJAX、JSONP
- Javascript中获取对象的原型对象的方法小结
- 保证JavaScript和Asp、Php等后端程序间传值编码统一
- JavaScript实现弹出子窗口并传值给父窗口
- PHP检测移动设备类mobile detection使用实例
- PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
- 坏狼php学习 计数器实例代码
- 百度实时推送api接口应用示例
- 学好C++必须做到的50条 绝对经典!
- JavaScript实现GriwView单列全选(自写代码)
- Android自定义View实现仿GitHub的提交活跃表格
- Ruby中百分号和字面值的使用示例
- jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
- Javascript blur与click冲突解决办法
- asp.net 事件与委托分析
- C#基于XNA生成随机颜色的方法
- example1.php
- android如何获取手机联系人的数据库示例代码
- 双机热备的全面配置示例