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来代表
更改权限=:赋值,+:增加权限,-:减少权限
```#shell chmod [-option] [parameter] 目录或文件名称 ``` 常用参数: * -R:连同目录下的所有文件及子目录都进行变更 ```#shell chmod 760 hello.sh chmod ug=rwx,o=r hello.sh chmod g-w,o+w hello.sh ``` ![](https://img2018.cnblogs.com/blog/1418970/201912/1418970-20191207211037622-687224173.png)

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]
原文地址:https://www.cnblogs.com/csj2018/p/11985206.html