shell 学习

1,GUI shell ,Linux shell(包含X window manager (BlackBox和FluxBox),以及功能更强大的CDE、GNOME、KDE、 XFCE)

CDE GNOME KDE XFCE 都是桌面环境。


2,shell语言适合那些易用性、可维护性和便携性比效率更重要的任务

3,shell版本,当当前Linux发行版的默认shell是 bash shell ,是兼容性比较好的shell。


**************************************************************  极客学院 shell 课程

一,Linux基本命令:

-------目录命令

echo  输出,返回。

man  查看命令手册,后面跟着 命令,例如 man echo 。

ls  用来列出所有的文件和目录 (参数有,/ 根目录,-a 所有文件,-l 长列表含权限用户大小时间,蓝色是目录,白色是文件,-F 目录后加斜线,组合参数 -alF ,全部长列表且目录后加斜杠),别名 ll 返回同 ls -alF 。

cd 切换目录,进入某目录,cd etc 当前目录变为 etc 目录。cd .. 两个点,返回上级目录。

pwd  查看,返回当前目录的绝对路径。

mkdir  创建目录

rm  删除命令,删除文件,rm 文件名,删除目录  rm -d 目录名 (一般是删除空目录),强制删除非空目录,“rm -rd 目录名 v” 加v查看删除过程。

------文件命令

touch  创建文件

cat / more / less / tell / head 等查看文件

cp  复制

mv  重命名,移动

rm  删除,而且是彻底删除。。。

------命令组合举例

touch tf1

cat tf1 (返回空,并没有返回)

echo hello world > tf1 (向tf1中输入 hello world ,大于号> 是个输出流的标志)

cat  tf1 (返回 hello world )


cat  /etc/passwd  根目录/etc文件夹,passwd文件,内容会全部显示出来。如果比价多,就会很多。

more  /etc/passwd  显示一页内容,并显示当前内容为全部内容的百分比,用空格进行翻页。

less  /etc/passwd  显示一页内容,用空格翻页,用上下方向键逐行滚动

mkdir testfile1

mkdir testfile2

cd testfile1

touch tf1

cp tf1 ../testfile2/   ( ../ 是相对目录的意思)

ls testfile2  (返回是 tf1)


mv tf1 tf2 

ls (返回tf2,目录中没有了tf1 文件)

mv  tf2 ../testfile2/  (使用mv命令,将文件移动到目的目录)


---------------编辑器工具:vim   gedit  两个编辑器

----vim 的使用

vim vt1  ( vim加上文件名,进入文件,如果文件名不存在,则会创建并进入新的文件 vt1 ,此时是在新文件中的编辑状态,如果输入:冒号,则会显示成接受命令的状态而非编辑状态。

:q  退出,如果没写入且没保存,这文件不被保存,:q! 强制退出却不保存。

:w  写入命令,进入编辑状态。

:i   插入模式,进行文件写入。

:wq  写,保存并退出


----gedit 图形化编辑工具(界面友好,功能直观,但是服务器端很多系统是不包含图形用户界面的)

gedit  命令直接启用


二,shell 脚本编写

mkdir  shellscript

cd shellscript

touch helloworld

vim  helloworld

i 进入编写模式。


#!/bin/bash

echo hello world 

wq 保存并退出

chmod  u+x helloworld  为文件的所有者添加执行权限。(网页上看到 #!/bin/sh  chmod +x filename)

./helloworld  执行当前目录中的helloworld文件。(注,path 变量并没有配置的,所以要写上路径)

加法脚本

#!/bin/bash  标识为bash文件,bash shell

echo "please type first number :"

read param1


echo "please type second number:"

read param2


result = $[ $param1+$param2] bash shell脚本中,运算符使用,可以用 $[    ] 

echo "the result is :"$result  引用变量时,在变量前使用$符号。


--------------

echo "this is the ${num}nd"  直接用${  } 来直接应用变量



****************************** DormancyCypress

理解shell脚本的主要应用


******************************摘抄网络文章中常用命令

一,常用命令语法及功能 
  echo "some text": 将文字内容打印在屏幕上 
  ls: 文件列表 
  wc –l file  wc -w file   wc -c file: 计算文件行数   计算文件中的单词数    计算文件中的字符数 
  cp sourcefile destfile: 文件拷贝 
  mv oldname newname : 重命名文件或移动文件 
  rm file: 删除文件 
  grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt 
  cut -b colnum file: 指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令 
  cat file.txt: 输出文件内容到标准输出设备(屏幕)上 
  file somefile: 得到文件类型 
  read var: 提示用户输入,并将输入赋值给变量 
  sort file.txt: 对file.txt文件中的行进行排序 
  uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq 
  expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 
  find: 搜索文件比如:根据文件名搜索find . -name filename -print 
  tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile 
  basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux 
  dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin 
  head file: 打印文本文件开头几行 
  tail file : 打印文本文件末尾几行 
  sed: Sed是一个基本的查找替换程序。sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file | sed 's/linuxfocus/LinuxFocus/' > newtext.file 
  awk: awk 用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat file.txt | awk -F, '{print $1 "," $3 }'这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下: Adam Bor, 34, IndiaKerry Miller, 22, USA命令输出结果为:Adam Bor, IndiaKerry Miller, USA 


二,管道, 重定向和 backtick 这些不是系统命令,但是他们真的很重要。 
  1,管道 (|) 将一个命令的输出作为另外一个命令的输入。 
grep "hello" file.txt | wc -l  在file.txt中搜索包含有”hello”的行并计算其行数。 在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。 
  2,重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。 
  > 写入文件并覆盖旧文件 。
  >> 加到文件的尾部,保留旧文件内容。

3,



********************************************************** 文档

catkeyword | awk '{print $1}'|head -10  

http://www.centoscn.com/shell/2013/0802/884.html awk 指令

1,awk 和后面的单引号要空格啊啊啊啊啊啊啊!【←  ← 有坑的教材】


shell的 与  和 或

1、或操作

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename    // 用egrep同样可以实现
awk '/123|abc/' filename   // awk 的实现方式

2、与操作

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files   //不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files   //只列出匹配的文件名,
grep -L pattern files   //列出不匹配的文件名,
grep -w pattern files  //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files //匹配的上下文分别显示[number]行,


AWK 数组操作

awk'!a[$1]++'  这种格式的每个部分的意义。
   
1、awk数组知识

2、awk的基本命令格式 awk 'pattern{action}'
   省略action时,默认action是{print},如awk '1'就是awk '1{print}'

3、var++的形式:先读取var变量值,再对var值+1
       awk处理第一行时:先读取a[$1]值再自增,a[$1]即a[1]值为空(0)  【判断该行的$1第一列,在数组中是否存在,如果是第一次出现,a[$1]则是空】,即为awk '!0',
    即为awk '1',即为 awk'1{print}',就会执行print
           awk处理第二行时: 先读取a[$1]值再自增,a[$1]即a[1]值为1【判断该行的$1第一列,在数组中是否存在,如果不是第一次出现,a[$1]则是真】,即为awk '!1',

    即为awk '0',即为awk '0{print}',就不会执行print
  
   效果就是有重复$1的行只有第一次出现被打印,其他的都过滤了




shell 中特殊符号!

http://www.cnblogs.com/xuxm2007/archive/2011/10/20/2218846.html


【带附件,多收件人】

mail -s "邮件标题“  -a /../../xx/txt  xxx@xx.com  yyy@yy.com 







©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页