2019-05-08 shell第二天 基本的命令

一.基本命令

1. 相对路径和绝对路径

绝对路径 :从根目录开始表示的路径,也就是从/开始。
相对路径: 从当前所处的目录开始表示的路径。

     . 表示当前目录
     .. 表示当前目录的上一级目录

Linux中的命令提示符

      当前登录的用户名@主机名:当前工作目录
       $:表示当前用户为普通用户, #表示当前用户为root用户

2. 文件与目录:

(1)目录相关 ls, cd, pwd,which, mkdir, rmdir, . , .. ,

  ls -al  # 查看所有文件的详细信息。
  ls -lrt  # 文件按照修改时间排序。
  通配符: * 任意多个字符; ?任意一个字符。

  cd     # 进入目录
  cd -    #返回上一次目录。
  pwd   # 打印当前工作路径
   rmdir 只能删除空目录 或 递归删除目录,不可文件。
   rm : 删除文件  与  目录。
   rm 文件名
   rm -r 目录  //递归删除目录。
   rm -rf 目录  //强制删除 
   mkdir 只能创建目录: 要创建文件 touch 或 vi。
   mkdir 递归创建目录:
   mkdir 目录1/子目录 -p
   mkdir 目录1/子目录  目录1/子目录  目录1/子目录 -p

(2)文件:touch, rm(删除文件或目录),cp拷贝, mv重命名或移动
cp 源文件或目录 新文件或目录

*  将一个目录拷贝到 另一个目录下: 将目录1 拷贝到目录2下:
        cp  -r  目录1    目录2    //注:目录1也会拷贝进去。
        cp  -r  目录1/*  目录2    //注: 目录1名字 就不会拷贝。

*  文件拷贝: cp 文件1  文件2  //将目录1赋值一份放到文件2中。

mv: 移动 与 重命名

参数2 是 “不存在的目录”或 “文件” : 重命名。 否则:移动

touch file : 创建文件

  目录下创建文件: touch 目录/文件名
  在文件下一次创建多个文件: touch 目录/文件名  目录/文件名

rm 删除,见目录

(3)文件内容:cat, more, less, head, tail

cat命令: 终端查看文件: cat  file
   将文件内容一次性输出到终端。
   缺点:终端显示的内容有限,如果文件太长无法全部显示。
   可用于文件重定向: cat file1>file2, 相当于cp file1 file2
more命令:分屏显示文件: more file
   文件内容分页显示到终端,但是只能一直向下浏览,不能回退。
   显示下一行:回车
   显示下一页:空格
   退出:q(ctrl + c)
less命令:分屏显示: less file  # 方向键控制翻转。
   显示下一行:回车、ctrl + p、键盘向下键
   显示上一行:ctrl + n、键盘向上键
   显示下一页:空格、PageDown
   显示上一页:PageUp
   退出:q
head命令:显示文件头: head -n file   #显示文件头部的n行。 
   从文件头部开始查看前n行的内容
   使用方式:head -n[行数] 文件名
   head -20 hello.txt
   如果没有指定行数,默认显示前10行内容
tail命令: 显示文件尾
     tail -n file    #显示文件尾部的n行
     tail -f file     # 追踪日志,不退出,实时更新查看文件尾部内容
     一个终端tail -f test.log , 另一个终端: echo “hello world” >>test.log

(4)统计: tree, wc, du, df。

    tree      #显示目录结构
    wc :显示文件行数, 字节数, 单词数
       wc -l file显示文件的总行数
       wc -c file显示文件的总字节数
       wc -w file显示文件的总单词数
       wc file 显示文件的总行数, 单词数和总字节数
   df  -h     #查看磁盘使用情况。
   df  -h --block-size=GB  #按照GB统计显示。

(5) 详细介绍: ls, cd,rm

ls  --显示当前目录下文件信息
ls 目录或文件名  --显示指定目录下文件信息
   -a:列出当前目录下的所有文件
       . 当前目录
       .. 当前目录的上一级目录
        隐藏文件, 以 . 开头的文件名, 如.bashrc
       普通文件
   -R:递归方式列出所有目录中的内容
   -l:列出文件的详细信息
       文件类型 (第1个字符)
             - : 普通文件
             d : 目录
             l :  符号链接,相当于windows中的快捷方式
             s : 套接字
             p : 管道
             b : 块设备
             c : 字符设备
       用户的操作权限 (2 – 10个字符)
            文件所有者对文件的操作权限 (2,3,4个字符)
            文件所属组用户对文件的操作权限(5,6,7个字符)
            其他人对文件的操作权限(8,9,10个字符)
       硬链接计数:
          对于目录来说, 链接计数等于该目录下所有的目录总数(含. 和 ..), 但是不包含该目录的子目录下的目录文件数量, 执行ls -la命令可以进行查看.
           对于文件来说, 指的是该文件所有的硬链接文件数量
     参数之间可以结合使用:
         ls -la : 列出当前目录下所有文件的相信信息, 包括隐藏文件 
         ls -ltr: 列出当前目录下的文件, 按照时间逆向排序
          -h  以个性化显示,human。 显示多少k, 多少M大小
切换到家目录
       cd
       cd ~
       cd /home/xx
       cd $HOME
临近两个目录直接切换
       cd -
删除文件: rm 文件名
删除目录: rm  -r 目录
   参数:
   -r:递归删除目录,删除目录必须添加此参数
   -i:提示用户是否删除文件或目录
   -f:强制删除
注意事项:
       使用rm命令删除的文件或目录不会放入回收站中,数据不易恢复。

3. 软连接部分:

(1)软连接: ln -s 绝对路径文件名或目录 软连接名
(2)硬链接: ln 文件名 硬链接名
注: 硬链接不能建在目录上; 对绝对路径没有要求;

硬连接的本质:是不同的文件名所在的inode节点是相同的,相同的inode节点指向了相同的数据块,
所以他们的文件内容是一样的,文件内容会同步。
    ls -i 文件名 ------可以查看文件的i节点
    stat 文件名 ---可以查看i节点信息

 如下图, file.hard是file的硬链接,这个两个文件指向了同一个inode, 同一个inode指向了相同的数据块(文件内容).


2019-05-08 shell第二天 基本的命令_第1张图片
555.png
当新创建了一个文件, 硬链接计数为1
给文件创建了一个硬链接后, 硬链接计数加1
删除一个硬链接后,硬链接计数减1
如果删除硬链接后, 硬链接计数为0, 则该文件会删除

注:删除文件的时候, 只要硬链接计数不为0, 不会真正删除, 起到保护文件的作用.

4. 用户 与 用户组

(1)创建用户组 : sudo groupadd 组名
(2)创建用户并指定组:

  sudo useradd -g  组名 -d 用户家目录/home/xx  -m xx如不存在自动创建
  设置密码: sudo passwd 用户名。
  切换用户: su -用户名
  切换超级用户: sudo  su

(3)删除用户: sudo userdel 用户名
删除用户, 并删除家目录: sudo userdel -r 用户名

5. 文件权限 与 所属组

(1)修改文件权限 chmod

 文字设定法

命令:chmod  [who]  [+|-|=]  [mode] 文件名
   操作对象【who】
       u -- 用户(user)
       g -- 同组用户(group)
       o -- 其他用户(other)
       a -- 所用用户(all)【默认】
   操作符【+-=】
       + -- 添加权限
       - -- 取消权限
       = -- 赋予给定权限并取消其他权限
   权限【mode】
       r -- 读
       w -- 写
       x -- 执行
   示例:给文件file.txt的所有者和所属组添加读写权限
       chmod ug+wr file.txt

数字设定法 chmod 777 文件

命令:chmod [+|-|=][mode] 文件名
   操作符【+-=】
      + -- 添加权限
      - -- 取消权限
      = -- 赋予给定权限并取消其他权限 (默认为=)
   数字表示的含义
      0 -- 没有权限(-)
      1 -- 执行权限(x)
      2 -- 写权限(w)
      4 -- 读权限(r)
例:给file.txt文件设置 rw-rw-r--
      chmod 664 file.txt

总结:

  如果目录都有可执行文件可以打开。
  如果目录没有执行文件,打不开。
  如果文件有可执行权限-----文件才可以运行。

(2)修改文件所有者和所属组: sudo chown 用户:【用户组名】 文件

修改文件所有者chown
   用法:chown 文件所有者 文件名
         sudo chown mytest file.txt
  修改文件所有者和所属组chown
   用法:chown 文件所有者:文件所属组 文件名
         sudo chown mytest:mytest file.txt
         sudo chown mytest.mytest file.txt
  注意:普通用户需要使用管理员用户权限执行该命令
  注意: 若系统没有其他用户, 可以使用sudo adduser 用户名 创建一个新用户.

(3)修改文件所属组 sudo chgrp 用户组名 文件名

chgrp命令
    使用方法:chgrp 用户组 文件或目录名
        示例:修改文件所属组为mytest
                       sudo chgrp mytest file.txt
  注:  普通用户需要使用管理员权限执行该命令。

6. 打包解包

(1)基本的打包解包

压缩: zip  -r 压缩包的名字.zip  打包的文件/路径
解压: unzip 压缩包的名字.zip。
压缩: rar a -r 压缩包的名字 原材料 
解压: rar x  压缩包的名字 
压缩: tar  -zcvf  包名.tar.gz 原材料
解压: tar  -zxvf  包名.tar.gz   
压缩: tar  -jcvf  包名.tar.gz2 原材料
解压   tar  -jxvf  包名.tar.gz2

注: c 打包;x 解包; v:显示版本信息; f :显示文件信息。

(2)zip 加密压缩:

2019-05-08 shell第二天 基本的命令_第2张图片
666.PNG

最后: 使用zip压缩的文件后缀是 tar.gz 可在window 解压

(3)ZIP源文件的交叉编译

第一步下载 zip源码:
https://pan.baidu.com/s/1agxlCmRnIQH21pm_3Ye3iA
第二步:解压修改makefile(交叉工具链)

tar xvf zip30.tar.gz
cd zip30
vi unix/Makefile
# 修改makefile,即:不同的arm平台下面红色部分“交叉工具链不同”
     # CC = arm-none-linux-gnueabi-gcc
     # CPP = arm-none-linux-gnueabi-g++
注: 某虚拟机的交叉工具量如下:/home/ngos/toolchain/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu路径下的:
     aarch64-linux-gnu-gcc
     aarch64-linux-gnu-g++
即: 修改成
    CC = aarch64-linux-gnu-gcc
    CPP = aarch64-linux-gnu-g++

最后一步: 编译


2019-05-08 shell第二天 基本的命令_第3张图片
777.png

在当前目录下生成了 arm64环境下使用的 zip !!!!!!

7. 文件查找 find

(1) find 路径名 -选项

 按照名字查找    -name  “文件名”
 按照类型查找    -type  f
 按照大小查找    -size +1M // 大于1M的
                -size +1M  -size -5M  //大于1M,小于5M
                -size 5M  等于5M
         注: 4.9M 就看成    5M来处理。
 递归一级目录: -maxdepth 1  //最大深度1级。

(2)详情如下

按文件名查询:使用参数 -name
   命令:find  路径  -name   "文件名"
   示例:find /home -name "*.c"
按文件类型查询:使用参数 -type
命令:find 路径 -type 类型
   类型  
       普通文件类型用f表示而不是 -
       d -> 目录
       l -> 符号链接
       b -> 块设备文件
       c -> 字符设备文件
       s -> socket文件
       p -> 管道文件
   查找指定目录下的普通文件: find 路径 -type f
按文件大小查询:使用参数 -size
 命令:find  路径  -size  范围
    范围
         大于:+表示 --  +100k
         小于:-表示  --  -100k
         等于: 不需要添加符号 --  100k
   大小
        M 必须大写(10M)
        k 必须小写(20k)
        c 表示字节数
   例子: 查询目录为家目录
        等于100k的文件:  find ~/ -size 100k
        大于100k的文件:  find ~/ -size +100k
        大于50k, 小于100k的文件:  find ~/ -size +50k -size -100k
按文件日期
   创建日期:-ctime -n/+ n
        -n: n天以内
        +n: n天以外
   修改日期:-mtime -n/+n
   访问日期:-atime -n/+n
按深度
   -maxdepth n(层数)
      搜索n层以下的目录, 搜索的层数不超过n层
   -mindepth n(层数)
      搜n层以上的目录,搜索的层数不能小于n层

(3)简单例子

例子1:按大小查找 查找100k,10M的文件:  大于+, 小于-
      find ~ -size +100k -size -10M
例子2:查找指定目录下所有目录,并列出目录中文件详细信息
   find ./ -type d -exec shell命令 {} \;
     find ./ -type d -exec ls -l {} \;

   find ./ -type d -ok shell命令 {} \;
     find ./ -type d -ok ls -l {} \;
      ok比较安全, 特别是在执行rm删除文件的时候.

   find ./ -type d | xargs shell命令
     find ./ -type d | xargs ls -l
例子3:: 将文件中信息--输入到文件中:
     find ./ -size -1k -size +2k -type d | xargs ls -l >>hello.c
        注: >  重定性,是覆盖。
            >> 是追加。  总之: 都是讲内容输入到文件中。

8. 磁盘管理: 三个命令为df、du和fdisk。

df:列出文件系统的整体磁盘使用量
du:检查磁盘空间使用量
fdisk:用于磁盘分区

8.1 df 检查文件系统的磁盘空间占用情况。

语法: df [-ahikHTm]  [目录或文件名]
   -a :列出所有的文件系统;
   -k :以 KBytes 的容量显示各文件系统;
   -m :以 MBytes 的容量显示各文件系统;
   -h :以 GBytes, MBytes, KBytes 等格式自行显示;
   -i :不用硬盘容量,而以 inode 的数量来显示
   -T :显示文件系统类型

8.2 du: 是对文件和目录磁盘使用的空间的查看

语法: du [-ahskm]  文件或目录名称
   -a :列出所有的文件与目录容量。
   -h :以人们较易读的容量格式 (G/M) 显示;
   -s :列出总量而已,而不列出每个各别的目录占用容量;
   -S :不包括子目录下的总计,与 -s 有点差别。
   -k :以 KBytes 列出容量显示;
   -m :以 MBytes 列出容量显示;

8.3 fdisk : 磁盘分区表操作工具。

语法:  fdisk [-l] 装置名称
    -l :输出后面接的装置所有的分区内容。

8.4 磁盘挂载与卸除 : 磁盘挂载(mount),卸载(umount)。

磁盘挂载语法:
   mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
  实例 1
       [root@www ~]# mkdir /mnt/hdc6
       [root@www ~]# mount /dev/hdc6 /mnt/hdc6
       [root@www ~]# df
             Filesystem           1K-blocks      Used Available Use% Mounted on
             .....中间省略.....
            /dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

磁盘卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点
     -f :强制卸除! 
     -n :不升级 /etc/mtab 情况下卸除。
例子: [root@www ~]# umount /dev/hdc6  

你可能感兴趣的:(2019-05-08 shell第二天 基本的命令)