鸟哥的Linux私房菜 命令笔记2

本文全面介绍了Linux系统中的常用命令,包括文件查找、磁盘管理、压缩解压、打包、文本编辑、历史命令、环境变量设置等功能,是Linux系统管理和日常操作的实用指南。

which:寻找执行档
which [-a] command
-a:all将所有从$PATH目录中可以找到的指令均列出来,而不止第一个被找到的指令名称

which ifconfig
which which

whereis:由一些特定的目录中寻找档案的档名
whereis [-bmsu] file

optionmean
-b只找binary格式的档案
-m只找在说明档manual路径下的文档
-s只找source来源的档案
-u(^)搜寻其他特殊档案
whereis ifconfig ##找出ifconfig这个档名
whereis passwd 
whereis -m passwd ##只找manual里的档案

find
find [PATH] [option] [action]
(1)与时间相关的option:

optionmean
-mtime nn是number,n天之前的一天之内修改过内容的档案
-mtime +n列出n天之前(不包括n本身)修改过内容的档案
-mtime -n列出n天之内的(含n天本身)的修改过内容的档案
-newer file列出比file还要新的档案档名
find / -mtime 0 ## 在系统上面24小时内有改动过内容的档案
find /etc -newer /etc/passwd ## 列出/etc底下 日期比/etc/passwd新的 的档案

在这里插入图片描述
(2)与使用者和群组名称有关的option:

optionmean
-uid nn为user的账号ID
-gid nn为group的ID
-user namename为使用者账号名称
-group namename为群组名称
-nouser寻找档案的拥有者不存在于/etc/passwd中的档案
-nogroup寻找档案的拥有群组不存在于/etc/group的档案
find /home -user dmtsai ##搜寻/home底下属于dmtsai的档案
find / -nouser ## 搜寻系统中不属于任何人的档案

(3)与档案权限及名称有关的参数:

optionmean
-name filename搜寻档案名称为 filename 的档案
-size [±] SIZE搜寻比SIZE还要大(+)或小(-)的档案;c表示byte、k表示kb
-type TYPE搜寻档案类型为TYPE的;f正规档案、d目录、l连接档、s socket、bc装置档案
-perm mode搜寻档案权限刚好等于mode的档案
-perm -mode
-perm /mode
find  / -name passwd ## 找出档名为passwd的档案
find / -name "*passwd*"  ## 找出档名包含passwd这个关键词的档案
find /run -type s ##找出/run目录下,档案类型为Socket的档名
find / -perm /7000 ##

(4)额外可进行的动作:

optionmean
-exec commandcommand为其他指令
-print将结果列印到屏幕上(默认动作)

在这里插入图片描述

df:列出档案系统的整体磁盘使用量
df [-ahikmHT] dictname/filename

optionmean
-a列出所有的档案系统
-h以人们较容易阅读的size格式显示
-i以inode数量显示
-T连同该partition的filesystem的名称也列出
df  ##将系统内所有filesystem列出来
df -h ##易读容量格式显示
df -aT ##列出所有特殊档案格式及名称
df -h /etc 
df -ih ##可用inode数量列出

在这里插入图片描述

du:档案系统的磁盘使用量
du [-ahskm] filename/dictname

optionmean
-aall列出所有的档案与目录容量
-h以人们易读容量格式显示
-s仅列出总量,而不列出每个个别的目录占用容量
-kKBytes
-mMBytes

ln:实体连接与符号连接
Hard Link:实体连接,硬式连接
在某个目录下新增一个档名连接到某inode号的关联记录;多个档名对应到一个inode号
在这里插入图片描述
在这里插入图片描述
压缩命令:gzip
gzip [-cdtv#] file

optionmean
-c将压缩的资料输出到屏幕,可透过资料流重导向来处理
-d解压缩
-t检验压缩档的一致性
-v显示原档案/压缩档案的压缩比
#数字,代表压缩等级;-1最快、-9最佳
gzip -v services ## 默认将service压缩成service.gz,原文档不存在
zcat services.gz  ## zcat读出压缩档内容
gzip -d services.gz ##解压缩
gzip -9 -c services > services.gz ##最佳压缩比压缩,并保留原本档案
zgrep -n 'http' services.gz ##找出http这个关键词在第几行

压缩命令:bzip2
bzip2 [-cdvkz#] filename
bzcat file.bz2

optionmean
-c将压缩过程产生资料输出屏幕
-d解压缩
-v显示压缩比
-k保留原始文档(比gzip优秀)
#是数字,压缩等级
bzip2 -v services
bzcat services.bz2
bzip2 -d services.bz2

压缩命令:xz
xz [-dtlkc#] filename
xzcat filename.xz

optionmean
-l列出压缩档的相关资讯
-d解压缩
-t检查是否一致
-k保留原文档
-c将资料输出到屏幕上
#压缩等级
xz -v services
xz -l services.xz
xz -d services.xz
xzcat services.xz
xz -k services

tar:打包指令
tar [zjJcvf] filename
tar [zjJtv]
tar [zjJxvf]

optionmean
-z通过gzip进行压缩/解压缩,档名最好为*.tar.gz
-j通过bzip2进行压缩/解压缩,档名最好为*.tar.bz2
-J通过xz进行压缩/解压缩,档名最好为*.tar.xz
-c建立打包档案
-x解压包解压缩
-v显示处理档名
-f接别处理的档名
-t查看打包档案的内容还有哪些档名
-p保留原文档的权限与属性
压缩: tar -j cv -f filename.tar.bz2
解压: tar -j xv -f filename.tar.bz2 -C欲解压的目录(解压到指定目录下)
查询: tar -j tv -f filename.tar.bz2

正确应该是:

先写生成的文件名,再写要压缩的源文件

仅解开单一档案的方法:

(1)先找到我们要的档名,假设解开shadow档名
tar -jtv -f /root/etc.tar.bz2 | grep "shadow"
(2) 解开档案
tar -jxv -f打包档 待解开档
tar -jxv -f /root/etc.tar.bz2 etc/shadow 

打包某目录,但不含该目录下某些文档的方法:

通过--exclude=file 将几个特殊的档案或目录移除在打包之列
tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc/root

仅备份比某个时刻还要新的档案的方法:

find /etc -newer /etc/passwd
ll /etc/passwd
tar -jcv -f /root/etc.newer.than.passwd.tar.bz2 --newer-mtime="2015/06/17" /etc/*

Vi的使用
vi共有三种模式:一般指令模式、编辑模式、指令列模式

modedescription
command modevi打开文档直接进入该模式,可以上下左右移动游标、删除子元整列、复制粘贴
insert mode按下ioarIOAR进入该模式,Esc退出
command-line mode:/?完成搜寻资料取代子元的工作

在这里插入图片描述

vi welcome.txt ## vi 档名进入vi的一般指令模式

在这里插入图片描述

按下i,o,a子元进入编辑模式,按下Exs退出

在这里插入图片描述

存档离开 :wq

在这里插入图片描述

移动光标的方法
hjkl、上下左右键游标向左、下、上、右移动一个游标
pageup pagedown移动一页
+移动到非空白子元的下一列
-移动要非空白子元的上一列
nn为数字,按下n后再按space,游标向右移动之一列的n个子元
0移动到该列的开头
$移动到该列的最后面子元处
G移动到档案的最后一列
nG移动到这个档案的第n列
gg移动到这个档案的第一列
nn为数字,游标向下移动n列
搜寻与取代
/word向游标之下寻找名称为word的字符串
?word向游标之上寻找名称为word的字符串
n重复前一个搜寻动作
N反向前一个搜寻动作
:n1,n2s/word1/word2/g在第n1与n2列之间寻找word1这个字串,并将该字串取代为word2
:1,$s/word1/word2/g在第一列到最后一列之间寻找word1这个字串,并将该字串取代为word2
:1,$s/word1/word2/gc在第一列到最后一列之间寻找word1这个字串,并将该字串取代为word2,且取代前给使用者confirm是否取代
删除、复制与贴上
x、X向后(前)删除一个子元
nx连续向后删除n个子元
dd删除整列
ndd删除游标所在向下n列
d1G删除游标所在到第一列所有资料
dG删除游标到最后一列的所有资料
yy复制一列
nyy复制游标所在向下的n列
p、P将已复制的资料在游标下一列(上一列)贴上
u复原
[ctrl]+r重做一次
.重复前一个动作
command mode 切换到 insert mode
i、I进入插入模式,从目前游标所在处插入
a、A从目前游标所在的下一个子元处插入
o、O从目前游标所在的下一列插入新的一列
r、Rr只会取代游标所在的那个字一次,R会一直取代直到按下Esc
指令列模式的储存、离开等指令
:w写入
:w!强制写入
:q退出
:q!强制退出
:wq存储后离开
ZZ没有改动不存储离开;有改动存储离开
:w filename将编辑资料存储成另一个档案
:r filename读入另一个档案的资料
:n1,n2 w filename将n1到n2的内容存储到filename
:set nu显示行号
:set nonu取消行号

区块选择Visual Block

区块选择的按键意义
v字选择,游标经过的地方反白选择
V列选择
[Ctrl]+v区块选择,长方形方式选择资料
y复制反白地方
d删除反白地方
p将复制区块粘贴

多档案编辑
打开多个档案:vim file1 file2…

多档案编辑的按键
:n编辑下一个档案
:N编辑上一个档案
:files列出目前这个vim的开启所有档案

多视窗功能
在command mode输入 :sp{filename} filename可有可无;省去新开同一个文档窗口。
『[ctrl]+w+↑』及『[ctrl]+w+↓』 在两个视窗之间移动;[ctrl]+w+ q其实就是:q 结束离开

命令编辑能力:history
通过按 上下键 就可以找到前/后一个输入的指令。指令记录在.bash_history
history [n]
history [-c]
history [-raw] histfiles

optionmean
n数字,意思是 要列出最近的n笔命令列表
-c将所有的history内容全部消除
-r将histfiles的内容read到目前shell的history记忆中
-a目前新增的history命令append到histfiles中
-w将目前的history记忆内容write入histfiles中
##列出目前记忆体内所有history记忆
history
##列出您目前最近的3笔资料
history 3
##将目前资料写入histfile中
history -w
echo ${HISTSIZE}

!number
!command
!!

optionmean
number执行第几笔指令
command向前搜寻指令串开头为command的指令并执行
!!执行上一个指令

命令别名设置功能:alias
alias 别名=‘command’

alias ll = 'ls -al'
unalias ll

工作控制、前景背景控制:job control、foreground、background
程序化脚本:shell scripts
万用子元:Wildcard

查询指令是否为Bash shell的内建命令:type
type [-tpa] name

optionmean
-ttype会将name以这些字眼显示出他的意义:file外部指令、alias命令别名、builtin内建指令
-p当name属于builtin command时才会显示完整档名
-a将所有含name的指令都列出来
type ls
type -t ls 
type -a ls
type cd

指令的下达与快速编辑按钮
如果指令串太长的话,如何使用两行来输出?
在这里插入图片描述
用 [Enter] 来分成两行,\和[Enter]中间没有其他字元。

组合键功能
[Crtl]+u/[Ctrl]+k从游标处向前/后删除指令串
[Ctrl]+a/[Ctrl]+e游标移动到指令串的最前面/最后面

Shell的变数功能
y=ax+b
等号左边(y)就是变数,等号右边(ax+b)就是变数内容。
变数取用:echo
在bash中,当一个变数名称尚未被设定时,预设的内容是空的。

echo $variable
echo $PATH
echo ${PATH}
echo ${myname} ## 该变量还未设定,返回空
myname='keiji' #set the variable
echo ${myname} #get the variable

变数的设定规则
(1)变数与变数的内容以一个等号=来连接,等号两边不能直接接空白子元
myname=keiji
(2)变数名称只能是英文字母与数字,但是开头字元不能是数字
(3)变数内容中若有空白子元可使用双引号或单引号将变数内容结合起来
双引号内的特殊子元如$,可保持原本的特性
var="lang is $lang" echo $var lang is zh_TW.UTF-8
单引号内的特殊子元被看作纯文字
var='lang is $lang' echo $var lang is $lang
(4)可用\将特殊字符转变为一般子元
(5)command 和$(command)运行外部指令

version=$(unname -r)
echo $version
3.10,0-229.e17.x86_64

(6)可有 $ variable或 $ {variable}来扩增变数内容
PATH=$PATH:/home/bin
(7)用export来使变数变成环境变数
export PATH
(8)取消变数:unset
unset myname

环境变数的功能
查询环境变数的指令:env export

titlecontent
HOME使用者的家目录:cd~
SHELL目前环境使用的SHELL
HISTSIZE记录历史指令的笔数
MAIL使用者mailbox位置
PATH执行档搜寻的路径,目录之间用冒号隔开
LANG语系
RANDOM随机乱数

用set观察所有变数
在这里插入图片描述

titlecontent
PS1提示子元的设定
$关于本shell的PID,echo$$
上一个执行的指令回传的数,echo$?返回0代表执行成功

export:自订变数转成环境变数
两者差异在于:该变数是否被子程序所继续引用。
在这里插入图片描述
子程序只会继承父程序的环境变量,不会继承其自订变量。

export 变数名称
export #export后面不接变数,会把所有环境变数显示出来

变数键盘读取、阵列与宣告:read,array,declare
read:读取来自键盘输入的变量(相当于python的input)
read [-ptn] variable

optonmean
-p后面可以接提示子元
-t接等待描述
-n限定键入的字数
read atest #使用者用键盘输入以内容,内容变成名为atest的变数
echo $atest
read -p "please keyin your name:" -t  30 named #提示使用者30秒内输入自己的大名,并将输入字串作为named的变数内容
echo $named

declare:宣告变数类型
declare [-aixr] variable

optionname
-aarray,将变数定义为阵列类型
-iinteger,将变数定义为整数类型
-xexport,将变数定义为环境变数
-rreadonly,将变数定义为readonly类型,不可更改也不可unset
sum=100+300+50
echo ${sum} #返回100+300+50 默认变量为str类型
declare -i sum=100+300+50
echo ${sum} #返回450

将sum变成环境变数
declare -x sum
export | grep sum
declare +x sum 将-变成+可以进行取消的动作

让sum变为readonly
declare -r sum
sum=testing

阵列array变数类型
设定:var[index]=content
调用:${var[index]}
在这里插入图片描述

与档案系统及程序的限制关系:ulimit
变数内容的删除、取代与替换

path=${PATH}
echo ${path}
将local/bin删除
echo ${path#/*local/bin:}

${variable # /*local/bin:}
variable:原本的变数名称
#:从变数内容从最前面向右删除,且仅删除最短的那个
%:从后面向前删除变量内容
/ *local/bin: 代表有删除的部分,*用来取代无穷多个任意字符
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值