命令行界面
命令行终端是一个用户界面,允许用户通过输入文本命令与计算机系统进行交互。
比如Windows下, 键入win+R
,然后输入cmd,就可以输入文本指令与操作系统交互了。
Windows有另一个命令行界面Powershell
,它的功能比cmd更强大。
图形化界面
图形用户界面, 通过图形元素(如窗口,图标,按钮,菜单)与用户进行交互。比如,我们想运行桌面的软件,一般通过双击。其实,本质是解释器运行某个指令。
图形化界面本身就是易用, 可视化的操作对于一般的用户友好。
Linux的快捷键
- shift + insert 粘贴
- ctrl + insert 复制
- alt + Enter 全屏切换
基本指令
pwd指令
- pwd指令: 查看·当前所处工作目录
➜ ~ pwd
/home/LiuGuanYi
ls指令
- 语法: ls [选项][目录或文件]
- 功能:对于
目录
,该命令列出该目录下的所有子目录与文件。
对于文件,列出文件名及其他相关信息。
查看当前目录的文件
:
➜ ~ ls
C PowerVim
部分选项介绍:
ls -l
: -l 列出文件的详细信息ls - a
: -a 列出目录下所有的文件(其中包括隐藏文件)。ls -d
: -d 将目录像文件一样显示,而不是默认显示其内部的文件。
➜ ~ ls -l
total 8
drwxrwxr-x 2 LiuGuanYi LiuGuanYi 4096 Sep 21 23:40 C
drwxrwxr-x 5 LiuGuanYi LiuGuanYi 4096 Sep 19 00:21 PowerVim
➜ ~ ls -a
. .bash_profile .ctags.20240919002159 .vim .vimrc.20240919002159 .zshrc
.. .bashrc .oh-my-zsh .vim.20240919002159 .zcompdump-iZ2vc518r9oil4ibtgiqodZ-5.0.2 .zsh.swp
.bash_history C .pki .viminfo .zcompdump-iZ2vc518r9oil4ibtgiqodZ-5.0.2.zwc
.bash_logout .ctags PowerVim .vimrc .zsh_history
➜ ~ ls -d
.
➜ ~ ls -d C
C
➜ ~ ls C
hello.c
关于ls -l ,这展示了文件的详细信息, 比如文件总块数,目录还是文件,文件大小,修改日期,文件或目录名称等等。
关于ls -a,补充一下:
以.
开头的文件是隐藏文件,其中.
表示当前目录,..
表示当前目录。
关于ls -d C,C是我自己演示创建的目录,这种指定目录像文件显示。
如果取消-d选项, 那么会显示其内部文件。
选项可以分批次
ls -l -a -d
或者
ls -ald
cd指令
Linux下一切皆文件, 磁盘上的目录和文件被组织成一个目录树。
绝对路径和相对路径
- Windows下的路径分割符:\
- Linux下的路径分隔符:/
路径:由路径分隔符隔开的多个文件夹构成的字符串
Windows中:C:\User
Linux:/home/test
Linux下访问一个文件,就得找到它,必须通过路径定位。
绝对路径
:
从根节点(根目录)出发,定位一个文件或者目录的路径被称为绝对路径。
相对路径
:
从当前某个文件或目录相对于其它文件或者目录的路径称作相对路径。
数据结构角度,。
直观上,自由树从任意节点定位到其它节点必定存在唯一简单路径。
而且,我们可以有效找到对应, 比如叶子节点是目录树中的文件或者空目录,非叶子节点是目录树中的非空目录这些。
cd
指令: change directory, 功能:改变工作目录。 从当前工作目录进行到指定目录,切换路径。
-> ~ cd ./C
-> C
结合上面的隐藏文件.
和..
这里熟练使用即可
cd .. : 返回上级目录
cd /home/ : 绝对路径
cd ./C : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
cd ./...
是引用当前目录下的文件
下面例子说明, .的作用是引用当前生成的可执行文件hello
➜ C nano hello.c
➜ C cat hello.c
#include<stdio.h>
int main(void){
printf("hello Linux!\n");
return 0;
}
➜ C gcc hello.c -o hello
➜ C ls
hello hello.c
➜ C hello
zsh: command not found: hello
➜ C ./hello
hello Linux!
- 使用nano编辑器创建并打开hello.c文件。—可以自行配置一下nano.
- hello.c文件编辑这么一段简单的C程序
- cat指令打印hello.c文件的内容
- gcc编译文件
- ./hello 运行可执行程序。
touch指令
语法:touch [选项]… 文件…
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
时间戳
Unix时间戳:从1970年1月1日00:00:00 UTC起的秒数。
时间戳就是当前时间减去1970.1.1.00:00:00差值换算的秒数
1.touch指令的 新建文件 功能。
➜ C ls
hello hello.c
➜ C touch hello2.c
➜ C ls
hello hello2.c hello.c
- 更新访问时间
➜ C ls -l hello2.c
-rw-rw-r-- 1 LiuGuanYi LiuGuanYi 0 Sep 22 00:24 hello2.c
➜ C touch hello2.c
➜ C ls -l hello2.c
-rw-rw-r-- 1 LiuGuanYi LiuGuanYi 0 Sep 22 00:26 hello2.c
-a 或–time=atime或–time=access或–time=use只更改存取时间。
-c 或–no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或–time=mtime或–time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
stat
获取文件的时间信息
简单举例:
➜ C stat hello2.c
File: ‘hello2.c’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 1321304 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1008/LiuGuanYi) Gid: ( 1008/LiuGuanYi)
Access: 2024-09-22 00:26:52.973871315 +0800
Modify: 2024-09-22 00:26:52.973871315 +0800
Change: 2024-09-22 00:26:52.973871315 +0800
Birth: -
mkdir
语法:mkdir [选项] dirname
功能:当前目录下创建名为 “dirname”的目录。
比如在C目录下创建名为src
的目录。
➜ C mkdir src
➜ C ls
hello hello2.c hello.c src
选项:
-p, ---parents
, parent是/与目录分割的字符串,可用来一次性建立层次的目录。
➜ C mkdir -p src/src1/src2/src3
➜ C ls
hello hello2.c hello.c src
➜ C tree src
src
└── src1
└── src2
└── src3
3 directories, 0 files
tree
: 输入yum install -y tree
, tree 目录名, 将当前目录及其后续以树状结构展示出来。
rmdir
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的使用者
功能:用来删除空目录
不能直接删除父目录,因为其不为空。但可以通过路径删除子目录。
➜ C rmdir src
rmdir: failed to remove ‘src’: Directory not empty
➜ C rmdir src/src1/src2/src3
➜ C tree src
src
└── src1
└── src2
2 directories, 0 files
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
这样就可以连带删除了。
➜ C rmdir -p src/src1/src2
➜ C ls
hello hello2.c hello.c
rm
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
-r
:强制删除目录及其所下的文件
➜ C mkdir -p src/src1/src2/src3
➜ C ls
hello hello2.c hello.c src
➜ C tree src
src
└── src1
└── src2
└── src3
3 directories, 0 files
➜ C rm -r src
➜ C ls
hello hello2.c hello.c
-rm -rf 目录名称
强制删除该目录所有文件。root用户不会请求确认。
-f
若文件属性为只读(即写保护),亦直接删除。
-i
删除前询问确认。
结尾
时不我待。
提前学习Linux是有必要的,为后面学习操作系统课准备。不过计组,数据库两本书还没看完,现在学Linux会不会太贸然了。
专业课真是压得人喘不过气, 一周能写几篇博客已是不易,不过算了, 走自己的路。
正因逆境多艰辛, 不愿世事扰心志。 风霜已久无人问, 自在天地任逍遥。