打开CLI终端terminal

howard@ss:~$
用户名@机器名:当前位置$
~:用户home目录
cd ~cd howard 效果相同
$:看到$ (dollar 符)指该你输入了。

搞定Linux命令参数,自由使用命令

Linux命令是学不完的,我们只学常用的。

ls :显示当前目录内容
ls -l:具体显示
ls -a:显示当前目录所有内容,包含隐藏文件
ls -A:显示当前目录所有内容,除了(. 、.. )
ls -X:按文件后缀排序
ls -m、ls -1

遇到不会的命令可以通过 man 命令查。格式: man 要查的命令 man 男人, “是爷们就告诉我这个命令是什么”
e.g. man lsman man
也可以互联网上查阅命令,这样有中文的解释
https://wangchujiang.com/linux-command/

windows 里面目录的查看和ls命令功能相似。

Linux 命令可以多种排列组合,如ls -a -m

Linux 根目录

Windows里,有CDEFG。。。各种盘
但是Linux中没有这些各种盘。

D:\DevTool.....
盘符:\ 路径
CDEFG。。就叫盘符

在Linux中,没有盘符的概念。Linux有一句话

Linux,一切皆文件

在Linux中一切都只有文件夹和文件,包括驱动程序都是文件。没有别的东西。

反斜线 /
正斜线 \

\ : 最终的根目录,没有更高层的目录了
cd : 切换目录/进入目录

Linux根目录解析

bin 二进制目录 GNU工具 ls等自带命令
多用户级

cdrom 光盘目录

etc 系统配置文件目录 Windows是注册表和C盘system文件

home 主目录,显示所有用户目录

lib 库目录 与依赖有关 例如A程序启动,要依赖B程序

lost+found 意外断电等情况的文件出现在这里

mnt 挂载目录 U盘、手机、硬盘等 挂载就是外在的设备与电脑连接
Android root sdcard
proc 伪文件系统 与内核有关 新手暂别理解

run 运行目录 文件在使用时保存在run里,关闭时自动从run删除

snap Ubuntu下才有的,放置Ubuntu的应用商店等工具,不用管它

tmp 临时文件目录 (黑客会利用)保存临时文件

var 可变目录 放置log等日志

boot 启动目录 启动文件 开机时干什么

dev 设备目录 Windows里面的设备管理器 与硬件有关 慎动

media 媒体目录 也是挂载点

opt 可选目录 第三方软件包

root 管理员目录,拥有最高权限 它可以修改整个系统文件,乃至删除

sudo rm -rf/*

sbin 系统二进制文件 GNU高级管理员使用的命令工具

srv 服务目录 本地服务

usr 用户二进制目录 ,GNU工具
usr/bin 保存下载的文件 如gcc、python等
usr/share 放置共享数据等

FHS
Linux发行版基本都支持的文件系统层级标准
FHS 每年都会更新 Linux的所有文件系统层级大全都在fhs的pdf中
https://www.pathname.com/fhs/

cd命令

切换用户当前目录

只写 cd :不管在哪里,它默认进入用户目录 ~

cd ../.. : 返回上两级目录
cd - :显示上次进入的目录,并进入上次进入的目录

pwd :打印当前目录

ctrl shift c:复制
ctrl shift v:粘贴

熟悉文件目录

1. 绝对路径

就是一个字——全

Windows上一定从盘符开始:G盘:\文件夹...\文件夹\文件名.后缀名
Linux上一定从/根目录开始:/home/howard/../…..s

特点:无论到天涯海角,一定可以找到它

2. 相对路径

两个字——不全
★ 一定要设置故事背景前提,即你在哪?
相对你而言, 你现在在哪?你的目标相对你而言在哪?

Linux上的路径

howard@ss:~$ gedit /Document/doc/1.txt

Document 文件夹前的 / 使终端认为是根目录。
/?/?/? 找不到Document/…/…
/ 目录中没有 Document/... 但是 gedit 依然会打开一个临时文件,且无法保存。

单点符 . :当前目录
.. :当前目录的父目录

以上命令可以改成:
gedit ~/Document/doc/1.txtgedit ./Document/doc/1.txt
~ 和 此时的 . 都指 /home/howard

ls的进阶用法,及文件夹下的各种过滤

1. ls进阶用法

ls -R:遍历当前目录之下的会显示的所有文件,并继续遍历下去,直到穷尽所有文件。
ls -F:append indicator to entry
一般用 ls -FR ;
还可以:
ls Documents\ -F -R;
ls Documents\ -l -a -R ;
ls -alF
cd Document\docs && ls -alF

&& : 关联两个命令

2. 文件扩展匹配符

* : 代替多个字符
? :代替单个字符
e.g. ls test?.c 找出多个 testX.c 文件。如test1.c 、test3.c
ls *.c 只过滤出出所有.c文件

3. 元字符通配符

更牛逼,完全使用指定的字母范围去匹配。 []

字符 含义
[list] 匹配 list 中的任意单一字符
[c1-c2] 匹配 [c1-c2] 中的任意单一字符 如[0-9][a-z]
{string1,string2} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2} (两个点,不能多,也不能少) 匹配c1-c2中所有字符 如 {1..10}

fuck.txt fxck.txt fack.txt fbck.txt fzck.txt
l -l f[a-x]ck.txt 过滤出只有fack.txt 到 fxck.txt 。无 fzck.txt 。
l -l f[!a-x]ck.txt 加一个感叹号,取反。意味着只过滤出一个 fzck.txt 。其他不打印。

touch 命令

touch 两个功能:

  1. 把已存在的文件的时间标签更新为系统当前的时间。
  2. 创建新的空白文件

touch 旧的文件 :功能1
touch 新的文件 :功能2

touch 也可以创建多个文件,并能和元字符通配符配合使用。
如: touch {1..3}.txt : 创建1.txt, 2.txt, 3.txt
touch fu{a..c}k.md :创建fuak.md,fubk.md,fuck.md

cp 命令

copy的缩写 / 既能复制文件,又能复制文件夹

关键:你想复制的文件?你想复制到哪儿?

  1. cp 源文件 目标文件
  2. cp 源文件 绝对或相对路径
  3. cp -r 绝对或相对路径 绝对或相对路径

cp 不能 目录 复制到 文件 😂 脑子傻了

  • cp 1.txt 2.txt
    • 文件 2.txt 存在,则 2.txt 内容被 1.txt 覆盖。
    • 文件 2.txt 不存在,则 新建 2.txt 。
  • cp -r ./ ../Documents
    • 复制 源路径上的文件 到 目标路径上。
    • 9若目标路径上存在同名文件,则目标文件被源路径上的源文件覆盖。

终端光标移动技巧

  • Ctrl + a :光标移动到开头
  • Ctrl + e :光标移动到行尾巴
  • Ctrl + k :删除光标到行尾的所有内容
  • Ctrl + u :删除光标到行首的所有内容
  • Ctrl + </>(左右方向键) :以单词为单位左右移动
  • Ctrl + y :撤销删除的内容

    .Ink链接文件

    Windows:快捷方式(.Ink) 4.00KB

Linux 有没有快捷方式?
有,但不叫快捷方式。 国际上叫做 .ink file (链接文件) (读作 点link文件)

1. 符号链接(国内叫软链接)Symbolic Link

  1. 以路径的形式存在,相当于windows的快捷方式
  2. 软链接可以对不存在的文件名链接
  3. 软链接可以对目录进行链接
  4. 指向的原文件/文件夹必须是存在的(在工程上)

    2. 硬链接 Hard Link

    指向的原文件/文件夹必须是存在的

形式:ln 1.java 1_linkfile
默认情况下,ln产生硬链接。

ln -s 1.java 1_Slinkfile:创建符号链接。

3. 硬链接和符号链接的区别

  1. 软链接可以跨文件系统,硬链接不可以
  2. 硬链接不允许对目录创建链接
  3. 软链接是一个单独的文件,e.g. 源文件的大小为 0,它的软链接的大小可能不为零。因为软链接是一个单独的文件。硬链接是以文件副本的形式存在,虽然大小和源文件相同,但不占用实际空间。

注意!!:
cp 一个软链接的时候,这个软链接的指向关系会失效。但如果cp 一个目录,这个目录里包含的软链接的指向会被保存。

mv命令

move
功能:

  • Rename SOURCE to DEST,
  • or move SOURCE(s) to DIRECTORY.

mv 移动目录时,不用加-r

骚操作:
mv 移动文件 到新的目录后,用命令cd !$,可以直接跳到新的目录。(只能在mv后使用,不能中间使用其他命令)

rm命令

remove 删除
sudo rm -rf /* ,最危险的命令

一种安全选项:rm 删除文件,最好加一个参数-i
rm -i xxx

rm -r删除目录 (本质是递归删除)
-f 强制删除

mkdir命令

make directories ==> mkdir
创建目录

mkdir -p py/scr/utils : -p 可以创建子目录

文件类型

file 文件
查看文件类型(.c 、.java 、.wav 、.md 、.py)

  1. file README.md
  2. README.md: UTF-8 Unicode text
  3. file 1st.py
  4. 1st.py: Python script, UTF-8 Unicode text executable

查看命令

cat命令

cat file: 查看文件内容

  1. cat hello.c
  2. #include<stdio.h>
  3. int main()
  4. {
  5. printf("Hello World!")
  6. return 0;
  7. }

cat -A file:显示文件中的“换行符”和“制表符”。换行符为$ 制表符^I

cat -n file:显示行号。

more命令

功能类似 cat ,都是用来查看文件内容。

最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。

操作:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more

less命令

更常用(相对于more和cat)

和more不同,more到了最后一行 会自动退出,而less到最后一行 显示的是end,要按q退出。

tail命令

打印出文件最后几行的内容。
也可以指定“最后几行”。

  1. tail -n 2 demo.c

打印 demo.c 的最后两行内容。

head命令

功能与 less 相反,使用方法相同。

ls 根目录解析的思维导图(来自实验楼),补充frank的内容

4-1.png