linux的学习(一)常用基本命令

一、查看与帮助

uname/pwd/who/whoami/ast/hostname
  1. uname: 查看当前系统的信息
  2. pwd: 查看当前所在的路径
  3. who: 查看当前哪些用户登录到服务器
  4. whoami: 查看当前登录的用户
  5. ast: 查看最近登录的历史记录
  6. hostname: 查看主机名
whereis 查询命令相关的可执行文件所在的路径
* `whereis ls`
* `whereis man`
which 查询命令的可执行文件的路径
man

man: 得到的内容比用 help 更多更详细且man没有内建与外部命令的区分 ,如果没有则可通过yum源进行安装yum install man man-page -y
eg:man ls

help

查看shell内置命令的帮助信息 eg:help cd

命令名 --help

列举命令的常用选项 eg:cp --help

二、文件与目录操作

1.切换工作目录 cd
  • cd 进入用户主目录
  • cd ~ 进入用户主目录
  • cd / 进入根目录
  • cd - 返回进入此目录之前所在目录
  • cd . 当前目录
  • cd … 返回上一级目录
  • cd …/… 返回上两级目录
2.查看目录文件 ls

ls英文原意:list,命令所在路径:/bin/ls,适用于所有用户权限,主要功能就是以列表形式显示目录文件。

  • 语法: ls 【选项】【文件/目录名】
  • 选项:
    • -a:显示所有文件和目录,包括隐藏文件
    • -d:显示目录名称,而非其内容
    • -l:以列表形式显示详细信息,ll等价于ls -l
    • -R:递归处理,将指定目录下的所有文件及子目录一并处理
3.创建目录/文件
  1. linux mkdir用来创建目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
  • 语法:mkdir 【选项】【目录名】
  • 选项:
    • -m:mode模式,设定权限<模式>,类似chmod
    • -p:递归创建目录,即父目录不存在情况下先生成父目录(parents).eg: mkdir linux/test 如果目录linux不存在,则报错,使用参数-p即可自动创建父目录
  • 范例:
    • 创建一个空目录 mkdir test
    • 递归创建多级目录 mkdir -p test/a
    • 创建权限为777的目录mkdir -m 777 test
  1. 使用touch来创建文件 eg:touch s.txt
4.复制 cp

英文:copy 命令路径:/bin/cp 执行权限:所有用户 作用:复制文件或目录

  • 语法:cp 【选项】 【源文件或目录】【目的目录】
  • 选项:
    • -r:递归处理,复制目录
    • -p:保留文件属性(原文件的时间不变)
5.移动 mv

英文:move 命令路径:/bin/mv 执行权限:所有用户 作用:移动文件或目录、文件或目录改名

  • 语法:mv 【源文件或目录】【目的目录】
6.删除 rm

英文:remove 命令路径:/bin/rm 执行权限:所有用户

作用:删除文件

  • 语法: rm 【选项】【文件或目录】
  • 选项:
    • -r:删除目录的同时删除该目录下的所有文件
    • -f:强制删除文件或目录,即使原档案属性设为唯读也直接删除,无需逐一确认。

三、文件查询

  1. find 从文件系统中查找指定的满足条件的文件
语法:find [查询路径] -参数/选项 条件	:如果查询路径不写,则默认是当前路径

-name	:通过文件名字查询
eg:find -name 'a*b'	:查询以a为开头,以b为结尾的文件
-empty	:查找空文件
-amin	:查找最后的指定分钟内访问的文件
eg:find / -amin -10	:查找最近十分钟内访问的文件
-atime	:查找最后指定的时间内访问的文件,以天为单位
-size	:查找指定大小的文件(c:字节,w:双字节,k:千字节M:mb,G:gb)

在查询的基础上,可以使用特定的符号进行组合查询

!	:非
-a	:与
-o	:或

可对查询到的文件进行一些操作

在查询结果后添加 -ok 指令 {} \:

eg1:find -name 'a*a' -ok -rm {} \:
查询以a开头a结尾的文件名并做删除操作
eg2:find !-empty -ok cat {} \:
查询非空文件并显示本文内容

说明:-ok可以替换成 -exec,区别在于-ok是有一个交互界面

  1. grep:从若干个文件中查询文本 eg:grep ‘hello’ *

从该目录下所有文件中查询含有hello文本

-c	:只显示匹配的有多少行数
-i	:查询的时候忽略大小写
-h	:查询结果不显示文件名
-l	:查询结果不显示匹配项,只显示文件名
-n	:查询结果包含匹配的行号
-v	:查询所有不包含指定文本的部分
  1. egrep:使用正则表达式从若干格个文件中查询文本
语法:egrep '正则表达式' 文件
eg:egrep 'hel{3,}o' * 查询l出现至少三次的文本

四、查看文件内容

cat

作用:将一个文本中所有的内容输出

tac

将一个文本中的内容倒叙输出到控制台(以行为单位)

more

可以分页查看一个文本中的内容

下一页:空格键,如果到了文件的结尾,则退出查询

上一页:b键

退出:q键退出

less

可以分页查看一个文本中的所有内容,less可进行关键词搜索

下一页:空格键,如果到了文件的结尾,则退出查询

上一页:b键

退出:q键退出

eg:less install.log

head

head -n file:查询指定文件的头部n行

eg:head -10 install.log 查询头部十行内容

tail

tail -n file:查询指定文件尾部的n行

tail -n +10 file:查询文件中从第10行开始一直到结束所有的内容

tail -f file :跟踪一个文件,跟踪的是一个文件的唯一标志 inode号

  • 文件在磁盘上存储的最小单元是扇区,每个扇区大小512字节
  • 操作系统进行文件操作的时候不会直接操作扇区,因为效率比较低。操作系统在进行文件的读写时是以块(Block)的形式来读写,一个块(Block)包含8个扇区,4kb。
  • 磁盘上的文件在进行存储的时候,会对应生成一些元数据,用来记录一个文件的基本信息,例如:创建日期,修改日期,所属用户,占用的块信息。
  • 磁盘在格式化的时候,会分成两个区。一个是数据区,用来存储数据;另外一个是inode区,用来存文件对应的inode信息,每个inode占128字节,而每1kb的内容都会生成一个inode,因此inode区占磁盘空间的12.5%。
  • 常见的问题:磁盘空间还没满,但是无法创建文件。原因是inode区满了(存在太多的小文件)。

eg:tail -10 install.log 查询install.log文件尾部十行内容

stat

查看文件的元数据信息

eg: stat b.txt

df -i :显示磁盘的inode区信息(总数据,已经使用的数量,未使用的数量)

ll -i :显示所有信息的同时,显示inode

五、文件的压缩与打包

1.压缩/解压

gzip → .gz

gzip file	将一个文件压缩
gunzip file.gz	将一个文件解压缩
gzip -d file.gz	将一个文件解压缩
gzip *	:、
gzip -d

bzip2 → .bz2

bzip file		: 将一个文件压缩
bunzip			:将一个文件解压缩
bzip2 -d file	:将一个文件解压缩
2.打包/解包

将若干个指定的文件或文件夹打包成一个问件

tar

-f	:必须参数,且必须在最后位,表示需要使用档案名字
-v	:表示要显示打包、解包的过程

打包:
-c	:创建一个新的打包文档
-r	:向一个已经
eg:tar -cvf t.tar
tar -rvf t.tar

解包:
-x	:解包
eg:tar -xvf	t.tar
-C	:指定路径下面
eg:tar -xf temp/t.tar ->-C target/

3.打包并压缩、解压并解压缩
-z	:打包并压缩,解压缩并解包,操作的压缩格式是	.gz
-j	:打包并压缩,解压缩并解包,操作的压缩格式是	.bz2
打包并压缩:
eg1:tar -zcvf data.gz data/		#对一个文件夹中的文件进行打包并压缩
eg2:tar -zcvf a.gz a b c d e f 		#对多个文件进行打包并压缩

解包并解压缩:
eg:tar -zxvf data.gz	#解包并解压缩到当前路径下

查看包内容:
eg:tar -ztvf a.gz	

六、链接

  • 使用场景:如果需要在不同的目录喜使用同一个文件,此时可以对这个文件做多个链接,当使用到这个文件的地方,直接使用链接即可。
  • 文件与链接内容是完全同步的,有一个做改动其他所有都会跟着改动(通过任意一个链接改动的都是原文件)
  • 链接分为软连接和硬链接
软连接
* 语法:ln -s 原文件 目标
* 软链接文件以目标文件的路径形式出现的,类似快捷方式
* 可以对不存在的文件创建链接
* 可以对文件夹创建链接
* 可以跨文件系统创建链接
硬链接
* 语法:ln 原文件 目标
* 硬链接文件以文件副本的形式存在,但是不会占用实际的磁盘空间
* 只能对存在的文件创建,不能对文件夹(目录)创建链接
* 只能在当前的文件系统中创建链接

七、系统关机/重启

  • shutdown:关机
    • shutdown -h now:立即关机
    • shutdown -h +10:10分钟之后关机
    • shutdown -h 12:00:在指定的时间关机
    • shutdown -r now 重启
  • halt 立即关闭系统
  • reboot 重启

八、用户和群组

每个用户账号都拥有一个惟一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

1.查看用户信息
cat /etc/passwd

uid: 系统分配的一个账户的唯一标识
超级管理员 root    0
系统用户          [1,499]
普通用户		  >= 500

cat /etc/shadow
查看存储的用户的密码
2.添加用户/口令
useradd xiaoming		# 添加了一个xiaoming用户
passwd xiaoming			# 修改xiaoming用户的密码
3.删除账号
语法:userdel 选项 用户名
-r:把用户的主目录一起删除
eg:userdel -r xiaoming
4.修改账号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

语法:usermod 选项 用户名
选项:-c, -d, -m, -g, -G, -s, -u以及-o等
5.添加超级管理员
使用root用户编辑 /etc/sudoers 文件
找到root用户,并复制一行
将复制出来的root用户名改成想要获取最高权限的普通用户

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
shawn   ALL=(ALL)       ALL

普通用户可以使用sudo指令获取最高权限
6.增加/删除用户组
groupadd 选项 用户组
groupdel 用户组
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

九、文件的权限管理

1.关于文件权限的描述
权限对文件对文件夹
r(Read,可读权限)可以读取这个文件中的内容可以读取这个文件夹中的内容(ls)
w(Write,可写权限)可以修改这个文件中的内容可以创建文件(夹)、可以删除文件(夹)
x(Execute,可执行权限)可以执行这个文件可以切换到这个目录(cd)
2.关于权限的表示方式

-rwxr–r--:

  1. 第一位:代表的是文件的类型,-:代表的是一个文件;d:代表的是一个文件夹(directory)
  2. 第2-4位:代表文件所属用户的权限
  3. 第5-7位:代表文件所属用户的用户组的权限
  4. 第8-10位:代表其他用户组的权限

每一部分的权限都是按照读,写,执行的顺序进行排列

drwxrw-rw-:是文件夹;对所属用户可读可写可执行;对其他用户可读可写不可执行
-rw-r-xr–:文件;对所属用户可读可写不可执行;对所属用户的用户组可读不可写可执行;对其他用户组可读不可写不可执行

3.数字表示形式
  1. 可以用一个八进制的数字来描述一个文件的权限,但是只能描述权限,无法描述是一个文件还是文件夹。
  2. 因为权限管理的顺序是固定的,那么可以用1代表有指定的权限,用0代表没有指定的权限,最终将得到的数字转为八进制。

如 rwx r-- r --二进制表示为111 100 100 ,转换为八进制即为744;r-xr–r--八进制表示544。

4.修改权限 chmod
修改一个文件(夹)的权限
u:代表所属用户
g:代表所属用户的用户组
o:地表其他用户组

chmod u+x a		#对a文件所属用户添加x权限
chmod u-w a		#给文件所属用户去除w权限

参数:
-R				#递归修改
chmod -R g+w data/		#给data文件夹为所属的用户组添加w权限,并递归为所有的子文件都添加对应的权限
chmod 644 a		#修改a文件的权限为 rw-r--r--
5.chmod修改文件的所有者
chown root:root a		#修改文件a的所属用户为:root,所属用户组为:root。这里,第一个root代表是所属用户,第二个root是所属用户组

chown root a 			#只修改文件a的所属用户,不修改用户组
chown :root a 			#只修改文件a所属的用户组,不修改所属用户

十、日期与时间

Linux机器上的时间比较复杂,有各式各样的时钟和选项等等。机器里有两个时钟,硬件时钟从根本上讲是CMOS时钟,而系统时钟是由内核维护的。

查看系统时间
  • 终端上执行cal命令可以显示本月的月历
  • 终端输入命令date可以获取当前的日期和时间
  • 终端上输入命令uptime,可以查看当前系统运行的时长
  • 终端输入命令 date +%D,能够获取当前的年份月份日数
设置系统时间

一般使用“date -s”命令来修改系统时间。如将系统时间设定成2019年11月13日的命令如下。
date -s 11/13/19
将系统时间设定成下午1点12分0秒的命令如下。
date -s 13:12:0

注意:在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,
Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date
-s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令clock -w 这个命令强制把系统时间写入CMOS。

十一、文本指令——vi编辑器

vi: 编辑一个文本

vi a	# 开始编辑这个文本,此时进入一般模式

进入编辑模式 按下 i

退出编辑模式 按下Esc

进入命令行模式 在一般模式下,输入 :

一般模式下的常用的快捷键

i	: 进入编辑模式,在光标所在位置插入数据
a	: 进入编辑模式,在光标所在位置的后一位插入数据
I	: 进入编辑模式,在光标所在行的开头插入数据
A	: 进入编辑模式,在光标所在行的结尾插入数据
o	: 进入编辑模式,在光标所在行的下一行插入一个新行
O	: 进入编辑模式,在光标所在行的上一行插入一个新行
gg	: 跳到首行
G	: 调到尾行
dd	: 删除光标所在行
ndd	: 删除从光标所在行开始,往下的n行
yy	: 拷贝当前行
nyy : 拷贝从光标所在行开始,往下的n行
p	: 粘贴,在下一行

u	: 撤销
ctrl + r:

v	: 进入选择模式,可以选择指定部分的数据
Ctrl + v: 进入块选择模式
shift + v: 进入行选择模式
命令行模式
wq	:保存并退出
q!	:不保存,强制退出

set nu	:在当前编辑状态显示行号
set nonu	:取消显示行号

/hello	:查询‘hello’出现的位置,n进行下一项的匹配,N进行上一项的匹配

s/hello/HELLO	:查询光标所在行第一个hello,并将其替换成HELLO

s/hello/HELLO/g		:查询光标所在行的所有hello,并将其替换成HELLO

%s/hello/HELLO/g	:查询整个文本中所有的hello并将其替换成HELLO

3,$s/hello/HELLO/g	:查询从第三行开始,一直到文本结束,所有的hello,并替换成HELLO
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值