1.命令解析器
shell---unix操作系统
bash---Linux操作系统 (bash :Bourne Again shell) 这个人把shell改写适配到linux
2.linux快捷键
命令或路径补齐:
tab键入一次,自动补齐
如果不能自动补齐,即已输入部分不足以确定唯一的命令,这时候键入两次,即可输出所有相关命令
主键盘快捷键:
历史命令:history
向上遍历:CTRL+P(或者↑)
向下遍历:CTRL+N(或者↓)
光标:
向左:CTRL+B(或者←)
向右:CTRL+F(或者→)
左移动到头:CTRL+A
右移动到尾:CTRL+E
删除光标前边所有字符:CTRL+U
3.Linux系统目录结构
详见https://www.runoob.com/linux/linux-system-contents.html
4.用户目录
绝对路径:从根目录写起 /home/william/aa
相对路径:相对于当前工作目录而言
. 当前目录
.. 上级目录
- 两个临近的目录切换 cd -
ubuntu@VM-8-17-ubuntu:/home/lighthouse$ ==》当前登录用户@主机名:当前目录$
有时候当前目录会有~,这个波浪线表示当前用户的家目录
有时候$会变成#,表示当前用户为超级用户
cd命令可以直接切换到用户的家目录
5.文件和目录操作
查看目录
tree命令 (必须安装该软件才可以使用这个命令)
ls命令
ls 查看文件(不包含隐藏)
ls -a 查看所有文件(包括隐藏的)
ls -l 查看文件详细信息
第1字段: 文件属性字段
-rw-r--r-- 1 root root 762 07-29 18:19 exit
文件属性字段总共有10个字母组成;第一个字符代表文件的类型。
字母“-”表示该文件是一个普通文件
字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写
注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息
字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式
字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)
字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。
字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。
字母“s”表示该文件为sock文件。与shell编程有关的文件。
在此重申下文件链接这个重要概念:
链接文件的概念类似于windows里的快捷方式。多个连接文件同时指向一个“源文件”。链接文件分为硬链接或符号链接两种。
硬链接:同一个文件所有的文件都是等价的,操作系统不区分链接创建的先后顺序,若一个文件存在两个链接,那么除去一个文件还可以通过另外一个文件来访问该文件,也可以除去创建链接时用到的文件,但只要还有一个链接存在,就可通过该连接访问文件。
符号链接(软链接):即建立一个独立的文件,这个文件会让数据的读取指向它链接的文件内容。
第1字符的后面9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
比如:
-rw-r--r-- 1 root root 762 07-29 18:19 exit
表示文件的拥有者root对文件有读写权限,其他人(同组用户和其他用户只有读的权限)
另外,权限组还有一些特殊的表示法:
[root@localhost ~]# ll /usr/X11R6/bin/XFree86
-rws--x--x 1 root root 1960262 2003-02-28 /usr/X11R6/bin/XFree86
s表示这个是网络接口程序"s"是socket的缩写。该程序在运行过程中会打开一个网络接口。
其他UNIX类系统如FreeBSD中还有t权限,表示一个临时(temporary)文件
#ls -l /tmp可以看到这样的权限:drwxrwxrwt 它的最后一位是字母"t"
第2字段:文件硬链接数
-rw-r--r-- 1 root root 762 07-29 18:19 exit
如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数,
第2字段的值为1,说明这个文件只有exit这一个文件名。即只有一个指向该链接的硬链接。
第3字段:文件(目录)拥有者
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
该字段表示此文件是属于哪个用户。linux类系统都是多用户系统,每个文件都有它的拥有者。只有文件的拥有者才具有改动文件属性的权利。当然, root用户具有改动任何文件属性的权利。对于一个目录来说,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利
如果某一个用户因为某种原因,被删除,而该用户的文件还存在,那么用ls -l 查看该文件将显示一个代表用户存在前ID号的数字。
先创建一个用户test,将其加入wang用户组,并用su切换,使用ls –l查看文件拥有者,随即删除用户test,用root进入test家目录,查看刚刚创建的文件testing。
第三字段成了一个数字,这个数字是原test用户的ID号。因为文件系统对每个文件记录文件所有者的ID,而非用户名。
第4字段:文件(目录)拥有者所在的组
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。
可以在useradd的时候用-g指定该用户所在的主组,用-G指定其他组
格式如下:Useradd –g 组名 用户名
第5字段: 文件所占用的空间(以字节为单位)
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
第5字段表示文件大小,如果是一个文件夹(目录),则表示该文件夹的大小。请注意是文件夹本身的大小,而不是文件夹以及它下面的文件的总大小。
很多人不能理解文件夹是一个特殊的文件的含义,这样的话理解文件夹大小的含义就比较困难了。
第6字段:文件(目录)最近访问(修改)时间
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
文件创建的时间可以通过touch命令来修改。如:
[root@localhost ~]# touch exit
可以把exit的创建时间修改为当前时间,另外,一个文件还有最后访问时间,最后修改时间等属性。
这些属性可以用ls 的其它参数显示出来。
第7字段:文件名
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
如果是一个符号链接,那么会有一个 “->" 箭头符号,后面根一个它指向的文件名
创建目录
mkdir命令
mkdir dirName
mkdir aa/bb/cc -p (必须加-p)
删除目录
rmdir命令(只能删除空目录)
rm命令 (可以删除非空目录)
rm aa -r 递归删除目录aa以及下边所有的内容
rm aa -i 删除之前会提示是否删除
创建文件
touch 命令
touch fileName 如果文件不存在就创建文件,否则就修改文件的时间,不修改内容
拷贝文件
cp命令
cp 源文件 目标文件
如果目标文件不存在,就拷贝出新的文件;否则就将目标文件的内容覆盖
拷贝目录
cp命令
cp 源目录 目标目录 -r
目标目录不存在就新建目标目录,然后将源目录下东西拷贝到目标目录;否则就直接把源目录加到目标目录内作为子目录
查看文件
cat命令
cat 文件 (文件太长的话,显示不全)
移动和改名
mv命令
mv 源文件(夹) 目标文件(夹)
如果目标不存在,就默认把源改名,
如果目标文件夹存在就移动源文件或者文件夹
创建软连接
ln
ln -s 目标文件 软连接文件
如果想要让这个连接文件在全局可以使用,就需要在创建的时候,目标文件使用全局路径。
软连接文件的大小和连接到的文件路径字符数是对应的
创建目录的软连接和创建文件的类似
创建硬连接
ln 目标文件 硬连接文件
目录不能创建硬链接。
硬链接是创建了一个新的指向文件I-node的文件,多个硬链接就相当于有多个指向I-node的文件,但这个I-node都指向了同一块存储空间。
当创建一个新文件其实可以认为创建了一个硬链接.
注意:软连接是创建了一个指向目录地址的文件,它通过目标目录地址 来连接到
下图可发现硬链接计数是不断增加的,并且它的大小和原来文件是一致的
6.文件和目录属性
wc 查看文件属性
od 查看二进制文件
du 查看目录内的内容的大小
df 查看磁盘使用情况
7.文件权限,用户,用户组
查看当前用户
whoami
修改文件权限
chmod
文字设定
chmod [who] [+|-|=] [mode] fileName
who
文件所有者:u
所属组:g
其他人:o
所有人:a
+:增加权限
-:减少权限
=:设定权限
mode
r;w;x
数字设定(数字的二进制代表权限)
chmod 765 temp
7(111):user
6(110):group
5(101):others
如果是要减少权限
chmod -001 temp
为其他人减少执行权限
改变文件的所属用户或者所属组
注意:文件可以属于一个用户,但属于用户不在的其他组
chown [owner:group] fileName
chown william 1.txt 修改文件所属用户
chown william:gruop1 1.txt 修改文件所属用户和所属的组
chgrp [group] fileName 修改组
8.查找和检索
按文件属性查找
通过文件名
find + 查找目录 + -name +"文件名"
如果文件名记不住,可以使用通配符*或者?
通过文件大小
find + 查找目录 + -size + +10k 查找大于10k 的文件
小于的话用-10k
范围的话可以这样
find ~ -size +10k -size -20k
通过文件类型
find + 查找目录 + -type + d/p/s/f...
按照文件内容
grep -r "查找内容" 查找路径
9.压缩包管理
gzip 和 bzip2
都只能单独压缩,但bzip2 可以保留源文件,但是需要加参数
tar(底层还是用的上边两种)
参数:
c -- 创建 压缩
x -- 释放 解压缩
v -- 显示提示信息
f -- 指定压缩文件的名
z -- 使用gzip 的方式压缩文件 .gz
j -- 使用bzip2 的方式压缩文件 .bz2
压缩:
tar zcvf 生成的压缩包的名字(xxx.tar.gz) 要压缩的文件或目录
tar jcvf 生成的压缩包的名字(xxx.tar.bz2) 要压缩的文件或目录
解压缩:
tar zxvf 要解压缩的名字(xx.tar.gz) -C 解压到的路径
不带 -C 就解压到当前目录
jxvf同理
rar(首先安装该软件)
参数:
压缩:a,
解压缩:x
压缩:
rar a 生成的压缩文件名字(例如temp,不需要指定文件的后缀,会自动生成) 压缩的文件或者目录
解压缩:
rar x 压缩文件名 (解压缩到的目录)
不指定就加压缩到当前目录
zip(需要安装)
压缩:
zip 压缩包的名字 压缩的目录或文件
后缀名会自动的加上
解压缩:
unzip 压缩包 -d 解压缩的目录
不指定就解压到当前目录
10.进程管理
ps aux | grep xxxx
配合管道进行过滤
注意的是过滤后的内容超过一条才算有结果,因为最后一条记录是当前管道所占用的进程,这个进程因为命令里理所当然的存在你过滤的串
11.用户管理
adduser 用户名
实际上是调用了脚本,所以不用太多参数,而是在创建过程中动态的设定一些参数
但是不能创建带大写字母的名字
useradd
这是一个命令,需要指定一些参数
增加组
groupadd Wang
增加组内的用户,且指定使用的shell,家目录,没有就自动创建
useradd -s /bin/bash -g Wang -d /home/Wang -m Wang
设置完之后,再手动的设置密码