简化命令知多少——PATH和alias


关于PATH变量

1.概念

PATH变量就是用于保存可以搜索的目录路径,如果待运行的程序不在当前目录,操作系统便可以去依次搜索PATH变量变量中记录的目录,如果在这些目录中找到待运行的程序,操作系统便可以运行。说白了就是让你可以偷懒,少敲点代码,不用输入命令的绝对路径,而输入相对路径即可。

2.PATH变量里都有些什么

[root@localhost ~]# echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:/usr/bin/:/root/bin

3.使用方法

#以ls命令为例,先查看它的位置
[root@localhost ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls
#可以看到ls的绝对路径为/usr/bin/ls,它是在PATH变量的/usr/bin/目录下的,因此当我们执行ls命令时,它会去这个路径下寻找,因此我们才能使用较简便的写法ls,而不是打出复杂的命令/uer/bin/ls
#现在给PATH变量重新赋值,相当于给linux机器设置了一个新的变量,去掉/usr/bin/这个路径
[root@localhost /]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin/:/usr/local/cmatrix12/bin/:/root/bin
#再打印这个变量,可以发现已经没有/usr/bin/
[root@localhost /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin/:/root/bin
#此时再敲打ls命令,发现命令找不到了
[root@localhost /]# ls
-bash: ls: command not found
#这不代表该命令不存在了,而是我们没法再偷懒利用ls命令了,必须输入它的绝对路径/usr/bin/ls才好使
[root@localhost /]# /usr/bin/ls
bin	     etc	     linux0224	   proc  test	   wangyiyun_music     网易云音乐
boot	     home	     media	   root  test_tar  wangyiyun_songs
cc01	     jumpserver-dev  mnt	   run	 test_vim  xusong_songs
david01      lib	     my_data	   sbin  tmp	   yuchao01
dev	     lib64	     new_file.txt  srv	 usr	   yuchao_data.tar.gz
Eason_songs  linux01.txt     opt	   sys	 var	   王菲
#现在我们将/usr/bin/这个路径重新写入PATH变量,并进行打印
[root@localhost /]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:/usr/bin/:/root/bin
[root@localhost /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/root/bin:/usr/bin/:/root/bin
#此时再使用ls命令,发现又可以重新使用
[root@localhost /]# ls
bin          etc             linux0224     proc  test      wangyiyun_music     网易云音乐
boot         home            media         root  test_tar  wangyiyun_songs
cc01         jumpserver-dev  mnt           run   test_vim  xusong_songs
david01      lib             my_data       sbin  tmp       yuchao01
dev          lib64           new_file.txt  srv   usr       yuchao_data.tar.gz
Eason_songs  linux01.txt     opt           sys   var       王菲

***我们平常所敲打的命令都是这样从PATH变量中去查找,从而简化了一些繁琐的命令

关于alias命令(别名命令)

1.概念

alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,必须使用单引号将原来的命令引起来,防止特殊字符导致错误。

2.语法格式

alias 命令别名='实际命令'

3.应用

#先查看已有别名
[root@localhost /]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#比如对于/usr/local/my_data/cmatrix-1.2a/这个路径比较复杂,每次进入时需要敲打很多路径,想要简化这个操作,就需要使用alias命令给它起个简单的别名,使用如下命令
alias lj='/usr/local/my_data/cmatrix-1.2a/'
#此时再来查看已有别名,发现多了刚才定义的那一行
[root@localhost /]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias lj='/usr/local/my_data/cmatrix-1.2a/'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
#当我们再想进入/usr/local/my_data/cmatrix-1.2a/这个目录下时,只需敲打“lj”命令即可
[root@localhost cmatrix-1.2a]# cd /
[root@localhost /]# lj
[root@localhost cmatrix-1.2a]# pwd
/usr/local/my_data/cmatrix-1.2a
#取消别名,使用unalias命令
[root@localhost /]# unalias lj
[root@localhost /]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'


***alias命令的作用只局限于本次登入的操作,属于临时生效,若要每次登入都能够使用这些命令别名,可将相应的alias命令存放到bash的初始化文件中。