linux基础命令
搭建Linux系统
docker pull centos
docker run -d -i -t 镜像 /bin/bash
docker exec -it 容器 bash
1. 文件类型
ls [-option] [file]
1.1 参数:
-a | 显示所有的文件和目录,包含隐藏文件和目录 |
-A | 显示所有的文件和目录,包含隐藏文件和目录,但不列出 "." (目前目录) 及 ".." (父目录) |
--block-size | 执行文件大小单位,如g、m、k |
-F | 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" |
-h | 与-l选项一起使用,将自动指定最大单位,示例ls -lh |
-l | 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 |
-r | 将文件以相反次序显示(原定依英文字母次序) |
-R | 若目录下有文件,则以下之文件亦皆依序列出 |
-t | 将文件依建立时间之先后次序列出 |
1.2 隐藏文件
在Linux中,如果文件名称或目录前面带有“ . ”,表示该文件或目录为隐藏文件如
1.3 文件类型
- rwx rwx rwx
第一位表示文件类型:d表示目录,-表示文件 l表示链接文件 b表示设备文件中可供存储的接口设备 c表示设备文件中的串行端口设备,如鼠标、键盘
第一组表示文件拥有者的权限,r可读,w可写,x可执行
第二组表示文件所属组的权限
第三组表示其他用户的权限
2. 文件与目录操作命令
2.1 cd切换目录
cd [相对路径或绝对路径]
示例
cd /Users/csj/Download
cd .. #返回上一级目录
cd ~ #进入家目录
2.2 pwd查看当前目录
pwd #显示当前路径
2.3 mkdir 创建目录
mkdir [-option] 目录名称
mkdir命令用于创建目录,目录可以是相对路径也可以是绝对路径。
常用参数:
- -p:当建立的目录的上层目录不存在时,就一并创建
mkdir DasAuto
mkdir -p pop/sub
mkdir test1 test2 test3 #在当前目录一次建立多个文件夹
2.4 rmdir 删除目录
rmdir 文件名
rmdir用于删除目录,目录可以是相对路径也可以是绝对路径,但必须是空目录
rmdir test
rmdir test1 test2 test3
2.5 cp 复制
cp [-option] 源文件 目标
常用参数:
- -r:循环进行目录复制
- -u:如果源文件较新,或者没有目标文件,才进行复制,常用于备份
cp /etc/profile . #将/etc/profile文件复制到当前目录
cp /etc/profile pfile #将/etc/profile文件复制到当前目录,且重命名为pfile
cp -r /test ~/Download/ 将/test下的所有文件和目录全部复制到~/Download目录
2.6 rm 删除文件
rm [-option] 文件名
常用参数:
- -f:force,强制删除,不提示用户
- -r:循环删除,常用语目录删除
rm pfile #需要用户确认,Y确认,回车执行删除
rm -f pfile #直接删除
rm -rf test #直接删除test目录及其所有文件
2.7 mv
mv 源 目标
作用:
- 1.执行目录下移动文件
- 2.不指定目录改名
3. 查看文件内容命令
3.1 cat
cat [-option] 文件名
参数:
- -n:连行号一起显示在屏幕上
- -b:连行号一起显示在屏幕上,但空行不算
- -v:显示控制符号
3.2 more 文件名
more和cat类似,同样是在屏幕上显示文件内容,但是如果文件内容太多,超过40行,cat会一闪而过,more则会在显示完一屏内容后停下,等待用户往下翻。
下翻:回车键(单行下翻) ctrl+F(单页下翻)
3.3 less 文件名
less和more一行,唯一区别就是可以使用pageDown和pageUp进行上翻和下翻,比more更方便
3.4 head
head [-option] 文件名
head命令用于指定文件的头几行内容,如果不加-n参数,默认显示文件的前10行内容
常用参数:
- -n:指定显示多少行
3.5 tail
tail [-option] 文件名
tail命令用于显示文件的尾几行内容,与head相反,如果不加-n参数,默认显示文件的后10行内容
参数:
- -n:指定显示多少行
- -f:当有新内容时,更新展示,常用与查看日志
4 链接
ln [-option] 源文件 目标文件
常用参数:
- -d:创建硬连接,默认为该参数
- -s:创建符号链接
- -f:创建链接时如果目标文件已经存在,则替换
硬链接:一个分区被格式化为一个文件系统之后,基本上它一定会有inode table和Block数据区域两大块,一个记录文件属性和位置,一个用来记录文件的内容。当系统要读取文件时,会首先读取inode table,然后根据inode的信息到数据区(Block)将数据取出备用。硬连接就是再建立一个inode链接到文件放置的Block块。也就是说,进行硬链接时,文件内容不会改变,只是在查询时,利用原来的inode与后来添加的inode均可以指定到该文件内容存放的地点,因此,读取两个inode的结果都是存取同一个文件内容。因为inode会链接到Block块,而目录本身仅消耗inode,而不占用Block,所以硬链接不能链接目录。
ln hello.sh dlink
符号链接:相对于硬链接,符号链接比较好理解,基本上它是再建立一个独立的文件,而这个文件会让数据读取操作指向它的链接那个文件。由于只是利用文件作为指向的动作,所以当源文件被删除,符号链接文件就打不开了,相当于windows的快捷方式。
硬连接比较安全,因为即使某一个inode被删除(删除文件),只要还有一个inode,该文件就还能被找到。
ln -s hello.sh slink
5.文件与目录权限
5.1 chown
用于变更文件即目录的所有者和所属组
chown [-option] user:group 目录或文件名称
参数:
- -R:连同目录下所有文件和子目录都进行变更
#将当前目录下的lamp目录下的所有文件和子目录的所有者改为luyy用户,所属组改为root组
chown -R luyy:root lamp
5.2 chmod
用于变更文件及目录的读写执行权限。
权限 | r:可读 4 w:可写 2 x:可执行 1 |
权限属性 | 所有者(user)、群组(group)、其他(other),分别用u、g、o来代表 |
更改权限 | =:赋值,+:增加权限,-:减少权限 |
6. 搜索文件或目录
6.1 which
which 文件名
which命令用于查找可执行文件的位置,该命令通过环境变量PATH所设置的路径进行搜索
6.2 whereis
whereis命令同样是根据设定好的目录进行查找,但是和which不同,它并不是使用PATH环境变量,而是自定义的一组目录。
whereid [-option] 文件名
参数:
- b:只查找二进制文件
- -m:只找说明文件
6.3 find
find命令可是对指定目录以及其所有子目录进行文件搜索,比如我们现在想找一个find命令可以对指定目录及其所有子目录进行文件搜索。
find [path] [-option] 文件名
参数说明:
- -name:寻找文件名为file的文件(可用通配符)
#find查找多个文件
find . -name "*sh" -o -name "*.log"
6.4 locate
由于find命令在查找数据时比较比较消耗硬盘(find命令直接查找硬盘数据),通常使用locate来替代。locate查找文件特别快,这是因为locate是从已建立的数据库/var/lib/slocate中查找数据,而不是直接在硬盘上进行,自然很快。
locate的限制:一些已经被删除的文件,或者刚刚新建的文件我们找不到,这是有数据库文件的更新机制导致的。基本上Linux每次启动会更新数据库文件,但是我们最新创建或者删除的文件并没有被数据库记录,导致查询结果有问题。我们可以用哪个updatedb手动更新数据库。
7. linux用户与用户组管理
查看/etc/passwd,每行使用:分割,共有7列。
- 账号名称
- 密码:用x代替,早期unix系统的密码会放这里。后来处于安全考虑,移到shadow文件中了。
- UID:用户识别码。系统管理员用0,root的UID就是0;系统预留1-499,500-65535供一半用户使用
- GID:用户所属群组的识别码
- 用户名全称
- 用户家目录
- shell
7.1 groupadd
groupadd [-option] 群组名
常用参数:
- -g:设定创建群组的GID。不加-g参数,系统自动分配一个,从500开始
groupadd -g 555 testerhome
7.2 groupdel
groupdel 群组名
注意:在删除群组前必须先将该群组内的用户删除。
7.3 useradd
useradd [-option] 用户名
常用参数:
- -u UID:设定新增用户的UID,如果不指定,则系统自动分配。
- -g GID或者groupname:指定新增用户所在的群组,可以用GID或者是群组名。如果不指定该运足,则系统将自动创建一个和用户名同名的群组,并将该用户加入该群组。
- -M:不建立家目录。如果不使用该参数则默认建立家目录
- -s shell:指定用户登录时启用的shell。如果不指定,一半使用/bin/bash
useradd -u 555 -g testerhome -s /bin/bash csj
注意:用户创建完后,暂时是无法登陆的,因为我们还未给用户设定密码,而Linux的安全机制是不允许无密码登陆的。
7.4 userdel
userdel用于删除已存在的账户
userdel [-option] 用户名
常用参数:
- -r:将该账号的家目录和邮件文件一并删除。如果不加r,则仅删除账户,该用户的家目录和邮件文件依然保存。
7.5 usermod
usermod用于修改用户的信息,比如UID、所属组,所使用的shell
usermod [-option] 用户名
常用参数:
-u UID:设定用户的UID
-g GID:设定用户的群组,可以用GID或者是群组名
-s shell:指定用户登陆是启动的shell
7.6 passwd
passwd用于设定用户的密码,如果passwd命令后面不跟用户名,则表示修改当前用户的密码。需要注意,只有超级管理员root才能给别的用户指定密码,而普通用户只能修改自己的密码
passwd [username]
7.7 用户切换
su命令用于切换用户身份,如果使用“-”符号,表示完整切换到另一个用户的环境,不佳“-”表示使用当前的环境。
su [-] [用户名]
注意:如果从root用户切向普通用户,则不需要输入密码,立刻切换。如果是普通用户向其他用户切换,不管是普通用户还是root,都需要输入密码才可以切换。
如果要返回原来的账户,则使用exit命令
7.8 id
id命令用于显示用户的UID、GID以及所拥有的群组。
id [username]
7.9 groups
groups用于显示用户所属的群组信息
groups [username]