当前位置: 首页 > article >正文

Linux alias使用

在 Linux 系统中,alias 命令用于为命令创建别名。别名可以简化命令的输入,特别是对于那些长且复杂的命令。以下是一些关于 alias 命令的基本用法和示例。

基本用法

创建别名
alias shortname='long command'

例如,将 ls -al 命令创建一个别名 ll

alias ll='ls -al'

执行ll指令将执行 ls -al 命令,并显示当前目录的详细列表。

查看当前别名
alias
查看特定别名
alias shortname
移除别名
unalias shortname

例如,移除 ll 别名:

unalias ll
永久保存别名

常见的可以配置别名的文件

~/.bashrc:适用于交互式非登录 shell。通常在你打开一个新的终端窗口或 tab 时加载。
~/.bash_profile 或 ~/.profile:适用于登录 shell。通常在你登录系统时加载,例如通过 SSH 或在控制台登录。
/etc/profile:系统范围的配置文件,适用于所有用户的登录 shell。
在 ~/.bashrc 中添加别名

其他文件中添加别名类似

# 打开 .bashrc 文件
vi ~/.bashrc

# 添加别名定义
alias ll='ls -al'

# 保存文件并退出编辑器
# 重新加载 .bashrc 文件
source ~/.bashrc

定义别名时不改变程序当前运行路径

如果自己编译的程序,放置在Linux下的某个文件夹下,想使用alias的方式,可以在随意的目录调用该程序,且不想改变该程序的运行路径(该程序可能在运行时会使用相对路径的方式调用配置文件),alias的编写如下:

编译的程序放置的目录:/home/test_folder/your_program.bin

vi ~/.bashrc
# 增加如下
alias pm='(cd /home/test_folder/ && ./your_program.bin)'
source ~/.bashrc

这样程序的当前运行名录就是:/home/test_folder

带参数的命令如何在全局运行

如果自己编译的软件,需要输入option,这时候就不能使用alias指令了,因为alias指令不支持传参,可以在软件所在的目录创建一个myprogram.sh脚本。

vi myprogram.sh

增加的内容如下:

#!/bin/bash

# 获取脚本所在的目录
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")

# 切换到脚本所在的目录
cd "$SCRIPT_DIR"

# 运行软件并传递所有参数
./mysoftware "$@"

设置脚本的启动权限

chmod +x /folder_path/mysoftware.sh

编辑你的 shell 配置文件,例如 ~/.bashrc 或 ~/.bash_profile

1. 在文件的末尾添加下面的配置:
export PATH=$PATH:/opt/mysoftware

/opt/mysoftware :软件以及启动软件的sh脚本所在的路径

重新加载配置文件:

source ~/.bashrc

这样软件可以在全局执行,并且不会改变软件的当前运行路径。

脚本解释:

SCRIPT_DIR=$(dirname "$(readlink -f "$0")") 是一个常见的 Bash 语句,用于获取当前脚本所在的目录。让我们逐步解析这条语句的含义:

$0:这是一个特殊变量,表示当前脚本的名称。如果脚本是通过相对路径调用的,那么 $0 也会包含相对路径。

readlink -f "$0":readlink 命令用于解析符号链接,并返回目标文件的绝对路径。-f 选项表示返回文件的绝对路径。如果 $0 是一个相对路径,readlink -f "$0" 会将其转换为绝对路径。

$(...):这是命令替换语法,用于执行括号中的命令,并将其输出作为结果返回。在这个例子中,$(readlink -f "$0") 会返回当前脚本的绝对路径。

dirname ...:dirname 命令用于去掉文件名,返回目录部分。dirname "$(readlink -f "$0")" 会返回当前脚本所在的目录的绝对路径。

SCRIPT_DIR=...:将上述命令的输出赋值给变量 SCRIPT_DIR,即当前脚本所在的目录。
2. 使用alias方式
alias shortCMD='/opt/mysoftware/mysoftware.sh'

重新加载配置文件:

source ~/.bashrc


http://www.kler.cn/a/550032.html

相关文章:

  • 人工智能 - 机器学习、深度学习、强化学习是人工智能领域的理论基础和方法论
  • LLM:GPT 系列
  • wed前端:实现页面中可以拖动的登录窗口
  • Flutter 添加 iOS widget 小组件
  • hbase合并队列超长问题分析
  • Word中打开开发工具【修改日期控件显示格式】
  • API网关基础知识总结
  • 前端知识速记—JS篇:JS数组方法
  • Word 里面嵌入DeepSeek
  • 高效构建与配置高可用负载均衡集群:从理论到实践的全面实施
  • 【落羽的落羽 数据结构篇】双向链表
  • 第四期书生大模型实战营-第5关-L2G5000
  • spring session、spring security和redis整合的简单使用
  • 框架ThinkPHP(小迪网络安全笔记~
  • Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形
  • ElasticSearch详解
  • 【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
  • 在c#中虚方法和抽象类的区别
  • 网络接收的流程理解
  • WEB安全--SQL注入--堆叠注入