一、关闭、重启系统
1. 1小时后关机
shutdown -h 1
2. 立即关机
shutdown -h now
poweroff
3. 在指定时间点关机
shutdown -h 15:30
4. 2分钟后重启
shutdown -r 2
或者立即重启
reboot
shutdown -r now
5. 挂起(需要硬件支持,否则可能无法恢复)
halt
6. init命令
0:立即关机
1:单用户模式(相当于win里面的安全模式),可以通过该模式修改root密码
2:维护模式,网络相关的服务会停止
3:完全多用户模式,正常工作下用到的模式
4:未分配使用,开发模式
5:图形模式
6:重启
二、帮助命令
1. 同时执行多个命令,用;分开
2. 分割长命令:\
3. 查看某个命令的详细功能:
help command
或者 command --help
4. man手册:是一个文档形式,操作同vi编辑器
(1)man command
(2)man number conmmand
number代表的含义:
1:用户命令,所有用户都可以查阅其中的内容
2:系统调用,开发人员使用
3:库函数
4:设备文件
5:文件格式描述,通常指配置文件的文档
6:游戏
7:其他杂项
8:只能给root用户使用的管理命令和工具等
9:其他
(3)查找包含某个关键字的命令:
man -k keyword
5. info信息页
info command|filename
文档中的*号表示超链接,选中按回车可以跳转
三、Linux的人机交互程序——Shell
1. Shell的种类:
可以通过cat /etc/shells查看目前OS上安装了哪些Shell;通过shell_name --version查看该Shell的版本号
查看Shell程序相关的信息:(注意下面的命令里是反单引号)
ls -l `cat /etc/shells`
2. 更改用户的默认shell
(1)临时修改:
显示当前用户使用的Shell:echo $SHELL
直接输入要使用的Shell名来临时更改当前Shell,如:ksh,bash,csh
此时,再查看当前正在使用 的shell名,仍然是之前的名字,但实际上变更后的shell是运行在原shell下的一个子shell,现在已经是更改后的shell了
(2)永久修改:
方法一:用su - username切换到要被更改shell的用户下,然后键入chsh命令,系统提示输入新Shell的路径,可以用上面说过的cat /etc/shells命令查看;
方法二:usermod -s shell_path user_name
当此用户重新登录后,就可以使用新的shell了
方法三:创建用户时指定默认shell:
useradd -s shell_path user_name
关于useradd命令更详细的使用后面会讲,或者自己通过man手册学习
*除非特殊说明,本书后面都默认使用bash shell讲解
四、Bash命令基本操作:
1. 指定默认编辑器:set -o vi|emacs
2. bind命令
(1)查看默认绑定的快捷键:bind -P
(2)命令格式:
bind [option] [ [function name] [keyseq:shell-command] [file name] [ keyseq:readline-function or readline-command ] ]
keyseq:readline-function:指一组快捷键,如\C表示ctrl键,\C-x表示同时按ctrl+x;readline-function表示要绑定的函数名称
option:
l:列出所有可用的Read里呢函数名
P:列出所有快捷键
p:列出当前Readline库中的函数名称及绑定
f filename:从文件filename中读取绑定
r keyseq:取消由keyseq快捷键指定的所有绑定
x keyseq:shell-command:为keyseq指定的快捷键绑定由shell-command指定的shell命令;还可以使用x参数绑定一个程序
m keymap:使用参数keymap指定的键盘映射
*上面说的readline函数库是指readline/readline.h中定义的函数,可以通过bind -l查看;这个函数库完成了linux中的相当一部分操作,比如中断(ctrl+c)、回删、上翻/下翻命令等,绝大多数快捷键定义都是针对这个函数库中的函数进行。
(3)修改或定义新的快捷操作,比如将回删功能重新定义成ctrl+x:
bind "\C-x":backward-delete-char
绑定应用程序,比如把vi绑定给ctrl+alt+v:
bind -x '"\C-\M-v":vi'
绑定一个shell命令,如ctrl+a=ls -l:
bind -x '"\C-a":ls -l'
(4)保存修改的快捷键,否则重登陆或系统重启,这些设置会丢失
按键映射默认保存在两个文件中:/etc/inputrc和~/.inputrc,前者对所有登录的用户都生效,后者则只对家目录对应的用户生效
方法一:bind -P >~/.inputrc
方法二:echo 'export $INPUTRC=/etc/inputrc' >>~/.bash_profile
方法三:向.bash_profile或.bashrc文件中追加以下内容:
if [ -f ~/.inputrc ] then
bind -f ~/.inputrc
fi
方法四:上面三种方法只能保存readline库的快捷键,自定义的程序和shell命令不会被保存
在用户家目录下新建.custom_bind文件,内容为绑定命令 :
bind -x '"\C-\M-x":ls -l'
bind -x '"\C-\M-v":vi'
然后编辑用户家目录下的shell脚本文件(文件名根据用户shell种类不同而不同),bash的为.bash_profile(或.bashrc),在文件末尾 追加:
if [ -f ~/.custom_bind ] ; then
. ~/.custom_bind &>/dev/null
fi
*注:linux在新建用户的时候,会将/etc/skel目录里的东西整体拷贝一份到新用户的家目录下(前提是建用户时使用了-d参数、指定了用户的家目录);因此,如果想让今后新建的用户都绑定指定的快捷键,只需要通过root用户在这个目录下重做一次上面的操作即可。
3. 历史命令
某用户的操作命令会被记录在家目录的.bash_history文件中
(1)修改环境变量中关于记录历史命令的设置
set | grep HIST
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
可以通过修改这三个值:
·临时修改:export 变量名=变量值
·永久修改(对所有用户生效):在/etc/profile文件中添加(或者修改)
export HISTFILESIZE=900
·永久修改(针对某个用户):在对应用户家目录下的.bash_profilez中添加(或修改)上述命令记录
*注:后两种修改若想立即生效,需要对相应的profile文件运行source命令
(2)清空历史命令:history -c
4. 命令别名功能:可以把常用的命令定义成某个缩写,提高工作效率
直接打开用户家目录下的.bash_profile文件(如.bashrc)追加如下格式的命令:
alias 自定义命令 = ’命令行‘
比如:alias zidingyi = 'tdx tailf /home/users/logs/debug.log > user.log'
保存退出后使用source命令。
也可以:
echo "alias vi = 'vim' ">>~/.bash_profile
*注:>表示将前面命令的执行结果覆盖到后面的文件中;>>表示追加到后面的文件中。在操作系统文件时、注意尽量用>>,以免覆盖系统配置。关于这两种符号下面会详细讲
取消某个别名:unalias 自定义别名
五、管道线和输入/输出
1. 常用的管道线组合命令:
(1)搜索文件名相似的文本中的指定字符串:
find ./ -name "file_name" | xargs grep -i "strings"
-i 表示不区分大小写
(2)搜索包含指定字符串的进程:
ps -ef | grep strings
(3)自定义本地网卡使用情况输出:
netstat -i | sed '1d' | awk '{OFS="\t" } {print $1,$4,$8}'
sed ‘1d' 会屏蔽前面命令输出的第一行;awd...表示先按照空格或制表符来分割每一行,然后输出第1,4,8个字段、并用制表符(OFS="\t")对其进行分割
*注:使用管道符的命令,只能包含一条对文件进行读写的子命令
2. 重定向(< << > >>)
(1)将命令结果输入到某个文件中:
netstat -tunlp >netstat.log
(2)将某个文件中的内容读入到命令中(<):
mail -s 'Network status' user1 < netstat.txt
(3)错误重定向:比如要删除一个不存在的文件
rm -rf asdf.fdsa > error
错误提示会存在error文件中,而不是显示在屏幕上;这个功能可以避免使你编写的脚本在工作时产生的输出、错误信息干扰用户正在进行的操作。
*注:对于不需要显示、也不需要保存的输出,可以直接输出到linux垃圾池中:/dev/null
具体用法请参考:http://blog.csdn.net/kaiwii/article/details/7308729