文件管理
列出文件
ls dirName
-a 隐藏文件
-l 完整信息
显示文件内容
cat fileName
-b 显示行号
统计单词数目
wc fileName1 [fileName2] .....
显示:
84 151 665 gc.sh
分别表示
- 文件总行数
- 单词数目
- 文件字节数,即文件大小
- 文件名
复制文件 from 为 to
cp from to
移动文件 old 为 new (可以用来重命名)
mv old new
删除文件
rm fileName1 [fileName2] ....
-rf 删除目录
查看文件差别
diff file1 file2
硬链接,删除一个仍然找得到
ln fileName linkName
符号链接,删除源,另一个找不到
ln -s fileName linkName3
目录
进入主目录
cd ~
. # 当前目录
.. # 上层目录
创建目录
mkdir dirName
-p 创建父目录
删除空目录
rmdir dirName1 [dirName1] ...
显示当前路径
pwd
文件权限
文件访问模式
读取 (r): 能读取文件信息,查看文件内容
写入 (w): 可编辑文件,也可以删除文件内容
执行 (x): 可将文件作为程序来运行
目录访问模式
读取 (r): 用户可查看目录中的文件
写入 (w): 可在当前目录删除文件或者创建文件
执行 (x): 遍历目录的权利。如 ls cd
查看权限
ls -l
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile
第一列:
第一组字符(2-4) 文件所有者权限
第二组字符(5-7) 文件所属用户组权限
第三组字符(8-10) 其他用户权限
改变权限
符号 | 说明 |
---|---|
+ | 为文件或者目录增加权限 |
- | 删除文件或者目录的权限 |
= | 设置指定的权限 |
a | 所有用户 |
o | 其它用户 |
g | 用户组 |
u | 所属用户 |
如:
chmod a+x 1.c
chmod o+wx,u-x,g=rx 1.c
没有指定用户,默认为给所有用户
数字表示权限
数字 | 说明 | 权限 |
---|---|---|
0 | 没有任何权限 | --- |
1 | 执行权限 | --x |
2 | 写入权限 | -w- |
3 | 执行权限和写入权限:1 (执行) + 2 (写入) = 3 | -wx |
4 | 读取权限 | r-- |
5 | 读取和执行权限:4 (读取) + 1 (执行) = 5 | r-x |
6 | 读取和写入权限:4 (读取) + 2 (写入) = 6 | rw- |
7 | 所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7 | rwx |
如:
chmod 1 1.c
ls -l 1.c
---------x 1 yzr staff 76 5 19 09:39 1.c
chmod 777 1.c
ls -l 1.c
-rwxrwxrwx 1 yzr staff 76 5 19 09:39 1.c
更改所有者和用户组
chown user fileList
user 可以为用户名,或者用户id
chgrp group fileList
group 可以为群组名,或者id
suid 和 sgid
chmod u+s 1.c
设置了 suid 位 的文件 ,执行位 x 变为 s
linux 通过给程序设置 suid 位赋予普通用户特殊权限,如果运行一个有suid的权限的程序,那么会继承该程序所有者的权限.
环境变量
全局的配置
/etc/profile
设置 PATH 变量
在终端输入一条命令的时候,shell会根据 PATH 变量查找该命令对应的程序, PATH 变量指明了该程序所在的路径
PATH=/bin:/user/bin
多条路径间用冒号 ':' 分隔
显示变量
echo $PATH
PS1 和 PS2 变量
PS1 命令提示符
PS2 第二命令提示符
常用环境变量
变量 | 描述 |
---|---|
DISPLAY | 用来设置将图形显示到何处。 |
HOME | 当前用户的主目录。 |
IFS | 内部域分隔符。 |
LANG | LANG可以让系统支持多语言。例如,将LANG设为pt_BR,则可以支持(巴西)葡萄牙语。 |
PATH | 指定Shell命令的路径。 |
PWD | 当前所在目录,即 cd 到的目录。 |
RANDOM | 生成一个介于 0 和 32767 之间的随机数。 |
TERM | 设置终端类型。 |
TZ | 时区。可以是AST(大西洋标准时间)或GMT(格林尼治标准时间)等。 |
UID | 以数字形式表示的当前用户ID,shell启动时会被初始化。 |
管道和过滤器
一个命令的输出作为另一个命令的输入,就是管道
管道是linux 进程之间一种重要的通信机制,除了管道还有 共享内存,消息队列,信号,套接字等
能够接受数据,过滤后再输出的工具称为 过滤器
grep 命令
grep pattern fileName
-v 输出不匹配行
-n 输出匹配行以及行号
-l 输出匹配行所在文件名
-c 输出匹配的总行数
-i 不区分大小写匹配
-r 递归查找
如果没有为 grep 指定检索的文件,从标准输入读取
sort 命令
对文件各行排序
sort fileName
-n 按照数字大小排序,忽略空格或者tab
-r 降序排序.默认为升序
-f 不区分大小写
+x 对第x列(0为起点)开始排序
下面的例子通过管道将 ls、grep 和 sort 命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:
ls -l | grep "Aug" | sort +4n
pg 和 more 命令
more 1.c
cat 1.c | more
分页显示, space 下一页, b 上一页
tr 转换
制表符转空格
cat text | tr '\t' ' '
压缩字符
cat text | tr ' '
cut 按列切分文本
截取文件的第2列和第4列
cut -f2,4 filename
去文件除第3列的所有列
cut -f3 --complement filename
-d 指定定界符
cat -f2 -d";" filename
sed 文本转换
find 命令
find pathname -options [ -print -exec -ok ...]
pathname #是find命令所查找的目录路径,例如.表示当前目录,/表示根目录
-print #表示find命令将匹配的文件输出到标准输出中
-exec #表示find命令对匹配的文件执行该参数给出的shell命令。相应命令的形式为 ‘cmd’ {} \;
-ok #它的作用和-exec一样,只是需要用户交互,更安全
find 命令选项
选项 | 解释 |
---|---|
-name | 按照文件名查找文件 |
-perm | 按照权限查找文件 |
-prune | 使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略 |
-user | 按照文件属主来查找文件 |
-group | 按照文件数组来查找文件 |
-mtime -n +n | 按照文件的更改时间来查找文件 |
-type | 文件类型 |
-depth | 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找 |
-fstype | 表示查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息 |
-mount | 表示在查找文件时不跨越文件系统的mount点 |
-follow | 表示如果find命令遇到符号链接文件,就跟踪至链接所指向的文件 |
-cpio | 表示对匹配的文件使用cpio命令,将这些文件备份至磁带设备中 |
type :
b:表示块设备文件 block
d:表示目录 directory
c:表示字符设备文件 char
p:表示管道文件 pipe
l:表示符号链接文件 link
f:表示普通文件 file
ntime :
-n 表示从此刻算起,文件的更改是在n天以内
+n 表示文件的更改时间是在n天以前
用例:
# 查找当前用户主目录下的所有文件
find ~
# 在logs目录下查找更改时间在5日以前的文件并删除它们
find /logs -mtime +5 -exec rm {} \;
# 在当前目录中查找以.log结尾、更改时间在5日以上的文件,并删除,但在删除前给出提示
find . -name “*.log” -mtime +5 -ok rm {} \;
# 查找当前目录下644权限的文件
find . -perm 644
# 查找当前目录下大于5M的文件
find . -size +5M
进程管理
创建后台进程 :
在命令后面加 &
ps 命令
查看正在运行的进程
ps
-f 查看所有信息
-x 显示无终端的进程
-a 显示所有用户的所有进程
-u 显示更多信息
-e 显示所有进程
列 | 描述 |
---|---|
UID | 进程所属用户的ID,即哪个用户创建了该进程。 |
PID | 进程ID。 |
PPID | 父进程ID,创建该进程的进程称为父进程。 |
C | CPU使用率。 |
STIME | 进程被创建的时间。 |
TTY | 与进程有关的终端类型。 |
TIME | 进程所使用的CPU时间。 |
CMD | 创建该进程的命令。 |
终止进程
若程序运行在前台可用 kill 命令 或者 ctrl+c 终止
如果在后台,先通过 ps 获取进程id,然后 kill 杀死进程
kill pid
-9 强制杀死进程
- 父进程和子进程:
- 僵尸进程:父进程在子进程之前被终止,子进程就成为了僵尸进程。 init 进程会成为所有孤儿进程的父进程
- 常驻进程:一般式系统进程,以root权限运行在后台,可以处理其它进程请求
任务和进程
动态显示正在运行的进程
top
查看系统中正在运行的任务
jobs
后台任务调到前台
fg %jobNumber
前台任务掉到后台
bg %jobNumber
如果希望将当前任务转移到后台,可以先 Ctrl+z 暂停任务,再使用 bg 命令。任务转移到后台可以空出终端,继续输入其他命令
网络通信工具
ping 命令
ping 命令会向网络上的主机发送应答请求,根据响应信息可以判断远程主机是否可用。
ping hostName or ip-address
如果主机没有响应,可以看到类似下面的信息:
ping: unknown host giiiiigle.com
ftp 工具
ftp 是 File Transfer Protocol 的缩写,称为文件传输协议。通过 ftp 工具,能够将文件上传到远程服务器,也可以从远程服务器下载文件
netstat 命令
netstat
常见参数
a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
文件系统
常见目录
目录 | 说明 |
---|---|
/ | 根目录,只能包含目录,不能包含具体文件。 |
/bin | 存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对所有用户有效。 |
/dev | 硬件驱动程序。例如声卡、磁盘驱动等,还有如 /dev/null、/dev/console、/dev/zero、/dev/full 等文件。 |
/etc | 主要包含系统配置文件和用户、用户组配置文件。 |
/lib | 主要包含共享库文件,类似于Windows下的DLL;有时也会包含内核相关文件。 |
/boot | 系统启动文件,例如Linux内核、引导程序等。 |
/home | 用户工作目录(主目录),每个用户都会分配一个目录。 |
/mnt | 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,例如挂载CD-ROM的cdrom目录。 |
/proc | 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。 |
/tmp | 临时文件目录,系统重启后不会被保存。 |
/usr | /user目下的文件比较混杂,包含了管理命令、共享文件、库文件等,可以被很多用户使用。 |
/var | 主要包含一些可变长度的文件,会经常对数据进行读写,例如日志文件和打印队列里的文件。 |
/sbin | 和 /bin 类似,主要包含可执行文件,不过一般是系统管理所需要的,不是所有用户都需要。 |
df 命令
查看磁盘空间使用情况(以千字节为单位
df -k
Filesystem 1K-blocks Used Available Use% Mounted on
每一列的含义如下:
列 | 说明 |
---|---|
Filesystem | 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)。 |
kbytes | 分区包含的数据块(1024字节)的数目。 |
used | 已用空间。 |
avail | 可用空间。 |
capacity | 已用空间的百分比。 |
Mounted on | 文件系统挂载点。 |
某些目录(例如 /devices)的 kbytes、used、avail 列为0,use列为0%,这些都是特殊(或虚拟)文件系统,即使位于根目录下,也不占用硬盘空间
du 命令
查看特定目录的空间使用情况
du dirName
-h 显示的更清晰
挂载文件系统
挂载是指将一个硬件设备(例如硬盘、U盘、光盘等)对应到一个已存在的目录上。 若要访问设备中的文件,必须将文件挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备
查看当前系统所挂载的硬件设备
mount
一般约定,/mnt 为临时挂载目录,例如挂载CD-ROM、远程网络设备、软盘等。
用户管理
用户组
groupadd gorupName
修改用户组名
groupmod -n newName oldName
修改用户组id
groupmod -g 545 gorupName
删除
groupdel gorupName
用户
useradd -d homedir -g groupname -m -s shell -u userid accountname
含义
-d homedir 指定用户主目录。
-g groupname 指定用户组。
-m 如果主目录不存在,就创建。
-s shell 为用户指定默认Shell。
-u userid 指定用户ID。
accountname 用户名。
修改密码
passwd userName
修改用户
usermod -d /home/mcmohd20 -m -l mcmohd mcmohd20
删除用户
userdel -r mcmohd20
userdel 命令仅有一个选项 -r,用来删除用户主目录和本地邮件。
为了便于恢复被误删的用户,可以忽略 -r 选项,保留用户主目录,之后确认无误可以随时删除主目录。