什么是 Linux#
Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于 1991 年 10 月 5 日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。
安装 Linux#
这里使用的环境是 Windows 自带的 Linux 子系统 (WSL2), Ubuntu 版本 1804. 可以参考微软官方的安装教程 安装 WSL | Microsoft Learn 注意的是,如果直接从微软商店(Microsoft Store)安装会默认安装的 C 盘,导致使用不便. 建议下载发行版的离线安装包,然后将后缀改为 zip,解压到你想要的位置上面,接着运行可执行文件(exe),安装 Linux.
Linux 目录结构#
Linux 的目录结构是一个树型结构.
Windows 系统可以拥有多个盘符,如 C 盘、D 盘、E 盘.
Linux 没有盘符这个概念,只有一个顶级目录: 根目录( / ), 所有文件都在它下面.
所以 Linux 的目录描述起来就是 /home/user , 而 Windows 就是 D:\Ubuntu_1804.2019.522.0_x64
在 Linux 中 / 在开头表示根目录,在后面的表示一个层级关系,
比如前面的 : /home/user 中, / 表示根目录,home/user 表示 根目录 下 home 文件夹下的 user 文件夹.
注意#
在 Linux 中描述路径用的是斜杠 / 来表述路径的,而 Windows 系统中使用的是反斜杠来表示 \ .
反斜杠为啥存在,可以参考下知乎 Lunamos 的回答:
直接看维基就好了.
当次搬运工吧,Bob Bemer(ASCII 之父,当时的一位 IBM 工程师)在 1961 年将反斜杠(也就是「
\」,正斜杠是「/」)引入 ASCII,原因是在频率分析中认为反斜杠还是被用了很多的一个符号。再仔细追究会发现,反斜杠最主要的用途是在一个叫做 ALGOL 的早期高级语言)中参与表示布尔运算 AND 和 OR,其中 AND 的写法是「/\」,OR 的写法是「\/」,都是分别由一个反斜杠和一个正斜杠组成的。而之后流传了下来,并被用作更多其他的用途。考证贴的存档:https://web.archive.org/web/20130119163809/http://www.bobbemer.com/BACSLASH.HTM
原回答地址: 反斜杠为什么存在? - Lunamos 的回答 - 知乎
命令, 命令行#
命令:即 Linux 程序。一个命令就是一个 Linux 的程序。命令没有图形化页面,可以在命令行(终端中)提供字符化的反馈
命令行:即 Linux 终端(Terminal),是一种命令提示符页面。以纯“字符”的形式操作系统,可以使用各种字符化命令对系统发出操作指令.
Linux 命令基础格式#
无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式:
command [-options] [parameter]
其中 ,
command:命令本身 -options:(可选,非必填)命令的一些选项,可以通过选项控制命令的行为细节 parameter:(可选,非必填)命令的参数,多数用于命令的指向目标等
语法中的[],表示可选的意思.
例如:
cat -E /home/user/t1/t1.txt : 查看 /home/user/t1/t1.txt 的内容,并且没每行结束以$ 结尾.
其中 cat 是命令本身 , -E 是选项, `/home/user/t1/t1.txt 是参数
Linux 基础命令#
路径与特殊路径符#
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以 / 开头
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以 /开头
例如:
我现在在 /home/user 路径下,想要创建一个名为 t1 的目录,绝对路径的写法就是
mkdir /home/user/t1而相对路径的写法就是
mkdir t1特殊路径符
• . 表示当前目录,比如说 cd . 或 cd ./Desktop
• .. 表示上一级目录,比如说 cd ..如果想要上上一级目录可用 cd ../..
•~表示用户的 HOME 目录。比如 cd ~ 或 cd ~/Desktop
ls 命令#
ls [-a -l -h] [Linux路径]
作用 : 以平铺的形式列出指定路径下的文件
例如 :
$ ls输出
bin dev home lib lost+found mnt root sbin srv t1 usr
boot etc init lib64 media proc run snap sys tmp var这是我当前工作目录下的文件
需要注意的是 Linux 在启动的时候,每个 Linux 操作用户在 Linux 系统的个人账户目录, 路径为 /home/用户名.
在用户登录的时候,会默认在账户目录下进行操作,即 user 用户登录的时候,默认会在 /home/user这个用户下操作.
选项使用#
- -a 选项 , 表示 all 的意思,会列出所有文件(包括隐藏文件和文件夹) 例如:
$ ls输出:
logs t.txt t1这里输入 ls -a
$ ls -a输出:
. .bash_history .bashrc .config .local .pki .sudo_as_admin_successful .viminfo t.txt
.. .bash_logout .cache .landscape .motd_shown .profile .test.swp logs t1- -l 选项 ,表示以列表的形式竖向排列展示内容,并且展示更多信息
$ ls -ldrwx------ 2 user user 4096 Dec 30 16:31 logs
-rw-r--r-- 1 user user 42 Dec 30 10:57 t.txt
drwxr-xr-x 3 root root 4096 Dec 30 11:14 t1给出了 drwxr-xr-x : 权限 , user user 用户和用户组 , 4096 文件或者文件夹大小和 Dec 30 16:31 创建时间等数据
- -h 表示易于阅读的形式,列出文件的大小,此选项需要和其他选项连用.
例如 :
$ ls -lhtotal 12K
drwx------ 2 user user 4.0K Dec 30 16:31 logs
-rw-r--r-- 1 user user 42 Dec 30 10:57 t.txt
drwxr-xr-x 3 root root 4.0K Dec 30 11:14 t1或者是
显示当前目录下所有的文件.并且以列表形式展示,同时变为易于阅读的形式
$ ls -alhtotal 76K
drwxr-xr-x 9 user user 4.0K Dec 30 17:33 .
drwxr-xr-x 3 root root 4.0K Dec 30 10:00 ..
-rw------- 1 user user 1.5K Dec 31 11:53 .bash_history
-rw-r--r-- 1 user user 220 Dec 30 10:00 .bash_logout
-rw-r--r-- 1 user user 3.7K Dec 30 10:00 .bashrc
drwx------ 3 user user 4.0K Dec 30 16:31 .cache
drwx------ 3 user user 4.0K Dec 30 16:31 .config
drwxr-xr-x 2 user user 4.0K Dec 30 17:33 .landscape
drwxr-xr-x 3 user user 4.0K Dec 30 16:31 .local
-rw-r--r-- 1 user user 0 Dec 31 10:03 .motd_shown
drwx------ 3 user user 4.0K Dec 30 16:31 .pki
-rw-r--r-- 1 user user 807 Dec 30 10:00 .profile
-rw-r--r-- 1 user user 0 Dec 30 10:01 .sudo_as_admin_successful
-rw------- 1 user user 12K Dec 30 10:27 .test.swp
-rw------- 1 user user 7.8K Dec 30 11:07 .viminfo
drwx------ 2 user user 4.0K Dec 30 16:31 logs
-rw-r--r-- 1 user user 42 Dec 30 10:57 t.txt
drwxr-xr-x 3 root root 4.0K Dec 30 11:14 t1cd/pwd 命令#
cd 命令#
cd [linux路径]
切换当前所在工作目录
长度命令无需选项只有参数,如果不写参数,则会切换到用户的 Home 目录.
例如: 切换到用户目录下的 t1 目录
$ cd t1切换回 Home 目录
$ cdpwd 命令#
pwd
查看当前工作目录
无选择无参数,直接输入 pwd 即可
$ pwd/home/usermkdir 命令#
mkdir [-p] Linux路径
创建新的目录
参数选项必填,选项可选,表示自动创建不存在的父目录.
$ mkdir t2直接使用 mkdir t3/t32 会报错
mkdir: cannot create directory ‘t3/t32’: No such file or directory所以需要加入选项来创建不存在的父目录
$ mkdir -p t3/t32文件操作命令#
touch 命令#
touch Linux路径
创建文件
touch 命令无选项,参数必填,表示创建文件的路径(相对,绝对,特殊路径符皆可).
cat 命令#
cat Linux路径
查看文件内容(完全显示)
cat 同样没了选项,只有必填参数
$ cat t1.txt123123123
123123123123
1231231231
Print("hello,World")more 命令#
more Linux路径
作用: 查看文件内容,但是 cat 是将内容全部显示出来,而 more 在文件内容过多的情况下支持分页显示(查看过程中使用空格分页,使用 q 退出查看)
cp 命令#
cp [-r] 参数1 参数2
复制文件或者文件夹
- -r 选项可选,用于复制文件夹,表示递归
- 参数 1 : Linux 路径,表示来源的文件或者文件夹
- 参数 2 : Linux 路径,表示要目标文件夹
mv 命令#
mv 参数1 参数2
mv 命令可以移动文件或者文件夹
- 参数 1 : Linux 路径,表示来源的文件或者文件夹
- 参数 2 : Linux 路径,表示要目标文件夹, 如果目标不存在,则进行改名,确保目标存在.
rm 命令#
rm [-r -f] 参数1 参数2 ....参数N
删除文件,文件夹
- 和 cp 命令一样, -r 选项用于删除文件夹
- -f ,表示强制删除(无确认提示,需要注意的是,普通用户不会弹出提示,只有 root 管理员用户会有提示)
- 参数 1 参数 2 ….参数 N 表示要删除的文件或文件夹路径,需要使用空格隔开
rm 命令支持通配符 *,用来做模糊匹配.
符号 * 表示通配符,即匹配任意内容(包括空) . 用法为:
- test* 表示匹配任何开头是 test 的内容
- *test 表示匹配任何以 test 结尾的内容
- *test* 表示匹配任何包含 test 的内容
管道符#
管道符: |
管道符左边命令的结果,作为右边命令的输入
文件查找命令#
wc 命令#
wc [-c -m -l -w] 文件路径
- -c , 统计 bytes 数量
- -m , 统计字符数量
- -l , 统计行数
- -w , 统计单词数量
- 文件路径 , 被统计的文件,可作为内容输入端口
which 命令#
which 要查找的命令
可以查看使用的一系列命令的程序文件在哪里 而前面学期的 Linux 命令实际上就是二进制可执行程序
which 可以查看到命令的文件在哪里
which pwd输出
/bin/pwdfind 命令#
find 起始路径 [-name] "被查找的文件名"
查找指定文件
# find /home/user -name "11*"这里结合通配符来实现复杂一些的搜索
/home/user/11.conf
/home/user/11.txt
/home/user/11.yaml常用参数
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天内创建的文件
-mtime n : 在过去 n 天内修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
grep 命令#
grep [-n] 关键字 文件路径
使用 grep 命令可以从文件中通过关键字过滤文件行
- -n,可选,表示要在结果中显示匹配行的行号
- 参数 (关键字),必填,表示过滤的关键字,带有空格或者其他特殊符号,建议使用
" "将关键字包围起来 - 参数(文件路径) ,必填,表示要过滤内容的文件路径,可作为内容输入端口
$ cat 11.conf
123123123123123
12312312313212312
123123123131312312
asdfafafasdf
fvasvdfvbasffgaer
123423425345236364
$ grep "asdf" 11.conf
asdfafafasdf