zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    排球训练营
    TP5中手机端和PC端判断
    N550JV无法休眠,休眠自动重启的原因及解决方法
    HTML标签全称
    HTML思维导图
    HTML基础
    Web项目流程
    VsCode使用之HTML 中 CSS Class 智能提示
    MyEclipse崩溃 Java was started but returned exit code=-1073740791
    Python 类的特殊成员方法
  • 原文地址:https://www.cnblogs.com/neozheng/p/9740040.html
Copyright © 2011-2022 走看看