• linux基础


      本文基于centos7.1的系统

    一、目录操作

      linux文件系统只有一棵目录树,就是根分区(/)。linux大体的目录树结构如下

      

      bin: 该目录中存放Linux的常用命令

      dev: 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,访问这些外部设备与访问一个文件或一个目录没有区别

      etc: 该目录存放系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等

      sbin: 该目录用来存放系统管理员使用的管理程序

      var: 该目录存放那些经常被修改的文件,包括各种日志、数据文件

      usr: 用户的应用程序和文件几乎都存放在该目录下

      home: 用户的家目录

      lib:该目录用来存放系统动态链接共享库,几乎所有的应用程序都会用到该目录下的共享库

      tmp:用来存放不同程序执行时产生的临时文件,该目录会被系统自动清理干净

      这里做一点简单的归纳

    1. 系统级的组件放在/bin、/lib;
    2. 根用户才能访问的放在/sbin;
    3. 系统repository提供的应用程序放在/usr/bin、/usr/lib;
    4. 用户自己编译的放在/usr/local/XXX。

      也可以这样理解:重要的二进制位于 /bin(用户二进制)以及 /sbin(系统二进制)中。不重要的二进制(如图形环境或Office 工具)安装在/usr/bin 和 /usr/sbin中。进行这种分隔是为了尽可能地缩小根分区。使用源代码编译的软件通常位于 /usr/local/bin 和/usr/local/sbin中。

      注:现如今大多数linux系统已经把/bin,/sbin,/lib,/lib64做成了/usr/bin,/usr/sbin,/usr/lib,/usr/lib64的符号链接,所以我们在以后的学习中可以不加以区分。

      目录结构具体可参考http://www.centoscn.com/CentOS/help/2015/0424/5262.html

     简单的目录操作命令

    1. pwd        ---- 查看当前目录
    2. cd dirname   ----- 切换目录,dirname有绝对路径和相对路径之分,其中.表示当前目录(可以用来构造下一级目录),..表示上一级目录,- 表示上一次目录。注:.和..只是提供目录跳转的符号,并不是一个文件或者目录
    3. ll -ha | less   ----- 查看目录内容,'q'退出 
    4. mkdir     ----- 创建目录(可以同时创建多个目录),-p选项是递归创建目录,-m设置目录权限
    5. rmdir    ----- 删除空目录(可以同时删除多个目录),一般不用,因为rm命令可以做到rmdir能做到的,也能做到rmdir做不到的 

      注意:默认的umask是022,也就是说创建目录默认权限是755,文件权限是644(去掉可执行权限1)。umask命令可以查看当前的umask值,我们也可以修改/etc/profile的umask值

    二、文件操作

      linux的核心思想是一切皆文件,区别于windows的一点是不是以后缀名区分文件类型,可以用file命令查看文件类型

      注:file查看的文件类型是根据你写入的内容自动确定的

      linux把文件分为7类:目录(d)、普通文件(-)、链接文件(l)、块设备(b)、字符设备(c)、套接字(s)以及管道(p)

      ls -l 查看当前目录文件的时候有一项是文件最后修改或访问的时间,这可能是我们以后需要常关注的内容

      注意:上图的4k是文件夹本身的大小,不包括文件夹里面的文件的总大小,想要查看目录包含文件的总大小用du -sh dirname命令;linux的文件名和目录不能同名,同名的话cd就不知道该访问文件还是目录

      简单的文件操作命令

        touch filename                #  更改text的时间戳,若无text则创建text

        > filename                      # 无符号重定向,创建空文件

        rm filename                    # 删除文件 -r 递归删除    -f 强制删除,不显示提示信息

        mv A B                         # 把文件或者目录A移动到B,分为以下几种情况:A是文件或者目录,B不存在,则重名A为B;A是文件或者目录,B是目录,把A移动到B内;A是文件或者目录,B是文件,则提示是否覆盖

                      可以用-f参数直接不显示提示信息直接覆盖(可以同时把多个文件或者目录移动到最后一个目录)

        cp A B                         # -a 把A的所有特性一并复制   -r/-R/--recursively参数用来复制目录,若B不存在会自动创建

        vim file                       # a/A(append)  i/I(insert)  o/O(换行)

      vim是一个比较强大的编辑器,具体使用可以参考http://www.cnblogs.com/dengmj/p/5031498.html

    数据流

      在linux中,几乎所有的命令都可以看作是一个程序。既然是程序,那么就应该有数据输入与输出,数据输入一般是通过标准输入输入的,数据输出一般输出到标准输出。所谓的标准输入与标准输出指的是程序的默认输入与默认输入,分别指的是键盘和显示屏,当然我们也可以根据自己的需要更改默认输入与默认输出。例如input() 默认找系统的stdin,而stdin又是默认连接到键盘。

      注:数据流不是全部直接流入到屏幕,而是先暂存在缓冲区,然后再一次性丢给屏幕。

      在这里,我们要区分从参数获得输入和从标准输入获得输入。从参数获得输入就是把参数给shell,然后由shell提交给命令。

      echo     # 回显,可以接受标准输入,也可以接收命令参数,甚至可以用拓展技术进行模式匹配

      输出重定向:>(不断刷新)   >>(追加)

      管道数据流模型:用于把一个程序的输出交给另外一个程序的输入

      python一般接收一个文件,把文件代码作为输入,但这里是直接把代码作为输入。

     详解cat

    1. 拼接输出 :接收输入,把输入的内容显示。输入既可以是文件列表,也可以是标准输入
    2. 拼接文件:结合重定向

      要想实现把内容同时输出到屏幕(标准输出)和文件,可以采用tee命令

    信息展示

      

      我们把ll的结果利用管道交给grep,并当作grep的最后一个参数,这时grep参数就不需要指定最后一个参数。

      模式匹配是匹配文件名包含python的内容

      less: -e  当文件显示结束后,自动离开;  -N  显示每行的行号; -s  显示连续空行为一行; /字符串:向下搜索“字符串”的功能; ?字符串:向上搜索“字符串”的功能;

          b  向后翻一页, d  向后翻半页, h  显示帮助界面, Q  退出less 命令, u  向前滚动半页, y  向前滚动一行, 空格键 滚动一行, 回车键 滚动一页, [pagedown]: 向下翻动一页, [pageup]:   向上翻动一页

      more: +n  从第n行开始显示; -n  定义屏幕大小为n行; -s  把连续的多个空行显示为一行; +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示。

      注:less is more, 在以后的学习过程中我们常常用less

    查找文件

     简单易用:updatedb + locate

     稍微复杂:find

      注意一点:一个文件的名字其实除了文件名本身外,其实还包括了它的路径。如果仅仅是文件名,则表示的是相对路径

      find 目录(默认当前目录) -test content    

      注:content不和通配符混合使用只能精确匹配

      test的类型如下:-name   -type   -size(M或者G是大写)

      操作符:-and/-a(默认)   -or/-o    -not/-!

    链接

      软连接(-s)    # 相当于windows底下的快捷方式

      

      删除软连接

      

      软连接分为相对连接与绝对连接。相对连接不在乎连接的是什么,只是在乎连接的文件或目录的名称以及与软连接的相对位置。

      硬连接     # 相当于python中的对象引用(不要随便建立硬连接,因为修改其中一个就会修改对象内容)。去掉软连接的-s选项就是硬连接   

    任务和进程

      jobs 命令查看当前后台运行的任务

      两个快捷键(针对于前台程序):crtl + z(暂停程序) crtl + c(终止程序)

      暂停程序后可以进行的操作:fg %num 把程序调度到前台运行;bg %num 把程序调度到后台运行(python server.py & 把程序放到后台运行)。(num 是查看jobs得出来的值)

      注:不要把有标准输出的程序放到后台运行,这样你的shell可能会和程序的输出混合到一起,但是两者互不影响;只有前台程序才能crtl + c 终止程序

      进程例子:ps -ef|grep mysql|grep -v 'grep' 得出来的结果的第二列是进程号,可以用kill命令删除;关掉主进程,守护线程也跟着关掉

    时间

      查看当前系统时间:date

      查看当前系统时区:date -R

      调整当前系统时区:1、tzselect      2、cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime   例如 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

      设置当前系统时间:例如:将系统日期设定成2009年11月3日的命令 命令 : "date -s 11/03/2009";将系统时间设定成下午5点55分55秒的命令  命令 : "date -s 17:55:55"

      注:上述设置时间只是临时的,重启后即失效,要想永久设置时间可以用下面命令:hwclock -w

    别名

      在linux系统中经常碰到很长的命令。我们又很难记住,或者觉得打那么多字麻烦,或者我们为了使我们经常要进行的某个操作方便快捷,那么我们可以可以把这些命令组合起来,给它指定一个别名,这样我们只要执行这个“别名”命令的时候,就相当于执行了之前的那个命令了,非常的方便。

      查看系统已有别名:alias

      临时更改别名:例如alias cdmydir='cd /root/mydir'

      取消别名:unalias cdmydir

      永久更改别名:直接使用alias命令定义的别名,重启后就会失效。因此如果需要永久使用别名,就需要做一些操作。修改/定义别名,实际上也是在定义系统的环境变量。系统环境变量文件是/etc/profile。

                但是查看profile文件,你会发现文件最开头就有提示:

      因此最好不要直接在/etc/profile文件出进行定义,而是在/etc/bashrc中进行定义,定义完成后,通过    #source /etc/bashrc使其生效。

          或者,重新定义一个文件 /etc/profile.d/alias_bash.sh (alias_bash文件名是任意取的),然后通过    #source /etc/profile.d/alias_bash使其生效。再或者修改root目录下的.bashrc文件

          通过这些方法,就可以使自己(自定义)的别名永久生效了。

    端口

       linux如何查看端口被哪个进程占用的方法:1、lsof -i:端口号     2、netstat -tunlp|grep 端口号

       lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具

       netstat -tunlp用于显示tcp,udp的端口和进程等相关情况,配合grep进行过滤

       查看服务占用端口情况,命令是netstat -apn|grep Patern

      3306是占用端口,20973是PID

      注: grep的参数是模糊匹配   ps aux|grep mysql  和  ps aux|grep mysq结果一样哦(因为grep是模糊匹配)

    统计当前目录下的文件个数、目录个数

      有时候我们不关心目录下的文件是什么,只关心目录下的文件个数。例如我们想要查看/bin目录下的命令总数,这时候我们就要用到下面的知识了。

    1. 统计当前文件夹下文件的个数              ls -l |grep "^-"|wc -l
    2. 统计当前文件夹下目录的个数          ls -l |grep "^d"|wc -l
    3. 统计当前文件夹下文件的个数,包括子文件夹里的         ls -lR|grep "^-"|wc -l        注意:-R 在这里表示recursive, -r表示reverse
    4. 统计文件夹下目录的个数,包括子文件夹里的           ls -lR|grep "^d"|wc -l

      注:ls的参数-l 必须和wc的参数-l 相对应,因为wc的-l 参数表示统计行数

      

  • 相关阅读:
    Python内置函数 __import__ 动态加载模块
    Django_静态资源配置和ajax(九)
    GO语言学习(五)Go 语言基础语法
    GO语言学习(四)GO语言语言结构
    GO语言学习(三)GO语言学习API文档
    GO语言学习(二)Windows 平台下 LiteIDE 的安装和使用
    GO语言学习(一)Windows 平台下 Go 语言的安装和环境变量设置
    VS无法访问IIS元数据库 您没有足够的特权访问计算机上的IIS网站
    本地存储localStorage以及它的封装接口store.js的使用
    操作类封装
  • 原文地址:https://www.cnblogs.com/longyunfeigu/p/6709715.html
Copyright © 2020-2023  润新知