Linux常用命令
记载一些常用的linux命令和常识
目录
通配符
通配符 | 含义 |
---|---|
* | 文件代表文件名中所有字符 |
ls te* | 查找以te开头的文件 |
ls *html | 查找结尾为html的文件 |
? | 代表文件名中任意一个字符 |
ls ?.c | 只找第一个字符任意,后缀为.c的文件 |
ls a.? | 只找只有3个字符,前2字符为a.,最后一个字符任意的文件 |
[] | [”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。 |
[abc] | 匹配a、b、c中的任意一个 |
[a-f] | 匹配从a到f范围内的的任意一个字符 |
ls [a-f]* | 找到从a到f范围内的的任意一个字符开头的文件 |
ls a-f | 查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用 |
\ | 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。 |
ls *a | 查找文件名为*a的文件 |
文件类型
文件类型 | 符号 |
---|---|
普通文件 | - |
目录 | d |
块设备 | b |
字符设备 | c |
管道 | p |
符号链接 | l |
套间字 | s |
命令
alias 创建命令别名
基本用法
- 创建别名:
1
alias name='command'
这里,
name
是你为命令指定的别名,command
是你希望别名执行的实际命令。 - 查看当前别名:
1
alias
这将列出所有当前定义的别名。
- 查看特定别名:
1
alias name
这将显示指定别名的定义。
- 删除别名:
bash unalias name
这将移除指定的别名。
示例
为
ls
命令创建别名:bash alias ll='ls -alF'
这创建了一个ll
的别名,用于执行ls -alF
,通常用于显示详细的目录列表。为
rm
命令创建安全别名:bash alias rm='rm -i'
这将rm
命令替换为rm -i
,在删除文件之前提示确认,防止误删。为
grep
命令添加颜色选项:1
alias grep='grep --color=auto'
这为
grep
命令添加了自动着色功能,便于在终端中查看匹配结果。
注意事项
临时性:通过
alias
命令创建的别名仅在当前的shell会话中有效。要使别名永久生效,可以将它们添加到shell的启动文件中,如~/.bashrc
、~/.bash_profile
或~/.zshrc
等。命令替换:别名会覆盖shell中的已有命令,但可以通过在命令前加反斜杠(
\
)来执行原始命令。例如,\rm
将忽略别名,执行原始的rm
命令。复杂命令:对于复杂的命令或需要使用参数的情况,建议使用函数而不是别名,因为别名不支持参数传递。
查看内建/外部命令
- 内建命令
- 指bash(或其它shell)工具中继承的命令
- 效率高于外部命令
type [-afptP] 名称 [名称] …
显示命令类型的信息
帮助命令
- 内建命令
- help + 内建命令
- 外键命令
- 例; ls –help
man命令
man 中各个 section 意义如下:
deng@itcast:~$ man man
1).Standard commands(标准命令)
2).System calls(系统调用,如open,write)
3).Library functions(库函数,如printf,fopen)
4).Special devices(设备文件的说明,/dev下各种设备)
5).File formats(文件格式,如passwd)
6).Games and toys(游戏和娱乐)
7).Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
8).Administrative Commands(管理员命令,如ifconfig)
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
用法示例:
man -k passwd 搜索关键词passwd
man -a passwd 浏览passwd所有相关的页
man -f passwd 等价于whatis
man 1 printf 浏览printf第1页介绍
man 2 read 浏览read第2页介绍
man 3 printf 浏览printf第3页介绍
man 5 passwd 浏览passwd第5页介绍
man 8 chpasswd 浏览chpasswd第8页介绍
目录相关命令
pwd
格式:
pwd [-LP] 打印当前工作目录的名字。
-L 打印工作目录名(如果有命名) -P 打印物理目录
cd
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd .. | 切换到上级目录 |
cd - | 可进入上一个进入的目录 |
mkdir
参数-p可递归创建目录。
需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。
使用示例:
mkdir test 在当前目录下创建test目录
mkdir /tmp/test 在根目录下tmp目录里创建test目录
mkdir file{1..100} 在当前目录下创建file1到file100的目录,这里会创建100个目录
mkdir “file{1..100}” 在当前目录下创建file{1..100}目录,这里只创建一个目录
mkdir -p a/b/c 在当前目录下创建a/b/c目录树
mkdir “a b” 创建以”a b”命名的一个目录
mkdir a\ b 创建以”a b”命名的一个目录
mkdir a b 创建目录a和目录b
rmdir
使用方法 同上
ln
硬链接(Hard Link)
- 硬链接文件与原始文件没有区别,删除任何一个文件不会影响另一个。
- 只有当所有硬链接都被删除后,文件数据才会被释放。
- 硬链接不能跨越不同的文件系统。
- 不能对目录创建硬链接(除非使用特定的系统工具或选项)。 使用示例
1
ln source_file hard_link
符号链接(Symbolic Link)
- 符号链接是一个独立的文件,指向目标文件或目录的路径。
- 如果删除了符号链接,目标文件不受影响;如果删除了目标文件,符号链接会变为“断链”(dangling link)。
- 可以跨文件系统创建符号链接。
可以对目录创建符号链接。
使用示例
1
ln -s target_file symlink
常用选项
-s
:创建符号链接而非硬链接。-f
:强制创建链接,覆盖已存在的同名文件。-n
:在符号链接上不解引用(主要用于目录符号链接)。-v
:显示详细的操作信息。-i
:在覆盖文件时进行交互提示。-b
:在覆盖文件时进行备份。
文件相关命令
ls
- a 显示隐藏文件
- l 显示详细信息
- h 人性化大小单位
- t 按日期排序
字段介绍
1
2
3
srwxrwxrwx 1 root root 0 8月 8 11:00 /run/systemd/notify
用户/组/其它 硬链接数 用户 组 大小 修改日期 文件名
权限
touch 创建/ 更新文件
- touch file 创建file空文件,如果file存在则更新file的存取和修改时间
- touch -c file 仅更新时间、不创建文件
- touch -r sfile dfile 更新dfile的时间,与sfile 相同
- touch -a file 更新存取时间
- touch -m file 更新修改时间
- touch file{2,3,4} 同时创建file2,file3,file4三个空文件
- touch “file{2,3,4}” 创建file{2,3,4}一个空文件
cp
选项 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。 |
-f | 删除已经存在的目标文件而不提示 |
-i | 交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
-t | 改变源文件和目标文件的位置,目标文件在前 |
mv
选项
- u — 根据修改时间来决定是否移动,按最新的时间来
文件的内容查看相关
cat
选项:
- n 编号
- b 给非空行编号
- A 显示所有信息(隐藏符号) 等价于 -vET
less
less命令将文件内容分页显示到终端,可以自由上下浏览
命令 | 作用 |
---|---|
回车(ctrl + n) | 显示下一行 |
ctrl + p | 显示上一行 |
空格(PageDown) | 显示下一页 |
PageUp | 显示上一页 |
q | 退出 |
h | 获取帮助 |
head / tail
默认查看10行信息
- head -v 查看头信息
- head -q 不查看头信息
- head -n 30 查看30行
- head -30 查看30行
- head -c 30 查看30个字符
du / df
du
du命令用于查看某个目录大小。
du命令的使用格式如下:
du [选项] 目录或文件名
选项 | 含义 |
---|---|
-a | 递归显示指定目录中各文件和子目录中文件占用的数据块 |
-s | 显示指定文件或目录占用的数据块 |
-b | 以字节为单位显示磁盘占用情况 |
-h | 以K,M,G为单位,提高信息的可读性 |
df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
选项 | 含义 |
---|---|
-a | 显示所有文件系统的磁盘使用情况 |
-m | 以1024字节为单位显示 |
-h | 以K,M,G为单位,提高信息的可读性 |
stat 查看文件详细信息 高可读性
查找相关命令
find
按文件名查询:使用参数 -name
命令:find + 路径 + -name +“文件名”
示例:find /home -name “a.txt”
按文件大小查询:使用参数 -size
命令:find + 路径 + -size + 范围
范围
Ø 大于:+表示 – +100k
Ø 小于:-表示 – -100k
Ø 等于: 不需要添加符号 – 100k
大小
Ø M 必须大写(10M)
Ø k 必须小写(20k)
例子: 查询目录为家目录
等于100k的文件: find ~/ -size 100k
大于100k的文件: find ~/ -size +100k
大于50k, 小于100k的文件: find ~/ -size +50k -size -100k
按文件类型查询:使用参数 -type
命令:find + 路径 + -type + 类型
类型
Ø 普通文件类型用 f 表示而不是-
Ø d -> 目录
Ø l -> 符号链接
Ø b -> 块设备文件
Ø c -> 字符设备文件
Ø s -> socket文件,网络套接字
Ø p -> 管道
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
find /etc -name grub.conf 查找/etc目录下的grub.conf文件
find / -name "*.conf" 查找/下所有.conf文件
find / -iname grub.conf 查找/目录下的grub.conf文件,忽略大小写
find / -maxdepth 2 -name grub.conf 可以使用-maxdepath参数来控制查找的层次,就是说只查当前目录和子目录,最多查2级目录
find / -mindepth 2 -name grub.conf 最少查二级目录
find /etc -type d 查找/etc/下所有的目录
find /etc -type f 查找/etc/下的所有普通文件
find /etc -type l -name *.conf 查找/etc/下软链接文件是.conf结尾的文件
find /etc -type s 查找/etc/下所有socket文件
find /etc -type c 查找/etc/下的所有字符设备文件
find /etc -type p 查找/etc/下所有管道文件
find /etc -user root 查找/etc/所属用户是root的文件
find /etc -group root 查找/etc/所属用户组是root的文件
find /etc -uid 500 查找/etc/下uid是500的文件,和-user类似
find /etc -gid 500 查找/etc/下gid是500的文件,和-group类似
find /etc -nouser 查找没有所属用户的文件
find /etc -nogroup 查找没有所属用户组的文件
find /etc -perm 777 -type d 查找/etc/下权限为777的目录
find . -perm 111 查找权限是111的文件
find . -size +10M 查找当前目录下大于10M的文件,单位可以有K,M,G,b等
find / -size -2M 查找根目录下少于2M的文件
find / -mtime 1 查找根目录下1天以前修改的所有文件
find / -mtime +2 查找根目录下2天以前修改的所有文件
find / -mtime -3 查找根目录下最近3天内修改的所有文件
find / -atime 1 查找根目录下1天以前访问或读过的所有文件
find / -atime -1 查找根目录下最近1天内读过或访问的文件
find / -ctime -3 查找根目录下最近3天内状态发生改变的文件
find / -cmin -3 查找根目录下最近3分钟内状态发生改变的文件
find / -empty 查找根目录下所有空白文件或者空目录
find / -false 查找根目录下总是错误的文件
高级用法:
1
2
3
4
5
6
7
find / -false -exec ls -l {} \; 查找根目录下总是错误的文件并且用ls -l查看
find . -name "*.conf" -exec rm -rf {} \;
find . -name "*.conf" | xargs rm -rf 删除当前目录下所有以 .conf 结尾的文件
deng@itcast:~$ find cmd/ -name "txt" -ok rm -rf {} \; 删除之前做确认
< rm ... cmd/txt > ? y
grep 选项 内容 文件名
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:
grep [-选项] ‘搜索内容串’ 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a ’1.txt。
常用选项说明:
选项 | 含义 |
---|---|
-v | 显示不包含匹配文本的所有行(相当于求反) |
-n | 显示匹配行及行号 |
-i | 忽略大小写 |
-a | 以文本文件的方式 搜索 二进制文件 |
-w | 搜索单词匹配的行 |
-r | 递归搜索目录里所有文件内容 |
--color=auto | 颜色高亮 |
管道
管道(|):一个命令的输出可以通过管道做为另一个命令的输入。
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。 |
cat /etc/passwd less