《Linux命令、编辑器与Shell编程》读书笔记1-linux系统入门命令

来源:互联网 发布:软件著作权代理 编辑:程序博客网 时间:2024/06/13 12:07

一、关闭、重启系统

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


0 0
原创粉丝点击