Bash 绕过别名 Linux/Unix 命令
alias mount='mount | column -t'
但是,我需要绕过 bash 别名来挂载文件系统和其他用途。如何在 Linux、*BSD、macOS 或类 Unix 系统上暂时禁用或绕过我的 bash shell 别名?
您可以使用 alias 命令定义或显示 bash shell 别名。一旦创建了 bash shell 别名,它们将优先于外部或内部命令。本页介绍如何暂时绕过 bash 别名,以便您可以运行实际的内部或外部命令。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | Linux shell 脚本 |
先决条件 | 猛击 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 3 分钟 |
绕过 bash 别名的四种方法
尝试以下任一方式来运行由 bash shell 别名所遮蔽的命令。让我们定义一个别名,如下所示:
$ alias mount='mount | column -t'
按如下方式运行它:
$ mount
示例输出:
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=8023572k,nr_inodes=2005893,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1610240k,mode=755) /dev/mapper/ubuntu--vg-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) /dev/sda1 on /boot type ext4 (rw,relatime,data=ordered) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) lxcfs on /var/lib/lxcfs type fuse.lxcfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
方法 1 – 使用\命令
键入以下命令来暂时绕过名为 mount 的 bash 别名:
shell 命令前的反斜杠转义字符可禁用和覆盖任何 shell 别名。
$ \alias-name-here
# disabling mount alias
$ \mount
方法 2 – 使用“command”或“command”
引用 mount 命令如下来调用实际的 /bin/mount:
或者
$ "mount"
$ 'mount'
方法 3 – 使用完整命令路径
使用完整二进制路径,例如 /bin/mount:
但是,如何找到完整路径?尝试使用 type 命令或 command 命令。例如,查找 ls 命令和date 命令的完整路径:
$ /bin/mount
$ /bin/mount /dev/sda1 /mnt/sda
$ type ls date
$ type -a ls date
$ command -v ls date
方法 4 – 使用内部命令
语法是:
要覆盖 .bash_aliases 中设置的别名,例如 mount:
'command' 运行一个简单命令或显示有关命令的信息。它使用 ARGS 运行 COMMAND,抑制 shell 函数查找或别名,或显示有关给定 COMMAND 的信息。
$ command cmd
$ command cmd arg1 arg2
$ command mount
$ command mount /dev/sdc /mnt/pendrive/
关于 unalias 命令的说明
要从当前会话中定义的别名列表中删除每个别名,请使用 unalias 命令:
$ unalias mount
要从当前 bash 会话中删除所有别名定义:
$ unalias -a
请确保更新 ~/.bashrc 或 $HOME/.bash_aliases 文件。如果要永久删除定义的别名,则必须删除它们:
$ vi ~/.bashrc
或者有关更多信息,请参阅此处的
$ joe $HOME/.bash_aliases
在线 bash 命令手册页或通过键入以下 man 命令/帮助命令来阅读它:
$ man bash
$ help command
$ help unalias
$ help alias
总结
您学习了在 Linux 或 Unix 机器上绕过 bash 别名的各种方法。让我们总结一下
如何绕过 bash 别名
- 在 bash 别名前添加前缀 \ 以避免调用别名:
\alias-name - 使用 shell 内置的命名命令:
command rm - 尝试使用 shell 命令的完整路径来绕过别名:
/bin/mount - 在命令中添加单引号或双引号以避免使用别名:
"rm" filename
或
'rm' file1
请检查以下文档: