一、Linux 命令基础
1.1、Shell
Linux系统中运行的一种特殊程序
在用户和内核之间充当“翻译官
用户登录Linux系统时,自动加载一个Shell程序
Bash是Linux系统中默认使用的Shell程序
总结:
Linux操作系统下一切都是文件
Shell(翻译官):接收用户的命令将其解释,然后传给内核来执行。
理解:
打开游戏的一瞬间要交给shell然后shell调用内核来打开,然后游戏需要的内存都是需要shell来调用内核然后分配的。
1.2、Linux命令的分类
内部命令:
(1)集成于shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
(2)属于Shell的一部分
(3)没有单独对应的系统文件
(4)自动载入内存,可以直接使用
外部命令:
(1)Linux系统中能够完成特定功能的脚本文件或二进制程序
(2)属于Shell解释器程序之外的命令
(3)每个外部对应了系统中的一个文件
(4)必须知道其对应的文件位置,由Shell加载后才能执行
1.3、基础命令
enable –n cd 禁用内部命令
enable cd 开启内部命令
hash -r 清除所有
hash -d 清除部分
find --help可查帮助
[root@localhost /]# whereis ls //whereis 可以查找命令具体的位置所在
ls: /usr/bin/ls /usr/share/man/manl/ls.1.gz /usr/share/man/manlp/ls.lp.gz
[root@localhost ~]# type –a echo (type –a 即可看内部又可看路径)
echo 是 shell 内嵌
echo 是 /usr/bin/echo
外部命令存放于echo $PATH 一个一个找,找到为止,找不到就报无命令
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:root/bin
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[root@localhost ~]# type useradd
useradd 是/user/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd
Useradd 已被哈希 (/usr/sbin/useradd)
[root@localhost ~]# hash //或者使用hash
命中 命令
1 /usr/bin/dd //前面数字代表用过几次
2 /usr/sbin/useradd
1 /usr/bin/whoami
3 /usr/bin/ls
[root@localhost ~]# hash –d dd //清楚dd命令缓存 –r全清
[root@localhost ~]# hash
命中 命令
2 /usr/sbin/useradd
1 /usr/bin/whoami
3 /usr/bin/ls
[root@localhost ~]# which ping //外部命令的磁盘路径-a 所有/usr/bin/
[root@localhost ~]# which help //内部命令找不到
/usr/bin/which:no help in(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost ~]# whereis echo //相关文档的帮助的命令
echo: /usr/bin/echo /usr/share/man/manl/echo.1.gz /usr/share/man/manlp/echo.1p.gz
ls --help长格式
ls –h短格式
1.4、Linux命令行的格式
Linux命令行的格式2-1
通过的命令行使用格式
命令字 [选项] [参数]
命令字
(1)是整条命令中最关键的一部分
(2)唯一确定一条命令
选项
(1)短格式选项:使用”-”符号引导
(2)长格式选项:使用”–”符号引导
Linux 命令行的格式2-2
通用的命令行使用格式
命令字 [选项] [参数]
参数
(1)命令字的处理对象
(2)可以是文件名、目录(路径)名或者用户名等内容
(3)个数可以是零到多个
1.5、Linux常用命令
内部命令:内部命令被构建在shell之中。当执行shell命令行,内部命令行的执行速度非常快。这是因为没有其他的进程因为执行者条命令而被创建。比如说,当我们执行“cd”命令时,没有进程被创建。在执行过程中只是简单的改变当前的目录。
外部命令:外部命令并没有被构建在shell中。这些可执行的外部命令保存在一个独立的文件当中。当一个外部命令被执行时,一个新的进程即被创建同时命令被执行。比如说,当我们执行“ls”(通常被保存在/bin目录下)命令时,然后、bin/ls被执行
编辑Linux命令行的辅助操作
(1)Tab键:自动补齐
(2)反斜杠“\”:强制换行(反斜杠用的时候上一个不能加空格,不然就是说下一行是空格)
(3)Ctrl+U组合键:清空至行首
(4)Ctrl+K组合键:清空至行尾
(5)Ctrl+L组合键:清屏
(6)Ctrl+C组合键:取消本次命令编辑
(7)Ctrl+E组合键:光标跳到行尾
(8)Ctrl+A组合键:光标跳到行头
1.6、获得命令帮助的方法
(1)内部命令help
1.查看Shell内部命令的帮助信息
(2)命令的“–help”选项
2.适用于大多数Linux外部命令
(3)使用man命令阅读手册页
1.使用“上箭头” “下箭头”方向键滚动一行文本
2.使用Page Up和Page Down键翻页
3.按Q或q键退出阅读环境
4.按“\”键查找内容
1、命令行帮助help和–help
显示命令的帮助信息,命令的参数和用法等
2、man手册的使用
Linux的命令手册大全
用法:man cd
查找翻页:n向下 N向上
man ls | col –b > lshelp.txt 或 sz lshelp.txt 将手册拷贝到lshelp.txt
在这个例子中,col是一个命令程序,用于过滤文本中的一些特殊控制字符:另外还使用了“|”和“>”符号,这是shell环境中的两种特殊功能应用,分别称为管道、重定向输出。其含义即作用如下所述。
管道:用竖杠符号“|”表示,用于将前面命令的屏幕输出结果作为后面命令的操作对象(输入)。就好像一根管道一样,从这头塞入内容,从另一头出来。
重定向输出:用大于符号“>”表示,前面的命令成功执行以后,其屏幕输出结果将保存到“>”号后边指定的文件中,而不是直接输出到屏幕,因此称为重定向。
小结:
Shell在用户和内核之间充当“翻译官”
Linux命令分为内部命令和外部命令
获得Linux命令帮助的方法
二、Linux 相关的一些命令
2.1、切换工作目录 -cd
切换工作目录:cd(相对路径、绝对路径)
cd /home #后面跟绝对路径,切换到home目录
cd ./home #后面跟相对路径,切换到home目录
cd ~ #切换到当前用户的家目录
cd #切换到当前用户的家目录
cd ~user #切换到某一个用户的家目录,只有root才行,别的用户只能在自己家
cd - #切换到上一次执行操作的目录
cd … #切换到上一层目录(父目录)
cd …/…/ #如何切换到父目录的父目录
.是当前,…是上层
所有用户都在home路径下
绝对路径:cd / 这样出来的是绝对路径
相对路径:cd ./或…/ 或直接home这样的是相对路径
2.2、目录和文件的管理命令
查看当前工作目录:pwd
[root@localhost ~]# pwd
/root
2.3、列表显示目录内容ls
命令字 【选项】 【参数】
操作 功能 要执行的对象
-l #将文件信息属性详细列出,通常直接使用11,因为设置了别名
-R #递归显示,比如一个目录下还有文件,则把那个文件也一起列出
-d #查看目录本身信息,不显示目录下的内容
-i #显示inode值(inode值出现问题会无法更改日记)
-h #友好显示(文件的大小可显示)
-a #遍历所有文件及目录
(ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-A #跟-a 唯一的不同是不列出当前目录和上一层目录(不包括.和…的文件)
ls -lh
黑色的是数据文件,绿色是可执行文件,黄色是快设备文件,红色是压缩包,天蓝色是链接文件。
-普通文件
d目录文件 directory
b块设备文件block
p 管道文件 pipe
s 套接字文件 socket
l 符号连接文件link
2.4、通配符
ls .*
ls ceshi/*.txt
ls /var/log/*.log(只要是i.log的会全部显示出来)
ls –lh /var/log/*.log
ls -lh /dev/sd?1\
符号 | 效果
?: 匹配一个字符 f?.txt
*:匹配所有非隐藏的字符无论多长多短,但不匹配"." 开头的文件,即隐藏文件
{1…10}:1到10
{a…z}:a b c …z
{A…Z}:ABC …Z
[123]:取其中之一有就显示没有也无所谓
[a-z]:范围需要注意
[0-9]:匹配数字范围(0123456789)
:转义符,表示原来的意思
[[ :lower:]]:小写字母表示a-z
[ [ :upper: ]]:大写字母表示A-Z
[ [:digit:]]:任意数字,相当于0-9
例如:mkdir {e…z} 生成e到z
mkdir weitianb{1…10} 生成10个weitianb文件
案例:
[root@localhost mnt]# ll
#长格式
总用量 0
drwxr-xr-x 3 root root 16 8月 21 10:39 aa
第一个字段 d 代表文件类型比如 d是目录 – 是普通文件
第2-9(rwxr-xr-x)字母表示该文件的权限
root 文件所有者
root 文件所属组
16 文件大小
21 10:39 文件的最近使用时间
aa 文件或目录名称
2.5、设置别名-alias
通过别名机制简化常用的、比较的命令
alias命令别名=”命令”
例如:
alias myls =‘ls -alh’(别名是myls)
unalisa myls是删除别名
[root@localhost mnt]# vim /root/.bashrc(在此命令下可永久保存alias别名,不然alias别名开机后会自动消失)
2.6、统计目录及文件空间占用情况-du
统计指定目录(或文件)所占用磁盘空间的大小
du [选项] [文件或目录]
常用选项
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s:只统计所占用空间总的(summary)大小,而不是统计每个子目录,文件的大小
例如:统计出/var/log****目录所占用空间的大小
du -sh /var/log/
du -a 所有文件递归显示(包括隐藏文件)
du -sh * 更加友好的显示
du -s 文件总大小 du -sh(带单位)
du -h,du -ah,du -sh*都是友好显示
du –as不能同时使用(du:不能既显示总用量,同时又显示每个项目)
2.6、创建新目录:mkdir
创建新的空目录
mkdir [选项]目录位置及名称
例如:在当前目录下创建名为public_html的子目录
mkdir public_html
创建目录/aa,在/aa目录下创建子目录bb,在/aa/bb目录下创建子目录cc
mkdir -p /aa/bb/cc(-p:一次性创建嵌套的多层目录)
2.7、创建空文件-touch命令
更新文件的时间标记
经常用于创建多个新的空文件
touch 文件…
例如:创建两个空文件,文件名分别为aa和bb
touch aa bb
touch {a…d} 创建a b c d 四个文件
echo “ky17 njzb” > ceshi.txt 创建一个ceshi的文件内容为ky17
vim dome 也可以创建文件
2.8、创建链接文件-In
创建链接文件ln(软链接、硬链接)
ln命令用于为文件或目录建立链接文件(类似于 windows系统中的快捷方式),提高用户定位文件或定位目录的效率。
链接文件包括软链接和硬链接两种类型,其中软链接又称为符号链接。无论是访问软链接还是硬链接,与直接访问原始文件的效果基本相同。
ln -s创建软链接,相当于创建一个快捷方式
ln创建硬链接,相当于复制了一份副本
软链接建立时原始文件可以不存在
如果删除源文件之后又重新建立源文件,那么软链接照样可以用软链接文件的大小就是软链接文件本身的文件名字符长度!
可以给目录做软链接,为了防止目录被删
硬软区别
硬链接不能跨分区建立连接无法对文件夹创建
删除硬件连接可以继续访问硬链接
软链接可以跨设备可以支持文件夹
软链接删除源文件不能访问
注:相对路径与绝对路径建议绝对路径
注意:软链接可以跨设备,硬链接却不行(就是在不同的根目录下,如一个在root,一个在etc这样)
2.9、复制文件或目录-cp
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
cp [选项]…源文件或目录…目标文件或目录…
常用选项:
-p:连属性一起复制
-a:保留权限,复制软链接本身,递归复制
-r:递归复制(只要创建了目录,想要复制必须加-r,才能复制,不然会略过目录)
-f:强制复制,不与用户交互
-i:提醒覆盖
cp的高级用法: cp -v file1.txt { ,.bak }常用于备份
三、Linux 相关的一些命令
3.1、删除文件或目录-rm
删除指定的文件或目录
rm [选项]要删除的文件或目录…
常用选项:
-f:删除文件或目录时不进行提醒,而直接强制删除
-i:删除文件或目录是提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)
例如:rm -rf public_html/grub/
rm -i public-html/apg.conf
rm -rf ./* 当前视图下删除
rm -rf /* 直接把系统里的东西全部删除
rmdir 删除空目录
3.2、移动文件或目录-mv
将指定的文件或目录转移位置
如果目标位置与源位置相同,则相当于执行重命名操作
mv [选项]…源文件或目录…目标文件或目录
例如:
mv mytouch mkfile
mv mkfile public-html/
3.3、查找文件或目录- find
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
find [查找范围](查找文件或子目录的目录位置) [查找条件表达式](查找条件类型)
查找文件或目录 find2-2
常用查找条件类型
查找类型 | 关键 字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size | 一般使用“+”、“-”号设置超过或大小作为查找条件 常用的容量单位包括KB(注意K是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
使用find命令实现多个查找条件
各表达式之间使用逻辑运算符
“-a”表示而且(and)
“-o”表示或者(or)
例如:find /boot -size +1024k -a -name “vmlinuz*”(+是大于1024的)
find /boot –size +1024k –o –name “vmlinuz*”(-是小于1024的)
-user按文件属主:
-type:按类型查找:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件©、链接(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 4M #查文件大小为4M的文件
find /data/ -size -1M #查文件大小小于1Mb的文件
Find工具-type参数案列:
find /boot -type d
find /data/ -type d #查找/data/目录下的文件夹
find /data/ ! –typed d #查找/data/目录下的非目录文件
find /data/ -type l #查找/data/目录下的链接文件长
find /data/ -type d|xargs chmod 755 - #查目录类型并将权限设置为755(组合命令)
find/data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644
设置find命令的查找条件时,若需要使用"*“或”?”通配符,最好将文件名用双引号括起来,以避免当前目录下符合条件的文件干扰查找结果
find /boot -size +1024k -a/ -o -name “vmlinuz*”
使用"-a""-o"组合两个条件,前者表示两个条件必须同时满足,后者表示只需满足其中任何一个条件即可
扩展:
xargs #可以和管道配合
find ./ -maxdepth 1 -type f -print0 | xargs -0 ls –lh
-atime #访问时间
Linux中日记放在/var/ log sylog
-mtime #文件内容修改时间
-ctime #文件属性修改时间
ctime #以天为单位
cmin #以分钟为单位
find ./ -name “syslog.* .gz” -mtime -5 -exec ls -lh {} ; #+5是五天以前,-5天是五天以内
找到在五天内内容改动过的syslog.* .gz的所有文件显示出其信息
生产案列:
find /backup/ -type f -name “*.log” -exec rm {} ; #删除备份文件
find /backup/ -type f -name “*.dmp” -exec rm{} ;
#删除日志文件
find /backup/ -type f -name “*.tar.gz” -mtime +5 -exec rm -rf {} ; #删除5天前的备份(注意:{} \中间有空格,\ ;之间没有空格)
3.4、查看文件内容cat命令
显示文件的内容:
cat 文件名
例如:[root@locahost~]# cat /etc/hosts
[root@locahost~]# cat /etc/syscongif/network
[root@locahost~]# cat /etc/redhat-release/proc/version
注意:cat可同时查看多个文件下的命令
3.5、查看文件内容more命令
全屏方式分页显示文件内容:
more 文件名…
交互操作方法:
(1)按Enter键向下逐行滚动
(2)按空格键向下翻一屏
(3)按b键向下翻一屏
(4)按q键退出
3.6、查看文件内容less命令
与more命令相同,但扩展功能更多:
less 文件名
交互操作方法:
(1)page Up向上翻页,Page Down向下翻页
(2)按“/”键查找内容,“n”下一个内容,“N”上一个内容
(3)其功能与more命令基本类似
小结:
cat适合查看小文件
more可以查看大文件但不精确
less可以精确查看
3.7、查看文件内容head、tail命令
head命令
用途:查看文件开头的一部分内容(默认10行)
head –n 文件名…
tail命令
用途:查看文件结尾的少部分内容(默认为10行)
tail -n 文件名… 显示最后几行的内容
tail -f 文件名… 根据信息描述进行追踪
3.8、统计文件内容wc命令
统计文件中的单词数量(Word Count)等信息
wc [选项]… 目标文件…
常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
3.9、检索和过滤文件内容grep命令
在文件中查找并显示包含指定字符串的行:
grep [选项]… 查找条件 目标文件
常用命令选项:
-i:查找时忽略大小写
-v:反转查找,输出与查找条件不相符的行
查找条件设置:
(1)要查找的字符串以双引号括起来
(2)“^…”表示以…开头,“…$”表示以…结尾
(3)“^$”表示空行
四、Linux 相关的一些命令
4.1、压缩命令gzip、bzip2命令
制作压缩文件、解开压缩文件
gzip [-9] 文件名…
bzip2 [-9] 文件名…
gzip -d.gz格式的压缩文件
bzip2 -d .bz2格式的压缩文件
常用命令选项:
-9(压缩)、-d(解压x )
小结:
压缩比9最大,1最小
gzip要高于bzip2
压缩命令gunzip、bunzip2命令
gunzip命令:
gunzip等价于gzip –d
gunzip mkfile.gz
gzip -d mkfile.gz
bunzip2命令:
bzip2和bunzip2命令的用法与gzip、gunzip命令基本相同
unzip 是用来解压zip后缀的文件
4.2、归档命令tar命令:
tar命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也会将包文件进行压缩(需要调用前面的gzip或bzip2命令),以节省磁盘空间。使用tar命令时,选项前的“-”号可以省略。常用的几个选项如下所述。
制作归档文件、释放归档文件
tar [选项]…归档文件名 源文件或目录
tar [选项]…归档文件名 [-c目标目录]
常用命令选项:
-c:创建.tar格式的包文件
-C:解压时指定释放的目标文件夹
-f:表示使用归档文件
-j:调用bzip2程序进行压缩或解压
-P:打包时保留文件及目录的权限
-p:打包时保留文件及目录的绝对路径
-t:列表查看包内的文件
-v:输出详细信息
-x:解开.tar格式的包文件
-z:调用gzip程序进行压缩或解压
生产环境使用:
zcvf 打包gzip
jcvf 打包bzip2
zxvf 解压gzip
表示空行
四、Linux 相关的一些命令
4.1、压缩命令gzip、bzip2命令
制作压缩文件、解开压缩文件
gzip [-9] 文件名…
bzip2 [-9] 文件名…
gzip -d.gz格式的压缩文件
bzip2 -d .bz2格式的压缩文件
常用命令选项:
-9(压缩)、-d(解压x )
小结:
压缩比9最大,1最小
gzip要高于bzip2
压缩命令gunzip、bunzip2命令
gunzip命令:
gunzip等价于gzip –d
gunzip mkfile.gz
gzip -d mkfile.gz
bunzip2命令:
bzip2和bunzip2命令的用法与gzip、gunzip命令基本相同
unzip 是用来解压zip后缀的文件
4.2、归档命令tar命令:
tar命令主要用于对目录和文件进行归档。在实际的备份工作中,通常在归档的同时也会将包文件进行压缩(需要调用前面的gzip或bzip2命令),以节省磁盘空间。使用tar命令时,选项前的“-”号可以省略。常用的几个选项如下所述。
制作归档文件、释放归档文件
tar [选项]…归档文件名 源文件或目录
tar [选项]…归档文件名 [-c目标目录]
常用命令选项:
-c:创建.tar格式的包文件
-C:解压时指定释放的目标文件夹
-f:表示使用归档文件
-j:调用bzip2程序进行压缩或解压
-P:打包时保留文件及目录的权限
-p:打包时保留文件及目录的绝对路径
-t:列表查看包内的文件
-v:输出详细信息
-x:解开.tar格式的包文件
-z:调用gzip程序进行压缩或解压
生产环境使用:
zcvf 打包gzip
jcvf 打包bzip2
zxvf 解压gzip
jxvf 解压bzip2