Linux常用命令1

linux常用命令(ubuntu系统)

一、linux文件系统结构

   sudo apt-get install tree
   tree --help  #查看帮助
   tree -L 1  #显示文件目录

root@ubuntu16 /# tree -L 1
.           #系统根目录
├── bin     #存放常见的命令
├── boot    #系统启动文件和核心文件都在这个目录
├── cdrom   #光驱
├── dev     #存放设备文件,包括硬盘、光驱、键盘、鼠标等
├── etc     #系统配置文件都在这个目录下
├── home    #普通用户的家目录
├── lib     #系统链接库
├── lib64   #64位的链接库
├── lost+found   #系统自动生成的,如果文件系统出错,会在目录下产生文件,记录错误
├── media        #系统自动挂载的光驱、usb等
├── mnt          #mount简写 挂载其他文件系统
├── opt          #可在此安装第三方软件 
├── proc         #系统进程的信息、系统状态信息
├── root         #超管的目录
├── run          #进程运行数据
├── sbin         #管理员的命令,普通用户无法使用
├── srv          #服务信息
├── sys          #系统相关
├── tmp          #临时目录,所有用户都具有读写权限
├── usr          #unix software resource  用户的软件安装到这个目录
|    ├── bin     #应用程序的可执行文件
|    ├── sbin    #用户或超管的标准命令
|    ├── local   #管理员安装的应用程序目录
|    └── share   #共享文件目录
└── var          #存放不断扩充的文件。比如数据库文件、日志文件
     ├── log     #日志目录,各种应用的日志
     └── run     # /run的软连接

二、常见命令

  1. ls
    列出目录下的文件或子目录
    ls [参数] #中括号表示可选
    ls -l #以列表方式显示文件的详细信息
    ls -a #显示隐藏文件,隐藏文件的文件名以.开头
    ls -A #显示除.和…以外的任何文件
    ls -i #查看文件的节点号
    ls --color #以不同颜色显示文件、目录、可执行文件
    ls --help #查找帮助
    ls --help #查看命令参数

    drwxr-xr-x  2 python python     4096 3月  28 11:20 Templates
    drwxr-xr-x  2 python python     4096 3月  28 11:20 Videos
    

    第一部分:表示文件类型 d代表目录,- 代表普通文件,l代表软连接,c 表示 字符设备,b表示块设备
    第2部分,2-10列代表文件的权限:rwxr-xr-x.
    第3部分:数字代表文件的链接数
    第四部分:root代表文件的所有者
    第5部分:root表示文件属于哪个用户组
    第6部分:数字的表示文件大小,以字节为单位
    第7部分:时间,表示文件的上次修改时间
    第8部分:文件名

    #文件权限
    drwxr-xr-x. 2 root root 4096 Nov 20 07:36 tmp
    r:read 可读
    w:write 可写
    x:excute 可执行
    -:表示无权限

    权限(ugo):
        2-4位   ower  文件的所有者    
        5-7位   group:用户组
        8-10位  other:其他用户
    
  2. ll
    以列表方式显示,其实是ls -l的别名,这个配置在~/.bashrc中
    白色代表普通文件
    绿色代表可执行文件
    蓝色代表目录

  3. man命令
    #命令的帮助文档
    sudo apt-get install man
    #用法:
    man 命令名
    常用的快捷键
    空格 f 下翻页
    b 上翻页
    shift + g 到文件末尾
    g 文件开头
    q 退出
    上下箭头 前翻和后翻
    回车键 后翻
    home 回到开始

  4. history命令
    查看你敲过的命令

  5. 硬链接和软连接
    文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

    为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

    • 一个 inode 号对应多个文件名,则称这些文件名为硬链接
      link 源文件名 新文件名
      ln 源文件名 新文件名

      stat 文件名 #查看文件信息
      ls -i #查看目录下文件的硬链接数
      python@ubuntu:/csl$ ls -la
      total 4
      913923 lrwxrwxrwx. 1 root root 5 Mar 18 16:20 2.txt -> 1.txt
      913926 -rw-r–r--. 2 root root 0 Mar 18 19:58 31.txt
      913926 -rw-r–r--. 2 root root 0 Mar 18 19:58 32.txt
      913925 -rwxr-xr-x. 1 root root 0 Mar 18 17:29 5.txt
      913924 drwxr-xr-x. 2 root root 4096 Mar 18 17:29 test

      硬链接的特点:

       1.只能对已存在的文件进行创建;
       2.不能对交叉文件系统进行硬链接的创建;
       3.不能对目录进行创建,只可对文件创建;
       4.删除一个硬链接文件并不影响其他有相同inode 号的文件。
      
  • 软连接

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接类似快捷方式

ln -s 源文件 目标文件。
软连接的特点:
   软链接有自己的文件属性及权限等;
   可对不存在的文件或目录创建软链接;
   软链接可交叉文件系统;
   软链接可对文件或目录创建;
   创建软链接时,链接计数 i_nlink 不会增加;
   删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接

三、目录管理

  1. 绝对路径和相对路径
    linux的目录和windows不同,不区分盘符,只有一个根目录,根目录用/表示。

    • 绝对路径:从根目录到当前文件(目录)的路径,比如:/home/python
    • 相对路径:以当前目录为基准,表示上级目录或子目录
      • 用 . 表示当前目录
      • 用…表示上级目录
    • linux目录分隔符只能用正斜线(/)表示
    • 用 ~ 表示用户主目录,用 - 表示来源目录(你从哪个目录切换到当前目录的)
  2. 目录切换
    cd 目录名 #切换目录
    . #当前目录
    … #代表上级目录
    / #代表根目录
    ~ #用户家目录(宿主目录) root用户的家目录/root 普通用户的家目录/home/用户名
    cd /etc/yum.repos.d
    cd / #切换到根目录
    cd - #切换到来源目录
    cd ~ #返回用户的家目录
    cd #返回用户的家目录
    pwd #显示当前目录的绝对路径名

  3. 提示信息
    [root@localhost ~]# cd /
    [root@localhost /]$
    root代表用户名
    localhost 主机名
    ~ 用户的家目录
    / 用户当前所处的目录(/ 根目录)
    # 表示超级管理员在操作
    $ 普通用户在操作

  4. 创建目录
    sudo mkdir 目录名
    sudo mkdir -p 目录名 #递归创建目录
    sudo mkdir -p h1802/1/2
    python@ubuntu:~/tmp/2$ sudo mkdir -p 3/{4,5}/{6,7,8}
    python@ubuntu:~/tmp/2$ tree -L 3
    .
    └── 3
    ├── 4
    │ ├── 6
    │ ├── 7
    │ └── 8
    └── 5
    ├── 6
    ├── 7
    └── 8

  5. 删除目录 rmdir
    sudo rmdir [option] 目录名 #删除的时候目录必须为空
    sudo rmdir -p 目录名 #递归删除空目录
    sudo rmdir -p 1/2/3 #1,2,3目录都必须不能有文件

四、文件操作

  1. 文件创建
    sudo touch 文件名 [文件名2] [文件名3]… #创建多个空文件,如果文件存在,自动忽略,不会覆盖
    echo ‘hello world’ > 1.txt #可以将显示内容输出到文件,但会覆盖原来的内容,文件不存在则创建
    echo ‘世界,你好’ >> 1.txt #将显示内容追加到文件末尾,文件不存在则创建
    #输出重定向符号: > 覆盖 >> 追加

  2. 文件移动
    sudo mv 源文件 目标文件 #销毁原件
    sudo mv 1.txt ./lpl/ #将1.txt移动到字目录lpl下,文件名不变
    sudo mv …/3.txt ./31.txt #移动到当前目录下,改名为31.txt
    sudo mv 1.txt 2.txt #如果在同一个目录就是文件重命名 将1.txt重命名为2.txt
    rename ‘s/原文件名中需要替换的部分/替换后的部分/’ 源文件名
    rename ‘s/tx/txt/’ 2.tx #将2.tx替换为2.txt

  3. 文件拷贝
    sudo cp 源文件 目标文件
    sudo cp -r 源目录 目标目录 #递归拷贝目录
    sudo cp -r 4/8 5/7/
    root@ubuntu:/home/python/tmp/2/3# tree -L 4
    .
    ├── 4
    │ ├── 1.txt
    │ ├── 42.js
    │ ├── 8
    │ │ ├── 2.php
    │ │ ├── 3.py
    │ │ └── 5.hello
    │ └── 9.php
    └── 5
    ├── 6
    │ ├── 2.php
    │ ├── 3.py
    │ └── 5.hello
    ├── 7
    │ └── 8
    │ ├── 2.php
    │ ├── 3.py
    │ └── 5.hello
    └── 8

  4. 文件删除
    sudo rm 文件名
    sudo rm -i 文件名 #删除前逐一确认
    sudo rm -f 文件名 #删除文件不带提示
    sudo rm -rf 目录名 #递归删除目录,不管目录是否为空

  5. 文件查看
    cat 文件名 #输出文件内容,从前往后输出,
    tac 文件名 #cat的反写,从后往前输出

    head -n N  文件名   #显示文件的前几行,可以指定查看的行数,默认显示10行
    head -N  文件名
    
    tail -n N 文件名   #显示文件的最后几行,可以指定查看的行数(N)
    tail -N  文件名    #
    tail -f  cat 文件名   #实时显示文件内容
    watch -d -n 秒数 cat 文件名  #实时显示文件内容 有高亮
    sudo vim  文件名   
    more  文件名       #从前往后查看,可以翻屏 ,不能往前翻  回车一行行查看,空格翻屏(f翻屏)  q退出
    less  文件名       #和more类似,可以前翻页,g首页 G尾页,b前翻页,空格和f后翻页,q退出
    stat  文件名       #查看文件详细信息   
    #文件的三个时间:
    atime: accesstime 访问时间
    mtime:modifytime 修改时间
    ctime: changetime 修改状态时间(修改文件元数据)
    
  6. 文件查找

    • find

      find 用于在系统内搜索指定文件

      用法:
      find [路径] [参数] [文件名]
      -name 按文件名查找
      -iname 按文件名查找,不区分大小写
      -mtime +/-n #-n表示n天以内修改的文件,+n表示修改超过n天的文件
      -user #按文件属主查找
      -size [+/-]n[c/k/M/G] #查找文件长度为n块,+表示大于,-表示小于;c是字节
      -perm 权限数值 #按照文件权限进行查找
      -maxdepth N #查找的目录深度
      -ls #以列表形式显示
      -exec 执行shell命令,形式: -exec command {} ;

      find / -name “文件名” #从根目录查找指定文件名的文件,如果不指定目录,则从当前目录查找
      find . -name “文件名” #从当前目录查找指定文件名的文件
      find -name “文件名” #从当前目录查找指定文件名的文件

      find /csl/sh1702 -name “2.txt” #查找指定目录先的文件
      find /tools -mtime -3 #查找tools目录下修改时间是3天以内的文件
      find /tools -mtime +3 #查找tools目录下修改时间是3天以上的文件
      find -mtime -3 -maxdepth 1 -ls

      find /tools -size 12c #查找长度为12字节的文件
      find /var ‐size +10k ‐size ‐100k ‐name ‘*.log’ #在/var目录下,查找10-100k
      find -size +10k -maxdepth 1 -ls

      #按文件的所属用户查找
      find -maxdepth 1 -user root

      #删除当前目录及其子目录下的所有后缀为txt的文件,注意{}和\中间有空格,最后有一个;
      find . -name ‘*.txt’ -exec rm {} ;

      #只查找当前目录下,权限是700的文件,并以列表形式显示
      find -perm 700 -maxdepth 1 -ls
      sudo find -maxdepth 2 -name ‘1.txt’ -ls

    • grep
      #grep 是global search regular expression(RE) and print out the line的缩写,意思是全面搜索正则表达式并把行打印出来。是一种强大的文本搜索工具,它能使用正则表达式搜索文本内容,并把匹配的行打印出来。
      用法:
      grep [options] ‘pattern’ filename
      -i 不区分大小写
      -c 只显示匹配行的数量
      -r 递归查找子目录
      -l 列出文件内容符合指定的范本样式的文件名称。
      -n 显示行号
      -w 只匹配单词,不是匹配单词一部分
      -E 按正则表达式搜索
      –color 以不同颜色显示匹配的关键字
      –include ‘.py’ #仅搜索py文件
      –exclude '
      .py’ #不搜索py文件
      # 在1.txt搜索this,要按照完整单词的模式进行匹配,并且显示匹配行
      grep -n -w ‘this’ 1.txt

       #在当前目录下所有文件中搜索this,并不同颜色显示关键字
       sudo grep  'this' * --color
       
       显示匹配行数
       sudo grep -c 'this' 1.txt
       搜索指定的1.txt,递归查找子目录
      grep -r -w -l   'this' --include '1.txt'
      # 显示当前目录下所有的文件,不显示目录
      ls -la | grep -E '^-'
      | 管道符,他可以将前一个命令的输出作为后一个命令的输入
      
  7. which和whereis

    • which 命令名 #查找命令
    • whereis 文件名 #只能搜索命令、源文件、二进制文件
  8. 文件内容统计(wc)
    用法:
    wc [options] [文件列表]
    -l 统计有多少行
    -w 统计有多少单词
    $ wc -l /etc/passwd #统计passwd有多少用户

  9. awk
    awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
    语法:awk ‘{pattern + action}’ {filenames}
    cat /etc/passwd |awk -F ‘:’ ‘{print $1}’ #$1显示第一列 -F 指定分割符为’:’
    #列数从左向右: 1,2,3…

  10. uniq
    报告或删除文件中重复的行。uniq只比较相邻行,所以它一般会和sort命令进行组合使用。
    用法:uniq [选项]… [文件]
    -c //在每行前加上表示相应行目出现次数的前缀编号
    -d //只输出重复的行
    -D //只输出重复的行,不过有几行输出几行
    -i //忽略大小写

  11. sort
    sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
    sort(选项)(参数)
    选项:
    -u忽略相同行
    -k 按指定列排序
    -n 按数值排序
    -t 分割符
    -r 逆序
    #指定passwd文件按第三列 的数值比较,列之间的分隔符为:
    cat /etc/passwd | sort -n -t ‘:’ -k 3

     #查找你最常用的10条命令
     history | awk '{print $2}' | sort | uniq -c | sort -r -n -k 1 | head -n 10
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值