飞速星空
资讯首页>> 内存管理免费下载
shell学习
[更新:2018-03-01 11:51:41] [浏览:50次]

什么是unix

UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。

UNIX系统大部分是由C语言编写的,这使得系统易读,易修改,易移植。提供了丰富的,精心挑选的系统调用,整个系统的实现十分紧凑,简洁。提供了功能强大的可编程的Shell语言(外壳语言)作为用户界面具有简洁,高效的特点。采用树状目录结构,具有良好的安全性,保密性和可维护性。采用进程对换(Swapping)的内存管理机制和请求调页的存储方式,实现了虚拟内存管理,大大提高了内存的使用效率。【百度百科】

注意:unix和linux差不多。

什么是shell

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。

shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/linux 操作系统之核心。【百度百科】

『shell指令』

man:查看指令的帮助信息

eg:man ls

ls:显示目录文件

eg:ls -l

cd:目录层级跳转

下层目录:cd directory_name

返回上级:cd..

更改目录:cd /one/two 可以是相对路径也可是绝对路径。

转到上次工作目录:cd -

more:查看文件,每次显示一屏文件

打开文件:more file.txt

目录分屏查看:ls -l |more

文本中搜索某字符:

打开文件:more myfile.txt

输入:/string [换行符]

输如n查看下一个。

cat:连接或者显示文件

显示文件:cat file.txt

说明:文件行数大于屏幕行数,部分行内容滚出屏幕,无法查看。

合并文件:cat file1 file2 > fileAll

将一个文件内容追加到另一个文件:

cat file1 >> file2

echo:消息输出,可以是变量

eg:echo ${i}

echo "开始执行脚本\c" 注:输出不换行

cut:分割文件

echo "abcdefg" |cut -c 3,5

结果:ce

说明:截取第3位和第5位

echo "abcdefg" | cut -c 3-5

结果:cde

说明:截取3-5位的字符。

alias:显示,定义别名

alias show='ls -l'

直接输入alias:查看当前定义的别名

cp:copy复制文件

当前目录创建file1的副本:

cp file1.txt file2.txt

将当前目录下的文件拷贝到其他目录:

cp file1.txt /one/tow

说明:如果副本已存在会被新的覆盖掉。

rm:remove 删除文件或目录

rm file1.txt

rm -r file_directory

mv:move 移动文件,重命名

mv file.txt file2.txt 【重命名】

mv file.txt /tow/one 【移动,文件只有一份】

touch:更新文件的访问时间,如果没有则创建新的文件

touch files.txt

chmod :更改文件模式

文件改为可写:chmod +w file.xt

文件改为制度:chmod +o file.txt

chown:更改文件的所有者或组

改变文件file.txt 的所有者:chown dug file.txt

将目录/one/tow 下的所有用户的所有者改为tom 组改为jerry

chown -R tom:jerry /one/two

chgrp:更改文件或目录的所有权

将文件所有权改为:staff

chgrp staff file.txt

将目录所有权改为staff

chgrp -R staff file_directory

diff:比较文本的不同

diff file1.txt file2.txt

比较文本不同,忽略空格

diff -w file1.txt file2.txt

head:显示文本的前n行【2种写法】

head -10 file.txt

head -n 10 file.txt

tail:显示文件的最后几行

tail files.txt

tail -20 files.txt

tail -n 20 files.txt

从第n个字节开始,每次显示一页文本内容

tail -c +200 files.txt |pg

跟踪文件的增长:tial -f files.txt

grep:在文件中搜索

显示文本中第一个字符为字母的所有行

grep "^[a-zA-Z]" files.txt |more

显示文本中与 “tom” “jerry”匹配的所有行

grep -E "tom|jerry" files.txt |more

显示所有与模式不匹配的行

grep -v "^#" files.txt

mkdir :创建一个或多个目录

mkdir directory_files

sort:排序

当前文件按照文件大小排序

ls -l | sort +4

expr:求表达式变量的值

修改shell变量:count='expr$count+1'

查看shell变量的长度:expr length $shell

find:用匹配表达式查找文件

查询以.profile命名的所有文件的完整路径

find / -name .profile -print

查询目录中包含某一字段的所有文件

find . -name '*select*' -print

找到后缀为.txt的文件并删除

find /one/two -name '*.txt' -exec rm {} \;

awk:查找匹配行并对其进行操作

显示长度大于10个字符的行

awk 'length>10' files.txt

以相反顺序打印两字段

awk'{print $1 ,$2}' files.txt

sed:流编辑器

显示包含tom的行

sed "/tom/p" files.txt

对file1.txt中的good全部替换成$bad后复制到file2.txt

cat file1.txt | sed -e "s/good/$bad/g" >file2.txt

tar:归档处理

显示当前目录,out.tar磁盘归档文件中文件名称

tar -vtf out.tar

归档:tar -cvf aa.tar aadir

释放:tar -xvf aa.tar

gzip:压缩文件

gzip files.txt

结果:files.txt.gz

解压文件:gunzip files.txt

compress:压缩数据

压缩:compress files.txt

结果:files.txt.z

解压缩:uncompress files.txt

pwd:显示工作目录的路径

输入:pwd

结果:/user/profile/tom

crontab:提交、编辑、列出或者出去cron作业

注意:不要执行不带任何参数的crontab命令,这会清空已经配置好的所有定时执行的任务

将名为files.txt的文件复制到/var/spool/cron/crontabs下:

crontab files.txt

每星期1,2,3的六点半执行cosing命令

30 6 * * 1,2,3 /user/text/cosing >/dev/null 2>&1

查看配置好的任务

crontab -l

配置当前用户的定时任务

crontab -e

注:该命令会使用默认的vi编辑器打开定时任务配置文件

ps:显示进程的当前状态

显示所有进程:ps -ef

显示10个消耗cpu最多的进程:

ps aux |head -1; ps aux |sort -rn +2|head -10

显示10个消耗内存最多的进程:

ps vx |head -1; ps vx |grep -v PID |sort -rn +6 |head -10

显示10个换页最多的进程:

ps vx |head -1; ps vx |grep -v PID |sort -rn +4 |head -10

显示10个消耗存储空间最多的10个进程:

ps aux |head -1; ps aux |sort -rn +3 |head -10

kill:杀死一个进程

kill -9 382382

eval:变量2次解析

a=2

$eval echo $a

2

其他

date

who

Basename

Dirname

Uname

uptime

重定向:> >> < <<

管道:|

『shell的一些标识』

文件状态

-d 目录

-s 文件长度大于0

-f 正规文件

-w 可写

-L 符号链接

-u 文件有suid的设置

-r 可读

-x 可执行

逻辑操作符

-a 逻辑与

-o 逻辑或

! 逻辑非

字符串比较

= 相等

!= 不等

-z 空串

-n 非空串

数值比较

-eq 相等

-ne 不等

-gt 第一个数大于第二个

-lt 第一个书小于第二个

-le 第一个小于等于第二个

-ge 第一个数大于等于第二个

『shell的函数』

if判断:返回值的真假

if 条件1

then 命令1

elif 条件2

then 命令2

else 命令3

fi

如下:输入一个数判断其是偶数还是奇数

注意:运行脚本:sh jiaoben.sh

case语句:多选择语句

形式:

case $num in

内容1)

命令1;;

内容2)

命令2;;

esac

直接上代码:判断输入的值属于那个集合

for循环

格式:

for 变量名 in 集合

do

命令

end

until循环:直到条件为真时停止

until 条件

命令

……

done

while循环

while 命令

do

命令

……

done

break和continue控制循环

break:跳出整个循环

continue:结束本次循环

后记:命令和语法经常使用,才能不忘记,希望能帮助到大家。

推荐内容: