关于 Linux 你需要先知道这些...

关于位置的探讨

Linux 下有两种定位方式: 相对定位 , 绝对定位

  • 相对定位:是从当前所在目录开始,通过 .././ 来表示上级目录和当前目录;
  • 绝对定位:是从 / 根目录算起,一层一层的定位;

    • 绝对定位举例: cd /usr/local/bin #此时就进入 /usr/local/bin 目录下;

    • 相对定位: 来到当前目录 (/usr/local/bin), 如果我想来到 /usr/local 目录下,可以 使用命令 cd ../ 返回上级目录。如果想进入 /usr/local/nginx 目录,可以 使用 cd ../nginx 这是就会来到 /usr/local/nginx 目录下;

  • 目录/文件的进入[查看],创建,复制,移动,删除和重命名

    cd: 进入目录;

    • 用法: cd path;
    • 示例: cd /usr/local ; 进入 /usr/local/ 目录中;
    • cd ../share ; 进入上级目录下的 share 目录中;

    mkdir:创建目录

    • 创建一个或多个目录。 ☁ test mkdir dir1 : 创建一个目录 ☁mkdir dir1 dir2 dir3:创建多个目录 ☁ test mkdir {1,2,3}:创建多个目录【1 2 3】目录; ☁ mkdir -p dir1/dir2/dir3 : 创建联机目录

    ls : 查看目录

    • ls:列出当前目录中的所有文件和目录; ☁ ls /path : 列出 /path 中的所有文件

    mv : 移动文件夹或者文件【重命名】

    • 用法:mv 源文件 目标文件夹/文件
    • 移动:mv ./a.php ../path/ : 将当前目录下的 a.php 移动到上级目录下的 path 目录中;
    • 示例: mv dir1 dir2; 将 dir1 移动成 dir2.此处是重命名的作用。

    cp : 复制

    • 用法: cp 源文件 目标文件
    • 复制文件夹: cp -R [递归] 源文件夹 目标文件夹

    rmdir: 删除空文件夹 (如果文件夹非空,不能用这个命令)

    • 用法 rmdir 空文件夹名称
    • 示例 rmdir ./dir2/dir1ls ./dir2 看一看,dir1 还有没有?

    touch : 创建一个空文件. Touch 文件名称

    • 示例: touch tmp.txt 创建一个 tmp.txt 文件
    • 如果要创建的文件已经存在, touch 命令会修改文件的 inode 时间;

    rm: 删除一个文件或文件夹

    • 用法 rm 文件名称 ;
    • rm -rf ./path : ( -r 表示循环迭代的意思,这样他碰到子目录就进去删, -f 是强制的意思) 强制递归删除 /path目录下的所有文件;

    pwd : 显示当前所在位置; cd /usr/local/bin pwd /usr/local/bin 所在的目录

    ln : 链接命令(相当于 windows 下面的快捷方式) 用法 ln -s 源文件夹或源文件 目标链接名称 ln -s /var/tmp ./linkvar # 将 /var/tmp 文件软连到 ./linkvar[在 ./linkvar 中创建一个 /var/tmp 的快捷方式]

    文本文件查看

    > : 重定向(覆盖原文件)

    >> : 重定向(追加源文件)

    查看 more , less , head , tail , cat ,以及 grep more 查看文件的内容 用法 more filename less 作用/用法同 more

    [ more 最后一屏时自动退出, less 不自动退出,按q退出,也可以 ctrl+b 往前翻, ctrl+f 往后翻]

    head: 查看文件的前几行 用法 head -3 filename (不一定是 -3 哦,只是举个例子,查看前 3 行)

    tail: 查看文件的后几行 用法 tail -5 filename (也不一定是-5,只是举个例子,查看后 5 行)

    cat : 把文件的内容连接起来打印到终端或者用 > 覆盖到另一个文件 用法 cat 文件 1 文件 2 ...文件 n (直接把 n 个文件的内容连接起来输出在屏幕上)

    cat 文件 1 文件 2 ...文件 n > 文件 n+1(把 n 个文件连接成一个新文件) 示例 
    echo aa > aa.txt
    echo bb > bb.txt
    cat aa.txt bb.txt > cc.txt

    grep : 匹配文件中的行 grep 判断字 文件 grep adm /etc/passwd ,会把/etc/passwd 文件中含有 adm 的行打印出来 more a.txt|grep china , 把本来要输出 a.txt 的内容,交给 grep再匹配,匹配含有 china 的行.

  • 文件打包压缩及解压

    .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar 是打包,不是压缩!) 注:如果不想看打包的具体过程,可以用 tar cf filenamt.tar dirname; .gz 解压 1:gunzip FileName.gz 解压 2:gzip -d FileName.gz 压缩:gzip FileName 压缩且不删除源文件: gzip -c FileName > FileName.gz

    .tar.gz 解压:tar zxvf FileName.tar.gz 压缩:tar zcvf FileName.tar.gz DirName

    .bz2 解压 1:bzip2 -d FileName.bz2 解压 2:bunzip2 FileName.bz2 压缩: bzip2 -z FileName .tar.bz2 解压:tar jxvf FileName.tar.bz2 压缩:tar jcvf FileName.tar.bz2 DirName

    .bz 解压 1:bzip2 -d FileName.bz 解压 2:bunzip2 FileName.bz 压缩:未知 .tar.bz 解压:tar jxvf FileName.tar.bz 压缩:未知 .Z 解压:uncompress FileName.Z 压缩:compress FileName .tar.Z 解压:tar Zxvf FileName.tar.Z 压缩:tar Zcvf FileName.tar.Z DirName

    .tgz 解压:tar zxvf FileName.tgz 压缩:未知 .tar.tgz 解压:tar zxvf FileName.tar.tgz 压缩:tar zcvf FileName.tar.tgz FileName

    .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName

    .rar 解压:rar a FileName.rar 压缩:rar e FileName.rar

  • 文件查找 find / -name \*.php 在根目录下查找 文件名中包含 .php 的文件 无错误查找技巧: 在Linux系统中,普通用户使用该命令时,可能会出现 Permissiondenied." (禁止访问) 的错误信息。 系统将无法找到匹配的文件,可以使用 find / -name access_log 2>/dev/null 将错误信息转移继续查找文件。

    根据文件的特征查询方法:

        find / -amin -10 # 查找在系统中最后 10 分钟访问的文件 
        find / -atime -2 # 查找在系统中最后 48 小时访问的文件 
        find / -empty # 查找在系统中为空的文件或者文件夹 
        find / -group cat # 查找在系统中属于 groupcat 的文件 
        find / -mmin -5 # 查找在系统中最后 5 分钟里修改过的文件 
        find / -mtime -1 #查找在系统中最后 24 小时里修改过的文件 
        find / -nouser #查找在系统中属于作废用户的文件 
        find / -user fred #查找在系统中属于 FRED 这个用户的文件

    参数说明: -amin n 查找系统中最后 N 分钟访问的文件 atime n 查找系统中最后 n24 小时访问的文件 cmin n 查找系统中最后 N 分钟被改变状态的文件 ctime n 查找系统中最后 n24 小时被改变状态的文件 empty 查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹 false 查找系统中总是错误的文件 fstype type 查找系统中存在于指定文件系统的文件,例如:ext2 . gid n 查找系统中文件数字组 ID 为 n 的文件 group gname 查找系统中文件属于 gnam 文件组,并且指定组和 ID 的文件 技巧: find 配合 grep 来查询含有某个关键词的文件 find /www -name “*.php” |xargs grep ‘mysql_connect’

  • Linux 的系统命令

    • whoami 或者 who am I , 显示当前登陆者的用户名称 用法 whoami 或 who am I

    • 示例 先用 whoami 看看自己是谁 再 su -登陆 root 账号, 再运行 who am i 看看自己谁?

    • who 是显示谁在线

    • su – 切换用户 用法 su 用户名 或者 示例 su – root ; su 后面加-和不加-有什么区别?

    • su – 用户名 加 -后,不仅切换到其他用户,而且环境变量这些什么的都切换成其他用户的. 而不加-的话,仅仅使用这个用户的权限,而不使用其他.

    • Free 显示内存状态 用法 free -m -s (-m 表示内存的状态用 M 为单位来表示, -s 表示刷新的时间间隔,秒为单位) 示例: free -m -s 3

    • top (类似于 windows 下面的资源管理器) ps 列出进程 用法 ps -aux 管道操作 $xx|strtoupper,竖线前面的内容,作为竖线后的命令的输入参数

    • kill 进程号 , root身份运行

    • pkill 进程名, 注意,杀所有 进程名 的进程

  • 文件挂载

    mount 命令,直接输入,可以看到目前的硬盘分区和所挂载点.

    mount命令用法 mount -t 文件系统类型 -o 选项参数 device(设备) dir(挂载点)

    -t : 如 fat32,ext3,iso9660,ntfs 等,但这个选项通常不必指定,系统往往能自动认出来.

    -o : option,选项的意思,可以是-ro(只读) -rw(读写),-loop(把文件看成一分区)

    • umount 卸载 用法 umount dir(挂载点) 或者 umount dev(所挂载的设备)
    • 示例 umount /mnt/cd
  • vim 操作

    • 命令模式下的光标快捷移动键

    • 字符级移动 h 左移一个字符 l 右移一个字符

    • 单词级移动 w 移到下个单词首 e 移到本单词尾 b 移到本单词首

    • 行级移动 $ 移到行尾 0 移到行首 j 下移一行 k 上移一行

    • 段级移动 { 上移一段 } 下移一段

    • 屏级移动 H 移到本屏幕第一行 L 移到本屏幕最后一行

    • 文章级移动 G 移到文章末尾 1G 移到文章开头

    • 命令模式下的快捷删除 1:d+ 光标快捷移动键 2:x 删除当前字符 3:dd 删除一行

    • 命令模式下的复制 1:v+ 光标快捷移动键 +y 2:yy 复制一行 3:yny 复制 n 行, n 为数字

    • 命令模式下的粘贴命令 p

    • 有效的命令组合 xp 交换两个字符 ddp 交换两行

    • 其他命令 . 重复上一次命令 u 撤消 J 合并两行

    • 尾行模式 相对简单一些 w 保存, q 退出 wq 保存+退出 ! 表示强制 如 q! ,更改了之后,不保存,强制退出.

  • 网络配置时常用的命令 service network stop/start/restart: 停/启/重启网络
    ifdown eth0: 关闭 eth0 网卡 ifup eth0 : 激活 eth0 网卡 ifconfig 查看网卡信息

  • 远程管理

  • 常用的端口号

    ftp:21 
    ssh:22 
    telnet:23 
    http:80 
    https:443 
    Mysql:3306    
  • linux 的用户管理

    • 增加组(groupadd)
    • 修改组(groupmod)
    • 删除组(groupdel)
    • 增加用户(useradd)
    • 修改用户(usermod)
    • 删除用户(userdel)
    groupadd 增长一个用户组 用法 groupadd [-g 组 id] 组名称 
    示例 groupadd -g 502 javaf (指定组 id=502) groupadd javae (不指定组 id,由系统自动生成)
    groupdel 删除一个组 用法 groupdel 组名 
    示例 groupdel javae
    groupmod 修改一个组 用法 groupmod [-g 组 id] [-n 新组名] 
    示例 groupmod -g 509 javaf groupmod -n javax javaf
    useradd 增加一个用户 用法 useradd [-g 组名] [-d 家目录] 
    示例 useradd -g javaf -d /var/javaf03/ 组名 javaf03
    usermod 修改一个用户 用法 usermod [-g 组名] [-d 家目录] [-l 新用户名] 用户名 
    示例 usermod -g 502 -d /home/javaf03 javaf03
    userdel 删除一个用户 用法 userdel 用户名
    - 示例 userdel javaf03 userdel mysql -r // -r 代表连用户的相关文件彻底删除
    • passwd 修改密码 注意,我们刚刚用 useradd 增长一个新用户之后,还不能立即使用,得给新用户设一个密码才可以使用. 用法: passwd username 然后两次输入相同密码,就可以使用了.
  • 注意⚠️:

    • 用户信息在 /etc/passwod 文件里存储 用户密码在 /etc/shadow 文件里加密存储 组信息在 /etc/group 文件里存储
  • 权限管理

    用户 权限 权限的数值表示 u(表示文件的属主) r (读权限) 4 g(与文件属主一组的用户) w(写权限) 2 o(既非 u,又不同组的其他人) x(执行权限) 1
    • 每个文件或者文件夹,都有 3 个权限
    r(read 读) w(write,写) x (excute,执行) 1/0 1/0 1/0 4 2 1
    • 修改权限的方法

      • 修改权限有两种方法:一种是相对法,一种是绝对法.
        1. 相对法,是指在原有权限基础上,针对不同的角色加/减 某一个权限
        2. 绝对法,则不需考虑之前的角色及对应权限,直接指定最终的各角色权限
    • 绝对法修改权限 特点:不管之前的权限是什么样儿的,直接把 3 个对象(u,g,o)的权限改成指定权限 如 chmod 755 for.sh

    • 相对法修改权限

      特点:在知道当前权限的基础上,针对 3 种角色(u,g,o)中的某一个角色,增加或减小某种权限(r,w,x) 如 chmod o+x for.sh
      修改一个文件的主人 chown (change owner 改变主人) chown 新主人 某文件 , 修改一个文件的组 chgrp(change group) chgrp 新组 某文件

登录后进行讨论