目录
一、前言
在我们刚学习Linux的时候,常常会因为Linux环境的配置;或一些指令为什么别人能运行,我的Linux上就连指令都找不到?——有时候我们会玻璃心,心想:会不会我们Linux哪里下错了?又或者会因为指令及其所带的选项太多,导致自己陷入大脑的崩溃?
当我们有问题的时候,想在CSDN上找到疑问的解答,可是要么是一些蹭访问量的水文,要么是那些比较综合性的博客,不能对你的问题做到一针见血(其实认真看完,你的收获定是水涨船高的,但是我们是初学者啊,定然无法快捷的辨析到自己所需要的答案)
倘若你们也有这样的学习困境,那这篇《Linux入门指南》就显得格外重要,建议收藏+关注,让更多有需要的人得到这个优秀的资源。
二、Linux终端命令的介绍
1.终端命令格式
终端命令格式: command [-options] [parameter]
2.说明
- comman:命令名(大多是相应英文单词的缩写);
- -option:可以对命令进行控制与调整的选项,也可以省略;
- parameter:传给命令的参数,可以是一个或者多个;
三、Linux中的一些常见指令
1.文件操作
ls
- 功能:显示当面目录下的文件(无任何选项仅显示文件名)
- 选项:(展示的选项是该指令最频繁使用的)
- -l 显示文件的详细信息
- -d 显示目录的信息,但不显示子目录或(普通文件)
- -a 显示隐藏文件的(说明:在Linux中'.'开头的文件为隐藏文件,其它的为显示文件)
- -F 用于列出目录内容,并在每个输出项后追加文件的类型标识符。这有助于用户快速识别文件的类型。(
*
:表示具有可执行权限的普通文件;/
:表示目录;@
:表示符号链接或软链接;|
:表示命令管道FIFO;=
:表示sockets套接字) - --color=auto 列出文件会根据文件类型显示出颜色(auto:显示到终端时显示颜色,never:从不显示颜色;always:总是显示颜色)
- -i 显示文件的索引值(说明:在windows中标识一个文件,是文件名+文件后缀;而在Linux中并不是这样,而是用唯一的索引值,去标识一个文件,所以Linux中的文件后缀是给我们自己看的。)
- (其余选项,请在终端输入man ls,进行翻阅手册获取)
- 参数:相对路径或绝对路径(至于何为相对路径/绝对路径,请自行查询资料)
- 常见用法示例:ls [选项] [文件路径]
********************************************************************
*我根据自己的习惯对指令进行了重命名(英文alias):
*alias ls='ls --color=auto -F'
*alias ll='ls -l'
*alias la='ll -a'
*现在开始带大家体会一下!!!
*********************************************************************
bash-4.2$ ls #ls='ls --color=auto -F'
SeqList/ SList/ test_24_3_31/
bash-4.2$ ls -l
total 0
drwxr-xr-x. 2 zmh zmh 70 Apr 8 00:01 SeqList/
drwxr-xr-x. 2 zmh zmh 66 Apr 11 17:29 SList/
drwxr-xr-x. 2 zmh zmh 36 Apr 4 17:18 test_24_3_31/
bash-4.2$ ls -a
./ ../ .git/ .gitignore SeqList/ SList/ test_24_3_31/
bash-4.2$ ls -i
268549 SeqList/ 68672290 SList/ 35310525 test_24_3_31/
bash-4.2$ ls -dl ./SeqList
drwxr-xr-x. 2 zmh zmh 70 Apr 8 00:01 ./SeqList/
bash-4.2$ ls -l ./SeqList
total 16
-rw-r--r--. 1 zmh zmh 110 Apr 2 22:35 Makefile
-rw-r--r--. 1 zmh zmh 2692 Apr 8 00:01 SeqList.c
-rw-r--r--. 1 zmh zmh 774 Apr 8 00:01 SeqList.h
-rw-r--r--. 1 zmh zmh 1810 Apr 4 14:56 test.c
pwd
- 功能:显示当前用户所在文件路径
- 选项:(其余选项,请在终端输入man pwd,进行翻阅手册获取)
- 参数:无
- 常见用法示例:pwd
bash-4.2$ pwd
/home/zmh/LS/Linux-c-and-c-project
cd
- 功能:切换用户所在路径
- 选项:(其余选项,请在终端输入man cd,进行翻阅手册获取)
- 参数:
- 文件路径:绝对路径/相对路径;
- . :表示当前目录
- ..:表示上级目录
- ~:当前用户的工作目录;
- -:返回上一次所在路径;
- /:根用户路径 (说明:在Linux中,/ 有两种概念:1.标识文件路径分隔符 2.标识根目录)
- 常见用法示例:cd [文件路径](常与pwd指令配合使用)
bash-4.2$ pwd
/home/zmh/LS/Linux-c-and-c-project
bash-4.2$ cd ~ #回到当前用户的工作目录
bash-4.2$ pwd
/home/zmh
bash-4.2$ cd / #回到根目录
bash-4.2$ pwd
/
bash-4.2$ cd - #返回上一次所在路径(类似于windows下的撤销)
/home/zmh
bash-4.2$ pwd
/home/zmh
bash-4.2$ ls
LS/
bash-4.2$ cd ./LS #相对路径
bash-4.2$ pwd
/home/zmh/LS
bash-4.2$ cd /
bash-4.2$ pwd
/
bash-4.2$ cd /home/zmh/LS/ #绝对路径
bash-4.2$ pwd
/home/zmh/LS
touch
- 功能:创建一个新文件或修改文件的时间
- 选项:(其余选项,请在终端输入man touch,进行翻阅手册获取)
- 参数:文件路径+文件名(若无文件路径,则默认用户当前所在目录下)
- 常见用法示例:touch [文件名](已存在的文件或目录,即进行修改时间操作)
bash-4.2$ ll
total 0
drwxr-xr-x. 5 zmh zmh 79 Apr 11 22:37 LS/
bash-4.2$ touch test.txt #创建了一个文件
bash-4.2$ ll
total 0
drwxr-xr-x. 5 zmh zmh 79 Apr 11 22:37 LS/
-rw-r--r--. 1 zmh zmh 0 Apr 11 22:38 test.txt
bash-4.2$
bash-4.2$ stat test.txt
File: ‘test.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 35041072 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ zmh) Gid: ( 1000/ zmh)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2024-04-11 22:28:45.001074976 +0800 #文件最后一次被读取的时间
Modify: 2024-04-11 22:28:45.001074976 +0800 #文件内容被修改的时间
Change: 2024-04-11 22:28:45.001074976 +0800 #文件的属性或内容被修改的时间
Birth: -
bash-4.2$ touch test.txt
bash-4.2$ stat test.txt
File: ‘test.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 35041072 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ zmh) Gid: ( 1000/ zmh)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2024-04-11 22:31:29.941199608 +0800
Modify: 2024-04-11 22:31:29.941199608 +0800
Change: 2024-04-11 22:31:29.941199608 +0800
Birth: -
知识点补充:
在Linux中一切皆是文件,就算是目录它也属于文件的一种,目录只是文件多个类型的其中一种
文件 = 文件的属性(文件被修改的时间呀,文件被读取的时间等等) + 文件内容
mkdir
- 功能:创建一个目录
- 选项:-p 已递归的形式创建目录(其余选项,请在终端输入man mkdir,进行翻阅手册获取)
- 参数:相对路径或绝对路径
- 常见用法示例:mkdir [-p/其它选项] [文件路径]
bash-4.2$ ls
l1/ LS/ test.txt
bash-4.2$ touch L1 #创建一个目录
bash-4.2$ ls
l1/ L1 LS/ test.txt
bash-4.2$
bash-4.2$
bash-4.2$ ls
LS/ test.txt
bash-4.2$ mkdir -p ./l1/l2/l3/l4 #创建一连串目录
bash-4.2$ tree l1 #以树结构的形式对一个目录进行递归展开,遇到普通文件停止
l1
└── l2
└── l3
└── l4
3 directories, 0 files
bash-4.2$ ls
l1/ LS/ test.txt
rmdir
- 功能:删除空目录
- 选项:-p 递归删除空目录及其父级目录的命令选项(其余选项,请在终端输入man rmdir,进行翻阅手册获取)
- 参数:相对路径或绝对路径
- 常见用法示例:mkdir [-p/其它选项] [文件路径]
bash-4.2$ mkdir LSW #创建一个空目录
bash-4.2$ ls
l1/ L1 LS/ LSW/ test.txt
bash-4.2$ rmdir LSW #删除一个空目录
bash-4.2$ ls
l1/ L1 LS/ test.txt
bash-4.2$ tree l1 #递归展示目录
l1
└── l2
└── l3
└── l4
3 directories, 0 files
bash-4.2$ rmdir l1 #存在子目录就不叫做空目录,故报错
rmdir: failed to remove ‘l1’: Directory not empty
bash-4.2$ rmdir -p l1 # -p 选项的错误理解与使用
rmdir: failed to remove ‘l1’: Directory not empty
bash-4.2$ rmdir -p l1/l2/l3/l4/ #rmdir -p 的正确使用
bash-4.2$ ls
L1 LS/ test.txt
rm
- 功能:删除文件(包括目录)
- 选项:(展示的选项是该指令最频繁使用的)
- -r :以递归的方式删除一个非空目录
- -i :在删除前进行询问(y:表删除,n:取消)
- -d:删除空目录
- -f:无需询问直接删除
- (其余选项,请在终端输入man rm,进行翻阅手册获取)
- 参数:相对路径或绝对路径
- 常见用法示例:rm [-ridf/其它指令] [文件路径]
bash-4.2$ ls
l1/ L1 LS/ test.txt
bash-4.2$ rm L1 test.txt #删除普通文件
bash-4.2$ ls
l1/ LS/
bash-4.2$ ls
l1/ LS/
bash-4.2$ rm l1
rm: cannot remove ‘l1’: Is a directory #删除失败
bash-4.2$ rm -r l1 #以递归的形式删除包括该目录以及其所有内容
bash-4.2$ ls
LS/
bash-4.2$ ls
LS/
bash-4.2$ mkdir -p l1/l2
bash-4.2$ tree l1
l1
└── l2
1 directory, 0 files
bash-4.2$ rm -d l1 # rm -d 其功能与rmdir同类,遇见空目录就删
rm: cannot remove ‘l1’: Directory not empty
bash-4.2$
bash-4.2$ ls
l1/ LS/
bash-4.2$ rm -r -i l1 # -i 选项
rm: descend into directory ‘l1’? n
bash-4.2$ rm -r -i -f l1 # -f 选项,无需询问直接删除
bash-4.2$ ls
LS/
bash-4.2$
说明:
-f 选项 我只知道有这个功能,具体怎么理解我不太清楚,但这个选项又很高频,所以作以展示。
tree
- 功能:以树状结构通过递归展示一个目录
- 选项:(展示的选项是该指令最频繁使用的)
- -a:展示隐藏文件
- -C:以彩色形式区分目录结构,区分文件类型
- -d:仅显示目录,而不是文件
- -F:展示目录的同时,并在每个输出项后追加文件的类型标识符。这有助于用户快速识别文件的类型。(
*
:表示具有可执行权限的普通文件;/
:表示目录;@
:表示符号链接或软链接;|
:表示命令管道FIFO;=
:表示sockets套接字) - (其余选项,请在终端输入man tree,进行翻阅手册获取)
- 参数:文件路径
- 常见用法示例:tree [-aCd/其它指令] [文件路径]
bash-4.2$ tree l1
l1
├── l2
│ └── l3
└── l3
3 directories, 0 files
mv
- 功能:对文件(也可以是目录)进行剪切+粘贴操作,也可以重命名
- 选项:(展示的选项是该指令最频繁使用的)
- -i:当目标文件已存在的时候,会询问是否覆盖;
- -f:当目标文件已存在的时候,会强制覆盖;
- -n:当目标文件已存在的时候,自动忽略;
- (其余选项,请在终端输入man mv,进行翻阅手册获取)
- 参数:文件路径(新的文件名)
- 常见用法示例:(知道什么时候执行移动,什么时候执行重命名就行)
-
bash-4.2$ ls l1/ l2/ LS/ bash-4.2$ mv l2 l1/ #移动 bash-4.2$ ls l1/ LS/ bash-4.2$ mv l1 我有了一个新名字 #重命名 bash-4.2$ ls LS/ 我有了一个新名字/ bash-4.2$ mv 我有了一个新名字 ./文物 #重命名
cp
- 功能:对文件(默认情况下不能拷贝目录)进行复制+粘贴操作
- 选项:(展示的选项是该指令最频繁使用的)
- -i:当目标文件已存在的时候,会询问是否覆盖;
- -f:当目标文件已存在的时候,会强制覆盖;
- -r:用于拷贝一个目录包括它的子文件;
- (其余选项,请在终端输入man cp,进行翻阅手册获取)
- 参数:文件路径
- 常见用法示例:(用法于mv较为类似)
bash-4.2$ mkdir l1
bash-4.2$ ls
l1/ LS/ 文物/
bash-4.2$ cp 文物 ./l1
cp: omitting directory ‘文物’ #拷贝目录报错
bash-4.2$ cp -r 文物 ./l1 #正确拷贝目录方式
bash-4.2$ ls l1
文物/
echo
- 功能:在终端输出字符串或变量内容
cat/tac
- 功能:在终端输出文件的所有内容 (-n选项显示行号)
find
- 功能:在指定路径中查找一个文件
- 常见用法示例:find [路径] [表达式:选项+参数]
[路径]
是find
命令开始搜索的目录路径。如果省略,则默认为当前目录。[表达式]
定义了搜索的条件。find
命令通过表达式来匹配文件或目录。- 只会一个就行:find [路径] -name [文件名]
bash-4.2$ ls
SeqList/ SList/ test_24_3_31/ test_24_4_13/
bash-4.2$ find -name test.c
./test_24_3_31/test.c
./SeqList/test.c
./SList/test.c
bash-4.2$ ls test_24_4_13/
test1
bash-4.2$ find -name test1
./test_24_4_13/test1
bash-4.2$
grep
- 功能:在文件中搜索指定字符串
- 常见用法示例:grep [-r] [字符串] [文件/目录]
more
- 功能:分页查看一个内容(缺少一定的互动性)
- 常见用法示例:more [文件路径]
less
- 功能:分页查看一个内容(互动性丰富,可点击H键查看)——man手册使用的就是less
- 常见用法示例:man [文件路径]
4.其它指令
其它指令有系统信息命令、压缩解压命令、进程管理命令、网络命令等等,但因为是初学者,有些指令咱们很难理解到他的用途,更别说要记忆了。
-
检测网络是否正常
- ping -c3 ping www.baidu.com # -c3 ping3次停下,检测是否能正常上网
- ifconfig #检测网络端口,也可以通过IP地址是否正常来检测是否能正常上网
- ifdown [网络端口] #紧用网络
- ifup [网络端口] 启动网络
bash-4.2$ ifconfig #检查网络端口——ens33,以及IP是否正常
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.254.129 netmask 255.255.255.0 broadcast 192.168.254.255
inet6 fe80::8c21:d26a:6809:8e3e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f4:9c:9f txqueuelen 1000 (Ethernet)
RX packets 20410 bytes 25633549 (24.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9158 bytes 568601 (555.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 80 bytes 6904 (6.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 80 bytes 6904 (6.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:28:08:eb txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
bash-4.2$ sudo ifdown ens33 #关闭网络
Device 'ens33' successfully disconnected.
bash-4.2$ ping -c3 www.baidu.com #通过一个知名网址,检测是否能正常上网
ping: www.baidu.com: Name or service not known
bash-4.2$ sudo ifup ens33 #启动网络
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
bash-4.2$ ping -c1 www.baidu.com #再次检查网络是否正常
PING www.a.shifen.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=128 time=60.1 ms
--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 60.135/60.135/60.135/0.000 ms
bash-4.2$
5.常用热键