Linux/Ubuntu系统自定义Shell命令

一.应用场景

由于长期使用Ubuntu系统开发和日常生活,每天开机第一件事情就是更新系统,在Ubuntu系统下面更新往往需要好敲好几个命令:

sudo apt-get update             #更新源
sudo apt-get upgrade               #更新普通软件包
sudo apt-get dist-upgrade         #更新系统软件包
sudo apt-get autoremove            #卸载无用的软件包
sudo apt-get autoclean           #清除软件包缓存

通常情况下,我是一条接着一条敲,虽然看着命令行滚动很过瘾,但是时间长,感觉也没意思了,能不能用一条命令代替上面这些命令呢?
有人说,可以,你只要把这些命令行存起来,以后复制一下就搞定了...

二.环境变量

其实我们是可以自定义命令的,其中关键点就在于环境变量,很多用windows系统的估计也知道环境变量这个东西,当初学Java的时候都知道在系统设置里面有个环境变量设置,在path里面加一个路径,然后在cmd命令行下面敲java就有反应了,其实在Linux系统里面也是一样的

jwang@jwang:echo $PATH
jwang@jwang:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/jwang/Bin

PATH是shell的全局变量,类似框架里面初始化的时候加载的一个超全局变量,里面存的就是当前用户的环境变量信息,一般情况下就是各种bin执行文件的路径。比如最常见的/usr/bin是普通用户,/sbin是root用户特有,还有一些软件安装时候自动加进去的,比如那个/usr/games。这个PATH路径的意义就是只要在是上面路径文件夹里面的可执行文件,就可以直接在shell里面执行,比如说 ifconfig,你们说ifconfig的可执行文件放在哪里呢?可以用whereis命令

jwang@jwang:whereis ifconfig
jwang@jwang:ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

由上可知,ifconfig命令实际上是放在/sbin里面,这意味着你也可以这样用

jwang@jwang:/sbin/ifconfig

三.自定义命令

说到这里,估计有人就明白了,那是不是只要我把一个脚本放在PATH里面任意一个目录里面,然后我就可以直接敲,不用写全路径了?Yes,就是这样,比如说

jwang@jwang:~$ cd Bin/
jwang@jwang:~/Bin$ pwd
/home/jwang/Bin
jwang@jwang:~/Bin$ ls
update
jwang@jwang:~/Bin$ cat update 
#!/bin/bash
sudo apt-get update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get -y autoremove
sudo apt-get -y autoclean
jwang@jwang:~/Bin$ 

我在用户目录下新建一个Bin文件夹,里面放了一个update脚本,脚本里面内容就是系统更新那些命令,我可以这样做:

jwang@jwang:sudo ln -s /home/jwang/Bin/update /usr/bin/update

上面的命令是建立一个软链接到/usr/bin目录,这样就可以直接敲update命令了

jwang@jwang:~$ update
Hit:1 http://cn.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://cn.archive.ubuntu.com/ubuntu xenial-updates InRelease
.........
.........
Fetched 102 kB in 2s (42.0 kB/s)                               
Reading package lists... Done
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree       
Reading state information... Done

是不是很方便呢?
还有另外一个方式,就是修改环境变量,把/home/jwang/Bin目录添加到环境变量里面,修改用户目录下的.bashrc文件,或者在全局文件/etc/profile添加一下语句

export PATH="$PATH:/home/jwang/Bin"

然后执行一下

source /etc/profile

当然,如果你只想临时修改一下环境变量,可以直接在命令行修改PATH的值,但是退出当前命令行就失效了

jwang@jwang:PATH=$PATH:/home/jwang/Bin

四.总结

以前我是一直没弄明白环境变量是什么意思,有点晕,一直按着教程做,前几天突然想明白了,环境变量的作用就是把一个局部的命令提升到全局,实际上是在告诉那些程序,如果你找不到这个命令,你可以到这些目录里面找找,都找不到就报错!日常生活工作中,可以把一些比较长的命令封装一下写个脚本,随便取个名字,只要名字不冲突就行(如果名字一样,在PATH路径里面谁的目录在前面就优先执行谁),还是挺有用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容