Advanced Linux 1
Alias
linux系统允许我们给command起别名,我们可以给常用的命令写别名,方便以后的操作。
为了让系统识别alias,我们要在 ~ 目录下新建 .alias 文件,在文件每一行写一个命令的别名,如:
alias newname="command"
注:'='两边不能有空格
然后在 ~/.zshrc (或者 ~/.bashrc )最后添加一行:
source ~/.alias
每次更改了 .alias 文件之后都要运行:
source ~/.zshrc
其实zsh中已经有相当一部分的alias了,有兴趣可以查一查,我用的它的alias并不多,就不列举了,下面列举一下我自己的alias吧:
alias vi="vim"
alias sv="sudo vim"
alias df="df -h"
alias du="du -h"
alias p="ps -f"
alias grep="grep --color"
alias h="history"
alias zshrc="vim ~/.zshrc && source ~/.zshrc"
alias p2="python2"
alias p3="python3"
alias ip2="ipython2"
alias ip3="ipython3"
另外git也可以设置alias,不过是直接在git里设置就行了,常见的如下:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
Arch 开机启动服务
Ubuntu下有 /etc/rc.d 目录,其中的shell脚本会在开机时运行,这是一个简单的方法,但是缺点在于系统只是简单地执行该脚本,而不关心能否成功运行,也不关系执行结果。Ubuntu中还有另一种方法,就是将要执行的脚本封装成 服务(service) ,系统会自动监控所有的服务状态,我们也能随时获取它们的执行信息。这也是Arch中唯一来实现开机启动程序的方式。
首先在 /etc/systemd/system/ 目录下创建一个名为 myscript.service 的文件,文件内容如下:
[Unit]
Description=My script
[Service]
ExecStart=/usr/bin/my-script
[Install]
WantedBy=multi-user.target
然后运行命令:
#enable start
systemctl enable myscript.service
#disable start
systemctl disable myscript.service
注:my-script 文件是一个shell文件,要有可执行权限,而且开头必须是:
!/bin/bash
Linux Desktop Entry
有了可执行的二进制程序和一个图标,可以制作桌面快捷方式,以haroopad为例,需要在目录 /usr/share/applications/ 中新建一个文件,命名为 haroopad.desktop ,文件写法:
[Desktop Entry]
Name=Haroopad
Comment=A Markdown Editor
GenericName=Text Editor
Exec=/path/to/haroopad
Icon=/path/to/icons/haroopad.png
Type=Application
StartupNotify=true
StartupWMClass=Haroopad
Categories=GNOME;GTK;Utility;TextEditor;Development;
MimeType=text/plain;
Others
sudo 不输入密码
使用sudo权限编辑 /etc/sudoers 文件或者执行 sudo visudo 命令,添加一行
username ALL=(ALL) NOPASSWD: ALL
可以让特定用户不用输入密码进行sudo操作
或者将该文件中的这一行取消注释
# %wheel ALL=(ALL) NOPASSWD: ALL
这样让所有wheel组内的用户均不用输密码
注:wheel组就是管理员组,user在wheel组里说明该user是可以su来获得root权限,但非wheel组用户不行
git push需要输入密码问题
git可以使用https方式或者ssh方式访问,其中https方式每次都需要输入密码,ssh方式不用,因为ssh采用的密钥验证,私钥本地保存,公钥在服务端。解决方法就是:
-
git remote add origin 'repo的ssh地址'
-
修改已有项目 .git/config 文件中的url,改成ssh地址
清除linux boot中无用的启动项
这是Ubuntu这个坑系统才有的问题,而我已经入了Arch神教啦,哈哈。因为Ubuntu更新了之后,旧的linux-image还会存在于 /boot 分区中,所以 /boot 的空间会越来越小。之前Ubuntu的 /boot 分区有200M空间,有一次更新出来的linux-image超过了100M,结果下一次更新的linux-image也大于100M,导致我从此告别了内核更新。。。
首先查看已安装的linux-image的各个版本:
dpkg --get-selections | grep linux-image
确认当前使用的是哪一个:
uname -a
删除某个版本的linux-image,这里为了彻底删除用purge而不是remove,比如:
sudo apt-get purge linux-image-3.5.0-27-generic
卸载完可再查看所有的linux-image