Linux命令—基础篇

这篇博客详细介绍了Linux系统中的一些基础命令,包括ls命令用于列出目录内容,touch命令用于创建新文件,mkdir命令创建目录,cp命令复制文件和目录,mv命令移动文件或重命名,rm命令删除文件,rmdir删除空目录,file命令识别文件类型,cat、more和less命令查看文件内容,以及tail和head命令分别查看文件尾部和头部内容。这些命令是Linux日常操作的基础,对于软件开发、大数据处理和系统运维人员尤其重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ls命令

列出当前工作目录中的内容(包含普通文件和目录,不包含隐藏文件)
隐藏文件:在Linux上,隐藏文件通常是文件名 以点号开始的文件。这些文件并没有在默认的ls命令输出中显示出来,通常称其为隐藏文件。

work:/$ls
1    boot    dev      etc   lib    lost+found  media  mnt  noah  proc  sbin     srv  tmp  var
bin  cgroup  DoorGod  home  lib64  matrix      misc   net  opt   root  selinux  sys  usr
  • 目录名
    列出该目录下的内容
    如:列出百度目录下的所有内容

    work:~$ls baidu
    base  ps-se  qualifiedcoder
    
  • -a
    列出所有文件,包含隐藏文件和普通文件及目录

    work:/$ls -a
    .   .autofsck     boot    DoorGod  lib         matrix  mnt   opt                 root     srv  usr
    ..  .autorelabel  cgroup  etc      lib64       media   net   proc                sbin     sys  var
    1   bin           dev     home     lost+found  misc    noah  .readahead_collect  selinux  tmp
    
  • -l
    产生长列表格式的输出,包含了目录中每个文件的更多相关信息,例如文件权限、链接数、所有者名称和组所有者、文件大小、最后修改的时间和文件/目录名称

    work:/$ls -l
    total 144
    -rw-r--r--    1 root root   375 Sep 17  2020 1
    dr-xr-xr-x.   2 root root  4096 May 21  2018 bin
    drwxr-xr-x. 109 root root 12288 Mar 29 19:33 etc
    drwxr-xr-x    7 root root  4096 Mar  9 16:29 home
    dr-xr-xr-x.  13 root root  4096 May 21  2018 lib
    dr-xr-xr-x.   9 root root 12288 Jan 28 11:46 lib64
    dr-xr-x---.  12 root root  4096 Mar 12 20:50 root
    drwxr-xr-x.  13 root root  4096 Jul 27  2017 usr
    drwxr-xr-x.  21 root root  4096 Jan 28 11:30 var
    
  • -F
    在ls命令输出条目后加上文件类型的指示符号
    " / ":表示这是一个目录名
    " * ":表示这是一个可执行程序

    work:~$ls -F
    111.txt  baidu/  bashrc  install.sh
    
  • -R
    递归选项,列出当前目录下包含的子目录中的文件

    work:~/dudu$ls -R
    .:
    build.sh  ci.yml  cr.txt  favorite_fruits.dict  Main.java  pom.xml  README.md  readme.txt  release.sh  src
    
    ./src:
    main  test
    
    ./src/main:
    java
    
    ./src/main/java:
    com
    
    ./src/test:
    java
    
    ...以下内容省略
    

touch命令

TODO

mkdir命令

创建一个新目录

work:~/dudu/stc$ls -F
work:~/dudu/stc$mkdir test
work:~/dudu/stc$ls -F
test/
  • -p
    用于创建多层级目录,不带-p选项创建多层级目录时会报错

    work:~/du/stc$mkdir test/new/ps
    mkdir: cannot create directory `test/new/ps': No such file or directory
    # 
    work:~/dudu/stc$mkdir -p test/new/ps
    work:~/dudu/stc$ls -R
    .:
    test
    
    ./test:
    new
    
    ./test/new:
    ps
    
    ./test/new/ps:
    

cp命令

在文件系统中将文件和目录从一个位置复制到另一个位置
如:cp source destination
当source和destination参数都是文件名时,cp命令将源文件复制成一个新文件,并且以 destination命名。新文件就像全新的文件一样,有新的修改时间。

work:~/dudu$ls -l test_*
-rw-rw-r-- 1 work work 0 Mar 30 15:48 test_one
-rw-rw-r-- 1 work work 0 Mar 30 15:48 test_two
  • -i
    强制shell询问是否需要覆盖已有文件,如果不回答y,文件复制将不会继续。

    work:~/dudu$cp -i test_one test_two
    cp: overwrite `test_two'?
    
  • 复制到目录 / 从目录复制

    	work:~/dudu$cp test_one ./src/
    	work:~/dudu$ls -l src
    	total 8
    	drwxrwxr-x 3 work work 4096 Jan 29 14:00 main
    	drwxrwxr-x 3 work work 4096 Jan 29 14:00 test
    	-rw-rw-r-- 1 work work    0 Mar 30 16:34 test_one
    	# 注意src后有/,表示这是一个目录而非一个文件。
    	# 如果不加/,./src目录又不存在,当试图将一个文件复制到src子目录反而会创建一个名为src的文件,连错误消息都不会显示!
    	
    	# 本例采用了相对路径,也可以采用绝对路径
    	# 单点符.表示当前目录,非常实用!
    
  • -r
    同-R
    在一条命令中递归地复制整个目录的内容。

    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_one
    work:~/dudu$mkdir stc
    work:~/dudu$cp -r src/ stc
    work:~/dudu$ls stc
    src
    work:~/dudu$rm -r stc/*
    work:~/dudu$cp -r src/* stc
    work:~/dudu$ls stc
    main  test  test_one  test_two
    # 
    # 注意:cp -r src stc:是将src目录(包括src目录本身)复制到stc目录中
    # 注意:cp -r src/ stc:是将src目录(包括src目录本身)复制到stc目录中
    # 注意:cp -r src/* stc:是将src目录内文件(不包括src目录本身)复制到stc目录中
    

mv命令

mv命令可以将文件和目录移动到另一个位置或重新命名

  • 重命名

    work:~/dudu$ls
    build.sh Main.java  README.md  readme.txt release.sh  src  test_one
    work:~/dudu$mv test_one test_two
    work:~/dudu$ls
    build.sh Main.java README.md  readme.txt  release.sh  src  test_two
    
  • 移动位置

    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_two
    work:~/dudu$mv test_two src/test_three
    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src
    work:~/dudu$ls src
    main  test  test_one  test_three
    
    # 可以看见当前目录下的test_one已经移动到src目录下,并改了名字
    
  • 移动文件夹

    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_one
    work:~/dudu$mkdir stc
    work:~/dudu$mv stc src
    work:~/dudu$ls src
    main  stc  test  test_one  test_two
    # 
    # mkdir命令创建了stc目录
    # mv命令移动stc目录到src目录
    
  • -i
    和cp命令类似,在mv命令中使用-i参数,可以试图覆盖已有的文件时得到提示

    work:~/dudu$touch test_one
    work:~/dudu$mv -i test_one src
    mv: overwrite `src/test_one'?
    
    # touch命令创建了test_one新文件
    # 使用-i选项得到了提示  
    

rm命令

文件删除命令
注意:rm不加选项只能用来删除普通文件,即非目录文件

work:~/dudu/src$ls -F
main/  test/  test_one  test_two
work:~/dudu/src$rm test_two
work:~/dudu/src$rm main/
rm: cannot remove `main/': Is a directory
  • -i
    和cp命令类似,在rm命令中使用-i参数,可以试图删除已有的文件时得到提示

    work:~/dudu/src$ls
    main  test  test_one
    work:~/dudu/src$rm -i test_one
    rm: remove regular empty file `test_one'?
    
  • -f
    强制删除,不带有任何提示!!!

  • -r
    同-R
    可以递归删除整个目录的内容(包括目录本身)

    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_one
    work:~/dudu$mkdir stc
    work:~/dudu$cp -r src/* stc
    work:~/dudu$ls -F stc
    main/  test/  test_one
    
    work:~/dudu$rm -r stc
    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_one
    
    work:~/dudu$mkdir stc
    work:~/dudu$cp -r src/* stc
    work:~/dudu$rm -r stc/*
    work:~/dudu$ls stc
    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  stc  test_one
    
    work:~/dudu$rm -r stc/
    work:~/dudu$ls
    build.sh  Main.java  README.md  readme.txt  release.sh  src  test_one
    #
    # 注意:rm -r stc/:递归删除目录内容包括目录本身
    # 注意:rm -r stc :递归删除目录内容包括目录本身
    # 注意:rm -r stc/* :递归删除目录内容同时不包括目录本身
    

rmdir命令

用于删除空目录,注意是空目录

work:~/dudu$mkdir stc
work:~/dudu$ls -F
build.sh*  Main.java  README.md  readme.txt  release.sh*  src/  stc/  test_one
work:~/dudu$rmdir stc
work:~/dudu$ls -F
build.sh*  Main.java  README.md  readme.txt  release.sh*  src/  test_one

file命令

查看文件类型

work:~/dudu$file src
src: directory
work:~/baidu/qualifiedcoder/wanglizhi04$file Main.java
Main.java: ASCII Java program text

cat命令

显示文本文件所有内容,对于大型文件来说,只能显示最后的1000行(因为cat命令是全部显示,但终端只有1000行)

work:~/dudu$cat Main.java
import java.util.List;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello");
        System.out.println("World!");
    }
}
  • -n
    给所有的行加上行号

    work:~/dudu$cat -n Main.java
         1	import java.util.List;
         2
         3	public class Main {
         4	    public static void main(String[] args) {
         5	        System.out.println("Hello");
         6	        System.out.println("World!");
         7	    }
         8	}
    
  • -b
    只给有文本的行加上行号

    work:~/dudu$cat -b Main.java
         1	import java.util.List;
    
         2	public class Main {
         3	    public static void main(String[] args) {
         4	        System.out.println("Hello");
         5	        System.out.println("World!");
         6	    }
         
         7	}
    

more命令

与cat命令类似,more命令会显示文本文件的内容,但会在显示每页数据之后停下来。可以通过按空格键或回车键以逐行向前的方式浏览文本文件。浏览完之后,按q键退出。

less命令

与more命令类似,less命令会显示文本文件的内容,会在显示每页数据之后停下来,但比more命令更高,less支持文件内容搜索,并支持方向键浏览
注意:less命令使用后,屏幕底部会出现 : ,如下图所示,此时输入 /: 会自动变为 / ,然后输入搜索词,按回车,会搜索到匹配的文本内容
在这里插入图片描述

tail命令

tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行

  • -n
    来修改所显示的行数,从文件末尾开始算

    work:~/dudu$tail -n 4 Main.java
            System.out.println("Hello");
            System.out.println("World!");
        }
    }
    #
    # 从从文件末尾开始算,显示四行
    
  • -f
    允许在其他进程使用该文件时查看文件的内容。 tail命令会保持活动状态,并不断显示添加到文件中的内容。也就是当该文件末尾内容变化会显示到屏幕上,实时监测该文件(使用tail -f命令后,使用ctrl+c退出)

head命令

显示文件开头那些行的内容,默认前十行

  • -n
    同tail命令一样,来修改所显示的行数,从文件开头开始算

    work:~/dudu$head -n 4 Main.java
    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值