目录
pwd(Print Work Directory)显示当前工作目录
类unix
Linux的文件层级关系用‘/’表示(windows用‘\’表示)
Linux的文件根目录叫‘/’,也就是斜杠,所以所有的文件开头都是‘/’
路径具有唯一性,在系统层面标识唯一一个文件
命令行:就是那个黑框框
命令:对Linux内核的小咒语
command [-options] [parameter]
命令本身+关于对应命令的可选选项(非必填)+命令参数/指向的对象(非必填)
Ctrl+L | 清屏,和clear同效 |
Ctrl+A | 光标回到起点 |
Ctrl+E | 光标回到最后 |
Alt+Enter | 全屏,退出全屏也是Alt+Enter |
Ctrl+D | 退出登录 |
Ctrl +Insert | 复制 |
Shift+Insert | 粘贴 |
Ctrl+C | 中止异常程序 |
方向键上下光标 | 使用上次的命令 |
ls(list)列出目录内容
ls -a表示显示所有文件(包含隐藏文件/文件夹)
带".."的文件为隐藏文件
ls -l表示以列表形式显示文件
选项可以组合使用
eg:
ls -al,ls -a -l,ls -la三种形式意义相同
ls -lah(以列表展示所有文件并且可以查看内存的单位)
ls -ld显示目录的属性
cd(Change Directory)切换工作目录
如图cd /的意思是切换到根目录
cd:切换到home目录
pwd(Print Work Directory)显示当前工作目录
绝对路径:从根路径开始描述,以‘/’开头
相对路径:以当前目录为起点,到想去的文件,不用加‘/’
特殊路径符:
. 表示当前目录,cd./Desktop==cd Desktop
..表示上一级目录,cd ..切到上一级目录,cd ../..切换到上两级目录
~表示home目录,cd ~/Desktop,切换到home目录下的Desktop
tree命令,以树状形式展现目录
(目前未安装)
输入以下代码可在root用户下安装tree命令
yum -y install tree
输入以下代码可在普通用户下安装tree命令
sudo yum -y install tree
出现该界面安装完毕
为什么命令需要安装?
安装命令是为了方便用户在 Linux 系统上进行各种操作和配置,够简洁够灵活,用户可以根据自己的需求自由配置,适应不同的需求。
命令的本质是程序,在系统的/user/bin下,安装就是把可执行系统拷贝到系统路径下,卸载就是把可执行程序从系统删除
输入tree指令,可以查看当前路径的目录结构
也可以在指命令的后面加上路径(相对/绝对),查看指定路径的目录结构
绝对
相对
mkdir(Make Directory)创建文件目录
格式:mkdir [-p] Linux路径,路径必填
在根目录下创建test1
在test1下创建test2
如何从无到有创造一条完整的路径?使用参数-p
如图,在test1下创建了一条完整的/test1/August/Rest/Few/Time
PS:
崩溃,创建完了告诉我不要在home文件夹之外的地方创建,因为会涉及用户权限问题
rmidr(remove directory)删除目录,只可以删除空目录
删除非空目录时会提示:目录不为空
Touch命令,可创建文件
格式:touch+linux路径,路径必填
如图,在test1中创建test4文件,注意】】】此为txt文件,不是文件夹,图中蓝色的是文件夹,白色的是文件
或者可以用ls -al查看文件类型,蓝圈为文件夹,红圈是文件
红圈内为文件创建时间,文件=文件属性+文件内容,文件属性也会被存储在磁盘内,所以创建一个新文件也会占据硬盘空间。
rm(remove)删除目录或文件
以root账户删除时,会提示“你要删除的是该xxx文件吗”,是的话选择‘y’(yes)否选择‘n’(no)
rm==re -i,此处-i指的是提示,默认rm删除时自带提示
删除目录时需要使用参数rm -r,递归删除,递归的删除目录中的内容
rm -f 为强制删除文件,在删除时不做提示,直接删除
而rm -rf就是强制删除目录
few目录已被强制删除
rm -vr的指令可以看见删除的结果,与rm 的区别是多了红圈的那一句
如果强制删除根目录‘/’,等同于格式化Windows的c盘,会删除除了正在运行的文件之外的文件
cp(copy file)拷贝文件
cp [options] source dest
source是要复制的文件或目录的路径,dest是复制后的文件或目录的路径
拷贝main.c到上一级目录,并且命名为test1,再次ls就出现了test1
linux系统中同目录下不能出现相同的文件
拷贝目录的话需要加入选项cp -r src dest,连着文件目录递归拷贝加入cp -rf src dest
mv(move)在指定目录下,对文件或目录重命名
格式1:mv +文件/目录名+新名字
(将passwd命名为test2)
格式2:mv+文件/目录+路径,剪切到指定目录下
(把test1剪切到hello中)
格式3:mv+文件或目录名+路径/新名字,将文件剪切至目录下并重命名
(将test1剪切到上一级目录,并重命名为test2)
vim(文本编辑器)
使用touch创建新文件
输入vim +你创建的文件名
vim main.c
(如图所示)
然后在黑框框里输入你的代码
之后按esc键,再输入“:wq”(如图所示),就会退出编辑器
用gcc编译并生成可执行程序,如程序有错会显示错误代码,编译成功为以下界面。(格式为 gcc .c文件 -o 输出文件名)
gcc main.c -o out
sudo apt install gcc
如果未安装gcc环境,输入以下代码安装
然后输入y(yes),就安装成功了
输入以下命令,执行代码
./out
(小姐姐又在helloworld了)
whoami显示用户名
格式:whoami[--help][--version]
which查找并显示给定文件的绝对路径
alias给指令起别名
如下图所示:ll等价于ls -l --color=auto,ls等价于ls --color=auto
--color的作用是
PS:total 16是什么意思呢?
首先我们会猜测,“总共16”是不是指文件在磁盘内占用的空间是“16kbytes”?ls -lr指令下的第五列是文件或目录的大小,也就是16k=8360+163?显然不是,那么total 16是什么意思?
在Linux文件系统的存储中有一个“块(block)”的概念,块就像打包好的内存空间,大文件分配的块多,小文件分配的块少,但是为了够用,都采用向上取整来分配。
一个块占用的内存是多少呢?输入下面这个神奇的妙妙咒语
getconf PAGESIZE
就可以获得当前系统的每个块的大小
于是一个block就是4k
计算上图中占用磁盘的内存:8360/4096=2余168,这168也会被分到一个block,再加上下面的163,一共分到了四个block,一个block是4k,加起来就是16k=total16
man(manual)Linux的指令说明书
有问题为什么不问问神奇的man?用户可以通过man+命令查看特定命令的详细说明。可以按方向键控制界面上下翻动,按q(quit)退出
如图所示
man指令还有多种选项可选man+指令,例如man man是查找man自己的说明;在界面内查询关键词可以输入“/关键词”;man -a +指令,显示与该指令相关的手册页等等
Linux man命令:如何优雅的使用Linux命令用户手册(付实例详解和注意事项)-Linux入门自学网 (bashcommandnotfound.cn)
在云服务器中man手册有时候为了部署服务(生产环境)删掉了一些东西,导致手册不全
这时候输入以下代码下载完整的man手册
yum -y install man-pages
nano记事本
nano是Linux下的简单记事本,通过下面的命令安装
yum install nano
安装成功
使用nano的格式为:nano +文件名
可以编辑了,,写入代码
输入./+文件名,执行文件
(执行结果)
cat(concatenate)打印文件内容到输出设备上
格式:cat[-选项][文件名]
如果不加文件名直接cat,相当于文件其实就是键盘端输入的内容,再向显示器写入刚刚键盘端写入的东西,按ctrl+c打断运行,等于屏幕会显示两次键盘端输入的东西
cat -n,显示行号打印
cat -b,不对空行编号
cat -s,不输出多行空行
tac,上下反过来打印(感觉毫无用处)
echo向文件写入
不加文件名则是向显示器写入,向文件写入文件就会多这一行字符串,向显示器写入显示器就会多这一行字符串,所有会直接显示出来。加不加双引号效果一样。
如果要显示双引号要加入转义字符“\”
加文件名则是向文件(磁盘)写入,本来是写入显示器下载变为写入文件,被称为输出重定向
每次写入都会先清空再写入
加”>>"则不清空,追加写入
echo >文件名可以创建一个空文件
什么 是输入重定向?
输出重定向是文件最后写在哪里,输入重定向就是输出的东西从哪来?一般是从键盘端,如果重定向就可以用已有文件输入了,相当于对文件内容提取。
格式为“命令<文件名”
command<filename
验证Linux下皆文件的小实例(真的好神奇)
右键单击选项卡,我们复制一个会话
现在有两个会话了
显示器也是一个文件,那么怎么知道哪个文件对应的是显示器呢
输入以下的妙妙咒语,查找终端
ls /dev/pts/ -l
出现一个这样的界面
怎么判断谁是显示器呢?就要用到之前学的输出重定向了
输入以下咒语
echo "hello Linux" > /dev/pts/1
分别向这几个文件输入“hello Linux”,谁会打印在显示器上谁不就是显示器对应的文件吗?(大彻大雾)
echo "hello Linux" > /dev/pts/2
如图所示,在第二个新建会话里输出了“hello Linux”,也就是说dev/pts/2就是显示器!!
新建会话1的输入
新建会话2的输出
显示器在计算机中是硬件,也就是说我们现在可以直接通过Linux对硬件操作了?
我们现在是在向显示器写数据,那么是不是也可以向网卡写数据?我们可以直接用操作系统操作硬件了!
more查看大文件
首先我们创建一个大文件
i=1; while [ $i -le 100000 ]; do echo "hello Linux $i"; let i++; done
这是一个shell的脚本编写的语句,shell也叫shell script,shell脚本, 跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
上述代码的作用就是从1到100000打印“hello Linux 数字”
如图所示:
但是上述代码不能直接复制粘贴,因为会有csdn上自带的隐形水印之类的的玩意,在使用时应该自己手打或者用vim编辑器打开进入编辑模式,看看会不会出现奇怪的蓝色字符(如图所示)
那么创建文件就是把这行代码重定向输出到一个文件里
i=1; while [ $i -le 100000 ]; do echo "hello Linux $i"; let i++; done > big.txt
创建完成
这种大文件就应该用more命令查看
输入more 文件名,打开big.txt
可以看到左下角有目前大文件显示的进度,目前是0%,空格可以查看下一屏
回车键可以往下滚动一行
b 键可以往前查看一屏
q 键退出
less也是查看大文件
less可以↑↓键换页,很方便,格式也是less 文件名,退出也是q键
head查看文件
格式:head +文件名,默认查看我一个文件或多个文件的前十行
如果想打印别的行数: head -x 文件名
tail和head很像
格式:tail+文件名,默认打印后十行
想打印别的行数,tail -x 文件名
如果要取文件的中间
先去尾,定向到新文件;再去头这个方法需要创建一个临时文件,很耗费内存
还有另一个方法是:head -数字1 文件名|tail -数字2
表示取前【数字1】行的后【数字2】行
其中“|”表示管道,上一条指令“head -5000 big.txt”的数据交给管道,然后传递给下一条指令“tail -11”,第二条指令不需要加文件名了,数据直接来源于上一条指令的数据
查日志也可以用管道来查:tail -50 big.txt | less
wc计算数目
格式:wc [-clw][--help][--version][文件...]
-c或显示Bytes数,计算字节
-l显示行数
-w 只显示字数
date查询时间
直接输入date
想格式化输出
+%H显示小时,+%M显示分钟,+%S显示秒数,+%X相当于+%H-%M-%S
+%d显示天,+%m显示月份,+%Y显示完整年份,+%F相当于+%Y-%m-%d
时间戳
在随机数的生成中,都会用到随机数,因为时间是一直在改变的,也就可以确定每次生成随机数的依据是改变的
时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)北京时间是1970.1.1 8:00:00
至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。
也就相当于一串奇怪的数字,是有对应的时间的
时间戳的转换:
date +%Y-%m-%d_%H:%M:%S -d @时间戳
将指定日期化为时间戳
date -d "2021-08-29 19:27" +%s
cal 日历
格式:cal+年份
cal -3可以查看当前月,前一个月,后一个月的日历
find查找
格式:find / -name 文件名
下图是在根目录检索文件
感觉和which差不多,只不过which在不改变环境变量的情况下只能查找指令
find /usr/bin -name ls就和which一样了
grep查找文件内符合条件的字符串或正则表达式
格式:grep "字符串" 文件名
想显示行号可以加入选项-n,grep -n "xx" 文件名
grep -v "xx" 文件名,除了含”xx"的行,其他行都打印
grep -i (ignore)"xx"可以放大检索容错,不区分大小写地检索
zip/unzip
zip:打包压缩,unzip:解压
打包就是把其他文件塞进同一个目录里,压缩就是根据算法压缩
打包压缩可以防止文件丢失,缩小占用磁盘的体积
安装zip的指令:
yum install -y unzip zip
压缩August文件为August.zip,然后在
格式:zip [选项] <压缩文件名.zip> <文件/目录列表>
压缩完再解压到temp目录里,发现什么都没有
因为目录里面的文件是递归存放的,这么压缩只能压缩最外面的壳子,里面的文件没有压缩到。所以要递归式压缩
zip -r August.zip August
(上图是正确压缩,下图是错误)
然后解压到temp文件夹中
unzip August.zip -d /temp
其他选项(好多好麻烦)
tar也是打包压缩
格式:tar -c(创建新压缩包)z(使用压缩算法 )f (打包并压缩的文件名称)v(可以查看打包过程)打包到的位置.tgz 需要被打包的文件
解压:tar -xvzf 打包到的位置.tgz
sz(把Linux下的文件传输到Windows)
安装:
yum -y install lrzsz
格式:sz 被传输的文件.tgz
rz 回车,可以把windows的文件发给Linux系统
scp(网络间拷贝)
scp(不是scp基金会哦)cp是复制文件到其他位置,scp是复制文件跨网络传输
bc(计算器....)
安装:
yum install -y bc
unname(查看当前机器的内核信息)
64位操作系统
剩下的选项
查看cpu信息
cat /proc/cpuinfo
显示内存信息
cat /proc/meminfo
shutdown(关机)
完全关闭服务器
现在立马关机
# shutdown -h now
指定10分钟后关机
# shutdown -h 10
重启计算机
# shutdown -r now
linux先停服务在关机,不然在高速运作的时候关机,会造成服务器的损坏
服务器不能关机,只能重启