縮短指令 [論壇 - Ubuntu 哈啦]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 »


縮短指令
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 4044
EXP: 22
離線
每次安裝移除清除套件總覺得打字很累, 圖形化介面很容易安裝垃圾套件(也就是我不需要的)一直不能深得我的信賴.

這雖然想很久了, 但到最近才開竅..

用apt安裝套件要打 sudo apt-get install 或 sudo apt install 套件名稱
這個還好.

但要移除套件就要打更多字了例如: sudo apt-get --purge remove 套件名稱
基本上我不會刻意去記指令, 都寫在文字檔裡面, 要用的時候複製貼上.

但還是很麻煩, 我還是希望用我理解的簡短縮寫字母來達成任務:
例如:
$ sudo apt-get install 套件名稱 變成 $ inst 套件名稱
$ sudo apt-get --purge remove 套件名稱 變成 $ del 套件名稱 (本來要用rm 但rm指令系統已經有了, 會強碰.)
$ sudo apt-get update 變成 $ upd

作法:
1. sudo apt-get install 套件名稱 變成 $ inst

在/usr/local/bin/新增一個腳本inst
/usr/local/bin/inst
內容

#!/bin/bash

sudo apt-get install $@


要安裝套件也不用打在root權限下執行也不用sudo 打開終端機 inst 就可以安裝了.


2.sudo apt-get --purge remove 變成 del

在/usr/local/bin/新增一個腳本del
/usr/local/bin/del
內容

#!/bin/bash


if [ "$1" == "" ]; then
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean all
else
sudo apt-get --purge remove $@
fi



移除套件
$ del 套件名稱1 套件名稱2 ...
清除deb快取
$ del



3. sudo apt-get update 變成 upd
在/usr/local/bin/新增一個腳本upd
/usr/local/bin/upd
內容

#!/bin/bash

sudo rm /var/lib/apt/lists/*
sudo apt-get update


更新 sources.list
$ upd



新增完後記的要賦予+x權限
sudo chmod 755 /usr/local/bin/inst
sudo chmod 755 /usr/local/bin/del
sudo chmod 755 /usr/local/bin/upd

2016/7/11 23:42
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2010/8/12 15:54
所屬群組:
已註冊使用者
等級: 18
HP : 0 / 443
MP : 135 / 11352
EXP: 72
離線
alias inst='sudo apt-get install'
這樣應該就可以了

2016/7/12 17:52
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 4044
EXP: 22
離線
acman 寫到:
alias inst='sudo apt-get install'
這樣應該就可以了


THX ...

但是我發現一個問題

安裝套件有兩種
一種是裝套件庫的套件 sudo apt-get install XXX
一種是裝電腦上的套件 sudo dpkg -i XXX

我想把這兩樣都變成 inst XXX 目前我知道的辦法只有腳本 其他方法還不知

2合一作法:

/usr/local/bin/inst

內容
#!/bin/bash

PKGNAME=$@
PKG_DETECT=$(ls $PKGNAME | grep .deb)

if [ "$PKG_DETECT" == "" ]; then
    sudo apt-get install $PKGNAME
else
    sudo dpkg -i $PKGNAME
fi



alias inst='sudo apt-get install'
alias inst='sudo dpkg -i'

這樣我沒試過.....

2016/7/12 20:48
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2010/10/28 17:23
來自 台灣-台南市
所屬群組:
已註冊使用者
等級: 19
HP : 0 / 464
MP : 148 / 11622
EXP: 59
離線
Shell Script似乎不能使用tab補全功能?
如果是的話,會不會反而在打要安裝、刪除的檔名時,反而打更多字?

2016/7/12 21:46
lubuntu 16.04.2 (AMD64)
ASUS K53BR筆電
RAM: 1.5GB
應用擴展 工具箱
回覆: 縮短指令
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 168 / 844
MP : 569 / 17448
EXP: 77
離線
reppk 寫到:
Shell Script似乎不能使用tab補全功能?
如果是的話,會不會反而在打要安裝、刪除的檔名時,反而打更多字?



關於「bash-completion」,剛探索了一下套件,以下暫記

執行


dpkg -L apt | grep bash



顯示


/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/apt





執行


$ cat /usr/share/bash-completion/completions/apt



執行


$ ls /usr/share/bash-completion/completions/




執行


$ ls /usr/share/bash-completion/completions/ -1 | grep dpkg



顯示


dpkg
dpkg-deb
dpkg-query
dpkg-reconfigure
dpkg-source



執行


$ ls /usr/share/bash-completion/completions/dpkg-deb -l



顯示


lrwxrwxrwx 1 root root 4 May 18 17:19 /usr/share/bash-completion/completions/dpkg-deb -> dpkg



執行


$ dpkg -S /usr/share/bash-completion/completions/dpkg



顯示


bash-completion: /usr/share/bash-completion/completions/dpkg



執行


$ dpkg -S /usr/share/bash-completion/completions/




執行


$ dpkg -L bash-completion



顯示 bash-completion / filelist

執行


$ dpkg -l bash-completion



執行


$ apt-cache show bash-completion




執行


$ apt show bash-completion




執行


$ dpkg -L bash-completion | grep apt



顯示


/usr/share/bash-completion/completions/slapt-get
/usr/share/bash-completion/completions/apt-get
/usr/share/bash-completion/completions/apt-build
/usr/share/bash-completion/completions/aptitude
/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/slapt-src




執行


$ dpkg -L bash-completion | grep dpkg



顯示


/usr/share/bash-completion/completions/dpkg
/usr/share/bash-completion/completions/dpkg-source
/usr/share/bash-completion/completions/dpkg-query
/usr/share/bash-completion/completions/dpkg-deb
/usr/share/bash-completion/completions/dpkg-reconfigure


2016/7/12 22:26
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2010/8/12 15:54
所屬群組:
已註冊使用者
等級: 18
HP : 0 / 443
MP : 135 / 11352
EXP: 72
離線
姜至奐 寫到:

alias inst='sudo apt-get install'
alias inst='sudo dpkg -i'

這樣我沒試過.....


alias 不是這樣用的
alias inst='sudo apt-get install'
是指用 inst 代替 sudo apt-get install
設定之後,以後你就可以用 inst apache2 取代 sudo apt-get install apache2

2016/7/12 22:51
應用擴展 工具箱
回覆: 縮短指令
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 168 / 844
MP : 569 / 17448
EXP: 77
離線
acman 寫到:
姜至奐 寫到:

alias inst='sudo apt-get install'
alias inst='sudo dpkg -i'

這樣我沒試過.....


alias 不是這樣用的
alias inst='sudo apt-get install'
是指用 inst 代替 sudo apt-get install
設定之後,以後你就可以用 inst apache2 取代 sudo apt-get install apache2



所以這樣只能執行「$ inst apache2」,無法執行「$ inst apache2_2.4.18-2ubuntu3_amd64.deb」。

我猜樓主應該了解您原本要表達的,

我揣測樓主想要問的是,

若要改用「alias」,要兩者都能執行,如何使用「alias」這個功能來達成。



2016/7/12 23:10
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2010/8/12 15:54
所屬群組:
已註冊使用者
等級: 18
HP : 0 / 443
MP : 135 / 11352
EXP: 72
離線
samwhelp 寫到:
acman 寫到:
alias 不是這樣用的
alias inst='sudo apt-get install'
是指用 inst 代替 sudo apt-get install
設定之後,以後你就可以用 inst apache2 取代 sudo apt-get install apache2



所以這樣只能執行「$ inst apache2」,無法執行「$ inst apache2_2.4.18-2ubuntu3_amd64.deb」。

我猜樓主應該了解您原本要表達的,

我揣測樓主想要問的是,
若要改用「alias」,要兩者都能執行,如何使用「alias」這個功能來達成。



他的 scripts 完全寫錯了啊
兩個同名稱的 alias ....

至於用一個 alias 達成他的需求, alias裡包 if 還帶 ; 嗎?我沒試過就是了

再者,縮短指令跟把要做的某件事寫成scripts 是兩回事

2016/7/12 23:52
應用擴展 工具箱
回覆: 縮短指令
會員四級
註冊日期:
2015/9/29 21:19
所屬群組:
已註冊使用者
等級: 16
HP : 0 / 380
MP : 100 / 4044
EXP: 22
離線
你好像看錯了

腳本只有這樣

===================================
#!/bin/bash

PKGNAME=$@
PKG_DETECT=$(ls $PKGNAME | grep .deb)

if [ "$PKG_DETECT" == "" ]; then
sudo apt-get install $PKGNAME
else
sudo dpkg -i $PKGNAME
fi

===================================
結束

沒有包含

alias inst='sudo apt-get install'
alias inst='sudo dpkg -i'


2016/7/13 0:04
應用擴展 工具箱
回覆: 縮短指令
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 34
HP : 168 / 844
MP : 569 / 17448
EXP: 77
離線
acman 寫到:
samwhelp 寫到:
acman 寫到:
alias 不是這樣用的
alias inst='sudo apt-get install'
是指用 inst 代替 sudo apt-get install
設定之後,以後你就可以用 inst apache2 取代 sudo apt-get install apache2



所以這樣只能執行「$ inst apache2」,無法執行「$ inst apache2_2.4.18-2ubuntu3_amd64.deb」。

我猜樓主應該了解您原本要表達的,

我揣測樓主想要問的是,
若要改用「alias」,要兩者都能執行,如何使用「alias」這個功能來達成。



他的 scripts 完全寫錯了啊
兩個同名稱的 alias ....



我猜應該是原文分隔,所以誤解了,
下面非script的一部分

姜至奐 寫到:

alias inst='sudo apt-get install'
alias inst='sudo dpkg -i'

這樣我沒試過.....



至於

acman 寫到:
至於用一個 alias 達成他的需求, alias裡包 if 還帶 ; 嗎?我沒試過就是了

再者,縮短指令跟把要做的某件事寫成scripts 是兩回事



我剛執行


$ help alias



顯示


alias: alias [-p] [name[=value] ... ]
Define or display aliases.

Without arguments, `alias' prints the list of aliases in the reusable
form `alias NAME=VALUE' on standard output.

Otherwise, an alias is defined for each NAME whose VALUE is given.
A trailing space in VALUE causes the next word to be checked for
alias substitution when the alias is expanded.

Options:
-p Print all defined aliases in a reusable format

Exit Status:
alias returns true unless a NAME is supplied for which no alias has been
defined.



然後執行


$ alias




顯示



alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias reload='source ~/.bashrc'




感覺第一個「alert」等號後面,也可以寫的複雜,不過沒去深究,剛剛看到,先紀錄一下。

上面的alias,可以在「~/.bashrc」這個檔找到


$ less ~/.bashrc




關於

acman 寫到:
再者,縮短指令跟把要做的某件事寫成scripts 是兩回事



突然想到一個「案例」。

執行


$ whereis update-grub



顯示


update-grub: /usr/sbin/update-grub /usr/share/man/man8/update-grub.8.gz



執行


$ cat /usr/sbin/update-grub



顯示


#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"





PS:
打指令的時候,我個人還是會採用「sudo apt-get ...」和「sudo dpkg ...」就是了,
以上只是單純討論「Script的寫法和用法」。


2016/7/13 0:08
應用擴展 工具箱

(1) 2 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.