我的新浪微博: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
全字参数          --all

3.基本列表
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 ssh
root      3502     1  0 Oct30 ?        00:00:00   /usr/sbin/sshd
root      8370  3502  0 07:32 ?        00:00:00     sshd: root@pts/4 
root      8751  8726  0 07:48 pts/4    00:00:00           grep ssh
7)killall   支持通过进程名而不是进程号来结束进程
8)sort     按默认语言的排序规则进行排序
-n               按数字进行排序
-M              按月排序
-r                反序排序
[root@localhost hunterno4]# du -sh *| sort -nr      查看占用空间最多的文件
12K     build.xml
12K     bb.xml
8.0K    aa.xml
4.0K    ter
4.0K    pgtest
4.0K    number

9)grep
-e          用来指定每个模式# grep -e i -e o number
                          或# grep [io] number
-n          显示匹配模式的行所在的行号
-v          反向搜索,输出不匹配该模式的行
-c          显示有多少行含有匹配的模式
-i           搜索时忽略大小写

10)useradd
[root@localhost etc]# useradd -D                     显示添加用户时系统默认值
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/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      在文件中向后查找abc
n             在同一方向重复上次的搜索命令
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 $test
51testing
[root@localhost ~]# bash       新开子Shell后,局部环境变量失效
[root@localhost ~]# echo $test

2.全局环境变量
# 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 definitions
if [ -f /etc/bashrc ]; then              查看是否存在/etc/bashrc文件,存在则生效之
        . /etc/bashrc
fi

# User specific aliases and functions    用于定义别名及私有脚本函数

/etc/bashrc          任何子Shell都会执行这个文件
                              /etc/bashrc 文件也会执行/etc/profile.d目录下的脚本

3)非交互式shell
系统执行shell脚本时所使用的shell

4).命令别名
alias ll='ls -al'     放入.bashrc文件中,当启动交互式shell时就会生效了

四、基本脚本
1.指定要使用的shell
#!/bin/bash          此时的#不用作注释行

2.使用多个命令
# date;who         以;号分隔,长度不能超过最大命令行字符数255

3.echo                显示消息
# echo 'this is "script".'       字符串内有引号时,需要用另一种引号圈起来
-n                         同一行显示一个文本字符串作为命令输出

4.反引号             允许将shell命令的输出赋给变量
# today=`date +%y%m%d`
# echo $today
131103

5.数学运算
# var1=$[1+5]          使用方括号,bash shell只支持整数运算

6.浮点数运算
# bc                   进入计算器
quit                    退出计算器
# bc -q               进入计算器,并去掉欢迎信息
scale=2             指定小数点后的位数

#!/bin/bash

var1=11.1
var2=11.2
var3=11.3
var4=11.3

var5=`bc << EOF
scale=2
a1=($var1 * $var2)
b1=($var3 * $var4)
a1+b1
EOF
`

echo the result is $var5

7.退出状态码
$?                    专属变量,用于保存上个执行命令的退出状态码
                        0,命令成功结束
                        1,通用未知错误
                        126,命令不可执行
                        127,没找到命令
exit 5                退出时指定退出状态码

TAG: 命令 Linux linux shell Shell vi VI Vi 环境变量

 

评分:0

我来说两句

Open Toolbar