当初开始学习Linux shell指令时做的笔记,现在迁移到自己的博客网站。包括常用的shell指令以及对应的常用选项和示例。注意,这只是一份快速参考,有关shell指令更详细的信息,请参考man文档。
¶文件处理命令
¶touch
创建空文件。
1 | 创建文件 /path/to/file,如果文件存在,则会更新文件时间。 |
¶cat
查看文件内容。
1 | cat /path/to/file |
¶tac
反向显示文件内容,即先输出最后一行。
¶more
分页显示文件内容,但是不可以向上翻页。
1 | more /path/to/file |
| 交互命令 | 说明 |
|---|---|
| space 或 f | 翻页 |
| enter | 换行 |
| q 或 Q | 退出 |
| / | 搜索 |
¶less
分页显示文件内容,可以向上翻页。其余与more指令相同。
¶head
显示文件前面几行,默认只显示10行。
1 | head /path/to/file |
¶tail
显示文件的最后几行,默认只显示10行。
1 | tail -n 15 /path/to/file # 显示最后15行 |
¶ln
创建软链接或硬链接文件。
1 | ln source_file hardlink_file |
软链接:
硬链接:
¶rename
批量重命名。
- -n 只显示将被重命名的文件,而非实际进行重命名操作。
- -v 打印被成功重命名的文件
- -f 覆盖已经存在的文件
1 | 将所有文件的文件名中的所有str1替换为str2。g表示全部匹配,否则只匹配第一个。 |
¶目录处理命令
¶ls
显示目录文件。
1 | ls [-aAldi] /path/to/file |
- -a 显示所有文件,包括隐藏文件。
- -A 显示所有文件,不包括 . 和 …
- -l 显示详细信息。
- -d 显示目录本身的信息,而不是此目录下的文件。
- -i 查看i节点
¶mkdir
创建目录。
1 | mkdir [-p] /path/to/dir |
- -p 递归创建。如果父目录不存在,则先创建父目录,再创建子目录。
¶cd
切换当前工作目录。这是一个shell内置命令。
1 | cd /path/to/dir # 切换到指定目录 |
¶pwd
打印当前工作目录,绝对路径。
¶basename
去除文件名的目录和前缀。编写shell脚本时非常有用。
1 | basename /path/to/filename |
¶dirname
去除文件名的最后一个部分,即得到文件所在路径。编写shell脚本时非常有用。
1 | dirname /path/to/filename |
¶rmdir
删除空目录,实际几乎用不到。
1 | rmdir /path/to/dir |
¶cp
复制文件或目录。
1 | cp [-rpf] source destination |
- -r 递归复制文件夹。复制文件夹时不带此选项会报错。
- -p 保留文件属性。
- -f 强制复制。
注:如果destination不存在,但父目录存在,则会更改名字。
¶mv
移动文件或更改文件名。
1 | mv source destination |
注:如果destination不存在,但父目录存在,则是更改文件名。
¶rm
删除文件或目录。
1 | rm [-rf] /path/to/file |
- -r 递归删除
- -f 强制删除。否则,可能会逐个文件确认是否删除。
注意,rm -rf /*是个非常非常非常可怕的指令。如果感兴趣,可以在虚拟机上做个试验,记得提前拍个快照。
¶权限管理命令
¶chmod
更改文件或目录的权限。只有文件的所有者和root用户才能执行此操作。
1 | chmod [{ugoa}{+-=}{rwx}] filename [-R] |
- -R 递归修改
示例:
1 | chmod g+w,o-r filename # 所属用户组添加写权限,其他用户去除读权限 |
在Linux下,文件的权限可以用数字来表示。即rwxrw-r--也可以用764来表示。注意,这是八进制。
| 权限 | 八进制 | 二进制 |
|---|---|---|
| r | 4 | 100 |
| w | 2 | 010 |
| x | 1 | 001 |
同样的权限,对文件和目录可能有不同的意义。下表总结了权限所代表的意义。
| 权限 | 对文件的意义 | 对目录的意义 |
|---|---|---|
| r,读 | 可以查看文件的内容 cat/more/head/less |
可以列出目录中的文件 ls |
| w,写 | 可以修改文件 vim |
可以在目录创建修改文件 touch/mkdir/rmdir/rm |
| x,执行 | 可以执行文件 | 可以进入目录 cd |
注:
- 对目录,
rx权限一般都有。 - 是否可以删除一个文件,是看目录有没有
w权限,而不是看文件是否有w权限。 - 权限有继承关系,如果对一个文件有相应的权限,而对目录没有,一样无法查看或执行。
¶chown
更改文件的所有者。只有root用户才可以更改文件的所有者。可以使用sudo暂时提升权限。
1 | chown [用户名] [文件名] [-R] |
- -R 递归修改
¶chgrp
更改文件的所属组。
1 | chgrp [用户组] [文件名] [-R] |
- -R 递归修改
注:chown可以在更改文件所有者的同时修改文件所属组。
1 | chown user:grp filename # 文件的所有者更改为user,所属组更改为grp |
¶umask
显示、设置新建文件的权限掩码。这是一个shell内置命令。
1 | umask [-S] |
- -S 已rwx形式显示新建文件的默认权限。
1 | umask |
注意:为了安全考虑,无论权限掩码如何设置,新建的文件是不具有x权限的。
¶搜索命令
¶find
最常用的文件搜索命令,但是比较慢。
1 | find /etc -name init # 在/etc目录下查找名为init的文件 |
¶locate
在数据库中查找文件,速度快,但是新创建的文件可能没有收录到数据库。可以使用指令updatedb更新数据库。
选项:
- -i 忽略大小写
1 | locate filename # 查找名为filename的文件 |
¶which
which command_name
搜索命令所在路径及别名信息。
1 | 查找which命令所在的路径 |
¶whereis
whichis command_name
搜索命令所在目录及帮助文档路径。
¶type
type command_name
查看命令的类型。
1 | [root@localhost ~]# type type |
¶grep
grep [选项] [字符串] [文件]
在文件中搜索字符串匹配的行并输出。
选项:
- -i 不区分大小写
- -n 输出行号
- -s 不输出报错信息
- -w 整词匹配
- -v 排除指定字符串,即输出不匹配的行
1 | 不显示 # 号开头的行。^ 表示匹配行首。 |
¶帮助命令
¶man
man [section] page
查看帮助手册。为了快速定位,man将手册分为9个section,说明如下表所示。
| section number | description |
|---|---|
| 1 | Executable programs or shell commands |
| 2 | System calls (functions provided by the kernel) |
| 3 | Library calls (functions within program libraries) |
| 4 | Special files (usually found in /dev) |
| 5 | File formats and conventions eg /etc/passwd |
| 6 | Games |
| 7 | Miscellaneous (including macro packages and conventions), e.g. man(7),groff(7) |
| 8 | System administration commands (usually only for root) |
| 9 | Kernel routines [Non standard] |
¶info
与man类似,只是显示内容的形式不一样。
¶help
help command_name
查看shell内置命令的帮助。
¶whatis
whatis command_name
查看命令的简短信息。
¶压缩解压命令
¶gzip
gzip filename
将文件压缩成filename.gz,会删除源文件。只能压缩当个文件,不能压缩文件夹。
¶gunzip
gunzip filename.gz
解压缩,与gzip -d可以达到同样的效果。
¶tar
| 格式 | 压缩 | 解压 |
|---|---|---|
| tar | tar -cf file.tar filelist | tar -xf file.tar |
| tar.gz | tar -czf file.tar.gz filelist | tar -xzf file.tar.gz |
| tar.bz2 | tar -cjf file.tar.bz2 filelist | tar -xjf file.tar.bz2 |
| tar.Z | tar -cZf file.tar.Z filelist | tar -xZf file.tar.Z |
选项说明:
- -c 打包,但是不压缩
- -x 解包
- -f 指定文件名
- -z tar.gz格式
- -j tar.bz2格式
- -Z tar.Z格式
- -v 显示详细信息
- -C 指定解压文件存放的目录
¶zip
压缩成zip格式。
zip -r 压缩后的文件名 文件或目录
¶unzip
解压zip文件。
unzip file.zip
¶网络命令
¶write
¶wall
¶ping
¶ifconfig
¶traceroute
¶netstat
¶系统维护命令
¶last
列出目前与过去登入系统的用户信息。每个用户的每次登录都会产生一个条目。
¶lastlog
检查特定用户上次登录的时间。
lastlog [-u uid]
¶mount
挂载文件系统。
mount [-t type] [-o opt] device mount_point
- mount -t iso9660 /dev/sr0 /mnt/chrom # 挂载光盘
- mount -t cifs //hostname/dirname /mountpoint -o username=name # 挂载samba
- mount -o remount,rw /mountpoint # 重新挂载为可读写
¶umount
取消挂载。
umount 设备文件名或挂载点
¶shutdown
¶logout
¶who
查看登录用户信息。
¶w
查看登录用户详细信息。
¶whoami
查看自己的用户名。
¶df
查看分区的信息,包括文件系统、已用空间、可用空间、总空间、挂载点等。
df [-mgh] [mountpoint]
- -m 单位是MB
- -g 单位是GB
- -h 人性化显示,自动选择合适的单位
¶du
查看文件或文件夹的大小。
¶uptime
查看系统连续运行的时间。
¶runlevel
查看系统的运行级别。