目录
一些命令查询网站
命令解释器Shell
Shell是系统的用户界面,提供了用户与内核进行交互的一种接口。实际上Shell就是一个命令解释器,它接收用户输入的命令后进行解释并把他们送到内核去执行。
在Linux发行版本中通常包含多种Shell。目前使用最为广泛的Shell有Bash、TC Shell、和Korn Shell等。一般默认的Shell为Bash,如果要更改Shell版本,可以使用chsh命令。
命令基础
通配符
通配符 | 功能 |
---|---|
* | 匹配任意长度的任意字符,可以是0个 |
? | 匹配任意单个字符,必须是1个 |
[] | 匹配指定字符范围内的任意单个字符,参考正则表达式,但是^换成了! |
{} | 将花括号前的内容与花括号内的内容进行组合 示例1: echo a{1,2,3} 输出内容为: a1 a2 a3 示例2: 下面两条命令是等价的 touch a1.txt a2.txt a3.txt touch a{1,2,3}.txt |
单引号、双引号、反引号的区别
先看一个例子
abc=123
echo $abc
>>>123
echo "$abc"
>>>123
echo '$abc'
>>>$abc
echo '\$abc'
>>>\$abc
echo "\$abc"
>>>$abc
单引号中的内容被视为字符串,无视特殊字符。
双引号中不会无视特殊字符,如果要输出特殊字符要用\来进行转义。
反引号是用来包含命令字符串的,反引号中的命令会先被执行,将执行结果返回。
echo `ls` #这个命令等同于ls
帮助命令
man
用于提供在线帮助
语法
man 命令名
例如:
man ls #查看ls命令的帮助信息
type
查看命令类型
语法
type [option] command
- -t:显示类别,file:外部命令,alias:别名,builtin:内部命令
- -p:显示命令完整路径
- -a:显示所有匹配命令
–help
大多数命令都有–help的选项,用来显示使用命令的一些帮助信息
例如:
ls --help #查看ls命令的帮助信息
字符显示
echo
向终端输出字符串
语法
echo [option] 字符串列表
- -n 不换行输出
- -e 解析转义符
文件系统命令
ls
用于显示目录内容或文件信息
语法
ls [选项] [文件名…]
常用选项
- -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
- -r 将文件以相反次序显示(原定依英文字母次序)
- -t 将文件依建立时间之先后次序列出
- -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
- -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
- -R 若目录下有文件,则以下之文件亦皆依序列出
- -d 将目录文件像普通文件一样列出,不列出目录下的文件
ls -l显示信息解释:
mkdir、rmdir
mkdir用于创建目录
语法
mkdir [-p] [-m mode] 路径
- -p 创建多级目录
- m 创建时指定权限
rmdir用于删除空目录
语法
rmdir 路径
cd
改变所处目录
语法
cd [目录]
cd #返回home目录
cd .. #返回上一级目录
cd - #返回上一次的目录
mv
移动文件或更改文件名
语法
mv 文件1 文件2 … 目标目录(文件)
mv file1 file2 #将文件file1改名为file2
mv file1 ../ #将文件file1移动到上一级目录
rm
删除文件或目录
语法
rm [-rf] 文件或目录列表
- -r 递归删除所有的子目录及文件
- -f 忽略不存在的文件,不给于提示
cp
复制文件
语法
cp 文件1 文件2 … 目标目录(文件)
- -r 递归复制子目录
- -a 复制时保留源文件属性(时间戳、文件属主、符号链接)
cp file1 ../fil1_copy #将file1文件复制到上一级目录并更名为fil1_copy
cp file1 file2 ../ #将file1、file2文件复制到上一级目录
find
搜索文件,如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find [目录] [选项] [动作]
find命令的参数非常多,这里只介绍几个常用的
选项
- -name 指定文件名,可以使用通配符
- -type 按类型进行查找
动作
- -exec 将查找到的目标进行进一步处理,exec后跟随处理命令,命令中通过 {} 引用被找的文件,而且命令必须以 “ \;”结束,-exec的命令会代替find命令原来的输出内容
find ./ -type f -exec ls -l {} \; #查找当前目录下的所有普通文件并调用ls -l命令进行显示
cat、more、less、head、tail
cat 用于连接文件并在标准输出上输出(不可用于目录)
语法
cat [选项] 文件1 文件2 …
- -n 由 1 开始对所有输出的行数编号
more 用于分页显示,同cat用法类似
语法
more [选项] 文件1 文件2 …
按空格键(space)显示下一页,按b返回上一页
less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。可以视为more的增强版。
head 用于显示从文件开头的内容,默认显示前10行。
语法
head [参数] [文件]
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数
- -n<行数> 显示的行数
与 head 对应的就是 tail 命令了,tail 用于显示文件尾向前的内容
语法
tail [参数] [文件]
- -f 循环读取,只要文件更新了就会刷新
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
touch
创建一个空白文件,如果文件已存在,则会修改文件的时间戳
语法
touch [选项] 文件名
grep、正则表达式简介
文件或文本内容筛选
语法
grep [选项] 正则表达式 文件列表
- -v 显示不匹配的行
- -n 显示行号
grep正则表达式说明
元字符 | 功能 | 示例 | 解释 |
---|---|---|---|
^ | 行开头定位 | ^abc | 匹配开头为abc的行 |
$ | 行末尾定位 | abc$ | 匹配结尾为abc的行 |
. | 表示任意一个字符 | a.c | 匹配开头为a,结尾为c,中间为一个字符的行 |
* | 和0或任意多个前驱字符进行匹配 | a*bc | 跟bc前有0个或多个a的行匹配 |
[] | 与其中一个字符进行匹配 | ^[abc] | 与开头为abc其中之一的行进行匹配 |
[a-z] | 与范围内的一个字符进行匹配 | ^[a-z] | 与开头为小写字母的行进行匹配 |
[^a-z] | 与不在范围内的一个字符进行匹配 | ^[^a-z] | 与开头不是小写字母的行进行匹配 |
\ | 用于转义 | ^\. | 与开头为.的行进行匹配 |
备注
如果不加任何元字符,比如:abc,则匹配含有abc的字符串
[]内可以用逗号表示多个候选字符,比如:[a-z,A-Z]表示所有字母
示例
要找出当前目录下开头是a,结尾是b的文件,下面是错误命令:
ls | grep ^ab$ #此命令只会找出文件名为ab的文件
下面是两种正确的命令
ls | grep ^a | grep b$
ls | grep ^a.*b$
wc
统计,word count
语法
wc [选项] 文件内容
- -l:统计行数
- -c:统计字节数
- -m:统计字符数
- -w:统计单词数
tar
将文件进行归档、提取、压缩、解压等操作
语法
tar [cx][z\j][v]f filename [filelist]
- c:创建归档
- x:展开归档
- z:调用gzip对归档压缩/解压
- j:调用bzip2对归档压缩/解压
- v:显示冗余信息
- f:指定归档文件名
chmod
改变文件权限
语法
chmod [选项] [mode] 文件列表
mode可以有两种表示方式
(1)参数模式
- u表示所有者,g表示组,o表示其他,a表示三者
- +表示添加权限,-表示撤销权限
- r表示读,w表示写,x表示执行
例如:ug+rw表示所有者和组增加读写权限,u+rw,g+r表示所有者增加读写权限,组增加读权限
(2)三位八进制权限码模式
- 4:读权限,对应r
- 2:写权限,对应w
- 1:执行权限,对应x
三种权限可以进行加法组合,比如644,表示所有者具有读写权限,组和其他具有读权限
示例
下面两个命令的执行结果是一样的
chmod 764 a
chmod u+wrx,g+wr,g-x,o+r,o-wx a
用户管理命令
相关配置文件
- /etc/passwd 用户信息文件
- /etc/shadow 加密口令
- /etc/group 组信息文件
用户管理相关命令实际上就是对这几个文件的读写操作。因此大部分命令只有root用户有权限使用。
su
切换用户,默认切换为root用户
语法
su [-] username
- -切换用户的同时以该用户登录shell来代替当前的环境
who
显示当前在线的用户,默认显示全部在线用户
语法
who [option] [user]
- -H 显示标题栏
- -u 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成".“,如果该用户超过24小时没有任何动作,则标示成"old”;
- -q 只显示在线用户数量
有意思的是who i am命令将会显示当前用户的信息
passwd
修改用户的登录口令,默认修改当前用户的口令,并且只有root用户有权限指定用户名
语法
passwd [option] [user]
- -d 删除密码
- -f 强迫用户下次登录时必须修改口令
- -w 口令要到期提前警告的天数
- -k 如果用户的口令过期了此更改才会生效
- -l 停止账号使用
- -S 显示密码信息
- -u 启用已被停止的账户
- -x 指定口令最长存活期
- -g 修改群组密码
- -n 指定口令最短存活天数(仅对root用户有效)
- -i 口令过期后多少天停用账户
useradd、userdel
useradd 用于增加用户,只有root用户有权限使用该命令。
语法
useradd [选项] [用户名]
userdel 用于删除用户,同样只有root用户有权限使用该命令。
语法
userdel [选项] [用户名]
进程管理相关命令
ps
查看进程
语法
ps [选项] [pid]
- -l:以长列表形式显示
- -w:以加宽格式显示
- -a:显示所有用户进程
- -u:按用户名和启动时间的顺序显示进程
- -x:显示无控制台进程
常用组合:-aux 显示所有进程
top
动态显示进程
语法
top [选项]
- d : 改变显示的更新速度(秒)
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称,每次调用会切换到与上一次不同的显示模式。
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出 top
kill
用于终止进程或者向进程发送信号
语法
kill [信号值] pid
常用信号值
- 1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
- 15 (TERM):正常停止一个进程。
软件安装和卸载
wget
下载文件
语法
wget [选项] URL
rpm
全称是redhat package manager,原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。
常用命令
- 安装:rpm -hvi rpm文件
- 卸载:rpm -e 软件包名
yum
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
常用命令
-
列出所有可更新的软件清单命令:yum check-update
-
更新所有软件命令:yum update
-
仅安装指定的软件命令:yum install <package_name>
-
仅更新指定的软件命令:yum update <package_name>
-
列出所有可安裝的软件清单命令:yum list
-
删除软件包命令:yum remove <package_name>
-
查找软件包命令:yum search
-
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
yum源设置
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
以Centos7为例更换yum源(建议更换前对原来的repo文件进行备份)
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo #下载对应版本的repo文件
mv CentOS6-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo #替换repo文件
yum clean all
yum makecache
如果是其他版本的Linux发行版,可以去网易开源镜像使用帮助中寻找对应的文件