• linux基础


    用户

    Linux下两种类型用户:超级用户和普通用户

    超级用户: root用户;终端表示:#;  1个;  不要在root用户下工作; home目录: /root
    普通用户: 可有多个,用户名可指定;终端列示:$;工作要在普通用户下; home目录:/home/用户名可指定;终端列示:$;工作要在普通用户;home目录:/home/用户名
    超级用户/普通用户 修改密码: passwd

    ~ 代表  当前用户的home目录

    相关命令:

    创建普通用户(超级用户下):useradd -m user1
    为 user1 这个普通用户创建密码: passwd user1
    
    由超级用户切换到 user1 这个普通用户: su - user1
    
    删除user1:
    userdel user1  # 1. 超级用户删除普通用户
    rm -rf /home/user1  # 2. 删除user1的文件目录
    
    如果user1正在登陆,需要先把user1退出再删除:
    1. ctrl D   # 退出
    2. exit  # 退出user1

    PATH环境变量:

    示例要求:输入 my_date 就显示当前的时间

    linux 自带的 date 就能实现该功能,所以就用自带的 date 
    # 1. 创建自己的文件夹:
        mkdir work
    # 2. 查找 date 在哪个文件夹下:
        whereis date
    # 3. 把 date 复制到 work 下:
        cp /bin/date ./work/my_date    # .表示当前目录
    
    # way1:
    # 4. 调用my_date:(路径+命令;路径可以是绝对路径也可以是相对路径)
        /home/user/work/my_date
    
    # way2:
    # 4. 查看环境变量的值:
        echo $PATH
    # 5. 把 my_date 所在的目录添加到环境变量:
        export PATH=$PATH:/home/user/work
    # 通过这种方式,就可以直接调用 my_date 来实现 date的功能;但是,export 的导入只是临时性的,换个终端或者重启系统就不能再调用 my_date;想永久保留该命令,可以把命令写入到配置文件 /etc/profile  中

    文件属性和权限操作

    文件属性:

    文件属性:
    cp /bin/date my_date
    ls -l my_date  # 查看文件属性;结果如下:
    # -rwxr-xr-x. 1 user user 59392 10月  3 17:30 my_date  # 第一个user表示 owner,第二个表示 group
    
    # -rwxr-xr-x. 表示权限:(开头的 - 表示文件;目录开头用 d 表示)
        # r :读;w :写;x :执行
        # 权限分成了3组:第一组 表示 Owner的(rwx);第二组 Group的(r-x);第三组 Others(r-x)
        # 每组权限的顺序都是rwx,没有的权限用 - 表示,如果用 0和1表示某个权限有没有,则上述权限可写成:755;(八进制) 
        # 如果想把这三个组的 x 权限都去掉,可以用: chmod 644 ./my_date 
        
    
    
    # 如果文件开头是 . 则表示该文件为隐藏文件,此时用 ls -l 是显示不出来的,要用 ls-la 才能显示出 .开头的文件
    
    # 查看某个命令(如:ls)的详细用法:
        man ls

    文件操作:

    操作:创建,查看,写入,复制,删除,重命名

    # 创建:touch
    touch helloworld  # 创建名为 helloworld 的文件
    vi helloworld  # 编辑 helloworld 文件;vim中 i 表示 插入, Esc + :wq 表示 保存并退出;:q! 表示不保存
    ls -l helloworld  # 查看 helloworld 的文件属性
    
    # 查看:cat
    cat helloworld  # 查看 helloworld 的文件内容;cat 用于显示文本文件的内容,如果要查看二进制文件的内容,可通过: vi helloworld --> :%!xxd  ,就会显示文件内容的二进制格式
    
    # 复制:cp
    cp helloworld helloworld_bk  # 复制文件:由 helloworld 复制到 helloworld_bk
    
    # 删除:rm
    rm helloworld_bk  # linux 下的删除不像windows,能通过回收站找回;linux删除后很难找回
    
    # 重命名:mv
    mv helloworld helloworld_rename  # 把 helloworld 重命名为 helloworld_rename

    文件内容:

    文件内容 <===> 文件类型 (文件内容决定了文件类型;文件的类型只与文件的内容有关,与后缀名无关)
    
    # 查看文件类型: file
    file helloworld_rename    # 查看 helloworld_rename 的文件类型  # 结果如下:
    # helloworld_rename: UTF-8 Unicode text  # UTF-8 Unicode 格式的文本

    目录操作:

    目录:英文--> directory, windows下称为 文件夹;作用:容纳子目录和文件

    linux系统中,目录也是一个特殊的文件,也有自己的属性
    mkdir my_dir
    touch my_dir/a
    ls -l  
    # 其中关于 my_dir 的显示为:
    # drwxrwxr-x.  2 user user  4096 10月  3 20:54 my_dir  # 权限以 d开头表示目录;4096 表示目录自身的大小;
    # 补充:
        返回前一次的路径: cd -
        当前工作路径: pwd
        # 以 . 开头的目录也是隐藏目录,如: 
            mv my_dir/ .my_dir  # 重命名
            # 此时不能用 "ls -l" 查看,而应该用 "ls -la"

    目录权限:

    以上面的 my_dir 目录为例:
    # drwxrwxr-x.  2 user user  4096 10月  3 20:54 my_dir # 以 d开头表示目录
    rwxrwxr-x 也是分为三组:Owner,Group 和 Other;
    r 表示 可读,即可使用 ls 来查看;w 表示可写,即能在该目录下使用 touch 去创建文件
    x, 与文件的x代表 “执行” 不同,目录的 x 表示 “可进入”,即能 cd 进去
    # 对于目录的权限而言, x 是最基本的属性,如果没有 x 权限,其它所有的操作都无法成功
    
    # 删除目录:rm -rf my_dir/  # -r表示采用了递归、循环的删除(目录下面有可能还包含子目录...)# -f表示强制删除
    
    # 某一个目录下所有文件和文件夹的大小: 
    du -sh 目录名

    Winrar-Tar命令

    压缩、打包:tar
    打包:多个文件 合并 为一个文件

    # 打包
    # pwd: /home/user/work
    mkdir 1
    cp /bin/date 1/date_01
    cp /bin/date 1/date_02
    cp /bin/date my_date
    # 把上面的子目录1和二进制程序my_date 打包成一个文件:
    tar cf my_tar.tar 1 my_date  # tar:打包命令; c:create,f:file;tar包名.tar;所要打包的对象
    
    # 查看tar包里面的内容:
    tar tvf my_tar.tar  # t:列出 tar包中具体文件的内容以及目录的内容;v:列出冗余的详细信息;f:要操作的文件对象
    
    # 压缩:tar cjf
    # 把上面的子目录1和二进制程序my_date 压缩:
    tar cjf my_compress.tar.bz2 1 my_date  # j:表示用 bz2这种方法来压缩文件
    
    # 注:打包并不会改变文件的大小,压缩可以使包变小
    
    # 解包、解压:tar xf
    mkdir my_tar
    tar xf my_tar.tar -C my_tar  # x:extract,解压; -C 表示解压到的目录
    
    mkdir my_compress
    tar xf my_compress.tar.bz2 -C my_compress  # 解压到 my_compress 目录下
    
    # 查看两个目录下的内容是否一样:
    diff -r my_compress my_dir  # -r 表示 递归循环子目录

    搜索(文件查找):Find命令

    基本用法:

    # 查找 /usr 下的 time.c 文件:
    find /usr -name "time.c"  # /usr:要查找的目录 ; -name:参数;"time.c":要查找的文件名
    
    # 假如不知道文件的具体名字: 可利用 * 通配符
    find /usr -name "*ime.c"  # * 表示长度不限的通配符; ? 表示1 个通配符
    
    mkdir 1
    touch 1/1.c
    touch 1/1
    find . -name "1"  # 查询结果有两个: ./1 (目录) 和 ./1/1(文件)
    # 如果想查找文件 “1”,如下:
    find . -type f -name "1"  # -type f:表示要查找的是常规的文件
    # 如果想查找目录 “1”,如下:
    find . -type d -name "1"  # -type d:表示要查找的是目录

    高级应用:

    find /usr/src -name "*.c" -exec wc -l {} ; 
    # 上面的命令分为两部分:find /usr/src -name "*.c" 和 -exec wc -l {} ; 
    # -exec wc -l {} ; 部分: -exec 后面连接的是一个 linux command ,该命令对第一部分find找到的结果进行处理,并且这个命令是以“;”结尾,但在linux中“;”是一个特殊的运算符,用以分隔两个不同的命令,所以直接打“;”系统会认为该分号是一个运算符,所以在分号前面加了一个“”用于转义(让“;”变成一个普通的符号,这样的“;”在系统中表示命令的结束);
    # wc -l 是一个命令,可以用来统计一个文件中的行数;
    # {} 代表 find 一次(每次)匹配的结果
    
    
    # 把 /usr/src 下所有的 .c 文件 复制到 当前目录下的 src 文件中:
    find /usr/src -name "*.c" -exec cp {} src/ ;  # {} 表示find每次匹配到的结果; ;代表命令的结束
    
    # 统计 /usr/src 中所有 .c文件的个数:
    find /usr/src -name "*.c" >> count   # >> 表示 追加方式的重定向,即 找到 /usr/src下的所有.c文件重定向到 count 文件中(如果不加 >> ,那么find 的查找结果是要输出到标准输出,即屏幕)
    wc -l count # 统计count文件中的行数,即可得到 .c文件的个数
    
    # s可使用 “;” 把上面的两个命令结合到一起:
    find /usr/src -name "*.c" >> count ; wc -l count ; rm count  # 最后要把 count rm 掉
    # 上面的 count 文件只是承担了 find 和 wc 之间的桥梁作用,在linux 中其实不需要这样的一个中间文件,可使用 管道(|)让find的输出作为 wc 的输入
    # 所以上面的命令可优化为:
    find /usr/src -name "*.c" | wc -l  
    # 在linux中,可使用 | (管道)让一个命令的输出作为另一个命令的输入,并且在命令的组合中可使用多个管道,连接多个命令

    文本编辑工具:Vim

    基本应用:

    Vim的三种状态:命令行状态、插入状态和末行状态,如:
    # vi helloworld 进入 命令行状态,此时不能编辑,输入 “i” 进入 插入状态就可以编辑了;编辑完后按“Esc” 可退出插入状态、进入命令行,此时输入“:”可进入末行状态,末行中可输入“wq”保存,也可输入“q!”不保存

    高级应用:

    # 1.显示行数:(末行状态下完成)
    vi helloworld.py
    # : 进入末行,输入 “set number” 后按 回车键, 就能显示行数;如果文件没有做修改,进入末行后输入“q” 直接退出
    
    # 2. 跳转:(命令状态下完成)
    # 让光标跳转到某一行
    # 跳转到第一行:
    1 + G
    # 跳转到最后一行:
    GG
    # 跳转到第n行:
    n + G
    
    # 在一行中,跳转到行的结尾:
    $
    # 在一行中,跳转到行的开头:
    ^ (Shift + 6# 3. 删除:(命令状态下完成)
    # 删除一整行:
    dd
    # 删除选中内容:
    v d   # 先输入 v 进入 “可视”,按 方向键 来选择区域,最后按“d”删除
    # 删除文件中所有内容:
    1 G d G # 先到文件的首行,再输入 “dG” 删除所有
    # 撤消操作:
    u
    
    # 复制/粘贴:(命令状态下)
    # 复制一整行:
    yy
    # 复制选中:
    v y 
    # 粘贴:
    p
    
    # 剪切:(命令下)
    v x
    p
    
    # 搜索:(命令下)
    /要搜索的内容 + Enter键
    # 下一个:
    n
    
    # 缩进:(命令)
    先把光标移到某一行,输入一个数字n,再输入 “==”,那么从这一行开始,下面的n行都会缩进
    
    # 自动补全:(插入下)
    Ctrl P
  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/neozheng/p/9740040.html
Copyright © 2020-2023  润新知