怎样化学怎么学才能学好linuxa啊?

Linux学习笔记-1630计网
您好!欢迎来到1630计网!
:即日起:1630计网期末成绩可在线查询!
当前位置: >
Linux学习笔记
1、Linux介绍
Linux版本:
  内核版本:最基本的核心程序,只要用于企业和个人在此基础自行开发所需功能。
  发行版本:在内核基础上增加了一些常用软件,满足企业和用户直接使用的基本需求。
Linux应用领域:
  个人桌面:图形桌面开发
  服务器领域:整个系统就像dos命令行一样,全部命令操作。
  嵌入式领域(智能硬件):在Linux基础上开发自己所需的功能然后将程序烧到硬盘中去执行。
  后两个实用最广泛;
2、Linux目录和文件操作
Linux目录:
  Linux的四种文件类型:
    1.可分享的
    可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
    2.不可分享的
    自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
    3.不变的
    有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
    4.可变动的
    经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
  事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
  / (root, 根目录):与开机系统有关;
  /usr (unix software resource):与软件安装/执行有关;
  /var (variable):与系统运作过程有关。
  /:根目录,Linux文件系统的入口.也是最高一级的目录.
  /etc:系统配置文件目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d等,修改配置文件之前记得备份。
  /usr:应用程序存放目录,软件的安装路径
    /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。
    /usr/bin:存放应用程序;
    /usr/share:存放共享数据;
    /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。
    /usr/local:存放软件升级包。
    /usr/share/doc:系统说明文件存放目录。
    /usr/share/man:程序说明文件存放目录。
  /var:放置系统执行过程中经常变化的文件;
    /var/log:随时可能更改的日志文件;
    /var/log/message:所有的登录文件存放目录;
    /var/spool/mail:邮件存放的目录;
    /var/run:程序或服务启动后,其PID(端口号)存放在该目录下。
  /lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。比较重要的目录为/lib/modules。
  /bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等;类似于/usr/bin
  /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。用户的个人文件都存放在此目录下。
  /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
  这里介绍了一些常用的目录,想要了解更多请前往:http://www.cnblogs.com/silence-hust/p/4319415.html
文件操作:
  1、文件的显示
  ls:显示当前目录下的文件和目录
  ls -a:显示当前目录下的所有文件和目录,包括隐藏文件和目录。
  ls -l:显示当前目录下文件盒目录的详细信息。
  ls -h:以合适的单位显示当前目录下的文件和目录的大小
  ls -alh 或 ls -a -l -h:三者不分前后顺序
  例:ls &/bin:查看根目录下,bin文件夹里的所有内容;
  2、目录的跳转
  cd:打开某个文件夹,后跟文件夹名或文件夹的路径
  cd - :跳转到上一次操作,只在最后两步之间来回跳转。
  cd ~:跳转到当前路径的家目录下,例如/home/hadoop
  pwd:显示当前的绝对路径
  cd ..:跳转到当前路径的上一层
  .:表示当前路径
  ..:当前路径的上一层
  ../../..:当前路径上三层
  3、正则表达式 
  *:通配符,匹配任意字符,*.txt所有以.txt结尾的文件名。
  [abc]:中括号中的人一个匹配成功即可,相当于a,b,c的并集;可写成[a-c]。
  ?:表示此处有一个字符,未知的,不能是空;
  &^a&:以a开头的内容
  &a$&:以a结尾的内容
  4、文件创建和删除
  gedit:打开要编辑的文件。
  mkdir:创建文件夹
  mkdir a :当前目录创建文件夹a
  mkdir A/B/C -p:创建三级文件夹
  tree:显示文件树
  rm:删除文件(不进回收站)
  rm a/* -r:删除文件夹内的内容
  rm a -r:删除文件夹
  rmdir:删除空文件夹
    -i:交互式询问删除
    -f:不交互直接删除
  ln:给原文件创建快捷方式,分软连接和硬链接
  ln 原文件名 快捷键名
  软连接:删除快捷方式对原文件没影响,删除原文件快捷方式打不开
  ln -s 原文件名 快捷键名
  硬链接:删除原文件,快捷方式不影响查看,相当于一个文件的多个名字备份,直到删到最后一个才能删除原文件。
  5、文件搜索
  grep:从文件中搜索内容。
  grep -n 't':显示所有带&t&的内容,不区分大小写,显示行号
  grep -i 't':忽略大小写
  grep -v 't':显示除带&t&以外的内容
  &t&:可以用正则表达式来代替
  find:查找当前路径下的文件
  find 路径名 + &&
    -name&& filename&&&&&&&&&&&& #查找名为filename的文件
    -perm & & & & & & & & & & & & & & &#按执行权限来查找
    -user&&& username & & & & & #按文件属主来查找
    -size & &-2M & & & & & & & & & & #按文件大小查找,小于2兆
  6、文件的复制和移动
  cp 想要复制的文件名 复制到的文件名 :文件的复制
    -v:显示复制进度条
    -i:交互式复制
    -f:强制性复制
    -a:同事复制文件的隐性信息,比如权限,软连接本身
    -r:复制文件夹 例cp b a/ -r :将b文件夹复制到a文件夹下
      cp b/* a/ -r :将b文件夹下的内容复制到a文件夹下
  mv:移动就是剪切
  mv 05.tmt 05.tot:将第一个名字重命名为第二个名字
  7、文件的压缩
  tar -cvf xxx.tar *:打包当前路径所有文件为xxx.tar
  tar -zcvf xxx.tar.gz * :压缩当前文件夹所有文件
  gzip xxx.tar:压缩打包好的文件夹xxx.tar得到文件名为:xxx.tar.gz
  gzip test.tar:同上,gzip xxx.tar
  tar -xvf xxx.tar:解压文件
  gzip -d xxx.tar.gz:解压文件
  tar -zxvf xxx.tar.gz (-C路径):解压当前压缩文件到指定路径
  上述中的&z&可改成&j&是一种算法压缩,xxx.tar.bz2就是一种bz2算法压缩
  zip(-r) myzip.zip *:直接压缩文件夹所有内容
  unzip -d .test/AA myzip.zip:解压文件到指定文件夹
  8、文件的权限
  -,+,=:减少,增加,设置权限
  chomd u-w 文件名:给用户减少写操作权限
  u:拥有用户,o:其他人,g:同组人,a:所有
  r,w,x:读,写,执行 & & &数字赋值分别为:4,2,1,u=rwx,o=rwx,g=rwx等价于a=rwx
  a= &:等于空表示什么权限都没有
  chomd 777 文件名:文件夹的权限
  chomd 777 文件名 -R:文件夹内所有文件的权限
  chown:修改文件的拥有者
  chgrp:修改文件所属组
常用快捷键操作  
  1、实用操作命令
  clear:清空当前的屏幕,只是将当前页面内容上移,并没有删除。
  Tab:用来自动补全输入
  touch:在当前文件夹中创建文件,Linux没有文件名后缀的形式,例test.txt只是一个文件名。
  \:反斜杠,转义字符。例 ls \*a 显示*a文件夹里的文件和目录
  &:输出重定向,将内容输出到此文件中,没有此文件就创造文件,有此文件就删除原文件内容,将此内容输出到文件中。
  &&:同上,只是在存在同名文件时,将此内容追加到文件后,并不删除原文件内容。
  例:ls & test.txt:将想要显示的内容保存到test.txt文件中去。  
  more:文件内容大于一屛时,将文件里的内容滚屏显示。
  | (管道):连接两个命令。例 ls -alh|more
  cat:查看文件内容,如果文件内容较多,可用鼠标滚珠查看,一扫而过。
  cat 文件名 & 文件名:实现将文件的内容复制到另一个文件
  cat 多个文件名 & 文件名:实现多个文件的合并。 
  2、帮助文档 
  history:历史输入命令
  --help:帮助文档
  ls -help :查看ls命令的帮助
  manual:Linux手册。比help好用很多,显示格式也比较好看。
  man ls :查看ls命令解释
  man 2或3 ls :以不同语言形式展现命令帮助,(2代表C语言,3代表&&)
  which:查看命令的位置,例 which ls:查看ls命令所在的位置
  bin 文件夹下都是执行程序,/bin,/usr/bin都是
  mount :挂载命令
  3、查看日期
  cal:查看当前日历
  cal -y 2018 :显示2018年的日历
  date:显示当前时间(ntp:网络时间协议)
  date [MMDDhhmm[[yy]ss]]:格式化输出
  date &+%Y-%m& :格式化输出
  4、进程控制
  ps:查看进程信息,相当于任务管理器
  ps -aux:显示所有正在运行的程序
    -a:显示终端上的所有进程
    -u:显示进程的详细状态
    -x:显示没有控制终端的进程
    -w:显示加宽以便显示更多信息
    -r:只显示正在进行的进程
  top:动态显示进程
  m:内存,c:CPU等可按照属性的首字母排序
  kill:杀死正在进行的进程
  kill pid 或 kill -9 pid(杀不死用这个)
  5、关机与重启
  reboot:重启
  shutdown -r now :立刻重启
  shutdown -h now :立刻关机
  shutdown -h 20:35 :八点三十五关机
  shutdown -h +10 :十小时后关机
  init &0 :关机
  init 6 :重启
  df :检查当前磁盘情况
  du :显示当前路径下的所有文件的大小及路径
  du -h :显示文件大小的单位
编辑器及其常用操作操作
  1、编辑器选择和模式
&  编辑器:sublime,vim:命令模式,编辑模式,末行模式
  sublime的安装和使用技巧:
  subl:打开快捷键
  gedit:打开文本编辑器
  vim是vi的升级版本&&
  vim 1.py +23:直接打开跳转到23 行
  v:进入可视模式,按字符移动选取
  r:替换当前字符
  R:替换光标后的字符
  /+内容:找想要的内容
  N,n :向上或向下跳转
  vi 1.py :直接进入命令模式
  进入编辑模式的三种方式:
    i:当前光标位置的前面插入
    o:在下一行插入
    a:当前光标后插入
  esc:编辑模式回到命令模式
  I:行首    A:行末    O:上一行
  命令模式下:
  shift+zz:保存并退出
  :+x:保存并退出
  命令模式--&末行模式的转变用:冒号
  末行模式下:
  X &加密文件
  冒号+w:保存
  冒号+q:退出
  冒号+wq:保存并退出
  !:强制执行
  2、编辑模式常用快捷键
  ctrl + n :自动提示补全
、 h,j,k,l,M:左,下,上,右,中
  L:当前屏幕最后一行
  yy:复制,例:8yy从光标当前所在行复制8行
  p:粘贴
  dd:剪切,例:8dd从当前行剪切8行
  u:撤销
  ctrl + r:反撤销
  G: 跳到最后一行
  15G:跳到15行
  1G:跳到第一行
  gg:跳到第一行
  w:往右跳一个字
  d:往左跳一个字
  ctrl + d:向下半屏
  ctrl + u:向上半屏
  ctrl + f:向下一屏
  ctrl + b:向上一屏
  3、编辑模式下的删除操作
  X:删除左边的字符
  x:删除当前字符
  D:删除光标这一行的行末内容
  d0:删除光标前的内容
  dw:删除光标后的所有内容
  && && :文本的左右移动或Tab键
  .:上一步执行的命令
  4、末行模式
  :%s/123/abc/g &:将当前文本中所有的123都替换成abc。
  :1,10s/123/abc/g:将当前文本1到10行的替换
  vim例可实现shell命令操作
  :!+终端的shell命令
  vim 的分屏操作,Linux安装软件等:有待补充
上一篇:没有了
下一篇:没有了
1330访问次数后使用快捷导航没有帐号?
() () () () () () () () () () () () () () ()
【视频教程】使用Kali Linux从A到Z的伦理黑客
欢迎加入「奥学网」学霸平台,让自学改变你的世界!
才可以下载或查看,没有帐号?
1027_2.jpg (10.3 KB, 下载次数: 0)
11:42 上传
  时间:8.5小时|视频:h264,|音频:AAC,44100 Hz,2 Ch|3.1 GB
  类型:电子学习|语言:英文|项目文件
  畅销书
  我会学什么?
  计划一个完整的伦理黑客
  了解如何使用Kali Linux作为您的主要黑客工具
  收集有关您的受害者的深入信息
  真实的密码攻击
  现实的SQL注入
  网络黑客
  处理漏洞和漏洞
  社会工程攻击
  基础计算机知识
  基础网络知识
  PC具有4 GB RAM和25 GB可用磁盘空间
  免费的VMWARE播放器
  激情学习伦理黑客
  该课程专为任何想要从头开始使用Kali Linux学习伦理黑客并转移到专业渗透测试世界的人设计。
  该课程向学生介绍最新的道德黑客工具和技术,包括实践不同攻击的挑逗实验室。学生将模拟从A到Z的全面渗透测试。
  使用Kali从A到Z的道德黑客是一个现实的安全课程。这个先进的渗透测试课程需要实践,测试和想要学习的能力,以便在信息安全领域发展自己的职业生涯。
  入学的学生将每月收到一个虚拟机或远程实验室访问或链接到本地​​Web应用程序作为挑战,并将被要求尝试将其删除,这将使他们参与道德黑客攻击,直到他们达到他们可以在真实的环境中做到这一点。
  谁是目标受众?
  任何想要学习伦理黑客的人
  安全管理员
  网络管理员
  计算机科学学生
CW60XRYV2ZWzxC17iqzADOJnQUwYoYb1.jpg (94.69 KB, 下载次数: 0)
11:42 上传
 百度网盘 / Download(回复可见):
  The following hidden content members only.  
游客,如果您要查看本帖隐藏内容请
上一篇:下一篇:
楼 主 推 荐
width:100%">
努力,努力,再努力
width:100%">
空空空空空那个空走过了~~~飘一下~~~~
width:100%">
转一下~~看能带点什么走~~~~~~~
width:100%">
有没有人曾告诉你,我喜欢这里。
width:100%">
瞎回的,有缘人看到私信我哈
width:100%">
先看看怎么样
width:100%">
破解补丁果真可以用,尼玛,所有网站找遍了,就奥学网的资源可以用,回来表扬下楼主哈
width:100%">
楼主福如东海,万寿无疆
width:100%">
加油啊偶一定会追随你左右,偶坚定此贴必然会起到抛砖引玉的作用~
width:100%">
金山卫士红围巾
金山卫士资深围巾
“金粉是家”联盟团队一员
疯狂的发帖人
爱宠一族专享
忠实金山会员
金粉闪亮小编
圣诞节纪念勋章
光棍骄傲日11月11日
最拉风人物
举办活动:最拉风人物
Xtreme-aesthetic Design
& 2012~Now 6SO.SO酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
在我还读研究生时,我被一个我曾共事过的教授向我展示的高超文本文件操作能力震撼了,于是我决定花点时间学学他用来操作文本文件的神器Awk。
即便是在今天,我所认识的90%的程序员几乎从没用过awk,其实只要你花上几分钟了解哪怕只是awk 10%的语法,它都能梦幻般的提高你操作文本文件的能力。下面就让我来教你一些最有用的操作&&注意,不是&最基础的&,只要你愿意花上5分钟时间练习下这些技巧,我相信你就将会领悟到我认为这门语言最为有趣的东西。
Awk实际上是一门非常有趣的小型编程语言,它设计的主要目的就是为了处理字符串。还记得有次我们的一个教授为我们布置了一道计算机网络的课程作业,让我们根据RPC协议编写一个可以生成客户端和服务端stub的程序,但是这个教授犯了一个错误,他告诉我们可以使用任何我们想要的语言,于是我决定用Awk来写一个,我原本的目的只是为了更好的掌握Awk,但是让我惊奇的是,我发现最终我的实现要比其它我用过的语言(Python,C++,Java)都更简短。
如果要了解Awk,你可以看看,当然我已经看过了,但是你可能并不想像我那样用Awk来实现某个协议的一个解析器,或许你只是想从你的日志文件中找出那些IP地址加起来刚好是666的家伙,那就跟我来吧,继续往下看!
让我们先来看个例子,假设我们有一个小文件(logs.txt)看起来像是下面这样,很简单,它只有2行带有IP地址的log信息:
07.46.199.184 [28/Sep/:20] &GET /robots.txt HTTP/1.1& 200 0 &msnbot&
123.125.71.19 [28/Sep/:11] &GET / HTTP/1.1& 304 - &Baiduspider&
这是两条由Apache生成的日志信息,很简单,它们显示了Bing和Baidu的爬虫昨天到访过我的网站。
Awk同其它命令行程序(比如grep)一样,都是从stdin读取输入并写到stdout,所以你可以很容易的通过管道使用它,Awk的使用也很简单,你唯一需要关心的它令后面的那个字符串参数:
awk '{print $0}'
大部分awk程度都是以{开头,并以}结束的,{}中包含的命令会在输入中的每一行上执行,大部分awk程序都会打印些什么东西,上面的命令会原封不动的将它读到的输入再打印出来,并添加一个换行,$0代表一整行。所以这个程序很典型&&它除了将输入拷贝到输出,其它什么都没做。
Awk还会根据输入行中的空白字符(空格,tab)自动将行切分为字段,并自动处理连着的分隔字符,你可以通过$1,$2,$3等来引用分割后的字段。
echo 'this is a test' | awk '{print $3}' // prints 'a'
awk '{print $1}' logs.txt
07.46.199.184
123.125.71.19
很简单,并且很有用,不是吗?但是有时我需要从字符串的结尾开始打印,这时我可以使用一个名为NF的特殊变量,它包含了当前行的字段数,因此我可以使用$NF来打印最后一个字段,我也可以通过这个值来反向查找某个字段,同时我还可以在一行打印多个值:
echo 'this is a test' | awk '{print $NF}' // prints &test&
awk '{print $1, $(NF-2) }' logs.txt
07.46.199.184 200
123.125.71.19 304
更进一步&&现在你可以看到,我们可以将日志文件分割,并只打印我们关心的部分。另一个很有用的变量就是NR,这个变量表示当前正在处理的输入的行号。在我演示NR的同时,我还想展示一下如何使用print来格式化输出,你可以使用逗号来分隔print的多个参数,它们会被转化为空格,但是下面的例子我没有使用逗号,所以结果中也没有插入空格:
awk '{print NR &) & $1 & -& & $(NF-2)}' logs.txt
1) 07.46.199.184 -& 200
2) 123.125.71.19 -& 304
很强大,并且一点也不难,对吧,如果你喜欢,你还可以使用printf函数,或许你对它更熟一些。现在,问题来了,不是所有字段都是以空格作为分隔符的,比如下面这个:
$ awk '{print $2}' logs.txt
[28/Sep/:20]
[28/Sep/:11]
日期字段使用了/和:作为分隔符,当然我可以通过一条awk命令来完成这个操作,但是我想向你演示一种更简单也是你更为熟悉的方式:Unix管道,下面我要做的就是通过管道使用另外一条awk命令来根据冒号对日期进行分割,要做到这一点,我的第二个awk命令需要使用2个{},不过我暂时不想对这个多做解释,你只要看看我是如何做的就行了:
$ awk '{print $2}' logs.txt | awk 'BEGIN{FS=&:&}{print $1}'
[28/Sep/2010
[28/Sep/2010
我为FS(也就是字段分隔符)指定了一个不同的值,也就是&:&,然后打印出了第一个字段,现在没有时间了,只有日期!如果你不想看到输出中的那个[,最简单的方法就是使用sed,或许你早就知道了:
$ awk '{print $2}' logs.txt | awk 'BEGIN{FS=&:&}{print $1}' | sed 's/[//'
28/Sep/2010
28/Sep/2010
使用相同的技巧,我还可以进一步根据'/&字符来切分日期,但是我认为你已经掌握这个技巧了,所以我就不罗嗦了,下面,让我们来试着加入一点点逻辑判断,如果我只想得到状态为200的行,我可以使用grep,但是如果我想得到IP地址中包含200的行,或者是日期在2000年以后的行,那我就需要先使用awk,然后在通过grep来查找了,不过的问题是输出结果没了上下文,还好,Awk支持if条件判断,所以我们可以像下面这样:
$ awk '{if ($(NF-2)==&200&) {print $0}}' logs.txt
07.46.199.184 [28/Sep/:20] &GET /robots.txt HTTP/1.1& 200 0 &msnbot&
现在,只有符合条件的行才会被输出,这个if语句实在是太熟悉不过了,应该不需要我做过多的解释,下面让我通过一个蠢例子向你演示下awk如何实现跨行保存状态,假设我想得到这个文件中所有HTTP相应的状态字段的和,虽然我实在想不出有有什么理由这样做,但是为了演示字段求和,就让我们先忘掉这一点吧,要做到这一点,我只需要创建一个变量就okay了:
$ awk '{a+=$(NF-2); print &Total so far:&, a}' logs.txt
Total so far: 200
Total so far: 504
很显然,这是有问题的,大部分情况下,我并不需要中间值,只需要最后的结果就可以了,当然我可以使用tail -n1,但是还有一种更好的方式,我可以使用END关键字告诉awk只在最后一行调用print:
$ awk '{a+=$(NF-2)}END{print &Total:&, a}' logs.txt
Total: 504
如果你想要了解更多关于awk的知识,有几本好书以及大量的线上资源可供你参考,只需要花上一些闲暇时间,你就可以很容易的学到关于awk的一切,但是要熟练使用它,还是有些挑战的,因为它的编码方式实在有点特别&&你实际上是在写一个for循环的内部实现,仔细想想,这其实有点MapReduce的感觉,只是一开始会让人有些迷惑。
我希望这篇文章能对你有用,如果你觉得它有用,不妨给我留言。
更新: 这篇文章的许多评论都很值得一读,当然我很希望它们都能在一个地方,但现在我只能把它们分别列出来:
最后,如果你是那种对awk感兴趣的人,毫无疑问,你就是那种我希望可以在Google共事的人,如果你感兴趣,可以给我简历(),我可以确保它一定会出现在合适的招聘者面前,而不是遗落在我们每天收到的那一大堆简历中。
& 相关主题:
本文来源:

我要回帖

更多关于 跟谁学 的文章

 

随机推荐