zoukankan      html  css  js  c++  java
  • linux基础命令

    搭建Linux系统

    docker pull centos
    docker run -d -i -t 镜像 /bin/bash
    docker exec -it 容器 bash
    

    1. 文件类型

    ls [-option] [file]
    

    1.1 参数:

    -a 显示所有的文件和目录,包含隐藏文件和目录
    -A 显示所有的文件和目录,包含隐藏文件和目录,但不列出 "." (目前目录) 及 ".." (父目录)
    --block-size 执行文件大小单位,如g、m、k
    -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
    -h 与-l选项一起使用,将自动指定最大单位,示例ls -lh
    -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    -r 将文件以相反次序显示(原定依英文字母次序)
    -R 若目录下有文件,则以下之文件亦皆依序列出
    -t 将文件依建立时间之先后次序列出

    1.2 隐藏文件

    在Linux中,如果文件名称或目录前面带有“ . ”,表示该文件或目录为隐藏文件如

    1.3 文件类型

    • rwx rwx rwx
      第一位表示文件类型:d表示目录,-表示文件 l表示链接文件 b表示设备文件中可供存储的接口设备 c表示设备文件中的串行端口设备,如鼠标、键盘
      第一组表示文件拥有者的权限,r可读,w可写,x可执行
      第二组表示文件所属组的权限
      第三组表示其他用户的权限

    2. 文件与目录操作命令

    2.1 cd切换目录

    cd [相对路径或绝对路径]
    

    示例

    cd /Users/csj/Download
    cd ..    #返回上一级目录
    cd ~    #进入家目录
    

    2.2 pwd查看当前目录

    pwd    #显示当前路径
    

    2.3 mkdir 创建目录

    mkdir [-option] 目录名称
    

    mkdir命令用于创建目录,目录可以是相对路径也可以是绝对路径。
    常用参数:

    • -p:当建立的目录的上层目录不存在时,就一并创建
    mkdir DasAuto
    mkdir -p pop/sub
    mkdir test1 test2 test3 #在当前目录一次建立多个文件夹
    

    2.4 rmdir 删除目录

    rmdir 文件名
    

    rmdir用于删除目录,目录可以是相对路径也可以是绝对路径,但必须是空目录

    rmdir test
    rmdir test1 test2 test3
    

    2.5 cp 复制

    cp [-option] 源文件 目标
    

    常用参数:

    • -r:循环进行目录复制
    • -u:如果源文件较新,或者没有目标文件,才进行复制,常用于备份
    cp /etc/profile .    #将/etc/profile文件复制到当前目录
    cp /etc/profile pfile    #将/etc/profile文件复制到当前目录,且重命名为pfile
    cp -r /test ~/Download/ 将/test下的所有文件和目录全部复制到~/Download目录
    

    2.6 rm 删除文件

    rm [-option] 文件名
    

    常用参数:

    • -f:force,强制删除,不提示用户
    • -r:循环删除,常用语目录删除
    rm pfile    #需要用户确认,Y确认,回车执行删除
    rm -f pfile    #直接删除
    rm -rf test    #直接删除test目录及其所有文件
    

    2.7 mv

    mv 源 目标
    

    作用:

    • 1.执行目录下移动文件
    • 2.不指定目录改名

    3. 查看文件内容命令

    3.1 cat

    cat [-option] 文件名
    

    参数:

    • -n:连行号一起显示在屏幕上
    • -b:连行号一起显示在屏幕上,但空行不算
    • -v:显示控制符号

    3.2 more 文件名

    more和cat类似,同样是在屏幕上显示文件内容,但是如果文件内容太多,超过40行,cat会一闪而过,more则会在显示完一屏内容后停下,等待用户往下翻。
    下翻:回车键(单行下翻) ctrl+F(单页下翻)

    3.3 less 文件名

    less和more一行,唯一区别就是可以使用pageDown和pageUp进行上翻和下翻,比more更方便

    3.4 head

    head [-option] 文件名
    

    head命令用于指定文件的头几行内容,如果不加-n参数,默认显示文件的前10行内容
    常用参数:

    • -n:指定显示多少行

    3.5 tail

    tail [-option] 文件名
    

    tail命令用于显示文件的尾几行内容,与head相反,如果不加-n参数,默认显示文件的后10行内容
    参数:

    • -n:指定显示多少行
    • -f:当有新内容时,更新展示,常用与查看日志

    4 链接

    ln [-option] 源文件 目标文件
    

    常用参数:

    • -d:创建硬连接,默认为该参数
    • -s:创建符号链接
    • -f:创建链接时如果目标文件已经存在,则替换

    硬链接:一个分区被格式化为一个文件系统之后,基本上它一定会有inode table和Block数据区域两大块,一个记录文件属性和位置,一个用来记录文件的内容。当系统要读取文件时,会首先读取inode table,然后根据inode的信息到数据区(Block)将数据取出备用。硬连接就是再建立一个inode链接到文件放置的Block块。也就是说,进行硬链接时,文件内容不会改变,只是在查询时,利用原来的inode与后来添加的inode均可以指定到该文件内容存放的地点,因此,读取两个inode的结果都是存取同一个文件内容。因为inode会链接到Block块,而目录本身仅消耗inode,而不占用Block,所以硬链接不能链接目录。

    ln hello.sh dlink
    

    符号链接:相对于硬链接,符号链接比较好理解,基本上它是再建立一个独立的文件,而这个文件会让数据读取操作指向它的链接那个文件。由于只是利用文件作为指向的动作,所以当源文件被删除,符号链接文件就打不开了,相当于windows的快捷方式。
    硬连接比较安全,因为即使某一个inode被删除(删除文件),只要还有一个inode,该文件就还能被找到。

    ln -s hello.sh slink
    

    5.文件与目录权限

    5.1 chown

    用于变更文件即目录的所有者和所属组

    chown [-option] user:group 目录或文件名称
    

    参数:

    • -R:连同目录下所有文件和子目录都进行变更
    #将当前目录下的lamp目录下的所有文件和子目录的所有者改为luyy用户,所属组改为root组
    chown -R luyy:root lamp
    

    5.2 chmod

    用于变更文件及目录的读写执行权限。

    权限r:可读 4   w:可写 2   x:可执行 1
    权限属性所有者(user)、群组(group)、其他(other),分别用u、g、o来代表
    更改权限=:赋值,+:增加权限,-:减少权限
    ```#shell chmod [-option] [parameter] 目录或文件名称 ``` 常用参数: * -R:连同目录下的所有文件及子目录都进行变更 ```#shell chmod 760 hello.sh chmod ug=rwx,o=r hello.sh chmod g-w,o+w hello.sh ``` ![](https://img2018.cnblogs.com/blog/1418970/201912/1418970-20191207211037622-687224173.png)

    6. 搜索文件或目录

    6.1 which

    which 文件名
    

    which命令用于查找可执行文件的位置,该命令通过环境变量PATH所设置的路径进行搜索

    6.2 whereis

    whereis命令同样是根据设定好的目录进行查找,但是和which不同,它并不是使用PATH环境变量,而是自定义的一组目录。

    whereid [-option] 文件名
    

    参数:

    • b:只查找二进制文件
    • -m:只找说明文件

    6.3 find

    find命令可是对指定目录以及其所有子目录进行文件搜索,比如我们现在想找一个find命令可以对指定目录及其所有子目录进行文件搜索。

    find [path] [-option] 文件名
    

    参数说明:

    • -name:寻找文件名为file的文件(可用通配符)
    #find查找多个文件
    find . -name "*sh" -o -name "*.log"
    

    6.4 locate

    由于find命令在查找数据时比较比较消耗硬盘(find命令直接查找硬盘数据),通常使用locate来替代。locate查找文件特别快,这是因为locate是从已建立的数据库/var/lib/slocate中查找数据,而不是直接在硬盘上进行,自然很快。
    locate的限制:一些已经被删除的文件,或者刚刚新建的文件我们找不到,这是有数据库文件的更新机制导致的。基本上Linux每次启动会更新数据库文件,但是我们最新创建或者删除的文件并没有被数据库记录,导致查询结果有问题。我们可以用哪个updatedb手动更新数据库。

    7. linux用户与用户组管理


    查看/etc/passwd,每行使用:分割,共有7列。

    • 账号名称
    • 密码:用x代替,早期unix系统的密码会放这里。后来处于安全考虑,移到shadow文件中了。
    • UID:用户识别码。系统管理员用0,root的UID就是0;系统预留1-499,500-65535供一半用户使用
    • GID:用户所属群组的识别码
    • 用户名全称
    • 用户家目录
    • shell

    7.1 groupadd

    groupadd [-option] 群组名
    

    常用参数:

    • -g:设定创建群组的GID。不加-g参数,系统自动分配一个,从500开始
    groupadd -g 555 testerhome
    

    7.2 groupdel

    groupdel 群组名
    

    注意:在删除群组前必须先将该群组内的用户删除。

    7.3 useradd

    useradd [-option] 用户名
    

    常用参数:

    • -u UID:设定新增用户的UID,如果不指定,则系统自动分配。
    • -g GID或者groupname:指定新增用户所在的群组,可以用GID或者是群组名。如果不指定该运足,则系统将自动创建一个和用户名同名的群组,并将该用户加入该群组。
    • -M:不建立家目录。如果不使用该参数则默认建立家目录
    • -s shell:指定用户登录时启用的shell。如果不指定,一半使用/bin/bash
    useradd -u 555 -g testerhome -s /bin/bash csj
    


    注意:用户创建完后,暂时是无法登陆的,因为我们还未给用户设定密码,而Linux的安全机制是不允许无密码登陆的。

    7.4 userdel

    userdel用于删除已存在的账户

    userdel [-option] 用户名
    

    常用参数:

    • -r:将该账号的家目录和邮件文件一并删除。如果不加r,则仅删除账户,该用户的家目录和邮件文件依然保存。

    7.5 usermod

    usermod用于修改用户的信息,比如UID、所属组,所使用的shell

    usermod [-option] 用户名
    

    常用参数:
    -u UID:设定用户的UID
    -g GID:设定用户的群组,可以用GID或者是群组名
    -s shell:指定用户登陆是启动的shell

    7.6 passwd

    passwd用于设定用户的密码,如果passwd命令后面不跟用户名,则表示修改当前用户的密码。需要注意,只有超级管理员root才能给别的用户指定密码,而普通用户只能修改自己的密码

    passwd [username]
    

    7.7 用户切换

    su命令用于切换用户身份,如果使用“-”符号,表示完整切换到另一个用户的环境,不佳“-”表示使用当前的环境。

    su [-] [用户名]
    

    注意:如果从root用户切向普通用户,则不需要输入密码,立刻切换。如果是普通用户向其他用户切换,不管是普通用户还是root,都需要输入密码才可以切换。
    如果要返回原来的账户,则使用exit命令

    7.8 id

    id命令用于显示用户的UID、GID以及所拥有的群组。

    id [username]
    

    7.9 groups

    groups用于显示用户所属的群组信息

    groups [username]
    
  • 相关阅读:
    python 适合的才是最好的
    [转]linux 同步IO: sync、fsync与fdatasync
    Java Metrics系统性能监控工具
    [转]mysql共享锁和排它锁
    基于空间数据库MongoDB实现全国电影票预定系统
    sharing-jdbc分库分表规则
    乐观锁更新失败处理小坑
    通过MessageFormat进行字符格式拼接,比String.format跟方便
    通过jvisualvm监控fullgc
    防止重复提交
  • 原文地址:https://www.cnblogs.com/csj2018/p/11985206.html
Copyright © 2011-2022 走看看