【CSP-S】2023年信息学CSP-S之Linux知识点:目录操作和文件操作

2023-08-31 18:41:45 浏览数 (2)

知识点

本篇文章分享竞赛大纲下面内容:【基础知识与编程环境】

  • 【 5 】Linux 系统终端中常用的文件与目录操
  • 【CSP-S】暑假冲刺2023年信息学CSP-J&S:Linux常用命令之【目录操作和文件操作】
    • 知识点
    • 在Windows上启动Ubuntu
    • 文件夹和文件相关命令
    • 参考资

去年也就是2022年CSP-S的第一道题就是Linu命令相关。

我预估今年还会考一道和命令相关的题目,拭目以待。

孩子们平时很少使用Linux,所以这篇文章让孩子看2~3遍,大概有个印象,这部分分基本就能拿到。

第 1 题

在 Linux 系统终端中,用于切换工作目录的命令为( )。

  • A. ls
  • B. cd
  • C. cp
  • D. all

本题共 2

在Windows上启动Ubuntu

稍后会分享一篇文章介绍如何在window上安装ubuntu操作系统。

文件夹和文件相关命令

命令列表

命令

说明

cd

切换目录

ls

列出目前工作目录所含的文件及子目录

pwd

显示目前的目录

mkdir

创建文件夹

rmdir

删除空文件夹

touch

创建空白文件

cp

复制文件或者目录

rm

删除文件或者目录

mv

移动文件或者目录

file

查看文件类型

man

查看各个命令的使用文档

详细
cd

切换目录

栗子1:切换到根目录

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ cd /

栗子2:切换到指定目录

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:/$ cd /usr
coder@DESKTOP-UGV2MAO:/usr$

栗子3:切换到上一级目录,加..

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:/usr$ cd ..
coder@DESKTOP-UGV2MAO:/$
ls

列出目前工作目录所含的文件及子目录

栗子1:列出当前目录下所有文件夹及文件

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls
readme.md  test
coder@DESKTOP-UGV2MAO:~$

栗子2:列出指定目录下所有文件夹及文件,参数:目录路径

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:/$ ls /usr
bin  games  include  lib  lib32  lib64  libexec  libx32  local  sbin  share  src

栗子3:列出当前目录下所有文件夹及文件,包含隐含文件,参数:-a

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ pwd
/home/coder
coder@DESKTOP-UGV2MAO:~$ ls
readme.md  test
coder@DESKTOP-UGV2MAO:~$ ls -a
.  ..  .bash_logout  .bashrc  .motd_shown  .profile  readme.md  test
coder@DESKTOP-UGV2MAO:~$

栗子4:列表显示目录下文件夹和文件,加参数-l

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls -la
total 8
drwxr-x--- 1 coder coder 4096 Jun 26 12:59 .
drwxr-xr-x 1 root  root  4096 Jun 26 10:52 ..
-rw-r--r-- 1 coder coder  220 Jun 26 10:52 .bash_logout
-rw-r--r-- 1 coder coder 3771 Jun 26 10:52 .bashrc
-rw-r--r-- 1 coder coder    0 Jun 26 10:52 .motd_shown
-rw-r--r-- 1 coder coder  807 Jun 26 10:52 .profile
-rw-r--r-- 1 coder coder    0 Jun 26 12:59 readme.md
drwxr-xr-x 1 coder coder 4096 Jun 26 11:21 test

常用语法

  • ls -l # 以长格式显示当前目录中的文件和目录
  • ls -a # 显示当前目录中的所有文件和目录,包括隐藏文件
  • ls -lh # 以人类可读的方式显示当前目录中的文件和目录大小
  • ls -t # 按照修改时间排序显示当前目录中的文件和目录
  • ls -R # 递归显示当前目录中的所有文件和子目录
  • ls -l /etc/passwd # 显示/etc/passwd文件的详细信息
pwd

说明:显示目前所在目录

栗子:表示当前是在/usr/games

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:/usr/games$ pwd
/usr/games
coder@DESKTOP-UGV2MAO:/usr/games$
mkdir

说明:创建文件夹

栗子1:创建文件夹

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ mkdir test
coder@DESKTOP-UGV2MAO:~$ ls
test

栗子2:创建多级文件夹

注意:创建多级文件夹需要加参数-p,不然会出错

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ mkdir test1/test2
mkdir: cannot create directory ‘test1/test2’: No such file or directory
coder@DESKTOP-UGV2MAO:~$ mkdir -p test1/test2
coder@DESKTOP-UGV2MAO:~$ ls
test  test1
coder@DESKTOP-UGV2MAO:~$
rmdir

说明:删除空文件夹,如果文件夹内有文件,会提示错误信息

栗子1:删除空文件夹

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls
test  test1
coder@DESKTOP-UGV2MAO:~$ rmdir test
coder@DESKTOP-UGV2MAO:~$ ls
test1
coder@DESKTOP-UGV2MAO:~$

栗子2:删除多级空文件夹,需要加-p

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls
test1
coder@DESKTOP-UGV2MAO:~$ rmdir -p test1/test2
coder@DESKTOP-UGV2MAO:~$ ls
coder@DESKTOP-UGV2MAO:~$
touch

说明:创建空文件

栗子:创建空文件,如下面执行结果,我们能看到coder1.md的大小是0

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ touch coder1.md
coder@DESKTOP-UGV2MAO:~$ ls -l
total 0
-rw-r--r-- 1 coder coder    0 Jun 26 13:12 coder1.md
-rw-r--r-- 1 coder coder    0 Jun 26 12:59 readme.md
drwxr-xr-x 1 coder coder 4096 Jun 26 11:21 test
cp

说明:拷贝文件或者目录

语法

代码语言:javascript复制
cp [参数] 【拷贝源目录或者文件】 【目标目录】

栗子1:

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls -l
total 0
-rw-r--r-- 1 coder coder   37 Jun 26 13:16 coder1.md
-rw-r--r-- 1 coder coder    0 Jun 26 12:59 readme.md
drwxr-xr-x 1 coder coder 4096 Jun 26 11:21 test
coder@DESKTOP-UGV2MAO:~$ cp coder1.md coder2.md
coder@DESKTOP-UGV2MAO:~$ ls -l
total 0
-rw-r--r-- 1 coder coder   37 Jun 26 13:16 coder1.md
-rw-r--r-- 1 coder coder   37 Jun 26 13:17 coder2.md
-rw-r--r-- 1 coder coder    0 Jun 26 12:59 readme.md
drwxr-xr-x 1 coder coder 4096 Jun 26 11:21 test
coder@DESKTOP-UGV2MAO:~$
  • ls -l:列表显示当前目录下文件夹和文件
  • cp coder1.md coder2.md:复制coder1.md文件,生成一个文件名叫coder2.md的文件

常用参数列表

参数

说明

-f

强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次

-i

若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

-p

连同文件的属性一起复制过去,而非使用默认属性(备份常用);

-r

递归持续复制,用於目录的复制行为;(常用)

栗子2:-i

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ cp -i coder1.md coder2.md
cp: overwrite 'coder2.md'? y
coder@DESKTOP-UGV2MAO:~$
rm

说明:移除文件或目录

参数

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

栗子:不带参数,删除文件

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls
coder1.md  coder2.md  readme.md  test
coder@DESKTOP-UGV2MAO:~$ rm coder2.md
coder@DESKTOP-UGV2MAO:~$ ls
coder1.md  readme.md  test
coder@DESKTOP-UGV2MAO:~$
mv

说明:移动文件与目录,或修改名称

参数

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

栗子1:当前目录下改名,注意coder1.md -> coder2.md

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ pwd
/home/coder
coder@DESKTOP-UGV2MAO:~$ ls
coder1.md  readme.md  test
coder@DESKTOP-UGV2MAO:~$ mv coder1.md coder2.md
coder@DESKTOP-UGV2MAO:~$ ls
coder2.md  readme.md  test
coder@DESKTOP-UGV2MAO:~$

栗子2:移动到其他目录

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls
coder2.md  readme.md  test
coder@DESKTOP-UGV2MAO:~$ mv coder2.md test/
coder@DESKTOP-UGV2MAO:~$ ls
readme.md  test
coder@DESKTOP-UGV2MAO:~$ ls test/
coder2.md  test.txt
coder@DESKTOP-UGV2MAO:~$
file

说明:查看文件属性

栗子:如下例子,readme.md文件时一个ASCII text文件

代码语言:javascript复制
coder@DESKTOP-UGV2MAO:~$ ls -l
total 0
-rw-r--r-- 1 coder coder   49 Jun 26 13:30 readme.md
drwxr-xr-x 1 coder coder 4096 Jun 26 13:27 test
coder@DESKTOP-UGV2MAO:~$ file readme.md
readme.md: ASCII text
coder@DESKTOP-UGV2MAO:~$

参考资料

  • Linux 文件与目录管理
    • http://edu.jb51.net/linux/linux-file-content-manage.html

0 人点赞