请看目录:
目录
【1】指令选项-a和-l可以合并使用:ls -a -l或ls -al
【3】我们可以创建一个隐藏文件,用-a或-al显示隐藏文件编辑
日常写代码可以创建目录code,在code中创建日期目录用于保存代码
例3:重命名:修改 file-bak.txt 为 file.txt-bak ,修改 目录dir 为 mycode
例4:用file.txt-bak 去覆盖 file.txt-1
所有的阻碍你命令行操作,无脑ctrl + c,不能ctrl+z (ctrl+z是暂停任务)。
管道的更多用法:可以级联多个命令,来完成流水线式的数据处理工作
(2)例2:解压到tmp目录:unzip test.zip -d /tmp
21.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d,[ctrl]-r
23.tac 从文件最后一行倒着打印每一行内容,每一行内容不逆序
切换用户命令:su - zsh
1. ls 指令
——————————————————————————————————手动分隔符——
补充知识点1:文件的属性数据
如果我们创建了一一个空文件,在磁盘中占据空间吗?
答:要占用,文件有属性数据->文件的属性数据是数据吗? -> 是的!属性数据也要被保存起来
文件=文件内容+文件属性
我们曾经或者将来要学的所有的文件操作
无非两类:
1.对文件的内容操作
2.对文件的属性操作
——————————————————————————————————手动分隔符——
(1)ls 显示文件名
touch创建文件,mkdir创建目录,pwd显示路径后面会讲,我们先使用起来
(2)ls -l 显示文件更多属性
(3)ls -a 显示Linux系统中的隐藏文件
【1】指令选项-a和-l可以合并使用:ls -a -l或ls -al
【2】隐藏文件介绍:以.开头的文件我们称之为隐藏文件
在任意目录下,都会存在两个隐藏文件 . (当前路径) .. (上级路径)
windows中也存在以.开头的隐藏文件:
【3】我们可以创建一个隐藏文件,用-a或-al显示隐藏文件
【4】cd .. 回到上级路径
. (当前路径) .. (上级路径)
Linux的路径分割符是/ 举例: /home/zsh
windows的路径分割符是: \ 举例:C:\Users\Public\Desktop
/ 是根目录
2.pwd命令
3.cd 指令
(1)cd跟上任何以绝对或者相对路径构建的路径
Linux入口目录是 / 根目录
2. 这颗多叉树的叶子节点, 一定是一个普通文件或者空目录
我们一般”定位”,是通过路径定位的方式,找到文件的!
但是为什么我们都是通过路径方式定位文件的呢? ?
答:任何一个节点,可以有多个子节点,但是任何一个子节点,都只有一个父节点
即:常规的路径定位是具有唯一性
绝对路径和相对路径:
【1】绝对路径
/home/bit/test.c : 是Linux下的“ 绝对路径”:绝对路径是相对于根目录 / 的路径
【2】相对路径(目前比较常用,因为目前大部分仍是指令操作)
假设我们要找文件mytest. c,这个文件的绝对路径是: /home/whb/104 /lesson2/mytest. c
我们不仅可以用绝对路径找到他,我们还可以从lesson1开始通过相对路径找到他:
ls .. /lesson2/mytest. c 就是相对路径:相对路径是相对当前所处的路径,这里就是相对lesson1文件的路径
使用建议:
如果是日常使用,我们推荐相对路径——简单
如果是进行添加配置文件之类,推荐绝对路径——不会出错
查看路径:which
路径分隔符:
百度随便打开个网址
https ://new. qq. com/ omn/20220526/20220526A09NDR00. html 域名
因为linux操作系统中路径分割符都是 /(斜杠),windows系统的路径分割符是 \ (反斜杠),所以可稍微看出来,企业的后端是Linux操作系统
4.touch指令
linux下的hello world 代码
5.mkdir指令(重要)
make director
(1)常规创建一个目录
日常写代码可以创建目录code,在code中创建日期目录用于保存代码
[zsh@ecs-78471 ~]$ mkdir code
[zsh@ecs-78471 ~]$ cd code
[zsh@ecs-78471 code]$ pwd
/home/zsh/code
[zsh@ecs-78471 code]$ mkdir 2022_5_20
[zsh@ecs-78471 code]$ touch test.c
[zsh@ecs-78471 code]$ ls
2022_5_20 test.c
(2)创建一串路径
用-p ,单词路径path的首字母
[whb@VM-0- 3- centos lesson2]$ mkdir dir 创建一个目录
[whb@VM-0-3- centos lesson2]$ mkdir -p dir1/dir2/dir3/dir4/dir5 创建一串路径
6.rmdir指令 && rm 指令(重要):
(1)rm -r 目录 递归删除目录文件
dir1中包含dir2,dir2中包含dir3,dir3中包含dir4,dir4中包含dir5。删除dir1,只能用递归删除rm -r
(2)rm -rf * 全部删除
rm -rf * 相当于 rm -rf ./* 删除当前目录下的所有文件,*是通配符,和谁都能匹配,和哪个文件都能匹配,所以可以达到全部删除的目的
把tar_ package test. zip 这两个全删除的操作:
7.man指令(重要)
1.用途:(询问系统里的那个男人)
man手册分为8章:
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文
件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfifig
-k 根据关键字搜索联机帮助
num 只在第num章节找
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
2.使用
man可以查看不同的手册,在 [选项] 中填1,2,3即可选择: 常见的3个手册
[1] 是查命令。 (默认手册)
[2] 是操作系统提供的,系统调用。例如:fork,open,write
[3] 查C语言。
如果不会man本身的操作,就直接man man查阅
3.安装man手册
安装man手册的指令:root环境下:yum install -y man-pages
举例:
(1)man 3 printf 意思是查C语言的printf
(阅览完后按q退出)
(2)man printf 意思是查命令中的printf
(3)man 2 fork 是查看系统调用接口8.cp指令(重要)
②默认情况,cp不允许拷贝目录的
如果需要,我们应该要携带选项-r(递归的意思)
禁止询问添加 - f: (force强制)
(2)直接在上级目录拷贝并创建一个file.txt-1的文件
(3) cp Makefile lesson1:把Makefile直接拷贝进目录lesson1中
zsh@ecs-78471 104new]$ ll
total 28
drwxrwxr-x 2 zsh zsh 4096 Oct 14 16:58 lesson1
-rw-rw-r-- 1 zsh zsh 74 Oct 18 17:52 Makefile
[zsh@ecs-78471 104new]$ cp Makefile lesson1
[zsh@ecs-78471 104new]$ ll
total 28
drwxrwxr-x 2 zsh zsh 4096 Oct 18 19:34 lesson1
-rw-rw-r-- 1 zsh zsh 74 Oct 18 17:52 Makefile
[zsh@ecs-78471 104new]$ cd lesson1
[zsh@ecs-78471 lesson1]$ ll
total 12
-rw-rw-r-- 1 zsh zsh 74 Oct 18 19:34 Makefile
9.mv指令(重要)
功能:把一个文件或目录移动到另一个目录中。
1.详细功能:
1. 类似于剪切功能: a. 可以剪切普通文件b. 可以整体剪切目录(mv file. txt lesson3)
2.类似于win中的重命名,可以对普通文件,也可以对目录文件进行重命名(mv file-bak.txt file.txt-bak)
指令mv有两个功能,比如mv lesson1 lesson2,我怎么区分是剪切功能还是改名功能?
答:就看lesson2存不存在。
2.常用选项:
例1:剪切普通文件
例2:剪切目录,把 lesson3 剪切进 lesson1
例3:重命名:修改 file-bak.txt 为 file.txt-bak ,修改 目录dir 为 mycode
例4:用file.txt-bak 去覆盖 file.txt-1
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
10.cat命令
功能:打印文件内容(比较适合查看短文本,或者代码)
常用选项:
例1:正序打印cat 和 倒序打印tac
例2:正序打印cat 可以-n ,倒序打印tac 不可以加-n
11.more指令 和 less命令
功能:
类似cat指令,more是查看长文本;less是查看长文本并且可以上下翻(点击键盘的上下键可以上下翻,点回车可以下翻)
例1:
cnt=1; while [ $cnt -le 100000 ]; do echo "hello bit $cnt"; let cnt++; done >file.txt 此指令创建10000行代码,(代码:wc -l file.txt 用于查看文件内容的行数)然后打印内容:如果用cat打印就是刷屏,用more打印就显示满整个屏幕就不显示了(差不多到30行),再输入q退出more
2.more VS less
less支持前后翻,推荐less,不推荐more。
less可以帮助我们进行查看文本,可以用它来进行日志查看!
echo
(1)输出重定向 >
echo "hello world" > hello. txt
> 叫:输出重定向
本来应该写入到显示器的内容,把它写入到文件中,会清空原始文件的内容,进行重新写入
(2)追加重定向 >>
功能:同上,不会清空原始内容,而是在原始文件的结尾进行新增式的写入。
例子1:输出重定向 >
echo "hello Linux" > hello. txt 会覆盖原来文件中的 "hello world"
例子2:追加重定向 >>
同上,不会清空原始内容,而是在原始文件的结尾进行新增式的写入.
(3)单独cat
输入什么,就返回什么。
单独cat:默认会从键盘(标准输入)
键盘当做文件
所有的阻碍你命令行操作,无脑ctrl + c,不能ctrl+z (ctrl+z是暂停任务)。
如果误点ctrl+z,需要输入 fg 1,再ctrl+c 就可以退出
假如暂停了三次cat任务,用jobs显示暂停任务个数,再fg 1/2/3+ctrl c逐个终止
(4)输入重定向 <
输入重定向,把本来应该从键盘文件中读取数据的方式,改成从指定的文件中读取
(5)echo $? 查看退出码
12.head指令 与 tail指令
(1)常规取法
head file.txt 默认打印文件的前10行内容
head -20 file.txt 打印文件的前20行内容
tail file.txt 默认打印文件的后10行内容
tail -20 file.txt 打印文件的后20行内容
(2)如何查看文本的[30000, 30020]?
1.临时文件法
把前30020行存到一个临时文件temp.txt中(输出重定向),再打印这个文件内容的后20行(可行但麻烦)
head -30020 file.txt > temp.txt
ll
tail -20 temp.txt
2.管道法( | 叫管道)
打印文本的[30000, 30020]
head -30020 file.txt | tail -20
hello bit 30001
hello bit 30002
hello bit 30003
hello bit 30004
hello bit 30005
hello bit 30006
hello bit 30007
hello bit 30008
hello bit 30009
hello bit 30010
hello bit 30011
hello bit 30012
hello bit 30013
hello bit 30014
hello bit 30015
hello bit 30016
hello bit 30017
hello bit 30018
hello bit 30019
hello bit 30020
解释:计算机世界:最宝贵的资源->数据(计算机互联网世界的石油)
此处管道相当于把 head -30020 file.txt 放进管道,再拿走管道中后20行数据
管道的更多用法:可以级联多个命令,来完成流水线式的数据处理工作
从前100行拿走后15行,再从这15行拿走前3行
[zsh@ecs-78471 lesson3]$ head -100 file.txt | tail -15 | head -3
hello bit 86
hello bit 87
hello bit 88
13.时间相关的指令
date 命令
(1)显示日期
[zsh@ecs-78471 lesson3]$ date +%Y-%m-%d_%H:%M:%S
2022-06-30_16:41:12
(2)时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒,linux上从8点开始计时 )起至现在的总秒数。
下面的这些值(比如1656578827)是记录从1970年1月1日0点0分0秒开始所过去的秒数
[zsh@ecs-78471 lesson3]$ date +%s
1656578827
[zsh@ecs-78471 lesson3]$ date +%s
1656578835
[zsh@ecs-78471 lesson3]$ date +%s
1656578837
[zsh@ecs-78471 lesson3]$ date +%s
1656578840
日期和时间戳用途是作为日志的一部分
日记的作用:如果你失踪了,可以找到你失踪的时间和原因
日志的作用:与日记一样,具有排查错误的能力! 从尾部看,时间+输出信息+
获得时间戳:
#include <stdio. h>
#include <time. h>
int main()
{
printf("%lu\n",(unsigned long) time (NULL));
return 0;
}
时间戳转换为日期:
[zsh@ecs-78471 lesson3]$ date -d@0
Thu Jan 1 08:00:00 CST 1970
[zsh@ecs-78471 lesson3]$ date -d@1
Thu Jan 1 08:00:01 CST 1970
[zsh@ecs-78471 lesson3]$ date +%Y-%m-%d_%H:%M:%S -d@0
1970-01-01_08:00:00
[zsh@ecs-78471 lesson3]$ date +%Y-%m-%d_%H:%M:%S -d@1656578840
2022-06-30_16:47:20
[zsh@ecs-78471 lesson3]$
日期转换为时间戳:
[zsh@ecs-78471 lesson3]$ date +%s
1656578840
14.Cal指令—日历
cal -3显示本月和前后月的日历 ,(只能-3,-2或-4都不行)
15.find指令:(很重要) -name
查找文件:比如查找头文件
[zsh@ecs-78471 lesson3]$ find /usr/include/ -name stdio.h
/usr/include/bits/stdio.h
/usr/include/stdio.h
/usr/include/c++/4.8.2/tr1/stdio.h
16.grep指令(高频使用)
grep:行文本过滤工具
选项:
-i:忽略大小写(ignore)
v:凡是具有关键字的文本行,去掉,保留没有匹配关键字的行
例1:在文件中找出包含1234的内容
例2:-i:忽略大小写(ignore)
grep -i 'c++' hello.txt 显示所有包含c++或C++的整行内容,不区分大小写(默认是区分大小写的)
例3:-v与-vi / -iv(-v和-i组合)
grep -v 'c++' hello.txt 去掉所有包含c++的一整行的内容
grep -vi 'c++' hello.txt 去掉所有包含c++和C++的一整行内容(-vi / -iv 一样)
例4:-nvi或-niv 在内容前加序号
17.zip/unzip指令:
介绍:
压缩命令:zip——将文件打包并压缩进一个压缩包中(将目录或文件压缩成zip格式)
解压命令:unzip——将文件从压缩包中恢复出来
(zip,unzip把打包和压缩放在在一起执行)
安装:sudo yum install -y zip
或搜索:
使用格式:
zip -r test. zip tar_ package (zip 压缩文件.zip 目录或文件)
unzip test.zip (解压 test.zip ,默认到当前目录下)(默认情况下,几乎所有的解压工具
解压出来的原始数据,都会被放在当前路径下!)
unzip test.zip -d /tmp ——解压到指定目录,解压到tmp目录
(1)例1:zip和unzip使用:
(2)例2:解压到tmp目录:unzip test.zip -d /tmp
(3)小问题:我为什么要打包压缩?
1.节约空间
2.我们下载的软件是压缩包,曾经提供软件的人上传的是压缩包!
所有的软件写好之后,不是只有一个文件的! n个文件——>1个文件便于网络传输,各种部署
所有的互联网公司后台都是Linux系统,开发人员开发的软件,将来都是要部署在Linux系统上的,所以所有的软件都要打包压缩,上传到Linux上, 进行安装部署
18.tar指令(重要)
(1)最重要的两个指令:
【1】czf
打包压缩操作:tar czf test. tgz tar_ package ——把 tar_ package 打包压缩进 test. tgz。
解释:czf(c—creat生成,z—压缩,f—指明新名称)tgz(tar.gz ,tar是打包,gz是压缩,合起来tgz就是打包压缩)
【2】xzf
解包解压操作:tar xzf test. tgz——把 压缩包 test. tgz 解压到当前路径。
解释:xzf(x—解包,z—要解压,f—指明新名称)
和顺序没关系,czf也可以写成zcf等等
tgz和zip只是压缩格式不一样:
这两个压缩文件里面包含的内容是一样的,只是压缩格式不一样,tar.gz格式的文件比zip文件要小不少。tar.gz压缩格式用于unix的操作系统,而zip用于windows的操作系统
(2)其他指令,介绍一个-v 压缩的过程中显示文件
和顺序没关系,vczf和zcvf一样
【1】例1
【2】例2
【3】 例3
指令的选项的顺序没关系:
(3)-C 解压到指定路径下!
相当于 unzip test.zip -d /tmp
(4)tar搭配scp命令使用
在腾讯云机器上 把calServer压缩进code.tgz中,scp命令是把code.tgz 发送到对应IP的阿里云机器的路径下,则另一台阿里云机器就会显示收到code.tgz,在阿里云机器下 tar xzf code.tgz 把code.tgz中的calServer解压出来,就可以正常使用了
19.bc指令——linux下的计算器
20.uname –r指令
[zsh@ecs-78471 lesson4]$ uname -a
Linux ecs-78471 3.10.0-1160.53.1.el7.x86_64 #1 SMP Fri Jan 14 13:59:45 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[zsh@ecs-78471 lesson4]$ uname -r
3.10.0-1160.53.1.el7.x86_64
x86_64简写成x64x86=x86_32
21.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d,[ctrl]-r
[Ctrl]-r按键——搜索历史命令
(1)例1:[Tab]按键
[zsh@ecs-78471 lesson4]$ mo
modinfo modprobe modutil more mount mountpoint
[zsh@ecs-78471 lesson4]$ le
less lessecho lesskey lesspipe.sh let lexgrog
[zsh@ecs-78471 lesson4]$ a
a2p alternatives arping audispd ausyscall
accessdb anacron as auditctl authconfig
addgnupghome applygnupgdefaults aserver auditd authconfig-tui
addpart apropos at augenrules auvirt
addr2line ar atd aulast avcstat
adduser arch atq aulastlog awk
agetty arp atrm aureport
alias arpd atrun ausearch
[zsh@ecs-78471 lesson4]$ b
badblocks bind break btrfs-select-super bzgrep
base64 biosdecode bridge btrfstune bzip2
basename biosdevname btrfs btrfs-zero-log bzip2recover
bash blkdeactivate btrfsck builtin bzless
bashbug blkdiscard btrfs-convert bunzip2 bzmore
bashbug-64 blkid btrfs-debug-tree busctl
batch blockdev btrfs-find-root bzcat
bc bond2team btrfs-image bzcmp
bg bootctl btrfs-map-logical bzdiff
[zsh@ecs-78471 lesson4]$ c
c++ cc chown col cracklib-check
c2ph cd chpasswd colcrt cracklib-format
c89 centrino-decode chronyc colrm cracklib-packer
c99 certutil chronyd column cracklib-unpacker
cacertdir_rehash cfdisk chroot comm create-cracklib-dict
cal c++filt chrt command crlutil
ca-legacy chacl chsh compgen crond
caller chage chvt complete crontab
cancel chattr cksum compopt csplit
cancel.cups chcon clear consoletype csslint-0.6
capsh chcpu clock continue ctrlaltdel
captoinfo chfn clockdiff coproc ctstat
case chgpasswd cloud-id coredumpctl curl
cat chgrp cloud-init cp cut
catchsegv chkconfig cloud-init-per cpio cvtsudoers
catman chmem cmp cpp
cbq chmod cmsutil cpupower
22.file指令
功能:更详细的说明文件类型
23.tac 从文件最后一行倒着打印每一行内容,每一行内容不逆序
24.stat 查看文件属性
stat mytest查看文件属性,linux下的文件通常有三个时间:
Access(访问时间):由于访问/修改内容/修改属性这些操作中,访问是最频繁的操作,如果每次访问或cat查看都修改访问时间的数据 效率低,所以linux内核设置的是积累一定的访问次数才会改变一次访问时间。
Modify(文件内容改变的时间):对文件内容修改,就会改变Modify时间
Change(文件属性改变时间):对文件属性修改,就会改变Change时间,例如下图。对文件内容修改同时也会改变文件属性,则对文件内容修改,也会改变Change时间。
25.which ——查看可执行文件的位置。
which的原理是通过环境变量PATH查找命令(可执行程序)的路径。
[zsh@ecs-78471 ~]$ which ls
alias ls='ls --color=auto'
/usr/bin/ls
[zsh@ecs-78471 ~]$ which "ls"
alias ls='ls --color=auto'
/usr/bin/ls
[zsh@ecs-78471 ~]$ which pwd
/usr/bin/pwd
[zsh@ecs-78471 ~]$ which "pwd"
/usr/bin/pwd
26.alias 起别名
给命令 ls -a -l -i 起别名为 my_104_cmd
27.清空文件操作>log.txt
28.rz,sz命令
(1)rz命令
rz命令(Receive ZMODEM),使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器,注意不能上传文件夹。
当我们使用虚拟终端软件,如Xshell、SecureCRT或PuTTY来连接远程服务器后,使用rz命令可以上传本地文件到远程服务器。输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行rz命令的目录。
命令格式:
rz [选项]
选项说明:
-+, --append:将文件内容追加到已存在的同名文件
-a,--ascii:以文本方式传输
-b, --binary:以二进制方式传输,推荐使用
--delay-startup N:等待N秒
-e, --escape:对所有控制字符转义,建议使用
-E, --rename:已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect:对ZMODEM协议有效,如果目标文件已存在则跳过 -
q, --quiet:安静执行,不输出提示信息
-v, --verbose:输出传输过程中的提示信息
-y, --overwrite:存在同名文件则替换
-X, --xmodem:使用XMODEM协议
--ymodem:使用YMODEM协议
-Z, --zmodem:使用ZMODEM协议
--version:显示版本信息
--h, --help:显示帮助信息
(2)sz命令
①sz命令
(Send ZMODEM)通过ZMODEM协议,可将多个文件从远程服务器下载到本地。注意不能下载文件夹,如果下载文件夹,请先打包再下载
②格式:
rz [选项] [filelist]
命令选项基本与rz相同,请参考上文rz的命令选项或者sz的manual,或者运行命令sz -h查看。
③常用示例
下载多个文件
sz file1 file2 file3
sz和rz命令在实际应用开发中非常实用,有时候我们会经常跑脚本统计数据,需要上传和下载一些大数据量的数据,这时候这两个命令就非常有用了
Linux 不能使用rz/sz 命令?
有的机器可能不能使用 rz/sz 命令,这个时候我们就需要安装 lrzsz
执行以下命令:
yum install lrzsz -y