目录
前言
之前我写了一篇虚拟机安装的文章,而本文主要介绍Linux中常用的基本命令,简单实用,以供大家参考,如有错误,欢迎大家指出。
一.什么是shell
1.Shell的定义
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
2.Shell的作用
①.Linux系统中运行的一种特殊程序
② .在用户和内核之间充当“翻译官”
③.用户登录Linux系统时,自动加载一个Shell程序
④.Bash是Linux系统中默认的Shell程序
用户发出命令,Shell把命令翻译成二进制语言发送给内核,再由硬件执行命令
二.Linux命令的分类、格式及使用方法
1.Linux命令的分类
Linux分为内部命令和外部命令
内部命令 | 外部命令 |
集成于Shell解释器陈旭内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能过完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,有Shell加载后才能执行 |
2. Linux命令的格式
①.通用的命令行使用格式
命令字 | 【选项】 | 【参数】 |
注:英文字符区分大小写
命令字:是整条命令中最关键的一部分;
唯一确定一条命令
选项:短格式选项:使用“-”符号引导→→字母,注:多个单字符选项可以组合在一起使用
长格式选项:使用“--”符号引导→→单词
参数:命令字的处理对象
可以是文件名、目录(路径)名或用户名等内容
个数可以是零到多个
3.编辑Linux命令行的辅助操作
Tab键:自动补齐
反斜杠“\”:强制换行
Ctrl+U组合键:清空至行首
Ctrl+K组合键:清空至行尾
Ctrl+L组合键:清屏
Ctrl+C组合键:取消本次命令编辑
Ctrl+E组合键:光标跳到行尾
Ctrl+A组合键:光标跳到行头
4.获得命令帮助的方法
内部命令help:查看Shell内部命令的帮助信息
命令的“--help”:适用与大多数Linux外部命令
使用man命令阅读手册页:使用“↑”、“↓”方向键滚动一行文本
使用Page Up和Page Down键翻页
按Q或q键退出阅读环境
按“\”键查找内容
注:man用法 :man ls
man cd(命令)
/-i #(查找的功能选项)
查找参数翻页 :N 向上
n 向上
举个例子: man ls | col -b > lshelp.txt
在这个例子中,col 是一个命令程序,用于过滤文本中的一些特殊控制字符;另外 还使 用了“|”和“>”符号,这是 Shell 环境中的两种特殊功能应用,分别称为管道、重定向输出。其 含义及作用如下所述。
管道:用竖杠符号“|”表示,用于将前面命令的屏幕输出结果作为后面命令的操作对象(输 入)。就好像一根管道一样,从这头塞入内容,从另一头出来。
重定向输出:用大于符号“>”表示,前面的命令成功执行以后,其屏幕输出结果将保存到“>”号 后边指定的文件中,而不是直接输出到屏幕,因此称为重定向
三.Linux的常用命令
1.查看及切换目录(pwd、cd、ls、du)
1.1pwd
显示用户当前所在的工作目录的位置
[root@localhost ~]# pwd
/root
cd ./home #后面跟相对路径,切换到home目录
1.2cd(绝对路径和相对路径)
将用户的工作目录更改到其他位置
格式 | 说明 |
cd 目标位置 | 切换到目标位置 |
cd ~ | 若不指定目标位置,切换到当前用户的宿主目录 |
cd | |
cd - | 切换到上其次执行cd命令之前所在的目录 |
绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql
相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后再进 入到test,执行的命令为 “#cd /home,#cd test”
相对路径的表现形式:
表现形式 | 说明 | 示例 |
直接使用目录或文件名 | 表示当前工作目录中的子目录、文件的位置 | grub.conf |
以一个点号“.”开头 | 表示以当前的工作目录作为起点 | ./grub.conf |
以两个点号“..”开头 | 表示以当前目录的上一级目录(父目录)作为起点 | ../vmlinuz |
以“~用户名”形式开头 | 表示一指定用户的宿主目录作为起点 | ~doctor |
1.3ls
显示目录中内容,包括子目录和文件相关属性信息
ls | 【选项】 | 【文件或目录】 |
操作 功能 要执行的对象
常用选项:-l #将文件信息属性详细列出,通常直接使用ll,因为设置了别名
-R #递归显示,比如一个目录下还有文件,则把那个文件也一起列出
-d #查看目录本身信息,不显示目录下的内容
-i #显示inode值
-h #友好显示已单位为例
-a #遍历所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档, 不会列出)
-A #跟-a 唯一的不同是不列出当前目录和上一层目录
结合通配符: “?”:匹配文件名中的一个未知字符。例:ls -lh /dev/sd?1
“*” :匹配文件名中的任意多个字符。例:ls -lh /etc/ns*.conf
1.4du
统计指定目录(或文件)所占用磁盘空间的大小
du | 【选项】 | 【文件或目录】 |
常用选项:
选项 | 说明 |
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB技术,但不显示单位)显示出统计结果 |
-s | 只统计所占用空间总的(summary)大小,而不是统计每个子目录、文件的大小 |
du -sh * #生产环境常这样搭配使用统计当前目录下所有文件的大小并显示出来,常 用于磁盘水位过高的情况
2.创建目录和文件(mkdir、touch、ln)
2.1mkdir
创建新的空目录
mkdir | 【选项】(-p:一次性创建嵌套的多层目录) | 目录位置及名称 |
示例:在当前目录下创建名为public_html的子目录
mkdir public_html
创建目录/aa,在/aa目录下创建子目录bb,在、aa/bb/目录下创建子目录cc
mkdir -p/aa/bb/cc
2.2touch
更新文件的时间标记
经常用于创建多个新的空文件
①文件存在:修改文件或者目录的时间属性,包括存取时间和更改时间
②文件不存在:创建新文件
touch | 文件... |
示例:创建两个空文件,文件名分别为nn和mm
touch nn mm
创建空文件4到9
touch {4..9}
创建空文件TXT4到8
touch {4..8}.txt
2.3ln
为文件或目录建立链接文件,类似于Windows系统的快捷方式
链接文件类型:软链接(又称符号链接)
硬链接
ln | 【-s】(创建软链接) | 源文件或目录...链接文件或目标位置 |
ln 命令用于为文件或目录建立链接文件(类似于 Windows 系统中的快捷方式),提 高用户定位文件或定位目录的效率
链接文件包括软链接和硬链接两种类型,其中软链接又称为符号链接。无论是访问软 链接还是硬链接,与直接访问原始文件的效果基本相同
ln -s 创建软链接,相当于创建一个快捷方式
ln 创建硬链接,相当于复制了一份副本
软链接建立时原始文件可以不存在
如果删除源文件之后又重新建立源文件,那么软链接照样可以用
软链接文件的大小就是软链接文件本身的文件名字符长度!
可以给目录做软链接,为了防止目录被删
3.复制、删除、移动目录和文件(cp、rm、mv)
3.1cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp | 【选项】... | 源文件或目录... | 目标文件或目录... |
-p:连属性一起复制
-a:保留权限,复制软链接本身,递归复制
-r:递归复制
-f:强制复制,不与用户交互
-i:提醒覆盖
cp的高级用法:cp -v file1.txt{,.bak}常用于备份
3.2rm
删除指定的文件或目录
rm | 【选项】 | 要删除的文件或目录 |
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)。
-f:删除文件或目录时不进行提醒,而直接强制删除
常见用法:rm -rf public_html/
删除空目录:rmdir
3.3mv
将指定的文件或目录转移位置
如果目标位置于源位置相同,则相当于执行重命名操作
mv | 【选项】... | 源文件或目录... | 目标文件或目录... |
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:在 mv 操作要覆盖某已有的目标文件时不给任何指示
当在同一目录下用mv就是改名,如果是跨目录使用mv的话就是移动,相当于剪切的操作
4.查找目录和文件(which、find)
4.1which
搜索范围由环境变量PATH决定(echo$PATH)
用法:which 命令|程序名或 which -a 命令|程序名
which 命令用于查找 Linux 命令程序并显示所在的具体位置,其搜索范围主要由用户 的环境变量 PATH 决定(可以执行“echo $PATH”命令查看),这个范围也是 Linux 操 作系统在执行命令或程序时的默认搜索路径。
示例:which ls
which cd
4.2find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
find | 【查找范围】(查找文件或子目录的目录位置) | 【查找条件表达式】(查找条件类型 |
-name 按名称查找:
-size 按大小查找:
-user 按文件属主:
-type 按类型查找:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件 (c)、链接(l)
块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单 个字符读取数据的设备(如键盘、鼠标等)
Find工具-name参数案列:
find /etc -name "resol*.conf"
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;
find /data/ -name "test*" #查找/data/目录以test开头的文件;
Find工具-size参数案列:
find /data/ -size +1M #查文件大小大于1Mb的文件;
find /data/ -size 10M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件;
Find工具-type参数案列:
find /boot -type d
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ ! -type d #查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
查找存在的用户的文件:
find /home -user 用户名
find /home -user 用户名 -group 组名
注: 设置 find 命令的查找条件时,若需要使用“*”或“?”通配符,最好将文件名用双引号括起 来,以避免当前目录下符合条件的文件干扰查找结果
find /boot -size +1024k -a/-o -name "vmlinuz*"
使用“-a”“-o”组合两个条件,前者表示两个条件必须同时满足, 后者表示只需满足其 中任何一个条件即可
各表达式之间使用逻辑运算符
“-a”表示 而且 (and)
“-o”表示 或者 (or)
示例:find /boot/ -size +1024k -a -name "vmlinuz*"
有两种条件,一个条件是文件类型大于1024k,另外一个条件是“vmlinuz”开头的文件,必须 要两种条件都具备,才能显示出来
5.设置别名(alias)
通过别名机制简化常用的、比较长的命令
alias 命令别名=命令
示例:网卡编辑特别长,所以把网卡编辑设置别名
alias netw='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
输入别名netw即可直接进入编辑页面
如果需要永久生效的话:vim /root/.bashrc
而后添加图中所示命令
最后还需重启才能生效source /root/.bashrc
总结
Linux中的命令远远不止于此,我这里仅仅是总结了最基本的一些命令及用法,希望能给广大的朋友们带来帮助