Linux命令

作者: 周重hhh | 来源:发表于2019-03-12 23:57 被阅读8次

    Linux命令提示符

    [root@localhost ~]#

    • root:代表当前登录的用户名
    • localhost:代表当前登录的服务器主机名
    • ~:代表当前目录,(用户主目录)
    • #:超级用户提示符,普通用提示符是$

    基本操作

    Linux的系统相关操作:

    • shutdown -h now:立即关机
    • shutdown -r now:立即重启
    • reboot:立即重启
    • logout:注销
    • clear:清屏

    用户相关:

    • whoami:我是谁
    [root@localhost ~]# whoami
    root
    
    • su 用户名:切换到另一个用户

    目录的常见操作

    • Linux的目录结构为树形结构,最顶级目录为/
    • 绝对路径:由根目录开始,例如:/home/user
    • 相对路径:
      1)路径的写法,不是由 / 写起,而是相对当前所在的目录开始。例如:由/usr/share/doc要到/usr/share/man底下时,可以写成:cd ../man这就是相对路径的写法。这里的../表示当前目录的上一级目录。
      2)/:表示根目录
      3)~:表示当前家目录

    目录的相关命令

    • ls:列出目录
    • cd:切换目录
    • pwd:显示当前的目录
    • mkdir:创建一个新的目录
    • rmdir:删除一个空的目录
    • rm:移除文件或目录
    • cp:复制文件或目录
    • mv:移动文件或目录

    ls查看目录

    • 查看目录的命令有两个,一个ls,一个ll,ls以list(列表)方式浏览,ll以详情方式浏览。
    • ls可以添加参数
      1)-a:表示显示所有文件,包括隐藏该文件。例:ls -a
      2)-l:表示以详情方式显示,和ll功能一样。例:ls -l,ls -al
      3)-r:表示以反序显示,默认以文件名称升序排列。例:ls -s
      4)-t:将按时间顺序显示。ls -t
      5)-lh:将文件大小的单位进行换算
    • ls可以查看指定的目录和支持模糊匹配
      1)ls -l /bin:以详情方式查看/bin目录下的文件
      2)ls -l /bin/a:以详情方式查看/bin目录下以a开头的文件
      3)ll /bin/
      .txt:查看bin下以txt结尾的文件

    目录操作命令

    • pwd:显示当前目录
    [root@localhost ~]# pwd
    /root
    
    • cd(Change Directory):更改目录
      1)cd 相对路径/绝对路径
      2)cd..:返回上一级
      3)cd -:返回上一次所在的目录
      4)cd /:返回根目录
      5)cd ~:返回家目录

    mkdir创建新目录

    • 语法:mkdir [-mp] 目录名称
    • 参数说明:
      1)-p:可以一次直接创建多层级目录
      2)-m:配置文件的权限 直接配置
    • 举例:
    [root@localhost tmp]# mkdir test1
    [root@localhost tmp]# mkdir -p test2/1/2
    [root@localhost tmp]# mkdir -m 750 tt
    [root@localhost tmp]# mkdir -p -m 750 t1/t2
    

    rmdir删除空目录

    • 语法:rmdir [-p]目录名称
    • 参数说明:-p:连同上一级目录[空目录]也一起删除
    • 实例:
    [root@localhost tmp]# rmdir test1/
    [root@localhost tmp]# rmdir -p test2/r1/r2
    
    • 如果目录不为空,则删除会失败,如果要删除非空目录,则使用rm命令进行删除。
    [root@localhost tmp]# rmdir test/
    rmdir: failed to remove `test/': Directory not empty
    

    rm删除文件或子目录

    • 语法:rm [-fir] 文件或子目录
    • 参数说明:
      1)-f:就是force的意思,强制删除
      2)-i:互动模式,在删除前会询问使用者是否动作
      3)-r:递归删除,可以删除目录和文件
    • 示例:
    [root@localhost tmp]# rm -r aa
    rm: remove regular empty file `aaa'? y
    [root@localhost tmp]# rm -rf test
    
    • rm -rf / Linux自杀命令绝对不能执行

    cp复制文件

    • 语法
      1)cp [-adfilpr] 来源 目标档
    • 选项与参数:
      1)-a:此选项通常在复制目录时使用,它保留连接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
      2)-d:复制时保留链接(相当于windows系统中的快捷方式)
      3)-f:覆盖已经存在的目标文件而不给出提示
      4)-i:与-f选项相反,在覆盖目标之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖
      5)-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
      6)-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
      7)-l:不复制文件,只是生成链接文件

    移动或重命名

    • 语法
      1)mv 来源 目标档

    链接命令

    • 链接分为软链接(symbolic link)和硬链接(hard link),硬链接的意思是一个档案可以有多个名称,而软连接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置,类似window中的快捷方式
    • 语法:ln [参数] [目标] [文件或目录]
    • 参数说明: -s:软链接,添加-s为创建软链接,不要则为硬链接
    [root@localhost tmp]# ln -s a.txt bb.txt
    
    • 这里要注意:如果软链接的源文件和链接文件在同一个目录下,可以使用相对路径,但是如果不在同一个目录下,必须使用绝对路径
    • 硬链接示例:
    [root@localhost test2]# ln -s /test2/t4 /test1/t44
    

    软链接和硬链接的区别

    软链接

    • 软链接以路径的形式存在,类似window操作系统中的快捷方式
    • 软链接的文件类型会被表示为l
    • 当删除软链接原始文件,软链接将无法使用
    • 软链接可以对一个不存在文件名进行链接
    • 软链接可以堆目录进行链接
    • 软链接可以跨分区使用,硬链接不可以

    硬链接

    • 硬链接,以文件副本形式存在,不占用实际空间
    • 硬链接文件类型为普通文件类型
    • 删除任何一个硬链接文件不会影响另一个文件
    • 不允许给目录创建硬链接
    • 硬链接不能跨分区使用

    推荐使用软链接,硬链接和原始文件区分大小,无法区分

    文件相关操作

    Linux系统中使用以下命令来查看文件的内容:

    • cat 由第一行开始显示文件内容
    • tac 从最后一行开始显示,可以看出tac时cat的倒着写
    • nl 显示的时候,顺道输出行号
    • more 一页一页的显示文件内容
    • less 与 more 类似,但是比more更好,它可以往前翻页
    • head 只看头几行
    • tail 只看尾巴几行

    cat 和 tac

    • cat 由第一行开始显示文件内容,tac 从最后一行开始显示内容。语法完全一致
    • 语法:cat [AbEnTv]
    [root@localhost tmp]# cat a
    asdfghjk;
    
    • 选项与参数:
      1)-A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
      2)-b:列出行号,仅针对非空白行号显示,空白行不标行号
      3)-E:将结尾的断行字节$显示出来
      4)-n:列印出行号,连同空白行也会有行号,与-b的选项不同
      5)-T:将[tab]键以I 显示出来
      6)-v:列出一些看不出来的特殊字符

    more

    • more一页页翻看
    • 语法:more 文件名
    • 在程序运行时,可以按以下几个键:
      1)enter:下翻一行
      2)space:下翻一夜
      3)/字符串:指向搜索指定的字符串
      4):f:立即显示出档名以及目前显示的行数
      5)q:代表立刻离开more,不再显示该文件内容
      6)b:或[ctrl] -b:代表往回翻页

    less

    • 翻页浏览
    • 语法:less 文件名
    • 在程序运行时,可以按以下几个键:
      1)空白键:向下翻动一页
      2)[pagedown]:向下翻动一页
      3)[pageup]:向上翻动一页
      4)/内容:向下搜索【内容】
      5)?内容:向上搜索【内容】
      6)n:重复前一个搜索(与/或?有关)
      7)N:反向的重复前一个搜索(与/或?有关)
      8)q:离开less这个程序
    • 选项
      1)-e:文件内容显示完毕后,自动退出
      2)-f:强制显示文件
      3)-g:不加亮显示搜索到的所有关键字,仅显示当前显示的关键字,以提高显示速度
      4)-l:搜索时忽略大小写的差异
      5)-N:每一行行首显示行号
      6)-s:将连续多个空行压缩成一行显示
      7)-S:在单行显示较长的内容,而不换行显示

    head/tail

    • head取出文件前面几行,tail取后面几行
    • 语法:head [-n number] 文件
    • 参数说明:-n:后面的number表示取的行数
    • 示例:
    [root@localhost tmp]# head /etc/sudo.conf
    [root@localhost tmp]# head -n 20 /etc/sudo.conf
    [root@localhost tmp]# tail /etc/sudo.conf
    [root@localhost tmp]# tail -n 20 /etc/sudo.conf
    

    文件基本属性

    • 使用ll命令或者ls -l 浏览文件信息时,会显示文件详情 image.png
    • 其中drwxrwxr-x 表示文件的类型和权限。第一个字母表示文件类型

    [d] 代表目录
    [-] 代表文件
    [l] 表示为链接文档(link file)
    [b]表示为装置文件里面的可供存储的接口设备(可随机存取装置)
    [c]表示装置文件里面的串行端口设备,例如鼠标、键盘(一次性读取设备)

    文件的权限

    • 接下来的字符表示权限。且均为[rwx]这三个参数的组合。其中,[r] 代表可读(read)、[w] 代表科协(write)、[x] 代表可执行(execute)。注意,这三个权限的位置不会改变,如果没有权限,就会出现减号[-] image.png

    从左至右用0-9这些数字来表示
    第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限。第7-9位确定其他用户拥有该文件的权限
    第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限
    第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示,则没有写权限
    第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限

    image.png
    • 对于每一个文件来说,它都有一个特定的拥有着,也就是对该文件具有所有权。同时Linux中,用户是按照组来进行划分的。一个用户属于一个或多个组
    • 最后一个 .,在centos6以后添加进去的,代表ACL权限
    • 后面的1、3、2,代表该文件的引用计数
    • 后面两个root一个代表用户,另一个代表用户组
    • 后面1857代表的是文件夹中的文件数量,或者文件大小 image.png
    • 后面03:06是文件最后一次修改时间
    • 最后一个是文件或目录名称,会以不同颜色修饰
    • 对于root用户来说,这些权限不起作用,root用户的权限不受限制

    更改文件权限

    • 使用chmod命令可以对这9个权限进行修改。修改方式有两种,一种是数字方式,一种是字母方式
    • 文件的权限字符为:[-rwxrwxrwx],这九个权限是三个三个一组的。其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:r:4,w:2,x:1
    • 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---]分数则是:
      owner = rwx = 4 + 2 + 1 = 7
      group = rwx = 4 + 2 + 1 = 7
      others = --- = 0 + 0 + 0 = 0
    
    • 所以等我们设定权限的变更时,该文件的权限数字就是770

    chmod 修改权限

    • 语法:

    chmod [-R] xyz 文件或目录

    • 参数说明:

    -R:进行递归变更,修改该目录下所有的子目录和文件。xyz:对应前面提到的数字权限,比如770。

    • 示例:
    chmod 751 mydir # 将mydir文件的权限改为drwxr-x--x
    

    更改文件所属组

    chgrp:更改文件所属组

    • 语法:

    chgrp [-R] 用户组名称 文件名

    • 参数:

    -R表示递归更改某个目录文件的属性,如果加上这个参数,表示该文件夹下的所有文件都会同时被修改

    • 示例:
    chgrp root mydir #将mydir的用户组改为root
    

    更改文件所有者

    chown:更改文件所有者

    • 语法:

    chown [-R] 所有者 文件名

    • 参数:

    -R表示递归更改某个目录文件的属性,如果加上这个参数,表示该文件夹下的所有文件都会同时被修改

    • 示例:
    chown root mydir #将mydir的所有者改为root用户
    

    vi/vim编辑器

    • Linux中内建了一个vim文本编辑器,通过这个编辑器,可以在Linux中编辑文件
    • vim分为三种模式:

    命令模式:用户刚进入vim就是命令模式
    输入模式:在命令模式输入 i 进入输入模式
    底部命令模式:在命令模式下按:进入底部命令模式

    vi常用快捷键

    • x 删除光标处的字符
    • dd 删除整行
    • dw 删除一个字(word)
    • u 撤销最后一次修改
    • 0 当前行下插入新行
    • /pattern:从光标开始处向文件尾搜索pattern
    • ?pattern:从光标开始处向文件首搜索pattern
    • yy:将当前行的内容放到临时缓冲区
    • p 将临时缓冲区中的文本放到光标后

    命令模式

    • 此状态下的敲击键盘动作会被vim识别为命令,而非输入字符。比如此时按下i,并不会输入一个字符,i被当作了一个命令。
    • 几个常见的命令:

    i 切换到输入模式,以输入字符
    x 删除当前光标所在处的字符
    : 切换到底部命令模式,在最后一行输入字符

    输入模式
    在此模式下,对文件内容进行编辑。再输入模式下可以使用以下按键:

    • 字符按键以及Shift组合,输入字符
    • Enter,回车键、换行
    • Backspace,退格键,删除光标前一个字符
    • Delete,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • Home/End,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

    底部命令模式

    • 在命令模式下按下:(英文冒号)就进入了底部命令模式
    • 常用底部命令:
      1):w:保存
      2):q:退出,:wq保存并退出
      3):q!:强制退出,不保存
      4):e file:打开文件

    文件搜索命令
    我们经常需要在系统中检索需要的文件,在Windows中可以使用F3进行搜索。在Linux中提供了多种文件搜索方式

    • locate
    • find
    • grep

    locate

    • 语法:locate 文件名
    • locate是在后台数据库中,按文件名进行检索,速度非常快。但是最新的数据不一定能搜索出来
    • locate的后台数据库:/var/lib/mlocate
    • locate数据库默认一天一更新,也看使用命令手动更新数据库:updatedb,需要root权限 image.png
    • 如果执行locate出现locate:can not stat()/var/lib/mlocate/mlocate.db': No such file or directory错误,执行updatedb命令更新Linux检索索引

    locate的配置文件

    • /etc/updatedb.conf 文件是locate命令搜索的配置文件,在这个文件中,定义了locate搜索的规则
    • PRUNE_BIND_mOUNTS="yes":表示以下配置是否有效
    • PRUNEFS="":表示搜索时,不搜索的文件系统
    • PRUNENAMES="":表示搜索时,不搜索的文件类型
    • PRUNEPATHS="":表示搜索时,不搜索的文件路径

    find

    • 语法:

    find [搜索范围] [搜索条件] 文件名

    • find模式会按照完整文件名进行搜索,如果要进行模糊搜索,可以使用通配符,LInux中的通配符常用的有三种

    *:匹配任意多个字符
    ?:匹配任意一个字符
    []:匹配任意一个中括号中的字符

    find /home -name a.txt          # 在/厚么目录下按照名称搜索a.txt
    find /home -iname a.txt         # -iname指不区分文件名大小写
    find /etc -name *.conf          # 在/etc目录下搜索以.conf结尾的文件
    find -user qiu                  # 查找属于qiu的文件
    find -type d/f                  # 根据文件类型查找,f普通文件,d目录
    find -mtime -1/+1               # 查找1天以前或之后跟新的文件
    find -ctime -1/+1               # 查找1分钟以前或之后创建的文件 
    
    • find相对于locate会更慢,因为find扫描硬盘进行文件搜索,但是find功能更加强大,locate只能根据文件名进行搜索,find可以添加其他的参数,也可以支持通配符搜索,但是注意,使用find避免在大范围进行搜索,效率太低

    locate和find的区别

    • 效率:find相对于locate会更慢,因为find扫描硬盘进行文件搜索
    • 功能:但是find功能更加强大,可以添加其他的参数,也可以支持通配符搜索,locate只能根据文件名进行搜索
    • 即时性:find搜索的数据是即时的,locate不是
    • 模糊匹配:find默认时精确搜索,locate时模糊搜索

    用户和用户组

    • Linux时一个多用户多任务的系统,管理员可以添加多个用户来帮助管理Linux系统
    • 用户管理主要包括以下内容:
      1)用户的添加、修改和删除
      2)用户口令的管理
      3)用户组的管理

    添加用户

    • 语法:

    useradd 选项 用户名

    • 参数说明

    -c:comment 指定一段注释性描述
    -d:目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
    -g:永驻 指定用户所属的用户组
    -s:Shell文件 指定 用户的登录Shell
    -u:用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

    • 示例:
    useradd -u user1                # 添加新用户user1
    useradd -d /home/user1 -u user2 # 添加新用户,并指定用户家目录
    

    设置用户密码

    • 语法:

    password 选项 用户名

    • 选项说明

    -l:锁定口令,即禁用账号
    -u:口令解锁
    -d:使账号无口令
    -f:强迫用户下次登陆时修改口令

    • 如果时第一次修改密码,直接输入密码即可,如果时修改密码,则需要输入旧密码
    password user1 # 修改用户 user1的密码
    

    修改和删除用户

    修改用户

    • 语法:

    usermod 选项 用户名

    • 选项说明和useradd一致
    • 实例:
    usermod -l newtest test # 修改test的用户名为newtest
    usermod -G staff newuser2 # 将newuser2添加到组staff中
    

    删除用户

    • 语法:

    userdel 选项 用户名

    • 选项说明

    -r:将用户所在的目录一起删除

    • 示例:
    userdel -r user1 # 删除用户user1
    

    添加用户组

    • 添加用户时,如果不指定用户组,会创建和用户名相同的一个用户组
    • 语法:

    groupadd 选项 组名

    • 选项说明:

    -g:GID指定信用住的组标识号(GID)
    -o:一般与-g选项同时使用,表示信用住的GID可以与系统已有用户组的GID相同

    • 示例:
    groupadd usergroup1            # 添加用户组 usergroup1
    groupadd -g 101 usergroup1     # 添加用户组usergroup1,并制定gid
    

    删除用户组

    • 语法:

    groupdel 用户组

    • 示例:
    groupdel usergroup1 # 删除用户组 usergroup1
    
    • 将用户加入到组中示例
    group add -g 1010 test # 添加一个用户组,组id为1010,组名称为test
    useradd -u 1001 -g test -d /home/aaa aaa # 添加一个用户aaa到test组,用户id为1001,组名称为test,所在目录为/home/aaa目录
    id aaa # 查看aaa用户的id信息
    

    与用户相关的文件

    • /etc/passwd:存放用户和用户组的关系,用户对应的目录,指令集等。以用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell格式存储
    • /etc/shadow:/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的存储格式:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
    • /etc/group:用户组的所有信息都存放在/etc/group文件中,存储格式:组名:口令:组标识号:组内用户列表

    相关文章

      网友评论

        本文标题:Linux命令

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