命令格式与目录处理命令ls

命令格式: 命令 [-option] [agreement]

​ 简化选项(一个-调用):-a = --all(完整选项,两个-调用)

目录处理命令:ls(list)

路径:/bin/ls

权限:所有用户

查看隐藏文件:ls -a(“.”开头的是隐藏文件)

查看根目录: ls /

显示长格式: ls -l,可简写为ll

显示人性化格式: ls -h(lh/hl)

显示目录信息,而不显示目录下文件的信息:ls -d(ld)

查看文件incode索引节点: ls -i,相当于文件id

total:总引用量

后6部分:

  1. 引用计数(4,20,5…)
  2. chenlong:所有者
  3. staff:所属组
  4. 文件大小:默认单位字节
  5. 文件最后一次修改时间
  6. 文件名

文件和用户的关系:

​ User:所有者,只能有一个,可以转变,一般是创建人

​ Group:所属组,用户的集合

​ Others:其他人,既不是user也不是group

rwxr-xr-x

​ 文件类型:d:direct,目录;l:link,软连接;-:文件

​ 文件权限:r读/w写/x执行,没有特定权限使用-表示

​ 后9位3位一组,分别表示U,G,O的权限

目录处理命令

mkdir

不要在根目录下随便创建目录

默认下只能在已有目录下创建新目录

递归创建:-p,建立多级目录

同时创建多个目录:[参数]部分并列写,用空格分开即可

eg:mkdir ./Desktop/Linux/test1 ./Desktop/Linux/test2

cd

切换到指定目录

pwd(print working directory)

显示当前目录

cd …

.表示当前目录,…表示当前目录的上一级目录

rmdir

删除目录,只能删除空目录,哈哈

cp(copy)

cp -rp [原文件或目录][目标目录]:可以同时复制多个文件,只需要在最后写目标目录

cp -r 复制目录

-p 保留文件属性:可以复制创建时间,如果不加此选项,生成的复制文件以当前时间为准

复制的同时改名:写完目标目录后路径加改后的文件名

cp -r ./Linux/test/makedir ./Linux/test/changename

mv:剪切,move

mv [原文件或目录] [目标目录]

剪切同时改名,如果在同一目录下,即为改名

clear

清屏

rm

只能删除文件

-f:强制执行

-r:删除目录

ctrl+c:终止操作

文件处理命令

touch

创建文件,注意指定路径,如无指定路径,即在当前路径下创建文件

文件名:理论上除了/不能用别的都可以,但是不要随便起。

文件名中包含空格,会创建两个文件(即touch可以创建多个文件)

如果一定要带空格, 用双引号括起来,但是还是别了,所有别的操作都要加引号

后缀名有没有无所谓

cat

查看文件

-n:浏览同时加行号

长文件:不适合

tac

反向列示,显示内容

more

分页显示文件内容,空格/F翻页,回车下一行,q退出浏览

less

分页显示文件内容,可向上翻页

pageup/u一页一页向上翻

上箭头一行行翻

浏览状态中输入“/➕关键词”搜索,按n(next)找到下一处,可遍历文件

显示文件前几行

-n指定行数,默认为前10行

tail

显示文件后几行

-n 用法与head一样

-f 动态显示文件末尾内容

链接命令

ln

-s [原文件][目标文件]:创建软连接,后缀名.soft

默认生成硬链接:后缀名.hard

软链接和硬链接的特征

  • 软:类似windows快捷方式,所有人都具有同样的操作权限,lrwxrwxrwx

    ​ 文件很小,只是符号,箭头指向源文件,源文件路径改变/被删除,则找不到

  • 硬:cp -p+同步更新,源文件丢失也可以正常访问,通过i节点识别,每个文件都具有i节点,但i节点不一定只对应一个文件,硬链接和源文件具有同样的i节点

  • 硬链接的应用场景:实时备份

  • 硬链接的局限:不能跨分区,不能针对目录使用,软链接都可


权限管理命令chmod

change the permissions mode of a file

语法:chmod \[{ugoa}{+-=}{rwx}] [文件/目录]

同时赋予多个权限

chmod g+w,o-r 学院管理政策.md

直接等于

chmod g=rwx 学院管理政策.md

用数字管理权限:

  • r =4

  • w=2

  • x=1

    -> rwx=7

    -> rw-=6

    -> r-- =4

写出来数字要能对应权限

e.g: 532 -> r-x-wx-w-

e.g: chmod 640 学院管理政策.md

-R 选项:递归修改,修改目录下的所有文件权限

文件与目录的权限

对于文件:

  • r : cat/more/less/head/tail
  • w: vim
  • x: script command

对于目录:

  • r:ls
  • w:touch/rm/mkdir/rmdir
  • x : cd

对于目录,r和x权限总是同时出现的

对于文件,能够删除这个文件并不等价于对文件本身w权限,而是等价于对于其所在目录有w权限

其他权限管理命令

chown

change file ownership,改变文件所有者

语法:chown \[用户] [文件或目录]

root权限可以随意改变所有者

改变所有者之前确定该用户存在

chgrp

语法:chgrp \[用户组] [文件/目录]

改变文件所属组

umask

-S 以rwx形式显示新建文件缺省权限

功能:显示、设置文件的缺省权限

注意:linux中新建文件没有x权限

umask值:0022

0: 特殊权限

022: — -w-

真正对应的权限应该为其与777的逻辑与(同时具有的权限则失去)

umask

更改默认缺省权限:umask xxx


文件搜索命令find

find

搜索会占用大量服务器资源,尽量少用;搜索范围越小越好,搜索条件越精准越好

windows搜索软件:everything

语法:find \[搜索范围] [选项] [匹配条件]

选项:

  • -name :精准搜索,只有名字init的文件会被搜索出来

    find /etc init

    • *searchname* :搜索所有包含init的文件

    find /etc *init*

    • Searchname* :搜索以init开头的文件

    find /etc init*

    • ?表示精确字符:指定有几个字符, 搜索init后面有三个字符的文件

    find /etc init???

  • -iname:不严格区分大小写

  • -size:根据文件大小查找,要换算成数据块单位(Linux系统中存储文件的最小单位)

    1 数据块 = 512 字节 = 0.5 k

    100 MB = 102400 KB = 204800 数据块

    find / -size +204800 # 在根目录下搜索大于100 MB的文件

  • -user:根据所有者查找

    find /home -user shenchao # 在沈超家目录下查找

  • -group:根据所属组查找

  • -amin:根据访问时间查找 access

  • -cmin:查找属性改变的文件 change

    find /etc -cmin -(+=)5 # 在etc目录下查找5分钟内被更改过属性的文件

  • -mmin:查找内容改变的文件 modify

  • -a:and 两个条件同时满足

  • -o:or 两个条件满足一个即可

    find /etc -size +163840 -a -size =204800 # 在etc下查找大于80 MB小于100 MB的文件

  • -type: 根据文件类型查找 f文件,d目录,l软连接文件

    find /etc -name init* -a -type f

  • 对查找到的结果执行操作:

    **-exec/ok 命令 {}; ** 表示对搜索结果执行操作

    -exec和-ok的区别:-ok会挨个询问每个文件是否要执行操作

    find /etc -name init* -a -type f -exec ls -l {};

  • -inum:查找i节点对应的文件,可以用来找硬链接,还有文件名很奇怪的文件

    find . -inum 31531 -exec rm {}; # 在当前目录下查找i节点为31531的文件并删除

其他文件搜索命令

locate

秒搜,但是有延迟,需要文件资料库更新

语法:locate 文件名

手动更新文件资料库:updatedb

但是注意文件资料库的收录范围,不在范围里也可能找不到

-i选项:不区分大小写

which

查找命令所在路径,以及别名信息

语法:which 命令

Whereis

搜索命令所在目录及帮助文档路径

语法:whereis 命令

grep

查找文件内容,关键字所在位置

语法:grep [选项] “搜索内容” 文件名

-i 不区分大小写

-v 排除指定字串

-n 输出行号

–color=auto 搜索出的关键字用颜色显示

grep -v ^# /etc/inittab #排除以#为开头的行,可以不查看文件注释

如果不加^,可能会同时排除行中含有#的行内容。


man

语法: man [命令或配置文件]

man ls

/-d #搜索关于-d选项的内容

q #退出

查看配置文件的帮助:存放信息,格式

man services

不需要加绝对路径,就写配置文件的名称即可

man passwd

passwd:同时是一种命令和一种配置文件

用whereis查看会显示两种:man1和man5,1表示命令的帮助,5表示配置文件的帮助

man 5 passwd

whatis

查看命令简短信息

whatis ls

apropos

查看配置文件简短信息,加命令名称(无路径)即可

–help

查看命令选项

语法:命令 --help

touch --help

date

查看/更改系统时间

更改系统时间,格式先用man date查看一下,就不用背了

info

和man差不多

help

查看shell内置命令的帮助信息

shell内置命令:umask, if, case

如果对shell内置命令用which/whereis找不到,会得到shell(bash)的帮助信息


useradd

语法:useradd 用户名

passwd

设置用户密码

passwd 用户名

root可以更改所有用户的密码,还可以更改很简单的密码,但是不要

普通用户可以更改密码,但太简单的不会被系统接受

who

查看登陆用户的信息

  1. 登录用户名
  2. 登录终端:tty表示本地终端,pts表示远程终端
  3. 登录时段
  4. 登陆机器IP地址,如果没有则为本机

w

查看更详细的登录信息

  1. 当前系统的时间
  2. up:Linux已经连续运用的时间(uptime命令也可以查看)
  3. users:使用过的用户数
  4. load average:1,5,15min的服务器负载,大于5很大
  5. IDLE:空闲时间
  6. PCPU:当前循环中进行中命令对应的进程占用的CPU时间
  7. JCPU:累计占用的CPU时间
  8. WHAT:当前用户正在进行什么命令

gzip

语法:gzip [文件]

压缩后文件格式:gz

gunzip/gzip -d

解压缩.gz的压缩文件

gunzip [压缩文件]

  • 压缩比可以达到一倍,很惊人

  • 只能压缩文件

  • 不保留原文件

tar

打包目录

语法:tar 选项[-zcf] [压缩后文件名] [目录]

-c 打包

-v 显示详细信息

-f 指定文件名,最后写上.tar(没有也能行,但不好)

-z 打包同时压缩

打包完成之后在gz压缩一下,即.tar.gz,常见于源代码压缩

tar -zcf Jpan.tar.gz Japan #打包的同时压缩(-z表示用gzip压缩)

tar解压缩

-x 解包

其他选项相同

Tar -zxvf Japan.tar.gz

zip

windows和linux都支持,一般linux支持的压缩格式windows都支持

zip [选项] [压缩后文件名] [文件或目录]

-r 压缩目录

压缩后格式 .zip

压缩效果一般

unzip

解压

bzip2

bzip2 选项[-k] [文件]

-k :产生压缩文件后保留原文件

压缩后文件格式:.bz2

tar -jcf Japan.tar.bz2 Jpan #打包的同时用bzip2压缩(-j表示用bzip2压缩)

bunzip2

bunzip2 选项[-k] [压缩文件]

tar -xjf Japan.tar.bz2 #解压tar.bz2压缩的文件


shutdown

语法:shutdown [选项] 时间选项

选项:

-c 取消前一个关机命令

定时关机算错了

-h 关机

shutdown -h now #立即关机

shutdown -h 20:30 #定时关机

-r 重启

shutdown -r now #立即重启

服务器不能关机,只能重启

其他关机命令

halt

poweroff #不要随便用

init 0

其他重启命令

reboot

init 6

系统运行级别

0:关机

1:单用户,启动最核心服务,用于修复,相当于windows安全模式

2:不完全多用户,不含NFS服务(文件传输系统,方便但不安全),也不包含网络服务

3:完全多用户,完全命令行模式,无图形界面

4:未分配

5:图形界面

6:重启

cat /etc/inittab #进程配置文件,修改系统默认运行级别

runlevel #查询系统运行级别

logout

退出登陆