目录
1.基础背景了解
2、基本操作系统、linux相关知识
1.操作系统是一款用来管理软硬件资源的软件。
2.对于一个文件来说,是由文件内容+文件属性构成的。空文件(内容为空)也占磁盘空间。
3.linux下的目录结构
4.linux下的删除
5.环境
6.命令
7.设备
8.日志
9.压缩/打包
10.硬件软件架构
11.shell运行原理
12.linux用户
13.权限(重要)
文件访问者的分类
文件信息
文件类型
文件权限
对文件权限的操作
chmod
chown
chgrp
file指令
目录权限
粘滞位
umask
3、基本指令
特殊指令:
用户类
复制、粘贴、键盘上下键、清屏等等
查看当前指令的路径:which 命令
查找指定文件、命令的相关文档(比如头文件、安装文档、压缩包等等):whereis 目标
以树状结构的方式并目标目录为根节点,显示其下的所有目录(注意是所有,包括子目录下的目录和文件,乃至更深的)和文件:tree [目录]。后面的目录是必填的,如果是当前目录,可以填.。
查询文件或目录更详细的属性信息:
printf在linux里也是个内置命令,但也是c语言的库函数内容。
nano可以看作是linux下的记事本,可以在记事本里写东西。
改别名:alias 别名="内容"
重定向、echo
文本处理
热键
linux、windows互传工具
ls
pwd
cd
touch
mkdir
rmdir
rm
man
cp
mv
cat
more
less
head
tail
date
call
find
grep
zip/unzip
.tar指令:
bc
uname
关机
其他(有重复)
1.基础背景了解
会涉及一下计组、操作系统的背景知识。只是简单的提几句
1946年2月14 ENIAC是第一台计算机(最初用于军工的导弹弹道轨迹,微波炉,网络等)
计算机是硅谷模式下诞生的产品,硅谷模式可以自己搜,这里不多说了。
操作系统最初是unix,肯汤普森为主,用汇编写的,后面丹尼斯里奇设计了c语言,2人合力重新用c语言写了unix。之后各类的操作系统出现,比如苹果的操作系统,微软的操作系统,再之后有人仿照unix,写了linux,并将其开源。
linux的开源网站:The Linux Kernel Archives
如果想看早期的源代码,可以去gitee上搜linux 0.11
linux作为开源的操作系统,热度足够,享受了开源的最大效益,在安全、效率、稳定方面是相当出色的。也是企业喜欢用的。谷歌将linux小型化装载在了手机上,也就是现在的安卓,并且也开源了。
总结下:linux广泛应用于:服务器、移动嵌入式、桌面领域、云计算/大数据领域
linux版本:
商业发行版:Debian、Ubuntu、redhet企业级、Centos、Fedora、Kali Linux。
上面的发行版更像是linux的品牌。
但这些品牌的内核区别只在于选择的技术版本上,技术版本:1.2.3.4.5。其实就是linux官网上的版本。
对于版本号,有3部分,比如6.5.13,分别就是主版本号、次版本号、修正次数。次版本号为偶数:稳定版本;奇数:测试版本
2、基本操作系统、linux相关知识
1.操作系统是一款用来管理软硬件资源的软件。
2.对于一个文件来说,是由文件内容+文件属性构成的。空文件(内容为空)也占磁盘空间。
且在学习的所有文件操作,本质上都是对文件内容或文件属性进行操作。
以txt文件举例,文件内容就是txt内你写的东西,文件属性就是该txt文件的 文件名、文件类型、修改时间、文件大小(这里显示的是文件内容的大小)等等。
这两个都是数据,一旦存下,那都是要占据空间的。因此就算你txt文件内什么都没写,但是它本身还是占据一定的空间。
3.linux下的目录结构
我接下来是默认对计算机windows系统有一定的了解,或者说用得挺顺的情况下,针对linux的目录结构进行说明,所以有些词汇就不会特意解释,有需求的可以自行百度。操作系统下,有隐藏文件的概念,在linux中,以.开头的文件,是隐藏文件。
首先是这2个,一个.是当前目录,2个.是上级目录。目录跟文件夹差不多,每个目录下都有这2个目录。
/是linux下的路径分隔符 : /root/cow windows下是\ :D:\meeting tx\WeMeet\3.31.2.441\resources 注意,对于路径来说,前面的一定是文件夹或者说目录,最后的可能是文件,也可能是目录或者说文件夹。 /也是linux下的根目录,跟windows的c盘等盘符有点像。
另外,图中,文件罗列的最左边,是d开头的,说明这是一个目录,另外以-开头就是普通文件。并且显示是root用户创建的文件。
因此,整体的看待linux的目录结构,就是一颗多叉树,或者说是树状结构。从/开始向下展开分支。以树的目光看到,叶子节点一定是普通文件或者空目录,而在叶子结点之前的节点一定是目录。
而访问一个文件的本质,需要先找到它,也就是对一棵树进行节点的查找,如果不理解节点查找,就可以理解为,你要去拜访别人,首先要找到别人的家。而路径就是查找的路径,可以通过路径找到相应的目录或文件。因为树状结构的问题,从根目录到某个叶子结点的路径,有且只有一条,具有唯一性。
而如果对照着windows来看,‘此电脑’就是根目录,c盘、d盘等盘也是一个文件夹或目录,这些盘里面的文件就是其子文件夹,也是树状结构,也符合路径的使用。
不管windows还是linux,从根目录到某个文件的路径,称为绝对路径
以当前目录为参考点,定位一个文件称为相对路径
无论你当前在哪个目录,都能依靠绝对路径定位某个文件,而相对路径,在不同的参考点,可能会不一样。
linux下,root是超级用户,其他用户都是普通用户
家目录 :centos下,/root是root用户的家目录,/home/xxx是xxx普通用户的家目录,
其他的linux发行版也可能是 root和普通用户都是/home/xxxx。
在说清楚家目录前,先说下windows的桌面:其实windows的桌面本质也是一个文件夹,只是用户登录的时候,该用户的家目录里面有桌面这个文件夹,所以windows把桌面这个文件夹里的所有文件(夹)以图标的形式展现在显示器上,就有了桌面,所以windows下不同用户的桌面,看起来可能也是不一样的,因为每个人的桌面文件夹内的文件都可能不一样。用户下载东西时的默认路径,也是家目录下的‘下载’文件夹。
linux也是类似,每个用户的家目录下也有桌面和下载文件夹,只是云服务器默认把桌面和下载给删了。一般的linux系统,现在也有图形化界面的,比如ubuntu。且linux用户默认登陆时所处的目录,就是该用户的家目录
同级目录下,不能有同名文件或同名目录,并且区分大小写
4.linux下的删除
linux下删除就是直接删除了,跟windows的回收站机制不太一样,windows下删除的文件,在回收站待着,直到在回收站里也删掉,才会真正的删除。
5.环境
环境基本分3种,有钱的会多点。
开发环境(自己写的时候的配置环境),测试环境(写完让测试测的时候,测试员用的环境),生产环境(服务真的开放的时候,搭载的环境)。
注意,云服务器基本都是以生产环境为主,内部非常的干净,跟开发相关的内容不一定会装,需要的时候要自己手动安装。
6.命令
命令一般都是存放在/user/bin/目录下的。
命令的本质就是一个可执行文件。把可执行文件放在bin目录下,就可以在任意位置使用该文件。
拷贝可执行文件到bin目录下的操作,可以称之为手动安装一个指令
而系统中的指令大多数是c/c++写的,有部分是python或脚本写的。比如yum就是python,ls就是c语言。
7.设备
大部分的硬件设备,都可以看作是有读写方法的,只不过有些方法为空。
比如显示器,只有写方法,把数据写入显示器,从而让我们看到。键盘只有读方法,从键盘读取数据输入cpu。
基于这种认知,linux下一切皆文件,都是有读写方法,用统一的视角看待各种各样的设备,这也减少了linux系统的编码维护成本。
9.管道
依靠管道,可以做到将数据流向下一个命令。
8.日志
对于一个稍微有规模的服务器,日志是必须的,记录一些关键时间点的关键操作,因为一些程序是一直运行不停止的,没有日志的话,一旦程序出现问题·,就压根不知道是哪里出问题了,依靠日志可以一一排除问题点,直到找到问题。
日志也是分等级的,比如Debug,Normal,Warning,Fatal、Error
9.压缩/打包
要分清楚压缩和打包是不同的。
打包只是把内容统一放在一个包里,而压缩是把内容进行了一定的删减(通过一些算法,尽量不影响使用的情况下删减),然后存放起来。
-----------------------------------------
打包压缩的意义:将多个文件变为1个文件,防止文件丢失(玩游戏的应该经常见到某某文件缺失导致游戏打不开或者什么游戏库文件没安装)。
节省了空间,这个结果本身意义不是很大,现在很多终端设备空间都很大,手机都有几百g了。但是节省了空间,导致传输文件的时候时间大大减少了,这才是最重要的。
常见打包压缩:linux把文件压缩/解压成.tar.gz/tar/tgz等格式的命令大全_压缩成.tar.bz-CSDN博客
10.硬件软件架构
服务器名称、linux内核版本、服务器启动时间、cpu组成
x86是Intel的体系架构。体系架构在狭义上就是cpu的架构,而广义是整个计算机的架构。
x86_64,是64位的x86,默认是x86是32位的。这个位数说明了这个架构下内部的大多数处理的位宽都是64位。
el是centos,7就是centos7
查看体系架构
3.10.0-1160.119.1是技术发型版,.el7是商业发行版 x86_64是芯片架构。
软件+硬件就是体系结构。
查看商业发行版
查看cpu
查看内存空间
Linux系统查看CPU使用率的几个命令_linux监控cpu命令-CSDN博客
top 查看cpu资源使用状态
netstat 查看网络连接状态
free 查看内存资源状态
df 查看磁盘分区资源状态
11.shell运行原理
这个命令行负责接受用户的输入,并反馈给用户,称为shell外壳程序,也可以说是命令行解释器。其中,root是当前用户,VM-8-7-centos是我们的主机名,25-3-22是当前所处的目录
而我们现在用的shell也是个程序,就是bash这个可执行程序
操作系统广义上是内核+外壳,狭义就是单单内核。
而我们平时的操作都是在外壳之上进行的。
在linux外壳就是命令行,而windows就是图形化界面。
-----------------------------------------
Linux 严格意义上说的是一个操作系统,我们称之为 “ 核心( kernel ) “ ,也就是上面的内核,但我们一般用户,不能直接使用 kernel 。 而是通过kernel 的 “ 外壳 ” 程序,也就是所谓的 shell ,来与 kernel 沟通。如何理解?为什么不能直接使用 kernel ?这要从2个方面考虑,第一是操作系统内部细节非常的复杂,一个程序员可以直接对内核正常操作的前提是,这个程序员必须非常清楚操作系统内部的所有细节,而这个显然非常不现实,所以利用外壳,用户不需要理解具体怎么操作,只需要把需求用指令\图形化点击的方式传递给外壳,由它来执行具体的操作。用户——将请求以指令\图形化点击方式传给外壳——外壳——先对请求进行判断,是合理请求,再将请求以操作系统能理解且是正确的方式传给操作系统,否则就反馈错误信息给用户——操作系统——操作系统执行完请求后,反馈执行的结果给外壳——外壳——外壳将反馈结果以用户可以理解的方式展现给用户——用户。为什么外壳要提前判断请求是否合理呢,因为不合理的请求大概率是不安全或不符合条件的,通过这个方式可以一定程度上保护操作系统。-----------------------------------------------------------shell本质是一个在系统启动期间一直在执行的一个程序或者说进程,这个程序在linux下就是bash,不同系统下这个程序,基本都不一样。而对于有风险、用户自定义的指令,shell都是选择创建一个子进程或者说派生类来完成,这样就算子进程执行出错导致崩溃,也不影响shell自己主进程的执行。------------------------------------------------------------每个用户在登录的时候都会被分配一个shell或者说bash,所以就算某个用户登录的时候不小心把自己shell进程杀了,也不影响其他正在登陆的用户。
12.linux用户
linux下用户分为root和非root。
root超级用户:可以在linux系统下做任何事情,不受限制
非root普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”root用户同一个系统下只允许存在一个,而普通用户允许存在多个。
命令:su [用户名] 功能:切换用户。 例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用: su root(root可以省略,也可以写-),此时系统会提示输入root用户的口令 总结下就是普通用户切换到任意其他用户时,都需要对应用户的密码。 root用户切换到任意其他用户时,是不用密码的。
su 用户名。本身虽然切换了用户,但是并没有改变shell环境,比如su root,虽然切换到root,但家目录仍然是普通用户,取消该命令,可以ctrl+d或者输入exit。而su - 则是真正的切换用户,默认的家目录也会变成对应的用户,可以用logout取消切换。
-----------------------------------------------
因此root用户基本都是linux的管理员掌握的。将有限的权限给普通用户,而当普通用户有特殊需求时,必须向管理员发起请求,通过这种方式保证一个linux服务器不会频繁的出事。
而普通用户是不能查看其他普通用户的家目录的。
----------------------------------------------------
sudo命令:
sudo 其他命令。就可以以root的权限执行这个‘其他命令’。注意,sudo之后需要输入自己普通用户的密码,并且在一段时间内,多次执行sudo不需要重复输入密码。
比如sudo touch t1.txt。默认创建者时该普通用户,但如果加了sudo,则创建的文件创建者会是root。
注意注意,不是所有普通用户都可以执行sudo命令,需要提前把该用户加入一个配置文件中(可以理解为白名单),且只有root用户才能将其他用户加入这个配置文件
既然有白名单,肯定也有黑名单。
具体的添加用户在该文件中,可以看后面的内容。
13.权限(重要)
权限本身肯定是用来限制使用者的,限制使用者能做什么不能做什么,并且有些事情不需要限制,比如让一个游戏服务器帮你写数学作业,本身就是不可能的事。
linux 主要是群体和操作对象的属性,因为linux下一切皆文件,所以重点是文件权限。
文件访问者的分类
文件和文件目录的所有者
文件和文件目录的所有者所在的组的用户
其它用户---------------------------
所属组,可以理解为一个部门,一个部门里有很多人。
默认一个用户创建出来,就有一个以自己用户名为名字的组。
组操作:
添加用户组 要添加一个新的用户组,可以使用groupadd命令。其基本语法如下: groupadd [选项] 用户组名 ----------------------- 常用选项包括: -g GID:指定新用户组的组标识号(GID)。 -o:允许新用户组的GID与现有用户组的GID相同。 --------------------- 例如,添加一个名为group1的新用户组: groupadd group1 ----------------- 指定GID为101的新用户组: groupadd -g 101 group2 ---------------- 删除用户组 要删除一个已有的用户组,可以使用groupdel命令。其基本语法如下: groupdel 用户组名 ----------- 例如,删除名为group1的用户组: groupdel group1 ------------------------------------- 修改用户组 要修改用户组的属性,可以使用groupmod命令。其基本语法如下: groupmod [选项] 用户组名 -------------------- 常用选项包括: -g GID:为用户组指定新的组标识号。 -n 新用户组名:将用户组的名字改为新名字。 ---------------------------- 例如,将group2的GID修改为102: groupmod -g 102 group2 ---------------------------------- 将group2的名字改为group3: groupmod -n group3 group2 ------------------------------- 为组添加用户 要将用户添加到组中,可以使用usermod或gpasswd命令。usermod命令的基本语法如下: usermod -aG 用户组名 用户名 ----------- 例如,将用户user1添加到group1组中: usermod -aG group1 user1 -------------------------- gpasswd命令的基本语法如下: gpasswd -a 用户名 用户组名 例如,将用户user1添加到group1组中: gpasswd -a user1 group1 ------------------------------- 从组中删除用户 要将用户从组中删除,可以使用gpasswd命令。其基本语法如下: gpasswd -d 用户名 用户组名 ---------------------- 例如,将用户user1从group1组中删除: gpasswd -d user1 group1
-----------------------------------
用户操作:
添加用户 要添加一个新用户,可以使用 useradd 命令。该命令允许指定用户的主目录、用户组、登录 Shell 等。 例如: # 创建一个名为 sam 的用户,并为其创建主目录 /home/sam useradd -d /home/sam -m sam -------------------------- # 创建一个名为 gem 的用户,指定其登录 Shell 为 /bin/sh,主组为 group, 附加组为 adm 和 root useradd -s /bin/sh -g group -G adm,root gem --------------------- 删除用户 要删除一个用户,可以使用 userdel 命令。可以选择是否删除用户的主目录。 例如: # 删除用户 sam 及其主目录 userdel -r sam -------------------------------- 修改用户 要修改用户的信息,可以使用 usermod 命令。例如: # 修改用户 sam 的登录 Shell 为 /bin/ksh,主目录为 /home/z, 用户组为 developer usermod -s /bin/ksh -d /home/z -g developer sam ---------------------------- 管理用户口令 用户口令的管理可以使用 passwd 命令。超级用户可以为任何用户设置口令, 普通用户只能修改自己的口令。 例如: # 为用户 sam 设置新口令 passwd sam ------------------------------- 查看用户信息 要查看系统中的所有用户信息,可以使用以下命令: # 显示所有用户信息 cat /etc/passwd ---------------------- # 仅显示用户名 cut -d: -f1 /etc/passwd ----------------------- # 显示系统中的所有用户信息,包括本地用户和网络用户 getent passwd --------------------------------------- # 仅显示用户名 awk -F: '{print $1}' /etc/passwd
------------------------------------
并且对于一个用户来说,比如一个root,他有可能既是root用户,也是root组。
一个普通用户本身是一个所有者,同时也是用户组,也可能是other。
也就是说一个用户可以同时扮演多个角色。
比如,张三可以是学生(所有者),同时学生本身也是一个群体(组)。
又可以这么想,张三是清华大学的学生(所有者),清华大学的学生本身也是一个群体(组),张三相对于北京大学的学生又是other(其它用户)
文件信息
文件类型
-----------
2-10位:文件权限。其中前3位:文件所有者权限;中3位文件所属用户组权限;后三位:其他用户的权限。
----------------------
连接数
---------------------
第一个,是文件所属的用户。
第二个,是所属用户所在的组
------------------------
文件大小,单位B
----------------------------------
文件最新的修改日期。
----------------------------------
文件名
文件类型
d:文件夹/目录-:普通文件l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)p:管道文件c:字符设备文件(例如屏幕等串口设备)s:套接口文件------------------------windows下文件类型通过后缀名来区分,比如.exe可执行程序,.com,.png等等而linux,则是通过文件信息中第一个字符区分(不代表不用后缀,后缀也有一定作用)事实上,我们用linux执行一个可执行文件,不管这个文件被后缀名被改成什么样,都可以被顺利的执行,但是如果是对于某些工具和命令来说,其执行的过程对文件的后缀是有要求的,比如gcc想要编译c语言文件,那就需要对.c后缀的文件执行,如果是其他文件,则无法识别,导致gcc无法执行。因此为了养成良好的习惯,外加符合某些格式需求,依旧要求尽量认真对待后缀。--------------------------------------普通文件:包含文本、图片、源代码、视频、库文件、可执行文件等。目录:就是文件夹,mkdir创建的,可以存放文件或目录。块设备文件:
block,常见的有磁盘
dev存放的是硬件信息。vda是云服务器下的磁盘,一般普通电脑可能是sd或hd,sd是scsi、sata、usb磁盘,hd是ide磁盘。基本上支持随机访问的硬件,都是块设备文件。字符设备文件:典型的就是键盘、显示器,访问写入的方式都是按顺序读写的。像是云服务器的黑色终端,本身也是一个文件,存放在dev下的某个位置。
当我多开个终端:
还可以这样,通过重定向,把内容直接显示在另一个终端
如果是虚拟机的话,会放在tty文件里。链接文件:形象的形容,那就是windows下的快捷方式,主要是节省访问路径非常深的文件时冗长的指令。
如图所示,创建了一个链接文件,可以快捷访问指定路径。管道文件:
这是个管道文件![]()
可以利用管道文件,在2个终端间互相传输信息。
套接口文件:socket
文件权限
读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
“—”表示不具有该项权限-------------------------------------注意,在上面的3位3位中,rwx是固定的搭配,第一个只能是r/4 或者是-,表示是否有读的权限,其他以此类推。这个4、2、1是这3个权限对应的8进制数字。可以不写rwx,用对应的8进制表示,比如001就是--x;010就是-w-;rw就是110,也就是6;rwx就是111,也就是7。--------------------------------------------------注意,有x不代表这个文件一定可以执行,一个文件可执行必须有2个条件:第一就是使用者必须有可执行的权限,第二就是这个文件必须是可执行文件(比如你要求执行一个txt文件,很显然是不对的,但如果是out文件就可以)。---------------------------------------------------linux对权限的匹配,是从所有者->所属组->其他用户。如果你是所有者,那就直接按照所有者的权限对你的行为进行检查,哪怕你还是所属组的成员。linux先看你是谁(只会匹配一次),然后看你有什么权限。形象的理解就是,如果所有者和所属组的权限冲突了且你既是所有者也是所属组的成员,也只看所有者的权限。------------------------------------------------------另外,权限对root来说没有用,就算一个文件的所有权限都是-,root也能随意使用这个文件。
对文件权限的操作
chmod
功能: 设置文件的访问权限格式: chmod [ 参数 ] 权限 文件名------------------常用选项:R -> 递归修改目录文件的权限---------------------------------注意:只有文件的拥有者和root才可以改变文件的权限---------------------------------一般格式:+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户----------------------------------------------chmod o+w /home/t2.txt chmod g-x /home/t3.txt chmod u=r /home/t1.txt chmod g+wx /home/t3.txt chmod o-w,g+x,u-r /home/t3.txt chmod ugoa+-=rwx,.... filename
这个a,就是同时对u、g、o操作。
--------------------------------------------
还可以这样写
chmod 664 /home/t1.txt chmod 640 /home/t2.txt 注意,第一位8进制对应u,第二位对应g,第3位对应o。 具体的8进制数字看上面文件权限的部分。
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名--------------------------------------------------常用选项 : -R 递归修改文件或目录的拥有者-------------------------------
注意,root用户可以随意把某个文件的拥有者更改,不需得到原拥有者和新拥有者的同意。如果是普通用户创建的文件,该普通用户想把拥有者改变另一个人,那么会被提示不允许,只能选择sodu或者切换成root用户。----------特殊语法可以同时改拥有者和所属组。比如:
-------------------------------
chgrp
功能 :修改文件或目录的所属组格式 : chgrp [ 参数 ] 用户组名 文件名--------------------------------常用选项 : -R 递归修改文件或目录的所属组------------------------------跟chown类似,只有root用户和普通用户sodu之后才能更改所属组。
file指令
功能说明:辨识文件类型。
语法: file [选项] 文件或目录...
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容---------------------------
file这里识别的文件类型,是针对后缀的,比如.c文件,.txt,.exe,目录等等
甚至,对于link文件,也能识别其指向的文件类型。
目录权限
可执行权限x:允许进入目录的权限(cd)
可读权限r:允许查看目录下的文件属性文件列表等(ls等命令)
可写权限w:可以改目录下文件名字,创建文件,删除文件。(注意,文件其他属性不受w限制)
root依旧不受这些限制。
普通文件(图片、txt等)默认权限是666(因为可执行文件在所有普通文件中占比不高,所以linux会选择统一默认不加)
目录文件默认权限是777。
但事实上,我们会发现,目录和普通文件预设的权限是775和664(一般来说)
------------------
注意,如果目录是普通用户test1创建的,里面有个文件是root创建的,这种情况下,普通用户也是可以删除root创建的这个文件。
总结一下,就是一个文件能否被删除,并不取决于文件本身的权限,而是取决于在文件所处目录,执行删除文件操作的用户是否具有w权限。
因此,为了防止普通用户之间乱搞,像是一个用户的家目录,只有该用户有rwx权限,其他都是0,这样就只有root和有root权限的用户可以到处做事情。
------------------------------
但是在某些特定需求下,我们需要不同用户可以共享资源,这时候,linux根目录下就有一个tmp的目录,这个目录是自动生成,所有者是root,其他用户对于这个目录有rwt权限。
这个t是个新的权限,我们先不说,如果是一般的777,也就是rwxrwxrwx权限,这样的话,不同用户确实可以共享数据,但是不同用户之间也可以进行互删对方文件的操作,这样就违背了共享的初衷。
因此,有了新的概念,
粘滞位
[root@localhost ~]# chmod +t /home/ # 加上粘滞位 [root@localhost ~]# ls -ld /home/ drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/ [root@localhost ~]# su - litao [litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件 rm:是否删除有写保护的普通空文件 "/home/abc.c"? y rm: 无法删除"/home/abc.c": 不允许的操作
----------------
t可以理解为x的延伸,具有x的意义,也可以做到特殊的限制:
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除因此一般是对于共享目录才给t,另外t和T是针对other的
----------------
先假定*是随机权限
注意,如果是********x情况下chmod +t 是********t,而如果是********非t 的情况下chmod +t
会变成********T。
T和t都有前面特殊的限制,但是区别在于,t有x权限,T没有x权限
umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777(这里的0,可以看作是八进制的标志)
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask形象说,就是转换成2进制后,mask和umask进行比较,umask位为1的,且mask对应位也为1的,mask该位的1变成0,其他不变,如果对应不为1,则无变化。更加形象的就是说,umask中有的,mask不能有。
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
实例:# umask 755 # umask //查看 # umask 044//设置
3、基本指令
现在很多云平台都有相应的在线控制台,但我平时还是以Xshell为主。
在xshell7下,是直接在终端输入ssh 用户名@服务器公网ip,然后输入密码来进入云服务器的。xshell8下是直接输入ip,然后输入用户名、密码即可。
xshell本质就是通过网络与云服务器连接,输入的指令、反馈的结果都通过网络来传输。
特殊指令:
用户类
在root账户下:
添加用户:adduser 设置的用户名(英文)
设置密码:passwd 用户名
然后输入2次密码即可。
删除的话usedel -r 用户名
-------------------------------------------------
复制、粘贴、键盘上下键、清屏等等
复制 : ctrl + insert粘贴 : shift + insert全屏/返回全屏:alt+enter
检查自己当前登录的用户名:whoami
检查当前在登录的用户:who
清屏:clear
-----------------------------------------------------
查看当前指令的路径:which 命令
which命令不需要指定路径,是有配置环境变量,自动在默认设置的一些路径下查找,比如/usr/bin下找指令,因此速度和效率比find快很多,但find更加全面,什么都能找。which默认配置只能找指令。
-------------------------------------------------------------
查找指定文件、命令的相关文档(比如头文件、安装文档、压缩包等等):whereis 目标
主要是当有些文件不记得在哪了,想快点找到。
可以用通配符,*任意个字符
-------------------------------------------------------------
以树状结构的方式并目标目录为根节点,显示其下的所有目录(注意是所有,包括子目录下的目录和文件,乃至更深的)和文件:tree [目录]。后面的目录是必填的,如果是当前目录,可以填.。
如果tree命名没有安装,要先安装。命令装了之后所有用户共享的。
---------------------------------------------------------------------------
查询文件或目录更详细的属性信息:
Modify 指最后一次修改数据的时间,当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。
Change 指最后一次修改元数据的时间 ,当该文件的“状态”改变时,就会更新这个时间,也就是说,当文件的权限与属性被更改时,就会更新这个时间。
Access 指最后一次读取的时间,当“该文件的内容被取用”时,就会更新这个读取时间。举例来说,我们使用cat去读取一个文件时,就会更新该文件的Access time。
------------------------------------------------------------------------------------------------------
printf在linux里也是个内置命令,但也是c语言的库函数内容。
作为内置命令,可以按c语言的格式输出内容。
--------------------------------------------------------------------------------------
nano可以看作是linux下的记事本,可以在记事本里写东西。
安装:yum install -y nano
退出ctrl+x
---------------------------------------------------------------------------------------------
改别名:alias 别名="内容"
但在命令行中定义的别名,在xshell关闭后,会自动清除,如果要永久留存,需要改配置文件。
---------------------------------------------------
重定向、echo
输出内容:echo "要输出的内容"
会直接在终端输出内容。
----------------------------------------------------------------------------------
输出重定向:>
结合echo,可以这样使用。
其中t1.txt文件可以存在可以不存在,不存在的话会直接创建。另外echo自带换行
怎么理解?echo默认是将内容打印在显示器上,也可以理解为向显示器文件进行写入,但通过>重定向,可以把输出的方向改为其他文件,写入了其他文件。
依靠这个,创建文件时,甚至可以不用touch命令:
本质就是把空写入了指定文件,因为指定文件不存在,所以自动创建了该文件。
要注意,每次重点向,都会把指定文件的内容先清空,再写入。
依靠这个,当我们想清空文件的时候,也可以这样:
本质就是依靠echo清空了文件内容,然后把空内容写入了该文件。
-----------------------------------------------------------------
追加重定向:>>
-------------------------------------------------------------------
输入重定向:<
结合cat的使用,因为不跟文件名时,是默认从键盘读取数据,写入显示器,利用输入重定向,可以从文件读取内容。
这3种重定向,可以理解为对文件的读、追加、写,也就是w、a、r
-----------------------------------------------------------------------------
简单的while循坏。
可以批量执行命令。
结合重定向,甚至可以快速的生成重复内容写入文件
----------------------------------------------------------------------------------------------------、
文本处理
文本排序:sort 文件
默认按ascll码排序。
-------------------------------------------------------------------------------
文本去重:uniq 文件
默认去除相邻行重复的。
选项-u就是默认。
-d是只输出重复行
但这样去重不彻底,所以先sort一下,让相同的连在一起,再用uniq去重即可。
-c选项可以把出现次数显示出来。
----------------------------------------------------------------------------------------------------------
字符统计:wc 选项 文件
-l统计行数(包括空行)
----------------------------------------------------------------------------------------------------
热键
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit上下键可以查看历史命令。history可以查看服务器开机至今用过的历史命令。连续2下tab![]()
linux、windows互传工具
yum install -y lrzsz
传入linux直接拖
传给windows,就sz 文件名
如果是linux互传,则scp 压缩包\文件 对面机器用户名@该机器公网ip。
然后输对应用户密码,即可。
有时候想在本地写程序,弄个centos虚拟机什么的,然后写完把程序打包压缩上传到云服务器,就是上传部署。
ls
用法:ls [选项][目录或文件]
用途:罗列当前目录下的文件信息常见功能选项:不加粗的,目前不会过多的解释,随着后面知识的深入,会逐个解释-a 列出目录下的所有文件,包括以 . 开头的隐含文件。(只有文件名,如果想全部属性,可以ls -la或者ls -l -a,l a的顺序不限制,都可以)
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。(显示文件属性,比如修改时间等,不包含隐藏文件)(这个命令很常用,所以有相应的简写ll,怎么做到简写,以后文章里会写)
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表
示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。-----------------------------------单单的ls,只是打印当前目录下的文件名(不包含隐藏文件)属性。如果是路径 ls,可以显示不同路径或目录下的文件。![]()
![]()
![]()
pwd
直接pwd即可,功能就是显示当前所在的目录。
cd
用法:cd 目录名
用途:改变当前用户所在的工作目录
简单举例:
cd .. : 返回上级目录 cd /home/litao/linux/ : 绝对路径 cd ../day02/ : 相对路径 cd ~:进入用户家目 cd -:返回最近访问目录 cd . :进入当前目录
关于linux下的目录等知识,看上面。
如果一直cd ..的话,最后会返回到根目录,然后不变。根目录的上级目录还是自己(根目录)。
touch
语法:touch [选项] 文件名
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者在当前目录下新建一个不存在的文件。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-c 或--no-create 不建立任何文档。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。--------------------------------------------------------------------------------
文件名前面加 . ,就可以创建隐藏文件,并且可以同时创建多个文件,以空格隔开,另外后缀名不一定要。
touch a1.txt
多次同目录下创建同一个文件或目录,是在更新时间。
mkdir
语法: mkdir [ 选项 ] dirname...功能 :在当前目录下创建一个名为 “dirname” 的空目录,可以同时创建一串目录或者说路径。常用选项 :-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;---------------------------------------------------------------------注意,如果不用-p选项的话,只能创一个目录cd进去再创一个目录。![]()
![]()
rmdir
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm命令可以同时删除文件或目录------------------------------------------------------------
rm
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除,可以不用敲y或n
-i 删除前逐一询问确认
-r 删除目录及其下所有文件--------------------------------------
对于root用户来说删除自己创建的文件,默认是带询问的,普通用户不会。
千万注意,不要rm -rf / 在root下这样会强制删掉所有文件,系统会直接崩掉,云服务器的话可以重置一下,虚拟机也可以用快照来恢复。
另外,*作为通配符,可以全删某个目录下的文件和目录。但隐藏文件无法用*的方式删除,必须指名道姓的删除。
man
Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是man 语法 : man [ 选项 ] 命令常用选项:-k 根据关键字搜索联机帮助
num 只在第num章节找,也就是man 章节 命令
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。---------------------------------------------------------------------------------
手册有8章,访问方式man man,退出按q
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文
件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig-------------------------------------------------------------------------------------云服务器默认是没有装太多的章节的,只有1、2章的样子,要手动安装yum install -y man-pages
cp
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,
则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存
在的目录,则会出现错误信息------------------------------------------------------------------------------
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理------------------------------------------------------------------------------------------------
拷贝同名文件目录到同级目录下,默认报错,如果一定存个同样的文件,可以换个名字存。
目标文件如果不存在的话,是直接创建个新的文件。
拷贝目录的话,加个-rf即可。
注意,如果强制拷贝某个目录到该目录,则是把该目录放在原该目录下。dir/dir
--------------------------------------------
如果只想拷贝某个目录下的内容而不拷贝该目录本身,源目录/*
隐藏文件只能指定拷贝。
mv
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖-------------------------------------------------------------------------------------------
因此,linux下的重命名,本质就是剪切源文件目录,以新的名字到同级目录下。
cat
语法 : cat [ 选项 ][ 文件 ]功能 : 查看目标文件的内容----------------------------------------------常用选项 :-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行----------------------------------------------------
本质就是在读取文件的内容,将内容写入到显示器文件。
---------------------------------------
tac跟cat几乎一样,只是tac是逆序输出。
----------------------------------------
当cat后面不跟文件名,那么就是输入什么,输出什么。退出用ctrl+c
本质就是cat从键盘文件读取什么,就向显示器文件写入什么。cat默认是从键盘读取内容。
这个特性可以跟输入重定向结合,请看上文。
---------------------------------------------------cat基本就是用于打开一些简短的文件,只是简单的看下内容。
more
语法 : more [ 选项 ][ 文件 ]功能 : more 命令,功能类似 cat--------------------------------------------------常用选项 :-n 对输出的所有行编号
q 退出more-----------------------------------------------------对于大文件,会先打印到满屏,然后通过回车,一行行的输出。![]()
less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜-----------------------------------------------------------------------------
语法: less [ 参数 ] 文件功能 :less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。-----------------------------------------------------------------------------常用选项:-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit---------------------------------------------------
head
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示文件的开头至标准输出中,而 tail 想当然尔就是看文件的结尾。语法: head [ 参数 ]... [ 文件 ]...功能 :head 用来显示文件的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。选项 :-n<行数> 显示的行数
tail
tail 命令从指定点开始将文件写到标准输出 . 使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件 ,tail - f filename会把 filename 里最尾部的内容显示在屏幕上 , 并且不断刷新 , 使你看到最新的文件内容 .------------------------------------------------语法: tail[ 必要参数 ][ 选择参数 ][ 文件 ]功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。------------------------------------------------选项:-f 循环读取
-n<行数> 显示行数------------------------------------------------------
如果我们只想文件的其中x行,那么可以head和tail配合使用,先head/tail提取前/后n行,然后tail/head提取前/后x行。但这样的话,需要一个临时文件存储。因此我们可以这样做。
利用了管道,看上文。
date
date 指定格式显示时间: date +%Y:%m:%ddate 用法: 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@1508749502Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp )是从 1970 年 1 月 1 日( UTC/GMT 的 午夜)开始所经过的秒数,不考虑闰秒时间戳是一直递增的,具有唯一性,可以用于范围查找,比如某时间点到某时间点-----------------------------------------------------------------------
注意时区的问题,这里不细说了,可以自行了解。比如我们是东八区
call
cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “ 阳历 ” 又名 “ 太阳 历” ,系以地球绕行太阳一周为一年,为西方各国所通用,故又名 “ 西历 ” 。---------------------------------------------------命令格式 : cal [ 参数 ][ 月份 ][ 年份 ]功能 : 用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份--------------------------------------------------------常用选项 :-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历------------------------------------------------------------![]()
![]()
![]()
![]()
find
语法: find pathname -options功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)---------------------------------------------常用选项:-name 按照文件名查找文件
----------------------------------------------
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。--------------------------------------------------------------
但遍历一次之后,第二次查同样的内容,速度会快很多,因为第一次查的时候把信息存缓存里了。
可以用通配符,*任意个字符
find . -name "*.c" -maxdepth 1 | xargs rm 找到当前目录下.*结尾的文件,目录深度为1
grep
语法: grep [ 选项 ] 搜寻字符串 文件功能: 在文件中搜索字符串,将找到的行打印出来---------------------------------------------------------------常用选项:-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行-------------------------------------------------------------------------![]()
--------------------------------------------------他的用途比较重要,过滤行信息,后面很多信息都是以行为单位输出、存储的,这时候可以把这些信息利用管道传给grep,再用grep过滤,就可以从一大堆信息中,找到关键的部分。
更多的用法参考这个大佬的: shell中grep的用法_sh grep-CSDN博客
zip/unzip
语法: zip 压缩文件 .zip 目录或文件unzip 压缩文件功能: 将目录或文件压缩成 zip 格式--------------------------------------------------------------------------常用选项:-r 递 归处理,将指定目录下的所有文件和子目录一并处理-----------------------------------------------------------------------------------
这个%就是压缩的比例,但因为我里面都文本文件,没什么可压缩的。所以是0![]()
可以指定解压的位置![]()
.tar指令:
打包/解包,不打开它,直接看内容
---------------------------------------------------------
tar [-cxtzjvf] dst.tgz src :-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!用了f就是说压缩包的名字我们要自己命名
-C : 解压到指定目录--------------------------------------------------------
以下仅参考
范例一:将整个 /etc 目录下的文件全部打包成为 `/tmp/etc.tar` [root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩! [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩 [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ 上述指令在执行的时候,会显示一个警告讯息: 『`tar: Removing leading `/" from member names`』那是关於绝对路径的特殊设定。 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的! 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔! 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已 [root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了! 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限! [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时! 范例六:在 /home 当中,比 2005/06/01 新的文件才备份 [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf - /etc | tar -xvf - 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的! 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ 这分别代表 standard output, standard input 与管线命令啦!
指定解包路径
bc
bc 命令可以很方便的进行浮点运算----------------------------------------------------------
uname
语法 : uname [ 选项 ]功能 : uname 用来获取电脑和操作系统的相关信息。补充说明 : uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。常用选项:-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
---------------------------------------
关机
语法 : shutdown [ 选项 ]-------------------------------------------------------------常见选项:-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思--------------------------------------------------
其他(有重复)
安装和登录命令 : login 、 shutdown 、 halt 、 reboot 、 install 、 mount 、 umount 、 chsh 、 exit 、 last ;◆ 文件处理命令: file 、 mkdir 、 grep 、 dd 、 find 、 mv 、 ls 、 diff 、 cat 、 ln ;◆ 系统管理相关命令 : df 、 top 、 free 、 quota 、 at 、 lp 、 adduser 、 groupadd 、 kill 、 crontab ;◆ 网络操作命令 : ifconfig 、 ip 、 ping 、 netstat 、 telnet 、 ftp 、 route 、 rlogin 、 rcp 、 finger 、 mail 、 nslookup ;◆ 系统安全相关命令: passwd 、 su 、 umask 、 chgrp 、 chmod 、 chown 、 chattr 、 sudo ps 、 who ;◆ 其它命令: tar 、 unzip 、 gunzip 、 unarj 、 mtools 、 man 、 unendcode 、 uudecode 。xargs是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令,用于很多不支持|管道来传递参数的命令
Linux 命令大全 | 菜鸟教程 (runoob.com)