我的新浪微博:http://weibo.com/u/1602714773
CSDN博客:http://blog.csdn.net/hunterno4
Linux Shell笔记之准备篇
上一篇 /
下一篇 2013-11-03 16:02:52
/ 个人分类:Linux
一、基础bash shell命令1.shell提示符PS1 控制默认命令行提示符的格式[hunterno4@localhost ~]$ echo $PS1[\u@\h \W]\$PS2 控制后续命令行提示符的格式[hunterno4@localhost ~]$ echo $PS2>[hunterno4@localhost ~]$ PS1="[\t][\u]\$" 更改命令行提示符[07:02:53][hunterno4]$2.命令行参数单字母参数 -a全字参数 --all3.基本列表1)ls命令-a 显示所有文件及目录,包含隐藏文件-d 只显示目录-l 列出权限,使用者等详细信息-s 显示文件大小-k 以K字节形式显示大小-t 以时间排序-r 对目录反向排序-R 列出子目录下的文件-F 区分出文件及目录-i 列出每个文件的索引节点2)cat 查看文件-n 给所有的行加上行号3)more 分屏显示文件v 在当前行启动vi编辑器= 显示当前行在文件中的行号spacbar(空格键) 显示下一屏b 显示上一屏4)stat 提供文件的所有状态信息5)file 查看文件类型6)ps -H参数显示层级格式[root@localhost hunterno4]# ps -efH| grep sshroot 3502 1 0 Oct30 ? 00:00:00 /usr/sbin/sshdroot 8370 3502 0 07:32 ? 00:00:00 sshd: root@pts/4 root 8751 8726 0 07:48 pts/4 00:00:00 grep ssh7)killall 支持通过进程名而不是进程号来结束进程8)sort 按默认语言的排序规则进行排序-n 按数字进行排序-M 按月排序-r 反序排序[root@localhost hunterno4]# du -sh *| sort -nr 查看占用空间最多的文件12K build.xml12K bb.xml8.0K aa.xml4.0K ter4.0K pgtest4.0K number9)grep-e 用来指定每个模式# grep -e i -e o number 或# grep [io] number-n 显示匹配模式的行所在的行号-v 反向搜索,输出不匹配该模式的行-c 显示有多少行含有匹配的模式-i 搜索时忽略大小写10)useradd[root@localhost etc]# useradd -D 显示添加用户时系统默认值GROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skel 添加用户时会将此目录下的内容复制到HOME目录下CREATE_MAIL_SPOOL=no-m 创建用户的HOME目录-r 创建系统账户-p passwd 指定默认密码-u uid 指定唯一的UID-g 指定主组-G 指定附加组11)userdel 删除用户,只删除/etc/passwd文件中的用户信息-r 删除用户同时删除用户的HOME目录及mail目录12)usermod 修改用户-L 锁定用户-U 解锁用户13)umask 默认为022目录默认权限777,umask后,新创建目录权限777-022=755,即drwxr-xr-x文件默认权限666,umask后,新创建文件权限666-022=644,即-rw-r--r--14)chmod g+s testdir 设为共享文件,以保证目录中新建文件都属于同一属组二、vim编辑器即Vi improved,常用vi做为别名1.普通模式# vi filename 打开或新建文件,并将光标置于第一行首# vi + filename 打开文件并置于最后一行# vi +/pattern filename 打开文件并将光标置于第一个与pattern匹配的位置Ctrl+u 向上翻半屏Ctrl+b 向上翻一屏Ctrl+d 向下翻半屏Ctrl+f 向下翻一屏n+ 光标下移n行n- 光标上移n行h,j,k,l 分别代表左、下、上、右方向键H,M,L 分别将光标置于屏幕顶行、中间行、底行$ 将光标移至当前行尾o 在当前行之下新开一行/abc 在文件中向前查找abc?abc 在文件中向后查找abcn 在同一方向重复上次的搜索命令N 在反方向重复上次的搜索命令dd 删除当前光标所在行3dd 删除从当前光标行开始的3行u 撤销前一编辑命令p 将剪贴板的内容复制到光标后yy 将光标所在行复制到剪切板2.命令行模式(按下:键):set nu 给文件的每行加上行号:q 退出:q! 强制退出:wq 保存并退出:w filename 文件另存一份名为filename:s/old/new/g 将old替换为new:n,ms/old/new/g 将替换行号为n到m之间的所有old:%s/old/new/g 将替换整个文件中的所有old:$ 将光标移至最后一行的行首3.插入模式(按下i键)Esc 返回普通模式三、环境变量1.局部环境变量# set 查看局部环境变量[root@localhost ~]# test=51testing 环境变量名、等号和值之间无空格[root@localhost ~]# echo $test51testing[root@localhost ~]# bash 新开子Shell后,局部环境变量失效[root@localhost ~]# echo $test2.全局环境变量# printenv 查看全局变量# echo $HOME 查看变量# test=testing 创建新的环境变量,建议小写,区别于系统环境变量# export test 导出到全局变量中# unset test 删除环境变量,子进程中删除只对子进程有效,对父进程无效3.定位系统环境变量1)登录Shell/etc/profile 系统上默认的bash shell的主启动文件,每个用户登录都会执行这个启动文件 而这个文件又回逐一访问/etc/profile.d目录下的脚本文件$HOME/.bash_profile$HOME/.bash_login$HOME/.profile 提供用户专属的启动文件2)交互式Shell$ bash 此时启动的Shell为交互式Shell,启动时不会去访问/etc/profile文件 而是检查.bashrc是否存在[hunterno4@localhost ~]$ cat .bashrc# .bashrc# Source global definitionsif [ -f /etc/bashrc ]; then 查看是否存在/etc/bashrc文件,存在则生效之 . /etc/bashrcfi# User specific aliases and functions 用于定义别名及私有脚本函数/etc/bashrc 任何子Shell都会执行这个文件 /etc/bashrc 文件也会执行/etc/profile.d目录下的脚本3)非交互式shell系统执行shell脚本时所使用的shell4).命令别名alias ll='ls -al' 放入.bashrc文件中,当启动交互式shell时就会生效了四、基本脚本1.指定要使用的shell#!/bin/bash 此时的#不用作注释行2.使用多个命令# date;who 以;号分隔,长度不能超过最大命令行字符数2553.echo 显示消息# echo 'this is "script".' 字符串内有引号时,需要用另一种引号圈起来-n 同一行显示一个文本字符串作为命令输出4.反引号 允许将shell命令的输出赋给变量# today=`date +%y%m%d`# echo $today1311035.数学运算# var1=$[1+5] 使用方括号,bash shell只支持整数运算6.浮点数运算# bc 进入计算器quit 退出计算器# bc -q 进入计算器,并去掉欢迎信息scale=2 指定小数点后的位数#!/bin/bashvar1=11.1var2=11.2var3=11.3var4=11.3var5=`bc << EOFscale=2a1=($var1 * $var2)b1=($var3 * $var4)a1+b1EOF`echo the result is $var57.退出状态码$? 专属变量,用于保存上个执行命令的退出状态码 0,命令成功结束 1,通用未知错误 126,命令不可执行 127,没找到命令exit 5 退出时指定退出状态码
收藏
举报
TAG:
命令
Linux
linux
shell
Shell
vi
VI
Vi
环境变量