总结了学习linux时的一些笔记,重新排版。

基础

文件命名规则:
1.除/以外,所有的字符都合法
2.有些字符最好不用,如空格符, 制表符, 退格符和字符@#$&()-等
3.避免使用.作为普通文件名的第一个字符(避免被隐藏)
4.大小写敏感,严格区分大小写

命令格式:命令 -选项 参数
说明:

  1. 当有多个选项时,可以写在一起
  2. .和..分别代表当前目录和当前目录的父目录(上一级目录)
按键 功能
Ctrl+c 终止指令
Ctrl+d 退出shell
Ctrl+a 光标移至行首
Ctrl+e 光标移至行末

转义符\可保留本意

用户管理 命令
改变用户 su - 用户名
添加用户 useradd 用户名
设置用户密码 passwd 用户名

由命令所在的路径可判断命令的权限:

权限 路径
root /sbin ,/usr/sbin
all user /bin,/usr/bin

文件处理命令

ls
功能:显示目录文件
路径:/bin/ls
语法:ls 选项[-ald] [文件或目录]

  • -a 显示所有文件,包括隐藏文件(all)
  • -d 查看目录属性(directory)(一般配合l,即-ld连用查看某个目录的属性)
  • -l 详细信息显示(long)
    例子:drwxr-xr-x 2 root root 4096 12-01 20:52 bin
d rwxr-xr-x 2 root root 4096 12-01 20:52 bin
文件类型,常见文件类型有:
d:目录 directory
-: 二进制文件
l: 软链接文件 link
代表权限( r-read 读, w-write 写, x-execute 执行), 所有者 u(user, owner) 权限 rwx, 所有组 g(group) 权限 r-x, 其他人 o(other) 硬链接数 管理者是root,管理组是root 文件大小(不准确),linux一般用数据块大小来做储存文件大小的单位,即数据块是最小储存单位 创建时间或最后修改时间 文件名

cd
功能:切换目录
路径:shell内置命令
权限:所有用户
语法:cd [目录]
例子:

1
2
3
4
// 切换到根目录
cd /
// 回到上一级目录
cd ..

pwd
功能:显示当前所在的工作目录
路径:/bin/pwd
语法:pwd

touch
功能:创建空文件
路径:/bin/touch
语法:touch [文件名]
例子:touch newfile

mkdir
功能:创建新目录
路径:/bin/mkdir
语法:mkdir [目录名]
例子:mkdir newdir

cp
功能:复制文件或目录
路径:/bin/cp
语法:cp -R [源文件或目录][目的目录]

  • -R 复制目录
  • -p 拷贝之后不改变时间值

例子:

1
2
3
4
// 将文件file1, file2复制到目录dir1
cp file1 file2 dir1
// 将目录dir1下的所有文件复制到目录dir2下
cp -R dir1 dir2

mv
功能:移动文件, 更名
路径:/bin/mv
语法:mv [源文件或目录][目的目录]
例子:

1
2
3
4
5
6
// 将当前目录下文件file1更名为file3
mv file1 file3
// 将文件file2移动到目录dir2下
mv file2 dir2
// 改名和移动可同时操作
mv /dir1/file1 /dir2/file2

rm
功能:删除文件
路径:/bin/rm
语法:rm -r [文件或目录]

  • -r 删除目录
  • -f 强制删除(避开询问)

例子:

1
2
3
4
// 删除文件file1
rm file1
// 删除目录dir1
rm -r dir1

cat
功能:显示文件内容(显示大文件的话不完整)
路径:/bin/cat
语法:cat [文件名]
例子:cat /etc/issue

more
功能:分页显示文件内容(可以完整显示文件)
路径:/bin/more
语法:more [文件名]

命令 功能
(空格)或 f 显示下一页
(Enter) 显示下一行
q 或 Q 退出

例子:more /etc/services

head
功能:查看文件前几行
路径:/bin/head
语法:head -num [文件名]

  • -num 显示文件的前num行

例子:head -20 etc/services

tail
功能:查看文件后几行
路径: bin/tail
语法:tail -num [文件名]

  • -num 显示文件后num行
  • -f 动态显示文件内容

例子:tail -30 /etc/services

ln
功能:产生链接文件
路径:/bin/ln
语法:ln -s [源文件][目标文件]

  • -s 创建软链接

例子:

1
2
3
4
// 创建文件/etc/issue的软链接/issue.soft
ln -s /etc/issue/issue.soft
// 创建文件/etc/issue的硬链接/issue.hard
ln /etc/issue/issue.hard

链接类型 等价理解 特性
软链接 类似于快捷方式 文件很小,若源文件消失,软链接失效。
硬链接 cp -p + 同步更新 与源文件有相同的inode,不能跨文件系统(不能跨系统文件分区),若源文件消失,硬链接不变。

权限处理命令

chmod
功能:改变文件或目录权限
路径:/bin/chmod
语法:

1
2
3
chmod u + r
chmod g - w
chmod o = x

关于权限值:
u-所有者, g-所属组, o-其他人
rwx: 可写可读可执行
r-4, w-2, x-1(重点掌握)
例如:rwxr-xr– 等价于 754, 752 等价于 rwxr-x-w-

例子:

1
2
3
4
// 赋予文件file1所属组写权限
chmod g+w file1
// 设定目录dir1为所有用户具有全部权限
chmod 777 dir1

对于权限的理解:
对文件:
r(可以查看文件内容)cat, more, head, tail
w(可以修改文件内容)echo, vi
x(可以执行文件)命令, 脚本
对目录:
r(可以列出目录中的内容)ls
w(可以在目录中创建, 删除文件)touch, mkdir, rm
x(可以进入目录)cd

chown
功能:改变文件或目录的所有者
路径:/bin/chown
语法:chown [用户][文件或目录]
例子:

1
2
// 改变文件file1的所有者为nobody
chown nobody file1

chgrp
功能:改变文件或目录的所属组
路径:/bin/chgrp
语法:chgrp [用户组][文件或目录]
例子:

1
2
// 改变文件file1的所属组为adm
chgrp adm file1

umask
功能:显示, 设置文件的缺省权限
路径:/bin/umask
语法:umask -S

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

例子:umask
直观写法:umask -S

假如umask得到0022
0-特殊权限位
022-用户权限位,权限掩码值
777 - 022 = 755
755表示权限

改变默认权限:umask 权限掩码值

Linux权限规则:
缺省创建的文件不能授予可执行x权限

文件搜索命令

which
功能:显示系统命令所在目录
路径:/usr/bin/which
语法:which [命令名称]
例子:which ls

find
功能:查找文件或目录
路径:/usr/bin/find
语法: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
31
32
33
34
35
36
// 在目录/etc中查找文件init,注:*,匹配任意字符,若查找init开头的文件则init*; ?,匹配单个字符,若查找带有init的七个字母的文件则init???
find /etc -name init

// 在根目录下查找大于100MB的文件,以数据块为单位512字节,注:大于+,小于-
find / -size +204800

// 在根目录下查找所有者为sanlee的文件
find /home -user samlee

// 120分钟以内被修改的文件
find /etc -mmin -120
/*时间:
- 1.天 ctime, atime, mtime
- 2.分钟 cmin, amin, mmin
- c-change改变,表示文件属性被修改过,所有者, 所属组, 权限
- a-access访问
- m-modify修改,表示文件内容被修改过
- -之内,+超过
*/   

// 在/etc下查找大于80MB小于100MB的文件,注:连接符-a表示and逻辑与,-o表示or逻辑或
find /etc -size +163840 -a -size -204800

// 在/etc下查找inittab文件并显示其详细信息
find /etc -name inittab -exec ls -l {} \;
   
// 在/etc下查找用户名为samlee的文件并删除
find /etc -user samlee -exec rm -rf {} \;

// find .... -exec 命令 {} \;(若用-ok代替-exec则会询问确认)
   
// 在/etc下查找软链接文件(f二进制文件, l软链接文件, d目录)
find /etc -type l

// 在当前目录寻找i节点为16的文件
find . -inum 16

locate
功能:寻找文件或目录(在updatedb数据库里寻找,速度快)
路径:/usr/bin/locate
语法:locate [搜索关键字]
例子:

1
2
// 列出所有跟file相关的文件
locate file

updatedb
功能:建立整个系统目录文件的数据库
路径:/usr/bin/updatedb
例子:updatedb

grep
功能:在文件中搜寻字符匹配的行并输出
路径:/usr/bin/grep
语法:grep [指定字母][源文件]
例子:grep ftp /etc/services

帮助命令:

man
功能:获取帮助信息(遵循more的指令来换行换页和退出)
路径:/usr/bin/man
语法:man [命令或配置文件]
例子:

1
2
3
4
// 查看ls命令的帮助信息
man ls
// 查看配置文件services的帮助信息
man services

若命令与配置文件同名则优先查看命令的帮助,通过man 5 […]来查看,即帮助有很多种,第五种为配置文件帮助。

info
功能:获取帮助信息(与man功能完全相同,只是呈现方式不同)
路径:/usr/bin/info
语法:info [任何关键字]
例子:

1
2
// 查看ls指令的帮助信息
info ls

whatisapropos
功能:获得索引的简短说明信息
路径:/usr/bin/whatis /usr/bin/apropos
语法:
whatis [任何关键字]
apropos [任何关键字]
例子:

1
2
3
whatis ls
//相当于man -k
apropos fstab

注:与locate类似,需要用makewhatis指令建立whatis和apropos搜索使用的数据库(例子:makewhatis)

help
功能:查看shell内置命令的帮助

压缩解压命令:(.gz,.tar.gz,.zip,.bz2)

gzip
功能:压缩文件
路径:/bin/gzip
语法:gzip 选项[文件]
压缩后文件格式:.gz
1.只能压缩文件,不能压缩目录
2.不保留原文件

gunzip
功能:解压缩.gz的压缩文件(同gzip -d)
路径:/bin/gunzip
语法:gunzip 选项[压缩文件]
例子:gunzip file1.gz

tar
功能:打包目录
路径:/bin/tar
压缩语法:tar 选项 [目录]

  • -c 产生tar打包文件
  • -v 显示详细信息
  • -f 指定压缩后的文件名
  • -z 打包同时压缩

压缩后文件格式:.tar.gz
例子:

1
2
// 将目录dir1压缩成一个打包并压缩的文件
tar -zcvf dir.tar.gz dir1

注:老系统不支持打包压缩一起进行

解压缩语法:tar 选项 [压缩文件]

  • -x 解包.tar文件
  • -v 显示详细信息
  • -f 指定解压文件
  • -z 解压缩

例子:

1
2
// 将dir1解压到当前目录下
tar -zxvf dir1.tar.gz

file指令
功能:判断文件类型
语法:file [文件名]

zip
(默认的win和linux通用格式)
功能:压缩文件或目录(保留原文件)
路径:/usr/bin/zip
语法:zip 选项[-r] [压缩后文件名称] [文件或目录]

  • -r 压缩目录

压缩后文件格式:.zip
例子:

1
2
3
4
// 压缩文件
zip services.zip /etc/services
// 压缩目录
zip -r test.zip /test

unzip
功能:解压.zip的压缩文件
路径:/usr/bin/unzip
语法:unzip [压缩文件]
例子:

1
2
// 解压文件
unzip test.zip

bzip2
功能:压缩文件
路径:/usr/bin/bzip2
语法:bzip2 选项[-k] [文件]

  • -k 产生压缩文件后保留文件

压缩后文件格式:.bz2
例子:bzip2 -k file1

bunzip2
功能:解压缩
路径:/usr/bin/bunzip2
语法:bunzip2 选项[-k] [压缩文件]

  • -k 解压缩后保留文件

例子:bunzip2 -k file1.bz2

网络通信指令:

write
功能:向另一个用户发信息,以ctrl+D作为结束(实时)
路径:/usr/bin/write
语法:write <用户>
例子:write samlee

wall
功能:向所有用户广播信息
路径:/usr/bin/wall
语法:wall [message] [文件名]
例子:wall Happy new year!

ping
功能:测试网络连通性
路径:/usr/sbin/ping
语法:ping 选项 IP地址

  • -c [num] pingnum次(类似windows的ping)
  • -s [num] 用num大小的数据包来测试(num不能大于65507)

例子:ping 192.168.1.1
用ifconfig可查看本机IP地址

ifconfig
功能:查看网络设置信息
路径:/usr/sbin/ifconfig
语法:ifconfig 选项[-a] [网卡设备标识]

  • -a 显示所有网卡信息

例子:

1
2
3
4
5
6
// 显示所有网卡信息
ifconfig -a
// 查看关键网卡信息
ifconfig eth0
// 临时改变IP地址为192.168.9.6,若不写入配置文件,则仅在此会话中生效
ifconfig eth0 192.168.9.6

系统关机命令:

shutdown
功能:关机
路径:/usr/sbin/shutdown
语法:shutdown
例子:

1
2
// 马上关机
shutdown -h now

reboot
功能:重启系统
路径:/usr/sbin/reboot
语法:reboot
例子:reboot

shell应用技巧:

小技巧:

1.命令补全
输入文件名起始的若干个字母后,按补齐文件名
2.清空屏幕
clear指令,或 ctrl + L
3.快速删除
ctrl + U 可以快速删除当前命令行光标前的所有内容
4.命令历史
history 指令:列出敲过的所有指令
上下箭头键可以查找以前执行过的命令

大技巧:

1.命令别名
定义别名例子:

1
2
3
alias copy=cp
// 带选项时要加双引号
alisa xrm="rm -f"

删除别名:unalias copy

2.输入/输出重定向
shell对于每一个进程预先定义三个文件描述字(0,1,2)
0(STDIN) 标准输入
1(STDOUT) 标准输出
2(STDERR) 标准错误输出

>>> 输出重定向
例子:

1
2
3
4
// tmp的内容输出到文件中,并替代原内容
ls -l /tmp > /tmp.msg
// data输出到文件内,并追加在原内容后面
date >> /tmp.msg

< 输入重定向
例子:

1
2
// 把文件作为输入端
wall < /etc/motd

2> 错误输出重定向
例子:

1
2
// 错误信息输出到文件/bak.error内
cp -R /usr /backup/usr.bak 2> /bak.error

3.管道
管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入。
使用方法:命令1|命令2|命令3……|命令n
例子:

1
2
ls -l /etc | more
ls -l /etc | grep init

4.命令连接符

符号 功能
;  ;间隔的各命令按顺序依次执行
&& 前后命令的执行存在逻辑与关系,前面的命令执行成功后,它后面的命令才被执行。
|| 前后命令的执行存在逻辑或关系,若前面的命令执行成功,则后面不执行;若前面的命令执行失败,则后面才会执行。

5.命令替换符
命令替换:将一个命令的输出作为另一个命令的参数
格式:命令1 `命令2`(注意不是单引号,而是键盘按键1旁边的替换符)
例子:ls -l `which touch`