简化命令知多少——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的初始化文件中。