常用Linux命令
计算机系统主要包括硬件、内核、系统调用、应用程序。Linux
主要是内核和系统调用的两层,它本身是操作系统的内核。内核是使其他程序能够运行的基础,多任务和硬件管理,用户或系统管理员交互运行的所有程序实际都运行在内核上。其中有些程序是必须的,需要命令行解释器,shell
是一个提供给使用者使用界面 的软件,类似于DOS
下的command
命令行和后来的cmd.exe
。在图形化界面下,为了实现在一个窗口中完成用户输入和显示输出,Linux
系统提供了一个叫做终端模拟器的程序(terminal)。终端本质上对应着linux
上的/dev/tty
设备,linux
的多用户登录是通过不同的/dev/tty
设备完成的。
[TOC]
Linux
系统顶层结构目录
windows
以存储介质为主,主要以盘符及分区实现文件管理,之下是目录。Linux
以整个树形目录来构建整个系统,每个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统,可以利用网络文件系统(Network File System NFS)服务器载入特定目录。并且Linux
系统采用文件系统层次结构标准(FileSystem Hierarchy Standard FSH),它定义了系统中每个区域的用途、所需要的最小构成文件和目录,同时给出了例外处理与矛盾处理。
FSH定义了两层规范,第一层是,/
下面的各个目录应该放什么文件数据,例如/etc
应该放置设置文件,/bin
与/sbin
应该放可执行文件。第二层针对/usr
及/var
这两个目录的子目录定义,如/var/log
放置系统日志文件,/usr/share
放置共享数据。
|-----bin
存放用户二进制文件
|-----boot
存放内核引导配置文件
|-----dev
存放设备文件
|-----etc
存放系统配置文件
|-----home
用户主目录
|-----lib
动态共享库
|-----lost+found
文件系统恢复时的恢复文件
|-----media
可卸载存储介质挂载点
|-----mnt
文件系统临时挂载点
|-----opt
附加的应用程序包
|-----proc
系统内存的映射目录,提供内核与进程信息
|-----root
root用户主目录
|-----sbin
存放系统二进制文件
|-----srv
存放服务相关数据
|-----sys
sys虚拟文件系统挂载点
|-----tmp
存放临时文件
|-----usr
存放用户应用程序
|-----var
存放邮件、系统日志等变化文件
使用cd
命令切换目录,在linux
里使用.
表示当前目录,..
表示上一级目录,以.
开头的文件是隐藏文件,所以这两个目录是隐藏的,可以使用ls -a
命令查看隐藏文件,-
表示上一次所在的目录,~
表示当前用户的home
目录,使用pwd
命令可以获取当前所在路径(绝对路径)
cd .. //进入上一级目录
进入home
目录
cd ~
//或
cd /home/<用户名>
日志查找
日志数据可以记录系统产生的所有行为,并按照某种规范表达出来。可以使用日志系统所记录的信息为系统进行排错,优化系统性能。也可以收集数据并分析,提高系统、产品的安全性。在一些网络应用服务不能正常工作的时候,需要用日志来做问题定位。常见日志一般存放在/var/log
中
- 系统日志 存放系统内置程序或系统内核之类的日志信息
- 应用日志 第三方应用产生的日志
grep
grep
命令结合正则表达式可以实现高效的匹配查找,可以打印输出文本中匹配的模式字符串,使用正则表达式作为模式匹配的条件。grep
命令的一般形式为
grep [命令选项]... 用于匹配的表达式[文件]...
命令选项常用参数:
-
-b
将二进制文件作为文本进行匹配 -
-c
统计以模式匹配的数目 -
-i
忽略大小写 -
-n
显示匹配文本所在行的行号 -
-v
反选,输出不匹配行的内容 -
-r
递归匹配查找 -
-A n
除了列出匹配行之外,还列出后面的n
行 -
-B n
除了列出匹配行之外,还列出前面的n
行 -
-- color=auto
将输出中的匹配项设置为自动颜色显示
grep 'match_pattern' file_1 file_2 file_3 ...
在多个文件中查找
tail
tail
命令可用于查看文件的内容,有一个常用的参数-f
常用于查阅正在改变的日志文件。
tail -f filename
// 把filename文件尾部内容显示在屏幕上,并且不断刷新,只要filename更新就可以看到最新的文件内容
cat
cat
命令用于连接文件并打印到标准输出设备上
cat filename //一次显示整个文件
cat > filename //创建一个文件
cat file1 file2 > file//将几个文件合并为一个文件
用户与用户组
- 添加用户
useradd -d 目录 用户名 //目录下创建一个用户
useradd -d 目录 -m 用户名 //创建用户,为用户产生一个主目录
useradd -s 用户组 用户名 //在用户组下创建目录
- 修改用户
usermod 选项 用户名
- 删除用户
userdel -r 用户名
- 切换用户
su 用户名
Linux
里每个用户都会有一个用户组,用户组是指一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。
- 增加用户组
groupadd 选项 用户组
- 删除用户组
groupdel 用户组
- 修改用户组的属性
groupmod 选项 用户组
- 查看用户属于哪些用户组
groups 用户名
- 将其他用户加入用户组
usermod -a -G 组名 用户名
- 查看
/etc/group
文件
cat /etc/group | sort
//group_name: password: GID: user_list
/etc/group
文件格式说明:/etc/group
的内容包括用户组、用户组口令、GID
及该用户组所包含的用户。如果用户的GID
等于用户组的GID
,那么最后一个字段user_list
就是空的。cat
命令用于读取指定文件的内容并打印到终端输出,| sort
表示将读取的文本进行字典排序后输出
curl指令
curl
url
规则在命令行下工作的文件传输工具,能够发出网络请求,得到和提取数据,显示在标准输出(stdout
)上面。
GET请求
curl -i url
显示网页代码和http
响应头信息curl -I url
显示http
响应头全部信息curl -v url
参数可以显示一次http
通信的整个过程,包括端口连接和http
头信息curl --trace output.txt www.sina.com
查看更详细的通信过程curl ip:port
用来测试端口的连通性脚本中测试网站是否正常的用法:
curl -o /dev/null/ -s -w %{http_code} www.linux.com
-s
静默模式,不输出任何东西
-w
什么输出完成后
POST请求
curl -d "" url
curl -X "POST" --data "" url //--data用于把数据和网址分开
软链
文件有文件名与数据,在
Linux
上被分为两部分:用户数据与元数据。用户数据,即文件数据块,是记录文件真实内容的地方;元数据是文件的附加属性,如文件大小、创建时间、所有者等信息。在Linux
中,元数据中的incode
是文件的唯一标识,系统或程序通过incode
号寻找正确的文件数据块。链接为Linux
系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个incode
号对应多个文件名,称这些文件为硬链接,硬链接就是一个文件使用了多个别名,可由命令link
或ln
创建。若用户数据块中存放的内容是另一文件的路径名的指向,该文件就是软链接。软链接有者自己的incode
号及文件数据块。
- 创建软链
ln -s [源文件/目录][目标文件/目录]
- 修改软链
ln -snf [新的源文件/目录] [目标文件/目录]
- 删除软链
rm -rf [目标文件/目录]
环境变量
在所有的
UNIX
和类UNIX
系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承父进程的绝大部分环境设置。shell
程序作为一个进程运行在操作系统之上,在shell
中运行的大部分命令以shell
子进程的方式运行。可以理解为在当前子进程中有效的变量为环境变量。两个文件/etc/bashrc
和/etc/profile
,分别存放的是shell
变量和环境变量。通常将环境变量名设为大写。按照变量的生存周期划分,linux
变量分为两类
- 永久变量:需要修改配置文件,变量永久生效
- 临时变量:使用
export
命令行声明,变量在关闭shell
时失效
与环境变量相关的命令:set
、env
、export
用于打印环境变量信息,但是其涉及的变量范围不同。
set
显示当前shell
所有变量,包括其内建环境变量,用户自定义变量及导出的环境变量。env
显示与当前用户相关的环境变量,可以让命令在指定环境中运行export
显示从shell
中导出成环境变量的变量
Linux
设置环境变量的方法:
- 直接用
export
命令
export PATH=$PATH:路径
- 修改
profile
文件
vim /etc/profile
export PATH=$PATH:路径
- 修改
.bashrc
文件
vim /root/.bashrc
export PATH=$PATH:路径
//or
echo "PATH=$PATH:/home/siyuan/mybin">>.bashrc
>>
表示将标准输出以追加方式重定向到一个文件中,>
以覆盖方式重定向到一个文件中,指定文件不存在的情况都会创建新文件。后两种方法需要重新注销系统才生效,source .bashrc
让设置的环境变量立即生效,删除变量使用unset
命令
unset [-f-v][变量和函数名称]
//-f 仅删除函数
//-v 仅删除变量
最后可以通过echo
命令测试查看输出:
echo $PATH
命令的查找路径与顺序
当在
shell
中执行一个命令时,系统会按照PATH
中设定的路径按照顺序依次到目录中查找,如果存在同名的命令,则执行先找到的那个。
每个用户的
home
目录有一个shell
,每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等。zsh
的配置文件是.zshrc
,相应bash配置文件为.bashrc
,他们在etc
下有一个或多个全局的配置文件,我们一般只修改用户目录下的配置文件。
内建命令与外部命令
内建命令实际上是shell
程序的一部分,其中包含的是一些比较简单的Linux
系统命令,这些命令是写在bash
源码的builtins
里面的,由shell
程序识别并在shell
程序内部完成运行,通常在Linux
系统加载运行时shell
就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history
、cd
、exit
等。
外部命令是Linux
系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在shell
中,但是其命令执行过程是由shell
程序控制的。外部命令是在Bash
之外额外安装的,通常放在/bin
,/usr/bin
,/sbin
,/usr/sbin
等等。比如:ls
、vi
等。
type exit
exit is a shell builtin
//内建命令
type vim
vim is /usr/bin/vim
//外部命令
type ls
ls is an alias for ls - - color=auto
该指令为命令别名所设定的名称
其他常用指令
ls
文件权限 是指文件的访问控制权限,是指哪些用户和组群可以访问文件以及可以执行什么样的操作。
Linux
系统中对用户权限做了界定,对用户身份认证、访问控制、传输安全、文件读写等权限做了控制。
//查看文件权限
ls -l
//得到
lrwxrwxrwx 1 siyuan siyuan 4096 8月 19 2019 filename
//文件类型和权限、链接数、所有者、所属用户组、文件大小、最后修改时间、文件名
权限表示为:
-
r
允许读权限 -
w
允许写权限 -
x
允许执行权限
文件类型表示为:
-
d
目录 -
l
软链接 -
b
块设备 -
c
字符设备 -
s
socket
-
p
管道 -
-
普通文件
ls -a
显示所有文件及目录
ls -A
显示除.
(当前目录)和..
(上一级目录)之外的所有文件,包括隐藏文件(linux
下以.
开通的文件为隐藏文件)
ls -l
除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
ls -AsSh
显示所有文件大小,并按文件大小排序
rm
rm
(remove)命令删除文件或目录
-
-f
force 强行删除,忽略不存在的文件,不提示确认 -
-i
interactive 交互式删除,删除时会提示确认 -
-r
recursive 将参数中列出的全部目录和子目录进行递归删除 -
-v
verbose 详细显示删除操作进行的步骤
vim
- 编辑文本,启动 Vim,进入命令模式,
vim fliename
- 按下
i
,切换到输入模式,i
键文本插入(在光标前插入文本),A
添加文本(在一行后添加文本),ESC回到正常模式x
删除当前光标所在处的字符。- 移动光标
h-left k-top l-right j-down
- 输入
dw
从光标处删除至一个单词的末尾(光标在下一个单词起始处),输入de
从光标处删除至一个单词末尾,(光标在下一个单词起始处前一位)d$
从光标处删除至行末:
切换到底线命令模式,以在最底一行输入命令。:q
不保存推出:wq
保存退出'
ifconfig
用于配置和显示Linux内核中网络接口的网络参数,
touch filename
- 把已存在文件的时间标签更新为系统当前时间,数据不变
- 用于创建新的空文件