一、shell命令
- $ date 显示时间
- $ who 查看登陆系统的用户
$ who am i 查看自己的信息 - $ echo 在终端机上显示键入在命令行的任何信息,会去掉单词中的空格
例如:$echo this is test
显示 this is test - $ ls 列出文件清单
- $ cat (查看的文件名称) 显示文件内容
- $ wc (参数 -l 行数 -c 字符数 -w 单词数) (统计的文件名称) 统计文件中的行数,字符数,单词数
- $ cp (源文件) (目标文件) 复制命令
- $ mv (源文件) (目标文件) 文件重命名命令,也可以移动文件的位置
- $ rm 删除命令
- $ pwd 显示当前工作目录
- $ cd 改变当前工作目录
- $ mkdir 创建目录
- $ rmdir 删除目录(目录为空)
- $ rm 删除文件 加参数 -r 删除目录和目录中的文件
- 替换符合:* 替换为目录中的所以文件的文件名。单字替换符合:? 替换单字。[abc]替换 a 或 b 或 c 。[0-9] 匹配0-9的任意字符。如果 [ 后的字符是 !,表示反过来匹配,即可以匹配除方括号中所列字符以外的任何字符。
- ln:链接命令。(优点,减小系统占有,使文件同步)
一般格式:ln from to 把文件from 和文件to 链接起来。
连接的限制是必须位于同一个文件系统,连接后对于任何一个文件的改变都会影响的另一个文件,但是删除任何一个文件,另一个文件依然存在,不受删除的影响。(判断系统中有那些文件系统用 df 命令)不同的系统进行连接加参数 -s ,建立一个符合化连接。此连接与普通连接很相似,不同的是,删除源文件后,该符合连接就不起作用了。 - 输出的重新定向:命令的输出通常提交到标准输出设备,也可以很方便的转向一个文件来代替,这叫输出重新定向。
命令:在把输出写入到标准输出的命令后加 > filename
例如:$ who >filename
>
符号为不覆盖原来的文件内容
$ > filename
,前面没有命令时,shell会创建一个空的文件(长度为0个字符),如果文件已经存在,其内容会消失。 - 输入重定向:对应于输出的重新定向的就是输入重定向,命令符合是 <
例如:$ wc -l < filename - 管道:unix系统可以把两条命令的的效果连接起来,这种连接称作管道。
例如:$ who | wc -l
$ ls | wc -l - 过滤器:指能够从标准输入接受输入,对输入进行处理后,把结果写入标准输出的任何程序。wc , cat ,sort 是过滤器,ls,who,date,cd,pwd,echo,rm,mv,cp都不是。
- 标准错误:unix把大部分错误信息都写的这里,标准错误默认也是终端。
把错误输入到文件试用命令格式:命令 2> 文件
例如:$ls n* 2> filename - 一行键入多个命令,用
;
号分割
例如:$ date ;pwd - 命令发送到后台,在命令后加一个 & 号,该命令就发送到后台了。
例如:$ date >> filename & - ps命令:查看进程的命令,参数
-f
查看父进程的命令
例如:$ ps -f - 正规表达式:%s/old/new/g 注:g是全部替换
或 :%s/old/new
全部替换:看vi说明ifconfig用root用户登陆查看本机的ip地址 - cut:从文件中剪出各种各样的数据 【cut -cdhars file】
- cut -c5- data 把data文件中的每一行的第五个到行尾的字符剪出来,并把结果写入标准输出
- who | cut -c1-8 剪出who的输出的每一行的第一个到第八个字符
- who | cut -c1-8 | sort 剪出who的输出的每一行的第一个到第八个字符,并进行排序
- cut -d: -f1 /etc/passwd 剪出/etc/passwd 中的以:开头的第一个字段
- cut -d: -f1,6 /etc/passwd 剪出/etc/passwd 中的以:开头的第一个字段和第六个字段
- paste 把多个行合并起来,然后输出 【paste files】
paste names numbers 将两个文件合并,然后输出
paste -d'+' names numbers 将两个文件合并中间用+号连接,然后输出
paste -s names 将一个文件所有行合并,然后输出ls | paste -d' ' -s - 把ls的输出用合并一行并用空格分开。 - sed 是用来编辑数据的程序,意思是流编辑器。sed不能用于交互。【sed command file】。
sed 's/unix/UNIX/' intro 将unix改为UNIX
sed不对原始文件进行更改,要保存更改,必须把sed的输出重定向到一个临时文件,然后把临时文件移回原来的文件。
sed 's/unix/UNIX/' intro > temp
mv temp intro
sed -n '1,2p' intro 显示前两行
sed -n '/unix/p' intro p命令前用斜扛括住字符串,sed只从标准输入中显示包含这些字符的行。
sed '1,2d' intro 要删除正行,用d命令。删除1,2行 - grep:从一个或多个文件中搜索特定的字符串。【grep pattern files】
grep shell ed.cmd 从ed.cmd中找出shell所在行
grep '[A-Z]' list list中包含一个大写字母的行
grep '[0-9]' list list中包含一个数字的行
grep '[A-Z]...[0-9]' list list中包含以大写字母开头,数字结尾的5个字符组合的行
grep '.pic$' filelist filelist中以.pic结尾的行
grep -v 'unix' intro 显示不含unix的行
grep -l 'move_history' *.c 列出包含'move_history' 变量的行
grep -n 'move_history' *.c 列出包含'move_history' 变量的行,前面加行号。 - sort 输出进行排序
sort -u names 输出中去掉重复的行
sort -r names 反序排序
sort names -o new_names 将结果输出到new_names中
sort -n data 安算术方法排序
sort +1n data 跳过第一个字段排序 - uniq查找连续的重复行。【uniq in_file out_file】
sort names|uniq -d 显示重复的行
二、shell编程起步
- 要让文件可以执行,要改变文件的许可
chmod +x nu 改变文件nu的许可,然后在当前目录下键入【./nu】即可执行 - 注释符合为#号
- 变量:以字母或下划线开头,后跟0个或若干个字母、数字、下划线字符。【variable=value】
count=1 注意=号两边不能有空格,linux中没有数据类型的概念。 - 显示变量的值【echo $vairable】$符合不能掉了
echo $count - 空值:如果一个变量没有值,我们就说它含有空值,这是变量没有赋值时的默认值。
- 文件名替换和变量:shell先做变量替换,后做文件名替换。
- $(variable)结构
假定把一个文件名存于变量filename中,要在文件名后加X
mv $filename ${filename}X 给文件名后加X - 内部的整数算术运算【$((espression))】
例如:echo $((a=a+1)) 应为a没有赋值,所以结果是1,等价于a=0+1表达式中可以随意使用括号来强制分组,
例如:echo $((i=(i+10)j))如果不想用echo或其他的什么命令而想直接给变量赋值,可以把赋值移到算术扩展前面
例如:i=$((i5))判断表达式:result=$((i >= 0 && i<= 100)),为真是result=1,为假result=0。