Linux命令

Linux命令提示符

[root@localhost ~]#

  • root:代表当前登录的用户名
  • localhost:代表当前登录的服务器主机名
  • ~:代表当前目录,(用户主目录)
  • #:超级用户提示符,普通用提示符是$

基本操作

Linux的系统相关操作:

  • shutdown -h now:立即关机
  • shutdown -r now:立即重启
  • reboot:立即重启
  • logout:注销
  • clear:清屏

用户相关:

  • whoami:我是谁
[root@localhost ~]# whoami
root
  • su 用户名:切换到另一个用户

目录的常见操作

  • Linux的目录结构为树形结构,最顶级目录为/
  • 绝对路径:由根目录开始,例如:/home/user
  • 相对路径:
    1)路径的写法,不是由 / 写起,而是相对当前所在的目录开始。例如:由/usr/share/doc要到/usr/share/man底下时,可以写成:cd ../man这就是相对路径的写法。这里的../表示当前目录的上一级目录。
    2)/:表示根目录
    3)~:表示当前家目录

目录的相关命令

  • ls:列出目录
  • cd:切换目录
  • pwd:显示当前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • rm:移除文件或目录
  • cp:复制文件或目录
  • mv:移动文件或目录

ls查看目录

  • 查看目录的命令有两个,一个ls,一个ll,ls以list(列表)方式浏览,ll以详情方式浏览。
  • ls可以添加参数
    1)-a:表示显示所有文件,包括隐藏该文件。例:ls -a
    2)-l:表示以详情方式显示,和ll功能一样。例:ls -l,ls -al
    3)-r:表示以反序显示,默认以文件名称升序排列。例:ls -s
    4)-t:将按时间顺序显示。ls -t
    5)-lh:将文件大小的单位进行换算
  • ls可以查看指定的目录和支持模糊匹配
    1)ls -l /bin:以详情方式查看/bin目录下的文件
    2)ls -l /bin/a:以详情方式查看/bin目录下以a开头的文件
    3)ll /bin/
    .txt:查看bin下以txt结尾的文件

目录操作命令

  • pwd:显示当前目录
[root@localhost ~]# pwd
/root
  • cd(Change Directory):更改目录
    1)cd 相对路径/绝对路径
    2)cd..:返回上一级
    3)cd -:返回上一次所在的目录
    4)cd /:返回根目录
    5)cd ~:返回家目录

mkdir创建新目录

  • 语法:mkdir [-mp] 目录名称
  • 参数说明:
    1)-p:可以一次直接创建多层级目录
    2)-m:配置文件的权限 直接配置
  • 举例:
[root@localhost tmp]# mkdir test1
[root@localhost tmp]# mkdir -p test2/1/2
[root@localhost tmp]# mkdir -m 750 tt
[root@localhost tmp]# mkdir -p -m 750 t1/t2

rmdir删除空目录

  • 语法:rmdir [-p]目录名称
  • 参数说明:-p:连同上一级目录[空目录]也一起删除
  • 实例:
[root@localhost tmp]# rmdir test1/
[root@localhost tmp]# rmdir -p test2/r1/r2
  • 如果目录不为空,则删除会失败,如果要删除非空目录,则使用rm命令进行删除。
[root@localhost tmp]# rmdir test/
rmdir: failed to remove `test/': Directory not empty

rm删除文件或子目录

  • 语法:rm [-fir] 文件或子目录
  • 参数说明:
    1)-f:就是force的意思,强制删除
    2)-i:互动模式,在删除前会询问使用者是否动作
    3)-r:递归删除,可以删除目录和文件
  • 示例:
[root@localhost tmp]# rm -r aa
rm: remove regular empty file `aaa'? y
[root@localhost tmp]# rm -rf test
  • rm -rf / Linux自杀命令绝对不能执行

cp复制文件

  • 语法
    1)cp [-adfilpr] 来源 目标档
  • 选项与参数:
    1)-a:此选项通常在复制目录时使用,它保留连接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
    2)-d:复制时保留链接(相当于windows系统中的快捷方式)
    3)-f:覆盖已经存在的目标文件而不给出提示
    4)-i:与-f选项相反,在覆盖目标之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖
    5)-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    6)-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
    7)-l:不复制文件,只是生成链接文件

移动或重命名

  • 语法
    1)mv 来源 目标档

链接命令

  • 链接分为软链接(symbolic link)和硬链接(hard link),硬链接的意思是一个档案可以有多个名称,而软连接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置,类似window中的快捷方式
  • 语法:ln [参数] [目标] [文件或目录]
  • 参数说明: -s:软链接,添加-s为创建软链接,不要则为硬链接
[root@localhost tmp]# ln -s a.txt bb.txt
  • 这里要注意:如果软链接的源文件和链接文件在同一个目录下,可以使用相对路径,但是如果不在同一个目录下,必须使用绝对路径
  • 硬链接示例:
[root@localhost test2]# ln -s /test2/t4 /test1/t44

软链接和硬链接的区别

软链接

  • 软链接以路径的形式存在,类似window操作系统中的快捷方式
  • 软链接的文件类型会被表示为l
  • 当删除软链接原始文件,软链接将无法使用
  • 软链接可以对一个不存在文件名进行链接
  • 软链接可以堆目录进行链接
  • 软链接可以跨分区使用,硬链接不可以

硬链接

  • 硬链接,以文件副本形式存在,不占用实际空间
  • 硬链接文件类型为普通文件类型
  • 删除任何一个硬链接文件不会影响另一个文件
  • 不允许给目录创建硬链接
  • 硬链接不能跨分区使用

推荐使用软链接,硬链接和原始文件区分大小,无法区分

文件相关操作

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出tac时cat的倒着写
  • nl 显示的时候,顺道输出行号
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比more更好,它可以往前翻页
  • head 只看头几行
  • tail 只看尾巴几行

cat 和 tac

  • cat 由第一行开始显示文件内容,tac 从最后一行开始显示内容。语法完全一致
  • 语法:cat [AbEnTv]
[root@localhost tmp]# cat a
asdfghjk;
  • 选项与参数:
    1)-A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
    2)-b:列出行号,仅针对非空白行号显示,空白行不标行号
    3)-E:将结尾的断行字节$显示出来
    4)-n:列印出行号,连同空白行也会有行号,与-b的选项不同
    5)-T:将[tab]键以I 显示出来
    6)-v:列出一些看不出来的特殊字符

more

  • more一页页翻看
  • 语法:more 文件名
  • 在程序运行时,可以按以下几个键:
    1)enter:下翻一行
    2)space:下翻一夜
    3)/字符串:指向搜索指定的字符串
    4):f:立即显示出档名以及目前显示的行数
    5)q:代表立刻离开more,不再显示该文件内容
    6)b:或[ctrl] -b:代表往回翻页

less

  • 翻页浏览
  • 语法:less 文件名
  • 在程序运行时,可以按以下几个键:
    1)空白键:向下翻动一页
    2)[pagedown]:向下翻动一页
    3)[pageup]:向上翻动一页
    4)/内容:向下搜索【内容】
    5)?内容:向上搜索【内容】
    6)n:重复前一个搜索(与/或?有关)
    7)N:反向的重复前一个搜索(与/或?有关)
    8)q:离开less这个程序
  • 选项
    1)-e:文件内容显示完毕后,自动退出
    2)-f:强制显示文件
    3)-g:不加亮显示搜索到的所有关键字,仅显示当前显示的关键字,以提高显示速度
    4)-l:搜索时忽略大小写的差异
    5)-N:每一行行首显示行号
    6)-s:将连续多个空行压缩成一行显示
    7)-S:在单行显示较长的内容,而不换行显示

head/tail

  • head取出文件前面几行,tail取后面几行
  • 语法:head [-n number] 文件
  • 参数说明:-n:后面的number表示取的行数
  • 示例:
[root@localhost tmp]# head /etc/sudo.conf
[root@localhost tmp]# head -n 20 /etc/sudo.conf
[root@localhost tmp]# tail /etc/sudo.conf
[root@localhost tmp]# tail -n 20 /etc/sudo.conf

文件基本属性

  • 使用ll命令或者ls -l 浏览文件信息时,会显示文件详情
    image.png
  • 其中drwxrwxr-x 表示文件的类型和权限。第一个字母表示文件类型

[d] 代表目录
[-] 代表文件
[l] 表示为链接文档(link file)
[b]表示为装置文件里面的可供存储的接口设备(可随机存取装置)
[c]表示装置文件里面的串行端口设备,例如鼠标、键盘(一次性读取设备)

文件的权限

  • 接下来的字符表示权限。且均为[rwx]这三个参数的组合。其中,[r] 代表可读(read)、[w] 代表科协(write)、[x] 代表可执行(execute)。注意,这三个权限的位置不会改变,如果没有权限,就会出现减号[-]
    image.png

从左至右用0-9这些数字来表示
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限。第7-9位确定其他用户拥有该文件的权限
第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示,则没有写权限
第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限

image.png
  • 对于每一个文件来说,它都有一个特定的拥有着,也就是对该文件具有所有权。同时Linux中,用户是按照组来进行划分的。一个用户属于一个或多个组
  • 最后一个 .,在centos6以后添加进去的,代表ACL权限
  • 后面的1、3、2,代表该文件的引用计数
  • 后面两个root一个代表用户,另一个代表用户组
  • 后面1857代表的是文件夹中的文件数量,或者文件大小
    image.png
  • 后面03:06是文件最后一次修改时间
  • 最后一个是文件或目录名称,会以不同颜色修饰
  • 对于root用户来说,这些权限不起作用,root用户的权限不受限制

更改文件权限

  • 使用chmod命令可以对这9个权限进行修改。修改方式有两种,一种是数字方式,一种是字母方式
  • 文件的权限字符为:[-rwxrwxrwx],这九个权限是三个三个一组的。其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:r:4,w:2,x:1
  • 每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---]分数则是:
  owner = rwx = 4 + 2 + 1 = 7
  group = rwx = 4 + 2 + 1 = 7
  others = --- = 0 + 0 + 0 = 0
  • 所以等我们设定权限的变更时,该文件的权限数字就是770

chmod 修改权限

  • 语法:

chmod [-R] xyz 文件或目录

  • 参数说明:

-R:进行递归变更,修改该目录下所有的子目录和文件。xyz:对应前面提到的数字权限,比如770。

  • 示例:
chmod 751 mydir # 将mydir文件的权限改为drwxr-x--x

更改文件所属组

chgrp:更改文件所属组

  • 语法:

chgrp [-R] 用户组名称 文件名

  • 参数:

-R表示递归更改某个目录文件的属性,如果加上这个参数,表示该文件夹下的所有文件都会同时被修改

  • 示例:
chgrp root mydir #将mydir的用户组改为root

更改文件所有者

chown:更改文件所有者

  • 语法:

chown [-R] 所有者 文件名

  • 参数:

-R表示递归更改某个目录文件的属性,如果加上这个参数,表示该文件夹下的所有文件都会同时被修改

  • 示例:
chown root mydir #将mydir的所有者改为root用户

vi/vim编辑器

  • Linux中内建了一个vim文本编辑器,通过这个编辑器,可以在Linux中编辑文件
  • vim分为三种模式:

命令模式:用户刚进入vim就是命令模式
输入模式:在命令模式输入 i 进入输入模式
底部命令模式:在命令模式下按:进入底部命令模式

vi常用快捷键

  • x 删除光标处的字符
  • dd 删除整行
  • dw 删除一个字(word)
  • u 撤销最后一次修改
  • 0 当前行下插入新行
  • /pattern:从光标开始处向文件尾搜索pattern
  • ?pattern:从光标开始处向文件首搜索pattern
  • yy:将当前行的内容放到临时缓冲区
  • p 将临时缓冲区中的文本放到光标后

命令模式

  • 此状态下的敲击键盘动作会被vim识别为命令,而非输入字符。比如此时按下i,并不会输入一个字符,i被当作了一个命令。
  • 几个常见的命令:

i 切换到输入模式,以输入字符
x 删除当前光标所在处的字符
: 切换到底部命令模式,在最后一行输入字符

输入模式
在此模式下,对文件内容进行编辑。再输入模式下可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • Enter,回车键、换行
  • Backspace,退格键,删除光标前一个字符
  • Delete,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • Home/End,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

底部命令模式

  • 在命令模式下按下:(英文冒号)就进入了底部命令模式
  • 常用底部命令:
    1):w:保存
    2):q:退出,:wq保存并退出
    3):q!:强制退出,不保存
    4):e file:打开文件

文件搜索命令
我们经常需要在系统中检索需要的文件,在Windows中可以使用F3进行搜索。在Linux中提供了多种文件搜索方式

  • locate
  • find
  • grep

locate

  • 语法:locate 文件名
  • locate是在后台数据库中,按文件名进行检索,速度非常快。但是最新的数据不一定能搜索出来
  • locate的后台数据库:/var/lib/mlocate
  • locate数据库默认一天一更新,也看使用命令手动更新数据库:updatedb,需要root权限
    image.png
  • 如果执行locate出现locate:can not stat()/var/lib/mlocate/mlocate.db': No such file or directory错误,执行updatedb命令更新Linux检索索引

locate的配置文件

  • /etc/updatedb.conf 文件是locate命令搜索的配置文件,在这个文件中,定义了locate搜索的规则
  • PRUNE_BIND_mOUNTS="yes":表示以下配置是否有效
  • PRUNEFS="":表示搜索时,不搜索的文件系统
  • PRUNENAMES="":表示搜索时,不搜索的文件类型
  • PRUNEPATHS="":表示搜索时,不搜索的文件路径

find

  • 语法:

find [搜索范围] [搜索条件] 文件名

  • find模式会按照完整文件名进行搜索,如果要进行模糊搜索,可以使用通配符,LInux中的通配符常用的有三种

*:匹配任意多个字符
?:匹配任意一个字符
[]:匹配任意一个中括号中的字符

find /home -name a.txt          # 在/厚么目录下按照名称搜索a.txt
find /home -iname a.txt         # -iname指不区分文件名大小写
find /etc -name *.conf          # 在/etc目录下搜索以.conf结尾的文件
find -user qiu                  # 查找属于qiu的文件
find -type d/f                  # 根据文件类型查找,f普通文件,d目录
find -mtime -1/+1               # 查找1天以前或之后跟新的文件
find -ctime -1/+1               # 查找1分钟以前或之后创建的文件 
  • find相对于locate会更慢,因为find扫描硬盘进行文件搜索,但是find功能更加强大,locate只能根据文件名进行搜索,find可以添加其他的参数,也可以支持通配符搜索,但是注意,使用find避免在大范围进行搜索,效率太低

locate和find的区别

  • 效率:find相对于locate会更慢,因为find扫描硬盘进行文件搜索
  • 功能:但是find功能更加强大,可以添加其他的参数,也可以支持通配符搜索,locate只能根据文件名进行搜索
  • 即时性:find搜索的数据是即时的,locate不是
  • 模糊匹配:find默认时精确搜索,locate时模糊搜索

用户和用户组

  • Linux时一个多用户多任务的系统,管理员可以添加多个用户来帮助管理Linux系统
  • 用户管理主要包括以下内容:
    1)用户的添加、修改和删除
    2)用户口令的管理
    3)用户组的管理

添加用户

  • 语法:

useradd 选项 用户名

  • 参数说明

-c:comment 指定一段注释性描述
-d:目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g:永驻 指定用户所属的用户组
-s:Shell文件 指定 用户的登录Shell
-u:用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

  • 示例:
useradd -u user1                # 添加新用户user1
useradd -d /home/user1 -u user2 # 添加新用户,并指定用户家目录

设置用户密码

  • 语法:

password 选项 用户名

  • 选项说明

-l:锁定口令,即禁用账号
-u:口令解锁
-d:使账号无口令
-f:强迫用户下次登陆时修改口令

  • 如果时第一次修改密码,直接输入密码即可,如果时修改密码,则需要输入旧密码
password user1 # 修改用户 user1的密码

修改和删除用户

修改用户

  • 语法:

usermod 选项 用户名

  • 选项说明和useradd一致
  • 实例:
usermod -l newtest test # 修改test的用户名为newtest
usermod -G staff newuser2 # 将newuser2添加到组staff中

删除用户

  • 语法:

userdel 选项 用户名

  • 选项说明

-r:将用户所在的目录一起删除

  • 示例:
userdel -r user1 # 删除用户user1

添加用户组

  • 添加用户时,如果不指定用户组,会创建和用户名相同的一个用户组
  • 语法:

groupadd 选项 组名

  • 选项说明:

-g:GID指定信用住的组标识号(GID)
-o:一般与-g选项同时使用,表示信用住的GID可以与系统已有用户组的GID相同

  • 示例:
groupadd usergroup1            # 添加用户组 usergroup1
groupadd -g 101 usergroup1     # 添加用户组usergroup1,并制定gid

删除用户组

  • 语法:

groupdel 用户组

  • 示例:
groupdel usergroup1 # 删除用户组 usergroup1
  • 将用户加入到组中示例
group add -g 1010 test # 添加一个用户组,组id为1010,组名称为test
useradd -u 1001 -g test -d /home/aaa aaa # 添加一个用户aaa到test组,用户id为1001,组名称为test,所在目录为/home/aaa目录
id aaa # 查看aaa用户的id信息

与用户相关的文件

  • /etc/passwd:存放用户和用户组的关系,用户对应的目录,指令集等。以用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell格式存储
  • /etc/shadow:/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的存储格式:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group:用户组的所有信息都存放在/etc/group文件中,存储格式:组名:口令:组标识号:组内用户列表

查看进程

  • ps命令用于查看当前正在运行的进程,grep是搜索
    例如:ps -ef | grep redis
    表示查看所有进程里redis的进程信息
  • ps -aux | grep redis
    -aux显示所有状态
  • kill命令用于终止进程
    例如:kill -9 [PID]
    -9表示强迫进程立即停止
    通常用ps查看进程PID,用kill命令终止进程

你可能感兴趣的:(Linux命令)