Linux--命令行操作
一、Linux的作用
1.简单的文件操作
2.编程
3.支持系统和网络
二、多账号管理
1、我们需要在root账号下进行,可以用whoami来查询账号身份
2、adduser 你要创建的账号名 就可以创建一个账号
3、ls /home可以查看账号是否创立
4、使用passwd 创建账号名字的来设置账号密码(注意账号不会回显)
5、当我们进入时使用命令ssh 账户名字@你自己的公网ip就可以了
三 、 Liux常见命令行操作
在讲解命令行之前,提出一个问题,如果我新建一个空文件,这个文件要不要占据磁盘空间
答案是肯定的,因为虽然我们没有在文件中存储东西,但他的属性例如:名字,创建的时间等属性都需要占据磁盘。所以必须要记住:文件 = 文件内容+文件属性
凡是要对文件进行操作:
1. 对文件内容进行操作
2.对文件属性进行操作
ls
语法:ls[选项][目录或者文件]
功能:对于目录,该命令列出该目录的所有子目录与文件,对于文件,将列出文件名以及其他信息
常见选项:
-a 列出目录下所有文件,包括以.开头的隐含文件 .表示当前目录..表示上级目录
-d 将目录像文件一样显示,而不是显示其下的文件
-i 输出的i节点的索引信息
-k 以字节的形式表示文件的大小
-l 列出文件的详细信息(看到的是目录里面的内容)
-n 用数字的 UID,GID代替名称
-F 每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行文件的 普通文件
-r 对目录反向排序
-t 以时间排序
-s 在l文件后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件
-1 一行只输入一个文件
示例:
常见的选项可以组合例如:ls -la就等于ls -l -a
pwd
小知识点:linux中路径用/作为路径分隔符,window一般使用\,路径的价值,在于标识文件的为一性和定位目标文件
功能:显示用户当前所在的目录
演示:
cd
小知识点:路径的认识
- Linux系统中,磁盘的文件和目录被组成一颗目录树,每一个节点都是目录或文件 目录结构:
- 其中路上节点(非叶子节点)一定是目录,叶子节点一定是空目录或者是普通文件
- 绝对文件:一般从从/开始,不依赖其他目录的定位方式,具有唯一性,因为每一个子目录都只有一个父节点,一般在配置文件中写入某些文件的配置路径时使用,一般不会随着用户的路径变化而丧失唯一性。
- 相对路径:相对于当前用户所处的目录,定位文件的路径方式,具有唯一性,一般在命令行操作的时候使用./115/code,意思是上级目录中的115目录的code文件
- 理解路径存在的意义:树状组织方式,都为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,具有唯一性。
- Linux下一切皆文件
语法:cd 目录名
功能:改变工作目录,将当前目录改变到指定目录下
演示:
用法:
可以跟绝对路径,或者相对路径
cd -可以跳到上级目录
cd ~可以跳到当前用户(用户分为管理员和普通用户)的家目录(指定用户登录的时候,默认所处的路径,提供默认所处的路径,我们后续所有的操作都在,自己的家目录中操作,管理员的家目录/root,普通用户的家目录/home/普通用户的名字)
touch
小知识点:
stat跟一个文件名可以知道文件的详细属性
我们可以观察到他有三个时间分别是Access访问时间 Modify创造的时间 Change文件属性修改的时间。
语法:touch [选项]..文件..
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
演示:
当前的hello.txt的时间是
我们再一次touch hello.txt
他的三个时间就改变了
常见选项:
touch -a 文件名:只改变access的时间(但具体得看设备自身,下图改变了access和change)
touch -c 文件名 :只改变 Modify的时间(具体看设备,如下图全部改变了)
mkdir
小知识点:可以在我们的xshell下安装一个软件tree,它可以让文件以树状的结构显示
必须在root身份下
yum install -y tree (centos中的安装命令)
apt install -y tree (ubuntu中的安装命令)
语法:mkdir[选项] 文件名
功能:在当前目录下创造一个目录
常用选项:
-p :可以是一个路径名称。此时若路径的某些目录尚不存在,系统建立那些不存在的目录,即依次可以建立多个目录
-f强制删除
rmdir和rm
大部分情况下我们删除会使用rm
rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除命令
语法:rmdir[-p]文件名
使用对象:具有当前目录操作权限的所有者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带一起删除
举例:
rm
可以删除文件和目录
语法:rm -选项
使用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 强制删除,即使文件的属性是只读,都可以删除
-i 删除前逐一询问确定
-r 删除目录及其下所有文件
举例:
如果我们不加 -f那我们就会发现在我们执行删除指令的时候他会询问我们(root身份的时候)
上图我们发现,如果我们直接删除目录是删除不了的,因为目录下有很多文件,例如删除115,那么他其下的d1,d2,d3,d4都要删除,我们加一个-p就可以解决很多问题
man
linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
语法:man[选项]命令
常见选项:
-k 根据关键字搜索字联机帮助
num 只在第num章查找
-a 将所有章节都显示出来,比如man printf 它从第一章开始搜索,知道就停止,用a选项,当按下退出,他会继续往后面搜索,直到所有的章节都搜索完毕
小知识:
man手册分为九章(不同的系统之间可能有差异)
1是普通的命令
2是系统调用,如open,write之类的
3是库函数
4略
5指的是文件格式
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如像environ这种全局变量在这里就有说明
8是系统管理用到的命令,这些命令只能由root使用
9略
which
查找指定命令的路径
我们可以发现所谓的命令其实就是指定路径下(/usr/bin )的一个可执行文件,指令的本质就是有人写了一段可执行代码放在了指定路径下(/usr/bin)所谓的安装软件就是把目标文件拷贝到系统认识的指定文件中;
我们同样可以发现在文件中有一些文件是 类似于 alias ls = .......其实是因为我们由的命令实在是太长了为了方便我们给它取地别名,如上图 ls 其实就是ls -- color.
echo
我们上面所说linux下一切皆文件,我们就可以将打印到显示器上理解为向显示器文件中进行写入
从键盘读取数据到内存中可以理解为从键盘文件里面读取内容
echo文件的作用就是可以打印内容到显示器上
还可以使用输出重定向,向文件中写出 (可以看到的是刚开始我们是没有log.txt的文件的,当我们向它里面写入的时候,系统会自动创建这个文件)
观察发现当我们再一次写入的时候文件里的内容会自动更新,所以我们可以用>文件来实现清空的文件的功能
当我们使用两个>(追加重定向)的时候就会不覆盖来写入内容
cp
语法:cp[选项]源文件或目录 目标文件或目录
功能:复制文件或目录
说明:
CP指令用于复制文件或目录
如:同时指定两个的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
常用选项:
-f强行复制文件或目录,不论目的文件或目录是否已经存在
-i覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理,若源文件或目录的形态,不属于 目录或符号链接,则一律视为普通文件处理
后面接目录,单纯的把文件,拷贝到指定目录下
后面接的文件,拷贝并重命名
因为文件是递归的所以我们没有办法直接复制,必须要加上一个r
mv
mv命令是move的缩写,可以用来移动文件或者将文件改名,经常用来备份文件或或者目录
语法:mv[选项]
改名:
剪切:
如果跟的是一个已经存在的就是剪切功能
剪切加重命名
如果指定的位置,前半段知道后半段不知道,功能就是剪切加重命名
cat
小知识点:文件 = 文件内容 + 文件属性
cat的作用就是对文件内容进行操作
语法:cat[选项][文件]
常用选项:
- b 对非空输出行编号
-n 对输出的所用行编号
-s 不输出多行空行
演示:
tac
对内容倒置输出
more
小知识点:cat适用于小文件、配置文件的打印(一旦打印大型文件就会直接刷屏),more就使用于巨大的文本文件(但是只接受下翻,我们一般使用less)
语法:more[选项]
功能:more 命令,功能类似于cat
常用选项:
-n 指定输出行数
q退出more
演示:
cat 从头打到尾的shuaping
more 先打印全屏,按换行符往下翻
less
less 功能也是对文件或者其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
less的用法比起more更加的有弹性,在more的时候,我们并没有办法向前翻,只能往后面看
但若使用了less时,就可以使用按键来进行前后翻,跟容易用来查看一个文件内容
除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法:less[选项]文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查之前不会加载整个文件
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串 :向下搜索字符串的功能
?字符串:向上搜索字符串的功能
n: 重复前一个搜索(与/或?有关)
N:反向重复前一个搜索(与/或?有关)
q:quit
head
语法:head[选项]。。[文件]。。
功能:head用来显示档案的开头至标准输出中,默认head命令打印其相应的文件的头10行。
选项: -n 行数 显示的行数
tail
语法:tail [选项] 文件
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n 行数 显示行数
由上面的tail和head可以我们可以打印一个文件的前面和后面,但是中间部分怎么打印呢
head -行数 文件名| tail -行数
小知识点:|是管道,是文件,具有传送资源的作用,如下图的意思就是把头5行文件的内容传给|然后再进行tail -3的操作即打印后三行
date
指定格式显示时间:date +%Y:%m :%d
用法:date+标记
显示方面,使用者可以设定预显示的格式,格式设定为一个加号后接数个标记,其中最常用的标记如下:
%H:小时
%M:分钟
%S:秒
%X :相当于%H:%M:%S
%d : 日
%m :月份
%Y:年份
%F:相当于%Y-%m-%d
时间戳
时间到时间戳:date +%s
时间戳到时间:date -d@时间戳
举例:
cal
语法:cal 参数[年份]
功能:用来查看日历等时间信息,如只有一个参数,则表示年份,如只有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月、当前月、下一个月的日历
-j 显示在当年中的第几天(从1月1日开始)
-y 显示当前年份的日历
find
介绍:linux下find命令再目录结构中搜索文件,并执行指定操作
linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它 的选项很多,我们这里只介绍一种。
即使系统中含有网络文件系统,find再该系统中同样有效。
再运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一 个 大的文件系统可能会花费很长的时间
语法:find 文件
功能:用于在文件树中查找文件,并作出相应的处理
常用选项:
-name 按照文件名查找文件(只介绍这一个)
举例:
whereis
功能:用于找到程序的源、二进制、手册 (主要用来找配置文件)
举例:
grep
语法:grep [选项] 搜索字符串 文件
功能: 在文件中搜索字符串,将找到的行打印下来
常见选项:
-i :忽略大小写的不同,所以大小写视为相同
-n: 顺便输出行号
-v : 反向选择,亦即可显示出没有“搜索字符串”内容的那一行。
举例:
nano
小知识:nano就相当于记事本 下载:centos :yum install -y nano ubuntu: apt intall -y nano
语法:nano 文件
功能:让文件以记事本方式打开
ctrl x 退出
zip/unzip
小知识点:把我们的文件数据进行归档,形成文件的过程。作用:网络发送方便(体积小,网络传送速度快),节省磁盘空间
语法:zip压缩文件。zip 目录或者文件.zip 文件名或者目录名
功能:将目录或文件压缩成zip格式(默认在当前目录)
常用选项:
-r :递归,将指定目录下的所有文件和子目录一并处理
举例:
将test 目录压缩到test1中 zip test1/test.zip test
解压到tmp目录中: unzip test.zip -d tmp
如下我们将115打包到114目录下,但是他只是打包了一个目录,如果希望文件都要打包需要加-r命令
rz 直接拖拽
rz sz
小知识点:下载一个lrzsz apt/yum install -y lrzsz
语法: sz 压缩包 rz(直接拖拽文件到linux)
功能:将linux的压缩包传到windows上 将windows的压缩包传给linux
举例
tar
语法: tar [参数] 文件与目录
功能: 打包/解包 ,不打开它,直接看内容
参数:
- c :建立一个压缩文件的参数指令(creat)
-x: 解开一个压缩文件的参数指令
-t : 查看tarfile 里面的文件
-z :是否同时具有gzip的属性?亦即是否需要用gzip压缩
-j : 是否同时具有bzip 2的属性?亦即是否需要用bzip2压缩
-v: 压缩的过程中显示文件!这个常用,但不建议用在背景执行过程
-f :使用档名,请留意,在f之后要立即接档名!不要再加参数
-C:解压到指定目录