一,前提
服务器: 一台云服务器(阿里云先嫖一个月),本文配置选centos7.6。
重设root密码:当我们购买好云服务器后(这里以阿里云为例),重置为较为复杂的密码(我们拷贝一份所买云服务器的公网IP)。
下载Xshell: 方便远程访问服务器
安装Xshell:跟着默认走就行,安装成功后开始
(注:**XShell **下的复制粘贴:
复制**: **ctrl + insert (有些同学的 insert 需要配合 fn 来按)
粘贴: shift + insert
ctrl + c / ctrl + v 是不行的)
二, 在root身份下,管理用户
目的:作为小白的我们,root身份权限太大了,出错容易导致服务器崩溃,所以需要创建子用户。
1. whoami——判断身份
2. 创建用户
步骤如下:
3. 销毁用户
步骤如下:
三,文件增,删,移动指令
1. pwd——查看路径
2. ls ——打开当前目录
我们如果发现没有出现目录,那是因为内部没有创建文件,所以就显示没有。
3. touch——创建文件
touch [文件名]
4. nano——打开文件
比如:这里有一个test.c文件,我们打开指令是:
用法: nano test.c
(注意:如果一次使用nano 会发现找不到文件,我们需要切换root身份去输入
Ubuntu / Debian:
apt-get install nano -y
CentOS / Fedora:
yum -y install nano
等待安装成功即可。)
5. ls -l ——以列表形式打印该目录下文件的属性
6. ls -a ——显示隐藏文件
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:(不用记住,以后忘了再查)
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
7. cd ——更改路径
1. cd + 新路径(绝对路径)
语法:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。(补充:几乎所有的操作系统存放文件,都采用多叉树的结构。)
示例:
2. 通过回退机制, cd + .. (相对路径)
这里用上我们前面发现的"." ''..''的隐藏文件
总结:.与..这两个隐藏文件每个目录下都会存在,以便于我们回退路径——当然我们回退到根目录下就不能再回退了。
其他的指令:
cd /home/litao/linux/ : 绝对路径 ————从根目录开始的索引(唯一性)
cd ../day02/ : 相对路径 ————以当前目录开始索引 (多样性)
cd ~:进入用户家目(root用户,对应的工作用户一定是root;普通用户,对应的一定是/home/xxxx)
cd -:返回最近访问目录
8. 写一段简单的c程序
1. 创建一个test.c 文件
touch test.c // 感兴趣可以 ls 验证一下
2. nano test.c 进入test.c文件进行代码编写
3. 执行生成的可执行文件
9. which + 指令 ——找到指令所在的路径
这里我们不禁会想,指令有其路径,那么一定有他的文件。 指令本身是linux自带的可执行程序,那么指令也是文件。
这里我们顺便了解一下alias
1. alias ——取别名
功能:将复杂的指令修改,方便使用。
作用周期:登陆修改持续到退出服务器,退出即重置修改,一方面原因是防止指令名污染
10 . touch 指令
语法: touch [选项] [文件名]
功能:
创建普通文件,同时记录创建时间。
更新创建时间和修改时间。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
11. mkdir —— 创建目录
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录;
如:
图中操作,我们用到了tree -a的操作,这个不是linux默认的指令,需要安装。详细步骤可以参考这位大佬的文章:(3条消息) Linux下tree命令安装及使用_安装tree命令_wangqingchuan92的博客-CSDN博客
12. rmdir & rm
1. rmdir ——删除空目录
*rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir***是删除命令。 **
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
2. rm——删库跑路
*rm***命令可以同时删除文件或目录 **
语法:rm [-f-i-r-v] [dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除文件(无法删除目录)。
-i 删除前逐一询问确认
-r 删除目录及其下所有文件(递归删除)
(1) rm -r
(2) rm -rf
13 . man——手册指令
我们知道在过去我们需要查某些库函数,我们都会去网上或者是MSDN上查,而在linux 上我们可以问这个man。
一般我们需要去root 身份下输入指令安装:(centos7.6)
yum intstall -y man-ages
假如说我们想查询 C语言的printf函数使用:
因此 我们查找手册时需要指定对应的手册页数。
14. cp —— 拷贝指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
常用选项:
-f或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
1. 拷贝单个文件
2. 拷贝目录 cp -rf
-r :是递归的意思,-f是强制的意思跟前面的删除目录意思一致
15. mv——剪切
功能:
1. 移动文件
语法:mv [文件名或者目录] [路径]
2. 对文件重命名
语法:mv [文件或者目录名] [新的文件名或者目录名]
三, 查看,文件处理指令
16. 查看指令
1. cat
语法:cat [文件] 或者是 cat 不加文件(数据输入是键盘也就是标准输入)
功能:只查看文件
缺点:文件一次性全部输出。
常见选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
(注: tac 指令——逆序输出内容,cat指令——正序输出内容)
2. more 指令
跟cat类似,具有查看功能,但more 能分批查看。
缺点:只能下翻不能回头
常见选项:
- -n 对输出的所有行编号, 比如:-10,一次输出10行,回车键再显示下面的(默认设置,是填满整个页面)
- q 退出more
3. less 指令(推荐)
语法:less [参数] 文件名
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit (退出查看)
4. 总结
当我们查看比较少的内容时,可以使用cat 打印出来; 查看比较大的文件时,如查看日志,别人大量代码时,我们用 more / less,其中Less更方便,推荐用less。
休息一下
17. 局部查看
1. head ——查看前面10(默认)行内容
语法: head -n [文件名]
2. tail —— 查看后10(默认)行内容
语法: tail -n [文件名]
3. 查看中间数据
前提须知
了解:输入,输出,追加重定向
假设有10行数据,我想要看3到5行的数据。
方法一: 提取1~5的数据,重定向到新文件中,然后我们取后2行数据;
** 方法二**:通过数据管道
管道传数据可以灵活组合(流水线功能)。比如:cat -n hi.txt | head -5 | tail -2
**18.****时间相关的指令 **
*date***显示 **
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
**1.**在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
常见选项:
- **%H : 小时(00..23) **
- **%M : 分钟(00..59) **
- **%S : 秒(00..61) **
- **%X : 相当于 %H:%M:%S **
- **%d : 日 (01..31) **
- **%m : 月份 (01..12) **
- **%Y : 完整年份 (0000..9999) **
- %F : 相当于 %Y-%m-%d
**2.****在设定时间方面 **
- date -s //设置当前时间,只有root权限才能设置,其他只能查看。
- date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 //设置具体时间,不会对日期做更改
- date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
- date -s “01:01:01 20080523″ //这样可以设置全部时间
- date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
- date -s “20080523 01:01:01″ //这样可以设置全部时间
**3.****时间戳 **
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的
午夜)开始所经过的秒数,不考虑闰秒。
19. cal —— 日历指令
功能: 查看日期
语法: cal [参数][月][年]
常见搭配:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
比如:
cal -y 2023
20. find——查找文件(重要)
语法: find [选项] [文件名]
功能:从文件树中寻找目标文件,可能访问磁盘。
特点:
- Linux下find命令在目录结构中搜索文件,并执行指定的操作。
- Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
- 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
- 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)
这里仅了解一个常见的用法:
find -name [文件名]
21. grep——文件行查找指令
语法: grep [选项] “字符串” 文件名
功能: 从文件中查找符合条件的行,并输出出来
常见选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
借用正则表达式
22. zip & unzip
1. zip —— 压缩
语法: zip [选项] [压缩名+zip] [文件名或者目录]
**常用选项: **
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
实践:
2. unzip —— 解压
语法:
unzip [压缩文件名]
unzip [压缩文件名] -d [指定解压到地址]
23. tar ——打包 & 解包
1. 打包与压缩的区别
打包:把一堆文件或者目录,集合在一个文件中,大小不改变。
压缩:通过压缩算法将文件进行压缩,大小可能是原来的一半甚至是更少。
选项:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfifile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C: 解压到指定目录
简单用法:
- 打包: tar -czf [打包名压缩名] [目标文件]
- 解包: tar -xzf [文件名.tgz] -C [目录或路径]
24. 热键
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可
以用来取代exit。
结语
本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论;如果给小伙伴带来一些收获请留下你的小赞,你的点赞和关注将会成为博主创作的动力。
版权归原作者 花果山~~程序猿 所有, 如有侵权,请联系我们删除。