第一章
简单命令
who命令
列出所有正在使用系统的用户相关信息
who am i //列出使用该命令的当前用户的相关信息
whoami //只列出当前用户名
echo命令
功能:将命令行中的参数显示到屏幕上,常用于shell脚本中作为输出提示
举例:echo hello 、echo $SHELL 、echo ‘hello world’
date命令
显示或设置系统的日期和时间
date
date 050711282018 将时间更改为2018年5月7日11点28分的时间显示格式:[MMDDhhmmYY]
cal命令
显示日历
不带参数,显示本月的日历
cal 2018//显示本年的日历(12个月)
cal 5 2018//显示某年某月的日历
文件类型
普通文件
文本文件
数据文件
可执行文件
目录
. 表示目录本身
.. 表示该目录的父目录
设备文件
符号链接文件
文件操作命令
文件显示命令
cat命令 [选项] 文件名
常见选项:
-b 对所有非空行进行编号
-n 对所有行进行编号
cat text //显示文件text
cat file1 file2 //显示file1,file2的内容
cat file1 file2>file3 //把file1,file2的内容连接起来,合并为file3
more命令 分页显示文件内容
格式 :more[选项] 文件名
选项
-num 一次显示多少行
+num 从第几行开始显示
touch命令
功能:修改文件的时间为系统当前时间,如果文件不存在创建一个空文件。
touch file
find命令
功能:查找指定文件和目录
格式:find [搜索路径] [匹配标准]
选项
-name 根据文件名查找 find / -name hosts //查找系统中名为hosts的文件
-size 根据文件的大小查找
-user 根据文件的所有者查找
-ctime 根据修改时间查找
-type 根据文件类型查找 f/d/l/p/c/b find / -type f
which
功能:查找系统命令所在目录
格式:which [命令名]
例子:which ls //显示命令的别名信息
grep
功能:在文件中搜索字符串匹配的行
格式:grep [选项] 匹配字符串 文件名
grep xxx file1 在file1中查找字符串 xxx
复制、删除和移动文件的命令
cp命令
功能:复制文件或目录
格式:cp [选项] 源文件 目标文件/目录
选项:
-f 覆盖已经存在的目标文件,不给提示
-i 覆盖已经存在的目标文件,给出提示
-r 复制目录,包含目录下的各级子目录
cp file1 file2//拷贝file1并重命名为file2
cp -r dir1 dir2 //复制目录
rm 命令
功能:删除文件或目录
格式:rm [选项] 文件名···
选项:
-i 交互式的删除文件
-f 强制删除文件,没有提示
-r 递归的删除指定目录及其子目录和文件
例子:
rm -r dir//删除dir目录
rm -rf dir 强行删除dir目录、不加询问
mv命令
功能:移动文件/给文件改名
格式:mv[选项] 源文件 目标文件/目录
选项
-i 交互式操作
-f 禁止交互式的操作
wc命令
功能:统计文件中的行数、字数、字节数
格式: wc [选项] 文件名
选项:
-l 统计行数
-w 统计字数(以字符串为单位)
-c 统计字节数bytes
目录的操作命令
改变工作目录
cd 目录名
eg:
cd .. 返回上一层目录
cd / 切换到系统根目录
cd 切换到用户主目录
显示当前路径
pwd
2. 显示目录内容
ls
ls[选项] 目录或文件
选项:
-a 显示隐藏文件
-A 功能同上,只不过不必列出”.” 、”..”目录
-l 使用长格式显示文件内容
-d 显示目录属性。
-R
-F
创建和删除目录
mkdir [选项] 目录名
选项:
-m数字 对新建目录设置存取权限
-p 一次建立多级目录
例子:mkdir -p bin/dir1 //当bin不存在时,同时创建父子目录。rmdir删除目录
格式:rmdir [选项] 目录名
说明:如果该目录中仍有其他文件,那就不能用rmdir删除,该目录中的文件必须用rm命令先删除。
选项:
-p 递归的删除目录,当子目录删除后,如果父目录也为空时,也一同被删除,当子目录删除后,如果父目录不为空,则保留父目录。
例子:
rm -p bin/dir1
链接文件
改变文件或目录存取权限
chmod 用于改变或设置文件/目录的存取权限
1.符号模式:用字符串设置权限
格式:chmod key 文件名
key = [操作对象][操作符号][用户权限]
操作对象:u(主用户)g(组用户)o(其他用户)a(所有用户)
操作符号:+(增加权限)-(取消权限)=(重新赋予权限)
用户权限:r(读)w(写)x(执行)
例子:
chmod ugo +x testfile
chmod a+x testfile
chmod ug+w,o-w testfile
2.绝对方式:使用八进制数设置权限
格式:chmod mode 文件名
mode r w x(主用户) r w x(组用户) r w x(其他用户)
若是有权限则为1,无权限为0。有权限就有符号,无权限为-。
chmod 754 testfile(111 101 100)(rwx r-x r–)
umask命令
功能:用来设置文件的缺省权限的掩码
缺省创建的文件没有可执行权限
要想使文件有运行权限,可以由chmod命令进行设置
格式:umask mode
例子:
umask
umask -S
umask 077
改变用户组和文件主
useradd命令
格式:useradd [选项] 用户名
例子:
useradd user1
说明:只能由root用户使用,新建的用户暂时无法登陆,需要用passwd命令为其设置口令。
userdel 命令
格式:userdel [选项] 用户账号
选项: -r 用来删除用户主目录以及目录中文件
例子:userdel -r user1
查看联机帮助
man命令
功能:显示某一命令的联机帮助手册
格式:man [选项] 命令名
选项:
-f 只显示命令的功能
-w 只显示帮助文件所在的位置
–path 同上
help命令
功能:查看shell内置命令的帮助信息(cd、echo、help、pwd、umask等)
格式:help 命令
选项:-s 显示命令的格式
进程管理
ps命令
功能:查看系统中正在运行的进程
格式:ps [选项]
无选项:显示当前shell启动的所有进程 ps
-ax 显示没有控制终端的进程 ps -ax
-u 查看指定用户进程 ps -u jyj
-aux 列出所有的正在运行的进程 ps -aux
pstree 显示进程的树形结构 pstree
sleep命令
功能:使进程暂停执行一段时间
格式:sleep time
说明:time为进程将睡眠的时间,以秒为单位
例子:sleep 10;who //10秒钟后执行命令who
kill命令
功能:向一个或多个进程发送终止信号
格式:kill [-信号] 进程号
例子:
kill -l
kill 2336
kill -9 2336
压缩和解压缩
tar 命令
功能:对文件和目录进行打包
格式:tar [选项] 打包文件 文件/目录
选项:
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 利用gzip进行压缩/解压缩
-j 利用bzip2进行压缩/解压缩
-x 解包
例子:
tar -zcvf dir.tar.gz dir //将目录dir打包并压缩成一个文件,后缀为.tar.gz
tar -zxvf dir.tar.gz //解包解压缩到当前目录下
tar -zxvf dir.tar.gz -C dir2 //解包解压缩到指定目录dir2下
第三章
命令方式:
键入字符不会在屏幕上显示,只会被作为命令解释执行
编辑方式:
只有在此模式下,才可以做文字输入
ex转义方式
实现文件保存,退出等命令
命令模式->输入模式
插入命令:
i 在光标前输入
I 在光标所在的行首输入
附加命令:
a 在光标后输入
A 在光标所在的行尾输入
打开命令:
o 在光标下插入新的空白行
O 在光标上插入新的空白行
退出vi(命令模式->ex转义模式)
:wq 保存并退出,回到shell状态
:x 保存并退出
ZZ :保存并退出(不加冒号)
:w 保存,但不退出
:q 退出,但不保存
:q! 强制退出,不保存修改
命令行操作
移动光标置特殊位置
0 光标移动到当前行首
$ 光标移动到当前行尾
H 移动到当前屏幕上端
M 移动到当前屏幕中央
L 移动到当前屏幕下端
gg 移动到第一行
G 移动到最后一行
nG 移动到第n行
复制和粘贴
yy、Y 复制光标所在的行
nyy、ny 复制从光标开始的n行
p 粘贴在光标后
P 粘贴在光标前
删除
dd 删除光标所在行
ndd 删除光标所在行开始向下的n行
x 删除光标位置的一个字符
nx 删除光标右侧的n个字符
X 删除光标左侧的一个字符
nX 删除光标左侧的n个字符
撤销和重复执行
u 撤销上一次的操作
U 撤销光标所在行的所有修改
. 重复上一次的操作
ex模式的操作
定位命令
:n 光标移动到第n行
:+n 光标下移n行
:-n 光标上移n行:.光标定位到当前行首
:0 光标定位到第一行
:$ 光标定位到最后一行
说明:如果对给定范围进行操作,可用“,”作为分隔符
例:
:1,5d //删除1-5行的内容
:.,+5d//删除当前行和它后面的5行
:1,.y//复制1行到当前行的内容e命令(edit)
在编辑当前文件时编辑另外的文件
:e 文件名 //开始编辑文件名指定的文件
:e! 文件名 //忽略当前文件所做的修改,编辑指定文件
:e# Ctrl+^ 返回到上一个编辑文件w命令(write)
功能:可把编辑缓冲区中全部或者部分内容写到指定文件中。
:w 文件名 //将当前缓冲区内容写到指定文件中
如果文件名不存在,则创建该文件
如果文件名已存在,则发出警告
:w! 文件名 //强制覆盖已有文件
:w>>文件名 //将当前缓冲区的内容附加到指定文件末尾
例子:
:w file
:1,2w file //将一到二行写入文件file中
:1,.w file //将1到当前行写入文件file中r命令
功能:把指定文本读入编辑缓冲区的指定位置
:r //将当前文件读入光标的位置
:r 文件名 //将指定文件的内容放入缓冲区中光标的位置
:0r 文件名 //将~~~~~~~~~~~~~~~~~~~~~开头的位置
第四章 shell概述
history命令
功能:列出以前输入的命令
格式:history [n]
例子:
history //显示所有命令
histroy 5 //显示最后5个命令
shell的特殊字符
通配符
星号(*)
匹配任意字符
问号(?)
匹配任意一个字符
方括号( [] )
匹配括号内所限定的任何一个字符
叹号( !)
如果在方括号内,表示不匹配括号内所限定的任何单个字符引号
双引号(“)
消除元字符的特殊含义
除$" 三个元字符外,均作为普通字符
~ ( ) { } ^
保留空白字符(空格、制表符、换行符)
单引号
消除元字符的特殊含义
除单引号自身以外,其他元字符都作为普通字符
用 \ 消除单引号的特殊含义
倒引号
命令替换
将一个命令的输出作为另外一个命令的参数
元字符
指的是shell中有特殊含义的字符
<> |;! ? * [ ] $ \ " '输出重定向
功能:把命令的标准输出重定向到指定文件中
格式:
命令 > 文件名
命令 >> 文件名
说明: >> 的作用是将命令/程序的输出附加到指定文件的末尾
输入重定向
功能:让命令从指定文件中取得输入数据
格式:命令 < 文件名
例子:
bash < ex1 //从脚本文件ex1中取得命令
wc < fileinfo //将fileinfo作为wc命令的输入
管道操作符
例子
ls -l | more
ls -l | grep^d
ps | sort > passort
命令执行操作符
顺序执行 ;
格式:命令1;命令2;···;命令n
功能:各条命令从左到右依次执行
逻辑与 (&&)
格式:命令1 && 命令2
功能:先执行命令1,如果成功,才执行命令2;否则不执行命令2
例子:cp ex1 ex10 && rm ex1
逻辑或(||)
功能:先执行命令1,如果不成功,则执行命令2;否则,不执行命令2
例子
cat abc || pwd
shell变量
环境变量:由系统定义,用来保留系统的内容
局部变量:由用户定义、修改或删除
说明:
shell变量没有存储类和类型的限制
使用时可以“边定义,边使用”
环境变量
功能:系统会自动设置一下而变量,这些变量的值决定了用户的工作环境和外观,因此被称为环境变量。
常用的环境变量
HOME :用户主目录的路径名
LOGNAME:用户的登录名
PATH :命令搜索路径,以冒号作为分隔符
PS1 :主命令提示符
查看/删除变量
set //查看所有变量
unset //清除变量 eg:unset a
位置变量
功能:一种特殊的变量、用于存放命令行的参数
例子:
cat file1 file2 file3 file4 ···
0 0 1 2 2 3 4⋅⋅⋅ 4 · · · 0 表示命令名或脚本文件名
1‘‘‘ 1 ‘ ‘ ‘ 9 命令行参数
# 命令行参数的个数 # 命令行参数的个数 * 将所有参数看成是一个整体
@“ @ “ *” 的一种变体
shitf 命令 –移动位置参数
功能:当脚本的参数多于9个时,我们用shift命令来使用多于9个的参数
格式:shift [n] n表示移动的位数
说明:若不指定n的值,则系统默认n为1
位置变量的赋值(set)
位置变量不可以通过等号直接赋值,但是可以用set命令进行赋值
输入输出命令
echo
功能:在屏幕上显示字符串或变量的值
选项:-n 不自动换行
-e 解释转义字符
read命令
功能:从键盘读入数据赋值给变量
格式:read 变量1 变量2···
export命令
功能:用户创建的shell变量,默认为局部变量,export命令可以扩展变量的使用环境。
格式:export 变量名
例子:
x=1
export x
说明:在一个进程内部,同名局部变量的值优先使用
let命令
功能:处理整数算术运算
格式:let 算数表达式
说明:可以使用的操作符有 + - * / (取整) %(取余) 等
例子:let x=9*9
说明:表达式的操作符两侧没有空格。
当有变量参与运算时,不需要在变量名前加“$”
条件测试:
test命令
功能:用来计算参数表达式的值是真还是为假
格式
test 测试条件
[ 测试条件 ] //方括号内需要有空格
[[ 测试条件 ]] //方括号内需要有空格
例子:
test -f file1 //判断file1是否为普通文件类型字符串的测试
-z str1 字符串的长度为0,测试结果为真
-n str1 字符串str1长度大于0,测试结果为真
= str1 = str2 字符串相等(等号两边加空格)
<
>
!=
例子:
test -n $str2 //测试str2的长度是否大于0整数的测试 -eq num -eq num2 num1等于num2,测试为真 -ne // num1 -ne num2 //num1不等于num2 -gt //大于 -ge //大于等于 -lt //小于 -le 小于等于 例子: if (($1 > 0)) //要是有< > <= >= 需要加双括号 逻辑运算符 !(非) -a(与) -o(或) ! exp如果表达式为假,则测试为真 exp1 -a exp2 两个表达式都为真,则测试为真 exp1 -o exp2 两个表达式中有一个为真,则测试为真。 例子: [ ! "$x" -lt 5 ] [ "$x" -lt 1 -o "$x" -gt 10 ] [[ "$x" -lt 1 || "$x" -gt 10 ]] //逻辑运算符在单方括号中不能直接使用,只能在[[]]中使用。
控制结构
if-then-fi结构
(**)if-then-else-fi结构
if-then-elif-fi结构
循环结构
until(例21)
当循环条件为假时,执行循环体,当循环条件为真时,循环结束。
格式
until test expression do commands done
适用于想让循环不停的执行,直到发生某件事为止
for(值表方式)
函数(不带参的函数定义,调用)
shell内置命令(trap命令)
要取变量值的时候,变量需要带
,其他则不需要使用
,
其
他
则
不
需
要
使
用
.
变量加减时需要带两个小括号。((count=count+1))