美文网首页 生物信息学分析生信linux&github
2019龙星计划笔记-Linux的基础知识

2019龙星计划笔记-Linux的基础知识

作者: JeremyL | 来源:发表于2019-08-03 22:13 被阅读26次

    Linux与生活中常用的Windows系统有着本质的区别;下面看一下百度百科对Linux的定义。

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。

    Linux 目录

    Linux 系统和信息都以文件的形式进行存储。
    Linux的目录结构为树状结构,以"/"目录作为根目录。

    directory
    /    ## 根目录
    bin  ## 系统程序
    boot ## 内核和启动程序,所有和启动相关的文件都保存在这里
    etc  ## 系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如用户账户和密码。
    dev  ## 设备文件
    lib  ## 系统程序库文件 
    tmp  ## 临时文件夹 
    home ## 用户的主目录
    

    绝对路径与相对路径

    绝对路径:路径的写法『一定由根目录 / 写起』,例如 /usr/share/doc 这个目录。

    相对路径:路径的写法『由当前所在目录写起』,例如由你当前所在的目录 /usr/share/doc 要到目标目录 /usr/share/man 底下时,可以写成: cd ../man。"./"表示当前目录。

    ## 在linux系统里特殊符号代表的意义
    .   ## 代表此层目录
    ..  ## 代表上一层目录
    -   ## 代表前一个工作目录
    ~   ## 代表『当前登陆用户』所在的家目录"/home/youraccount",该用户对"/home/youraccount"目录拥有完全控制权
    

    常用的目录操作命令

    cd       ## 切换目录
    pwd      ## 显示当前所在目录 
    mkdir    ## 建立一个新的目录 
    rmdir    ## 删除一个空的目录
    

    ls命令

    ls 目录名称
    
    选项与参数:
    -a :全部的目录,连同隐藏文件夹一起列出来
    -h :将目录容量转换为以易读的方式(例如  GB, KB 等等)
    -l :列出目录的详细信息
    -S :以文件大小排序
    -t :以时间排序
    
    $ ls -alhS /usr/
    total 136K
    dr-xr-xr-x.   2 root root  36K Jun 25 22:03 bin
    dr-xr-xr-x.  52 root root  36K Jun 19 01:17 lib64
    dr-xr-xr-x.   2 root root  20K Jun 19 01:17 sbin
    drwxr-xr-x.  13 root root 4.0K Feb 27 14:58 .
    dr-xr-xr-x.  21 root root 4.0K Jul  1 23:30 ..
    drwxr-xr-x.   2 root root 4.0K Apr 11  2018 etc
    drwxr-xr-x.   2 root root 4.0K Apr 11  2018 games
    drwxr-xr-x.  49 root root 4.0K Jun 17 10:52 include
    dr-xr-xr-x.  41 root root 4.0K Jun 17 10:51 lib
    drwxr-xr-x.  26 root root 4.0K Jun 19 01:17 libexec
    drwxr-xr-x.  14 root root 4.0K Jun 17 22:48 local
    drwxr-xr-x. 126 root root 4.0K Jun 25 22:03 share
    drwxr-xr-x.   4 root root 4.0K Feb 27 14:58 src
    lrwxrwxrwx.   1 root root   10 Feb 27 14:58 tmp -> ../var/tmp
    

    cp命令

    cp 被拷贝的文件  目标目录
    cp file1 file2 ... 目标目录
    
    选项与参数:
    -f :强行复制文件或目录,   不论目的文件或目录是否已经存在
    -i :若目标文件(destination)已经存在时,在覆盖时会先询问用户
    -p :连同档案的属性一起复制过去,而非使用默认属性(备份常用);
    -u :若destination 比  source 旧才更新  destination !
    -R :复制目录及目录内的所有项目
    -v :显示执行过程
    

    rm命令

    rm 文件或目录
    
    选项与参数:
    -f :忽略不存在的文件,不显示警告讯息
    -i :在删除会先询问用户
    -r :递归删除文件夹
    
    #删除文件
    $ rm *.sam
    #删除目录
    $ rm -rf /tmp/etc 
    

    mv命令

    mv 待移动的文件或目录   目标目录
    mv file1 file2 ... 目标目录
    
    选项与参数:
    -f :如果目标文件已经存在,不会询问而直接覆盖;
    -i :若目标文件已经存在时,询问用户是否覆盖
    

    解压缩命令

    根据文件的后缀名,需要以不同方式压缩的文件使用不同的命令进行解压:

    • tar tar –xvf
    • .gz gzip -dgunzip
    • .tar.gz 或 .tgz tar –xzf
    • .bz2 bzip2 -dbunzip2
    • .tar.bz2 tar –xjf
    • .Z uncompress
    • .tar.Z tar –xZf
    • .rar unrar e
    • .zip unzip

    链接

    Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也称为软连接。

    默认情况下,ln命令产生硬链接。

    【硬连接】

    硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件都会得到一个分配的编号, 称之为索引节点号(Inode Index)。在Linux中,硬连接就是多个文件名指向同一索引节点,允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。如上所述,当目录的索引节点有一个以上的连接,只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块 及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接均被删除

    【软连接】

    软链接类似于Windows的快捷方式。软连接实际上是一个文本文件,其指向另一文件的位置信息。

    $ touch mf1     # 创建一个测试文件mf1
    $ ln mf1 mf2    # 创建mf1的一个硬连接文件mf2
    $ ln -s mf1 mf3     # 创建mf1的一个符号连接文件mf3;软连接
    $ ls -li    # -i参数显示文件的inode节点信息
    total 0
    9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 mf1
    9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 mf2
    9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 mf3 -> mf1
    ## 从上面的结果中可以看出,硬连接文件mf2与原文件mf1的inode节点相同,均为9797648,然而软连接文件的inode节点不同。
    
    ## 当删除原始文件mf1后,硬连接mf2不受影响,软连接mf1文件无效
    ## 当删除硬链接mf2后,原始文件mf1不受影响,软连接mf3文件不受影响
    ## 当删除软链接mf3后,原始文件mf1不受影响,硬连接mf2文件不受影响
    ## 当删除原始文件mf1,,硬连接mf2后,文件被彻底删除
    

    注意:

    1. 强烈不建议给目录创建硬链接,容易造成目录链接死循环
    2. 不能跨硬盘分区创建硬链接

    通配符

    使用通配符可以对具有某种规律的文件进行同一操作。

    字符 含义 实例 解释
    * 匹配 0 或多个字 符 a*b a与b之间可以有任意长度的任意字符,也可以一个 也没有,如ab, aab, acccccdb, a24322qqb。
    ? 匹配任意单一字符 a?b a与b之间必须有一个任意字符,如aqb, acb, a7b。
    [list] 匹配list中的任意 单一字符 a[xyz]b a与b之间必须是list列出的任意一个字符, 如: axb, ayb, azb。
    [!list] 匹配除list中的任 意单一字符 a[!0-9]b a与b之间必须是除去阿拉伯字符的任意一个字符, 如axb, aab, a-b。
    [c1-c2] 匹配 c1-c2 中的 任意单一数字 a[0-9]b a与b之间必须是0与9之间的一个字符,如a0b, a1b... a9b。
    {string1...} 匹配 sring1或其 他字符串之一 a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之 一。

    示例

    ## 1.拷贝文件
    cp /tmp/file[0-9].txt /tmp/etc
    
    ## 2.删除'file'开头,'.txt'结尾的所有文件
    rm -rf {file}*.txt
    

    linux 文本操作

    查看文件命令

    cat 命令将文件由前向后全部打印在屏幕上。

    tac 命令将文件由后向前全部打印在屏幕上。

    head 命令查看文件头部, -n 选项可以指定查看前几行。

    tail 命令查看文件尾部, -n 选项可以指定查看后几行。

    more 命令将以一页一页的形式展示内容,按空白键(space)向后一页。

    less 命令用来查阅文档,功能更为强大。在使用less过程中,可以用以下的按键查看文件内容

    q   ## 退出
    g   ## 第一行
    G   ## 最后一行
    j   ## 下一行
    k   ## 上一行
    /   ## 检索
    n   ## 匹配到的前一个
    N   ## 匹配到的后一个
    

    less 还可以将文件整齐显示

    less -SN text.txt
    

    管道与重定向

    管道(|)可以将一个命令的输出作为另外一个命令的输入。

    重定向命令列表如下:

    命令 说明
    command > file 将输出重定向到 file。
    command < file 将输入重定向到 file。
    command >> file 将输出以追加的方式重定向到 file。
    n > file 将文件描述符为 n 的文件重定向到 file。
    n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。
    n >& m 将输出文件 m 和 n 合并。
    n <& m 将输入文件 m 和 n 合并。
    << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

    echo命令

    echo用于字符串的输出

    echo -n 字符串
    
    选项与参数:
    -n 不要在最后自动换行
    -e 显示转义字符
    

    cat命令

    cat 命令将文件的内容打印在屏幕上

    paste命令

    用来将多个文件的内容合并,首先确保两个文件行数相同。 paste 连接文件时,除非指定 -d 选项,否则默认用空格tab键分隔文本。

    $ paste 1.txt 2.txt
    a   d
    b   e
    c   f
    

    cut 可以从数据中提取某列

    -f 选项指定列,可以是一个范围(比如2-8),注意不能用它给列排序。

    cut 默认以 \t 为分隔符, -d 选项可以指定分隔符,比如指定,为分隔符。

    grep命令

    grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep 处理速度非常之快,尽量使用这个命令处理文本。

    -v  ## 排除匹配到的
    -w  ## 单词的完全匹配
    -B  ## 指定输出匹配到的前多少行
    -A  ## 指定输出匹配到的后多少行
    -E  ## 指定支持扩展表达式
    -C  ## 对匹配到的行计数
    -o  ## 只输出匹配到的部分
    

    sort命令

    sort 根据某种规律对文本进行排序

    • -b 忽略每行前面开始出的空格字符。
    • -c 检查文件是否已经按照顺序排序。
    • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
    • -f 排序时,将小写字母视为大写字母。
    • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
    • -m 将几个排序好的文件进行合并。
    • -M 将前面3个字母依照月份的缩写进行排序。
    • -n 依照数值的大小排序。
    • -o<输出文件> 将排序后的结果存入指定的文件。
    • -r 以相反的顺序来排序。
    • -t<分隔字符> 指定排序时所用的栏位分隔字符。
    • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
    • --help 显示帮助。
    • --version 显示版本信息。

    uniq命令

    uniq 根据文件某列或行检查文件中重复的行;uniq的输入文件必须是已经拍好序的文件。

    • -c或--count 在每列旁边显示该行重复出现的次数。
    • -d或--repeated 仅显示重复出现的行列。
    • -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
    • -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
    • -u或--unique 仅显示出一次的行列。
    • -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
    • --help 显示帮助。
    • --version 显示版本信息。

    参考

    Linux_Basics.md
    Linux 命令大全

    相关文章

      网友评论

        本文标题:2019龙星计划笔记-Linux的基础知识

        本文链接:https://www.haomeiwen.com/subject/qgvsdctx.html