2.Linux常见高级命令

147 阅读7分钟

1.重定向命令

  • 重定向也称为输出重定向,把在终端执行命令的结果保存到目标文件。

  • 终端内容保存到文件使用重定向有两种方式:>和>>.

  • >表示每次只写入最新的数据,原有数据不保留。

  • >>表示每次在原有数据的基础上进行追加,原有数据会保留。

    标题
    >如果文件存在,会覆盖原有文件内容,相当于文件操作中的'w'模式
    >>如果文件存在,会追加写入文件末尾,相当于文件操作中的'a'模式
        testtweak % ls > a.txt
        testtweak % cat a.txt
            Makefile
            Tweak.x
            a.txt
            control
            packages
            testTweak.plist
        testtweak %
    

2.查看文件内容命令

  • 常见命令如下:

    标题
    cat查看小型文件
    more查看大型文件
    管道,一个命令的输出可以哦你给过管道作为另一个命令的输入,相当于一个容器
        cat a.txt b.txt > c.txt
        more a.txt
    

3.链接命令

软链接

  • 类似于windows下的快捷方式,当一个源文件的目录层级比较深,我们想要方便使用它可以给源文件创建一个软连接。

  • 软链接的作用就是方便文件的访问操作,比如把一个复杂路径下的文件使用软连接就可以完成方便的访问。

  • 创建软连接文件应该使用绝对路径,否则软链接文件可能失效。

  • 可以给目录创建软链接

  • 删除源文件,软链接文件也会失效。

    命令说明
    ln -s创建软链接
         ~ % cd Desktop
         Desktop % tree A
        A
        └── B
            └── a.py
    
        2 directories, 1 file
         Desktop % ln -s ./A/B/a.py s1.py
         Desktop % ln -s /Users/aaa/Desktop/A/B/a.py s2.py
         Desktop % ln -s ./A/B/a.py s1.py
         Desktop % ln -s /Users/aaa/Desktop/A/B/a.py s2.py
         Desktop % mv s1.py s2.py A
         Desktop % tree A
        A
        ├── B
        │   └── a.py
        ├── s1.py -> ./A/B/a.py
        └── s2.py -> /Users/aaa/Desktop/A/B/a.py
    
        2 directories, 3 files
         Desktop %
    

4.查找文件内容命令

  • 常见命令如下:

    命令说明
    grep查找搜索文件内容
    grep -v显示不包含匹配文本的所有行
    grep -n显示匹配行号
    grep -i忽略大小写
  • 还可以结合正则表达式使用

  • grep还可以查找管道中的内容,比如ls | grep "lib"

  • 在使用grep命令时候,还可以省略查找内容的引号。

        Desktop % grep hello a.txt
        hello
        Desktop % grep hello -n a.txt
        1:hello
        Desktop % grep h a.txt
        hello
        hw
        Desktop % grep h a.txt -i
        hello
        hw
        Desktop % grep h a.txt -i -n
        1:hello
        3:hw
        Desktop % grep h a.txt -i -nv
        2:world
        4:22
        5:aabad
        6:ccdd
        7:abcd
        Desktop %
    

5.查找文件命令

  • 常见命令如下:

    选项说明
    -name根据文件名查找文件
  • 通配符

    • 是一种特殊语句,主要有星号*和问号?,用来模糊搜索文件。
    通配符说明
    *表示0个或者多个任意字符
    代表任意一个字符
  • 通配符不仅能结合find命令使用,还可以结合其他命令使用,比如ls、mv、cp等,这里需要注意只有find命令使用通配符需要加上引号。

        Desktop % find . -name '12.txt'
        ./12.txt
        Desktop % find . -name '2*'
        ./24.md
        Desktop % find . -name '2*.txt'
        ./233.txt
        Desktop % find . -name '2?.txt'
        Desktop % find . -name '2?.txt'
        Desktop % find . -name '2??.txt'
        ./233.txt
        Desktop %
    

6.压缩和解压缩命令

  • 常见命令如下:

    压缩格式说明
    .gz压缩包后缀
    .bz2压缩包后缀
  • gz和bz2的压缩包需要使用tar命令来压缩和解压缩。

    tar命令选项说明
    -c创建打包文件
    -v显示打包或者解包的详细信息
    -f指定文件名称,必须放在所有选项后面
    -z压缩gz
    -j压缩.bz2
    -x解压缩
    -C解压到指定目录
        tar -jcvf 1.tar.gz *.txt
        tar -zcvf 1.tar.bz2 *.txt
        tar -zxvf 1.tar.gz
        tar -jxvf 1.tar.bz2
        tar -jxvf 1.tar.bz2 -C ./A
    
  • bz2和gz的区别,前者比后者压缩率更高,后者比前者花费更少的时间(在压缩较大文件时)

7.文件权限命令

文件信息

  • 第一列:文件类型和权限
  • 第二列:
  • 第三列:用户名
  • 第四列:用户组
  • 第五列:文件大小
  • 第六列:文件修改时间
  • 第七列:文件名
        testtweak % ls -lh
        total 20K
        -rw-r--r-- 1 coder staff 330  5  5 14:11 Makefile
        -rw-r--r-- 1 coder staff 135  5  9 17:00 Tweak.x
        -rw-r--r-- 1 coder staff  56  6 30 14:15 a.txt
        -rw-r--r-- 1 coder staff 216  5  5 13:55 control
        drwxr-xr-x 4 coder staff 128  5  9 17:01 packages
        -rw-r--r-- 1 coder staff  44  5  5 13:55 testTweak.plist
        coder testtweak %
    

文件权限

  • 文件类型说明:
    • -表示普通文件
    • d表示文件夹
  • 文件权限说明:
    • 由三个三元祖字符组成
    • 第一个三元字符代表文件所有者用户的权限
    • 第二个代表用户组的权限
    • 第三个代表其他用户的权限
    • r:表示可读
    • w:表示可写
    • x:表示可执行
    • -:表示没有权限

8.文件权限命令

  • 常见命令如下:

  • 命令

    命令说明
    chmod修改文件权限
  • 角色

    角色说明
    uuser表示该文件的所有者
    ggroup表示用户组
    oother表示其他用户
    aall表示所有用户
  • 操作符

    操作符说明
    +增加权限
    -撤销权限
    =设置权限
  • 权限

    权限说明
    r可读
    w可写
    x可执行
    -无任何权限

修改权限方式两种

  • chmod 字母法
    • chmod u/g/o/a+/-/rwx 文件名
    • 给user用户增加权限
       chmod u+r 1.txt
       chmod u+w 1.txt
       chmod u+x 1.txt
       chmod u+rw 1.txt
       chmod u+wx 1.txt
       chmod u+rx 1.txt
       chmod u+xw 1.txt
       chmod u+rwx 1.txt
    
    • 给user用户减少权限
       chmod u-r 1.txt
       chmod u-w 1.txt
       chmod u-w 1.txt
       chmod u-rw 1.txt
       chmod u-wx 1.txt
       chmod u-rx 1.txt
       chmod u-xw 1.txt
       chmod u-rwx 1.txt
    
    • 其他用户组同理

    • 查看权限,此时是可读可写不可执行

        coder_wyj@yjwei 未命名文件夹 2 % ls -l
        total 4
        -rw-r--r-- 1 coder_wyj staff 23  6 30 16:52 a.py
        coder_wyj@yjwei 未命名文件夹 2 %
    
    • 增加可执行权限
        coder_wyj@yjwei 未命名文件夹 2 % chmod u+x a.py
        coder_wyj@yjwei 未命名文件夹 2 % ls -l
        total 4
        -rwxr--r-- 1 coder_wyj staff 23  6 30 16:52 a.py
    
    • 去掉可读可写权限
        coder_wyj@yjwei 未命名文件夹 2 % chmod u-rw a.py
        coder_wyj@yjwei 未命名文件夹 2 % ls -l
        total 4
        ---xr--r-- 1 coder_wyj staff 23  6 30 16:52 a.py
        coder_wyj@yjwei 未命名文件夹 2 %
    
    • 增加所有人可读可写可执行权限
        coder_wyj@yjwei 未命名文件夹 2 % chmod a+rwx a.py
        coder_wyj@yjwei 未命名文件夹 2 % ls -l
        total 4
        -rwxrwxrwx 1 coder_wyj staff 23  6 30 16:52 a.py
        coder_wyj@yjwei 未命名文件夹 2 %
    
  • chmod 数字法
    • chmod 权限值 文件名

    • 权限值

      权限说明
      r可读,权限值是4
      w可写,权限值是2
      x可执行,权限值是1
      -无任何权限,权限值是0
    • 给user用户增加权限

       chmod 400 1.txt
       chmod 600 1.txt
       chmod 700 1.txt
    
    • 单独写一个数字,是给其他用户,从后往前
       chmod 4 1.txt 其他用户可读权限
       chmod 6 1.txt 其他用户可读可写权限
       chmod 7 1.txt 其他用户可读可写可执行权限
       chmod 44 1.txt 
       chmod 66 1.txt
       chmod 77 1.txt
       chmod 666 1.txt 表示所有用户都有可读可写权限
       chmod 777 1.txt 表示所有用户都有可读可写可执行权限
    

9.获取管理员权限命令

  • sudo命令的使用

    命令说明
    sudo -s切换到 root用户,获取管理员权限
    sudo某个命令的执行需要获取管理员权限可以在执行命令前面加上sudo
    whoami查看当前用户
    exit退出登录用户
    who查看所有的登陆用户
    password修改用户密码,不指定用户默认修改当前登录用户密码
    which查看命令位置
    shutdown -h now立刻关机
    reboot重启

10.远程登陆、远程拷贝

  • 常见命令如下:

    命令说明
    ssh远程登陆
    scp远程拷贝
  • ssh 用户名@IP地址 输入密码即可。

  • scp命令格式

  • 远程拷贝文件

    • scp 本地文件 远程服务器用户名@远程服务器IP地址:指定拷贝到远程服务器的路径。
    • scp 远程服务器用户名@远程服务器IP地址:远程服务器文件 指定拷贝到本地的路径。
  • 远程拷贝目录

    • scp -r 本地目录 远程服务器用户名@远程服务器IP地址:指定考诶到远程服务器的路径。
    • scp -r 远程服务器用户名@远程服务器IP地址:远程服务器目录 指定拷贝到本地的路径。
    • -r 表示递归拷贝整个目录。