layout: "post"
title: "linux基本命令"
category: "软件应用"
tags:
date: "2016-09-06 16:56"
本文主要学习总结,使用 linux CLI 的基本命令,这边不以任何发行版为例,介绍的是绝大多数 linux 发行版上面都会含有的 CLI 软件,需要注意的是,这边是以完整安装为基础的,部分命令可能在最小安装上面无法使用。目前 安装 linux CLI 后可以使用的命令超过上千个,但最常用的命令一般只有 80 个左右,由于篇幅有限,本文会选取 80 个中的几十个最基本必须掌握的命令进行罗列和简介,不会展开详解,详细内容还是需要查看 manual 或者借助搜索引擎。
shell 命令的一般格式为:command [option] [arguments]。具体如下:
- command 表示命令,command 事实上是一个可执行的软件,实上 linux 中所谓的命令绝大多数是预装的软件,因为地址被写入了全局,因此可以直接通过软件名来调用该软件。
- option 表示选项,命令行中,选项是包含一个或者多个字母的字符串,一般在选项前有一个“-”用于区分参数,如:-l,-s等,这些都是设计程序时就已经被写在软件中的,用于方便用户选择软件执行的模式,选项这个词是并不是平白无故的,因为只有设计软件时被采用的一些字符才可以被称为选项,因此使用某个命令时,我们重点需要查看有哪些选项可以使用,以及使用后会有什么样的效果。
- arguments 为参数,很多命令都可以接受参数,参数就是选项后紧跟的一个或多个字符串,这些字符串制定了命令的操作对象,如文件或者目录等。如:ls -al /etc ,这边 /etc 就是一个参数,而 -al 则是一个选项。
因为 linux 中的每个软件都是不同开发者提供的,因此表示一种功能模式的参数却往往不尽相同,如:有的递归是 -r 而有的是 -R 等等。因此你如果需要使用某个软件时,需要以 manual 为准,而不是想当然的认为某个选项一定表示某个功能。
文件管理
文件管理主要包含了,复制,移动,更改路径等等
ls
显示指定工作目录下的内容,常用参数:
- -a 可以显示全部内容包含隐藏文件。
- -l 用于列出文件的详细信息。
pwd
打印当前工作目录(print working directory),使用该命令后,你所在工作目录的绝对路径将会被打印出来。
cd
改变当前工作目录(change directory),后面可以用绝对路径或者相对路径。
mkdir
创建新目录,一般为 mkdir + 目录名
。
mv
将文件从一个位置移到另一个位置,可以用绝对路径或者相对路径,如:mv source /tmp/source 表示将当前目录下的 source 文件移到根目录下的 tmp 文件夹中。值得注意的是,mv 可以用来重命名,linux 中往往是通过 mv 来更改文件名称的。
cp
cp 命令的格式类似于 mv 命令,但相比而言会比 mv 多不少选项/模式,常用参数如: -r 用于递归复制文件夹中的内容。
rm
删除命令,用于删除文件等,一般常用 -rf 用于强制递归删除文件夹等。
touch
用于改变文件的时间戳(timestamp),注意该命令是改变文件时间的,并不是用来创建文件的,之所以我们用它来创建文件仅是因为在改变文件时间戳时,如果该文件不存在 touch 会新建一个空白的文件,所以创建文件是 touch 的一个附加功能。所以我们就不难理解在 touch 一个已经存在的文件时,原文件不会被改动,改动的是该文件的时间。
ln
ln 用来生成链接文件,提到链接,相信用过电脑的朋友对 windows 下的快捷方式都会有影响,在 linux 中我们将 windows 中的快捷方式称为软连接。
linux 下有两种链接:
- 硬链接:文件 A 是文件 B 的硬链接,则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode 节点上的链接数增加一,每删除一个对应的文件名,inode 节点上的链接数减一,直到为 0,inode 节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A 删除的只是 A 这个文件名,而 A 对应的数据块(文件)只有在 inode 节点链接数减少为 0 的时候才会被系统回收。我们这边提到的是 inode 节点,而并非路径,注意这点和软链接的区别。
- 软链接:等同于 windows 的快捷方式,A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到B的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。注意:软链接的 A 和 B 是对应的不同 inode 的,而 A 存储的仅是 B 的路径(并不是 inode 的信息),因此我们如果删除 B 文件后,A 会找不到链接方向,而如果我们再创建 B 后,A 又会有了新的目标,而事实上,再次创建的 B 和原来不是同一个 inode,已经和原来的 B 没有任何联系了。
file
直接使用该命令可以查看文件类型的详细信息,linux 中是不强制要求有后缀名的,但通过 file 我们可以看出文件类型。
文件查找
which
查找某指令名称/内置程序的完整路径。如:which updatedb --> /usr/bin/updatedb。
whereis
只能用于查找二进制文件,源文件以及用户手册文件。因此 whereis 搜索出来的内容要比 which 多些。
find
普通的查找命令,用于查找某个名称文件,后面可以跟多个选项,格式为 find+路径+选项+文件名
,如 find . -name a.c
即查找当前目录下名称为 a.c 的文件,find 最大的特点就是速度慢,其次 find 查找如果不适用通配符的话默认为精确查找,这点注意和 locate 有很大的不同,因此查找以 ad 开头的文件需要执行:find . -name ad*
。
locate
find 每次会在目录下进行真正的搜索,一般这样做时间长,效率低。Linux 上更加优异的搜索命令,locate 会直接定位某个文件的位置,原理是 locate 寻找文件是通过 /var/lib/mlocate/ 数据库中的内容查找,不用去硬盘中检索,但往往新的变动对 locate 查找的数据库更新不及时,这是我们需要用 updatedb 命令手动更新(updatedb 需要 root 权限),locate 是默认为 *name*
的查找方式。如果需要精确查找,需要使用如下格式:locate -b '\NAME'
用户
passwd
passwd 用户修改用户密码,后面如果加用户名的话,可以直接修改该用户的登入密码,前提是你必须知道该原始登入密码。
su
su 主要用于改变用户登入身份,即快速切换登入用户,普通用户切换需要输入登录用户的密码,root 可以任意切换别的用户。
who
显示登录的所有用户的信息,whoami 只显示自己的登录信息,而 uname 表示的是打印系统信息和用户名等无关。
w
环境变量
Linux中set,env和export这三个命令的区别
set
命令显示当前shell的变量,包括当前用户的变量;
env
命令显示当前用户的变量;
export
命令显示当前导出成用户变量的shell变量。
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,
但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
压缩和解压
zip、unzip
zip 打包压缩文件,zip 是一种比较古老的压缩方式,各个个系统平台上面都基本支持,但压缩率较低。
gzip
当你使用 gzip 迚行压缩时,在预设的状态下原本的档案会被压缩成为 .gz 结尾的文件, 源文件就不再存在了。gzip 要比 zip 压缩效率高的多,但使用 windows 时,gz 文件未必可以被解压。
bzip2
bzip2 则比 gzip 更加先进,可以提供更高的压缩比,用法基本和 gzip 一致。
tar
虽然 gzip 和 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是将目录内的所有档案 "分别" 迚行压缩,而一般我们其实是需要一个进行过打包和压缩过的文件。tar 可以将多个目录或者文件打包成一个大的文件,同时还可以调用 gzip/bzip 对打包文件进行压缩。
dd
该命令的功能是 转换并且复制一个文件。
cpio
终端和文件查看
clear
cat
less
more
vim
diff
grep
系统信息查看:
注意:以下命令如果在ubuntu下可能都需要root权限才可以执行。
CPU
- lscpu : 查看的是cpu的统计信息.
- cat /proc/cpuinfo : 可以知道每个cpu信息,如每个CPU的型号,主频等。
内存
- cat /proc/meminfo : 查看内存详细使用
- free -m : 概要查看内存情况
- grep MemTotal /proc/meminfo : 查看内存总量
- grep MemFree /proc/meminfo : 查看空闲内存量
硬盘
- lsblk : 查看硬盘和分区分布
- fdisk -l : 如果要看硬盘和分区的详细信息
- df -h : 查看各分区使用情况
- cat /proc/loadavg : 查看系统负载磁盘和分区
网卡
- lspci | grep -i 'eth' : 查看网卡硬件信息
- ifconfig -a : 查看系统的所有网络接口
- route -n : 查看路由表
其他硬件信息
- lspci : 查看pci信息,即主板所有硬件槽信息。
- dmidecode -t bios : 查看bios信息
- dmidecode -q : dmidecode以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等。
- dmesg | grep IDE : 查看启动时IDE设备检测状况网络
操作系统
- uname -a 或 cat /proc/version : 查看内核/操作系统/CPU信息
- lsb_release -a 或 cat /etc/issue(此命令也适用于所有的Linux发行版): 查看Linux系统版本
- head -n 1 /etc/issue : 查看操作系统版本
- lsmod : 列出加载的内核模块
- hostname : 查看计算机名
- free -m : 查看内存使用量和交换区使用量
- uptime : 查看系统运行时间、用户数、负载
- ps -ef : 查看所有进程
- top : 实时显示进程状态用户
- w : 查看活动用户
- id <用户名> : 查看指定用户信息
- last : 查看用户登录日志
- cut -d: -f1 /etc/passwd : 查看系统所有用户
- cut -d: -f1 /etc/group : 查看系统所有组
- crontab -l : 查看当前用户的计划任务服务
- chkconfig –list : 列出所有系统服务
- chkconfig –list | grep on : 列出所有启动的系统服务程序
date
显示或者修改系统时间和日期,只有超级用户可以用 date 设置时间,一般用户只可以显示时间。
uptime
dmesg
last
free
ps
top
分屏功能
xrandr 命令,用于分屏驱动多个显示器,一般是底层控制的,虽然是显示功能,但分屏并非GUI的独享,图形界面的分屏控制大都是调用 xrandr 这个软件。
管理类
du
df
fsck
sync
mount、unmount
top
网络类
ifconfig
netstat
traceroute
telnet
wget
ping
nslookup
ip
route
ssh
scp
To be continued...
参考链接:
http://www.2cto.com/os/201306/223758.html
http://www.ha97.com/2987.html
http://blog.csdn.net/lhf_tiger/article/details/7102753
http://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html
网友评论