一.用户子系统

1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有用户
sudo cat /etc/passwd
# 添加用户 -m:用户创建家目录 -s:用于指定bash
sudo useradd -m -s /bin/bash test
# 删除用户
sudo userdel -r test
# 设置密码
sudo passwd [用户名]
# 切换用户 默认切换到root用户
sudo su
sudo su test
exit #退出切换

二.文件子系统

目录名 功能
/bin(binary) 存放可执行程序或脚本文件
/sys(system) 存放和系统相关的文件
/dev(device) 存放设备文件
/etc 存放配置文件
/lib(library) 存放系统库文件
/var(variable) 存放变化很快的文件,如日志文件
/proc(process) 存放进程数据
/root root家目录
/home/{username} 普通用户家目录

1.目录命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 打印当前工作目录
pwd
# 切换到上一次目录
cd -
# 创建目录 -p:递归创建
mkdir dir1 dir2 dir3
mkdir -p a/b/c
# 删除目录
rmdir dir1 dir2 dir3 #只能删除空目录
rmdir -p a/b/c
rmdir dir* #结合通配符使用
# 查看目录文件
ls -a
-i #显示inode
-l
-lh #直观显示文件大小
# 复制
cp yuan1 yuan2 yuan3 dest #可以将多个源文件复制到目录中
cp -n a.txt b.txt #覆盖b.txt的内容
-i a.txt b.txt #覆盖前给出提示
-r a b #复制目录

通配符

符号 含义
* 匹配任意多个字符(包括0个)
匹配任意一个字符
[abc] 匹配集合中的任意一个字符

文件类型 类型-拥有者-所属组-其他组

字母 含义
d(directory) 目录
c(character) 字符设备文件(鼠标、键盘)
b(block) 块设备文件(磁盘)
l(symbolic link) 符号链接
s(socket) 本地套接字
p(named pipe) 有名管道
  • mv
1
2
mv a.txt b.txt	#如何两者实在同一目录下,那么就是重命名;否则就是移动
mv *.txt dir #将所有以.txt结尾的文件移动到dir目录下
  • rm
1
2
3
4
rm *.txt
-i a.txt #删除前给出提示
-f a.txt #删除时发现文件不存在也不提示
-r a/b/c #递归删除文件

2.文件命令

①创建文件

1
2
3
touch a.txt
echo "abc" > a.txt
vim a.txt

②查找文件

  • which
1
2
3
4
# 查看命令的路径
which ls
# 查看环境变量
env
  • find
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## 1.根据文件名查找
# 从当前目录下查找文件名以.txt结尾的文件
find . -name "*.txt"
## 2.根据文件类型查找
# 从dev目录下查找所有字符设备文件
find /dev -type c
## 3.根据文件大小查找
# 查找(4,5]M的文件
find . -size 5M
# 查找(2M,+∞)的文件
find . -size +2M
# 查找(-∞,2M)的文件
find . -size -2M
## 4.查找空文件
find . -empty
## 5.根据用户名查找
find . -user root
## 6.根据权限查找
# 3位8进制数字 rw- r-- r-- ---> 644(110 100 100)
find . -perm 775
## 7.根据时间查找
# 时间单位:min(分) time(天)
# -a(access):文件访问时间 -c(change):文件属性改变 -m(modify):文件内容改变
find . -amin +2
-ctime +2
-mmin -3
## 8.组合查找
# -a(and) -o(or) !
# 查找dev目录下类型为字符设备的文件并且以tty开头
find /dev -type c -a -name "tty*"

③查看文件内容

  • cat
1
2
3
4
# 可以将两个文件拼接在一起
cat /etc/passwd /etc/shadow
# 查看行号
cat -n /etc/passwd
  • head
1
2
3
4
5
6
# 默认显示文件的前10行
head a.txt
# 显示前20行
head -n 20 a.txt
# 不显示后10行
head -n -10 a.txt
  • tail
1
2
# 实时查看日志文件的后10行
tail -F a.log

④重定向

标准流 文件描述符 重定向符号
stdin 0 <
stdout 1 > 和 >>
stderr 2 2> 或 2>>
1
2
3
4
5
6
# 将查询内容保存到users文件中
who > users
# 将错误信息进行重定向
cat users file 2> text
# 对stdout与stderr同时重定向
cat users file >& text

⑤搜索文件内容

1
2
3
4
5
6
# 从a.txt文件中查找所有的apple
grep -E "apple" a.txt
-n #显示行号
-i #忽略大小写
-v #显示不匹配的行
-c #显示有多少行匹配

正则表达式

符号 含义
+ 重复至少一次
重复零次或一次
* 重复任意次数
^ 行首
$ 行尾
\< 词首
\> 词尾

⑥改变文件权限

1
2
3
4
5
# 文字设定法
chmod [ugoa] [+-=] [rwx]
chmod a+x text
# 数字设定法
chmod 777 text

⑦链接

1
2
3
4
# 为text1创建硬链接text2
ln text1 text2
# 为text1创建软连接
ln -s text1 text2

3.命令组合

1
2
3
4
5
cmd1 ; cmd2
# 将cmd1的输出作为cmd2的输入
cmd1 | cmd2
# 将cmd1的输出作为cmd2的参数
cmd1 | xargs cmd2

三.其他命令

  • shutdown
1
2
3
4
5
6
7
# man命令是帮助手册
man ls # d:往下翻半页 u:上半 f:下一 b:上一 q:退出
# shutdown 关机
shutdown -H 挂起
-P 关机
-r 重启
-c 取消
  • tar
1
2
3
4
5
6
7
8
9
10
11
12
13
tar [主选项+辅选项] 包名 [文件或目录]
# 主选项(只能选择一个): c:创建 r:追加 x:释放 t:查看
# 辅选项: f:指定包文件的名称 v:显示详细信息 z:使用gzip算法压缩或者解压缩

# 创建package.tar并且将a.txt放进去
tar cvf package.tar a.txt
# 将b.txt与c.txt的内容追加到package.tar中
tar rvf package.tar b.txt c.txt
# 解压
tar xvf package.tar
# 压缩
tar czvf package.tar.gz *
tar xzvf package.tar.gz