linux常用命令详解(Linux基础命令)
linux常用命令详解(Linux基础命令)当在终端里输入 /home ,其实是在告诉电脑,先从 / (根目录)开始,再进入到 home 目录3>. Linux目录每个驱动器都有自己的根目录树形结构,如图所示:2>. Linux 下的文件系统Linux没有盘符这个概念,只有一个根目录 / ,所有文件都在它下面
一、linux文件和目录
1、目标
- 了解 Linux 文件目录的结构
2、Windows 和 Linux 文件系统区别
1>. Windows 下的文件系统
- 在 Windows 下,打开 “计算机”,我们看到的是一个个的驱动器盘符:
每个驱动器都有自己的根目录树形结构,如图所示:
2>. Linux 下的文件系统
- 在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
Linux没有盘符这个概念,只有一个根目录 / ,所有文件都在它下面
3>. Linux目录
- /: 根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home ,其实是在告诉电脑,先从 / (根目录)开始,再进入到 home 目录
- /bin、/usr/bin: 存放着最经常使用的命令,与windows的exe文件一样,但linux文件无后缀名
- /dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱
Mount、/dev/cdrom /mnt
- /etc: 系统配置文件存放的目录,不建议在此目录下存放可执行文件 相当于windows的C盘
- /home: 系统默认的除root以外用户的存放家目录,新增用户账号时,用户的家目录都存放在此目录下~ : 表示当前用户的家目录~usr: 表示用户 usr 的家目录
- /root: 系统管理员root的家目录
- /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。
与/bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置
和使用。
- /boot: 放置 linux 系统启动时用到的一些文件,如 linux 的内核文件: /boot/vmlinuz ,系统引导管理
器: /boot/grub
- /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需 要函数库的协助
- /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
- /opt: 给主机额外安装软件所摆放的目录
- /lost fount: 系统异常产生错误时,会将一些遗失的片段放置于此目录下
- /proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,
所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
- /tmp: 一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问
- /srv: 服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
- /usr: 应用程序存放目录
4>. Linux目录详情各字段含义
- 第一个字段的10个字符: 表示文件类别和权限,具体如下:
- 第一个字符表示文件类别,代表的含义如下:
-:普通文件
d:目录文件
b:块设备文件
c:字符设备文件
l:符号链接文件
- 后面9个字符代表3组访问权限:
第1组的3个字符是授权文件所有者的访问权限;
第2组的3个字符是授权同组用户的访问权限;
第3组的3个字符是授权其他用户的访问权限。
每一组的3个字符一次表示读、写、执行权限,其中:
r:表示有读权限(4)—read: 当前用户可以读取文件内容,浏览目录
w:表示有写权限(2)—write: 当前用户可以新增或修改文件内容,可以删除、移动目录或目
录内文件
x:表示有执行权限(1)—execute: 当前用户可以执行文件,可以进入目录。
-:表示没有相应的权限
- 第二个字段: 表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目
就是该目录中的文件个数了。
- 第三个字段: 表示该文件或目录的拥有者。若使用者目前处于自己的Home 那这一栏大概都是它的账号名称。
- 第四个字段: 表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该
都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。
- 第五个字段: 表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参 数
使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。
- 第六个字段: 表示创建日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
- 七个个字段: 表示文件名。我们可以用ls –a显示隐藏的文件名。
二、常用 Linux 命令
1、目标
- 熟练使用Linux 常用命令
2、学习Linux命令的技巧
- 常用命令动手多了,自然就记住了不要尝试一次学会所有的命令,有些命令是非常不常用的,临时遇到,临时百度就可以按 上 / 下 光标键可以在曾经使用过的命令之间来回切换如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl c自动补全:在敲出 文件 / 目录 / 命令 的前几个字母之后,按下 tab 键,如果输入的没有歧义,系统会自动补全,如果还存在其他 文件 / 目录 / 命令 ,再按一下 tab 键,系统会提示可能存在的命令
3、 Linux 常用命令
1>. 查看文件夹下的内容:ls
ls:是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。
ls常用参数:
参数 |
含意 |
-a |
显示指定目录下所有子目录与文件,包括隐藏文件 all |
-l |
以列表方式显示文件的详细信息 |
-h |
配合 -l 以人性化的方式显示文件大小 |
ls通配符:
* |
代表文件名中所有字符 |
ls te* |
查找以te开头的文件 |
ls *html |
查找结尾为html的文件 |
? |
代表文件名中任意一个字符 |
ls ?.c |
只找第一个字符任意,后缀为.c的文件 |
ls a.? |
只找只有3个字符,前2字符为a.,最后一个字符任意的文件 |
[] |
[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。 |
[abc] |
匹配a、b、c中的任意一个 |
[a-f] |
匹配从a到f范围内的的任意一个字符 |
ls [af]* |
找到从a到f范围内的的任意一个字符开头的文件 |
ls a-f |
查找文件名为a-f的文件 当“-”处于方括号之外失去通配符的作用 |
例:
ls –l显示文件目录的详细资料 不包括隐藏目录与ll一样
ls –al 显示隐藏文件
ll (ls -l) 与ls –al的区别:不显示隐藏目录
ls –a 显示隐藏文件
alias 设置Linux shell 命令的别名将较长的命令简写使用
2>. 显示当前路径:pwd
pwd:是英文单词print wrok directory的简写,其功能为显示当前的工作目录。
- 该命令很简单,直接输入pwd即可,后面不带参数
3>.切换文件夹:cd
cd:是英文单词change directory的简写,其功能为切换文件夹.
- Linux所有的目录和文件名大小写敏感
- cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
- 如果路径是从根路径开始的,则路径的前面需要加上 “ / ”,如 “ /mnt ”。
cd常用参数:
参数 |
含意 |
cd |
切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。 |
cd ~ |
切换到当前用户的家目录 ~代表用户的家目录;root用户对应的是/root 其他用户对应的是/home/username |
cd . |
切换到当前目录 |
cd .. |
切换到上级目录 |
cd - |
可进入上次所在的目录 |
cd / |
可进入根目录 |
4>.创建目录:mkdir
格式:mkdir 目录 或 mkdir 目录1 目录1 ..#同时创建多个目录,多个目录间加空格
mkdir:是英文单词make directory的简写,其功能为创建目录
- 通过mkdir命令可以创建一个新的目录。
- 参数-p可递归创建目录。 例:mkdir–p /tmp/dir1/dir2 #创建目录树(级联目录)
- 需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,
- 并且目录创建者必须对当前目录具有写权限。可
5>.删除文件:rm rmdir?
rm:是英文单词remove的简写,可通过rm删除文件或目录。
rm常用参数:
参数 |
含意 |
-i |
以进行交互式方式执行 。为了防止文件误删,可以加参数-i,逐个确认要删除的文件 |
-f |
强制删除,忽略不存在的文件,无需提示 |
-r |
递归地删除目录下的内容(文件或目录),删除文件夹时必须加此参数 |
6>.拷贝:cp cp [选项] 源文件 目标文件(夹)
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
cp 命令支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,
否则将出现错误。
cp常用参数:
参数 |
含意 |
-a |
该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性 |
-f |
覆盖已经存在的目标文件而不提示 默认值 |
-i |
交互式复制,在覆盖目标文件之前将给出提示要求用户确认 |
-r |
递归复制目录,即复制该目录及其所有的子目录和文件。 给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件, 目标文件必须为一个目录名。 |
-v |
显示拷贝进度 |
- touch cangls #建立源文件
cp cangls /tmp/ #把源文件不改名复制到 /tmp/ 目录下 - cp cangls /tmp/bols #改名复制
- cp cangls /tmp/
- cp:是否覆盖"/tmp/cangls"?y#目标位置有同名文件,所以会提示是否覆盖
- mkdir movie #建立测试目录
cp -r /root/movie/ /tmp/ #目录原名复制 - 格式:cp 源文件 目标文件(夹)#复制一个源文件到目标文件(夹)
- 格式:cp 源文件1 源文件2 目标文件夹 或 cp 文件* 目标文件夹 #同时复制多个文件到目标文件(夹)下
- 格式:cp -r 源文件夹 目标文件夹 #复制源文件夹到目标文件夹下 复制文件夹一定要加“-r”参数
- 命令格式为:cp -u 源文件 目标文件 #只有源文件比目标文件新时,才会将源文件复制给目标文件,否则,及时执行了命令,也不会执行复制
7>.移动、重命名:mv
格式:mv 文件1 目录/文件1 #将文件1移动到指定目录,若在同一目录为更名
用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
mv常用参数:
参数 |
含意 |
-f |
force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; |
-i |
若目标文件 (destination) 已经存在时,就会询问是否覆盖 |
-v |
显示移动进度 |
命令格式 |
运行结果 |
mv 文件名 文件名 |
将源文件名改为目标文件名 如:mv a.log b.log |
mv 文件名 目录名 |
将文件移动到目标目录 |
mv 目录名 目录名 |
目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名 |
mv 目录名 文件名 |
出错 |
例:
如:mv a.log aa/a.log #将a.log移到aa目录下
如:mv a.log aa/a2.log #将a.log移到aa目录下改名为a2.log
如:mv a2 a3 #将文件a2改名为a3
如:mv info/ logs
#将info目录放入logs目录中 注意,如果logs目录不存在,则该命令将info改名为logs
如:mv /usr/st/* . #将/usr/st下的所有文件和目录移到当前目录下
如:mv /home/fq/a.log /home/fq/test #目标目录与原目录不一致 没有指定新文件名 效果就是仅仅移动
如:mv /home/fq/a.log /home/fq/test/b.log #移动 重命名
8>.创建文件:touch
用户可以通过touch来创建一个空的文件
- Linux系统中没有严格的后缀(格式),所以创建文件时可以命名为任意的文件名
- 如下:touch hello.txt #在当前路径下创建名字为hello.txt的空文件
三、Linux 终端命令格式
1、目标
- 了解终端命令格式
- 知道如何查阅终端命令帮助信息
2. 终端命令格式
command [-options] [parameter]
说明:
- command :命令名,相应功能的英文单词或单词的缩写[-options] :选项,可用来对命令进行控制,也可以省略parameter :传给命令的参数,可以是零个、一个或者多个[] 代表可选
3. 查阅命令帮助信息
1>. --help
command --help
说明:
- 显示 command 命令的帮助信息
2>. man
man command
说明:
- 查阅 command 命令的使用手册man 是manual的缩写,是 Linux 提供的一个手册,包含了绝大部分的命令、函数的详细使用说明
使用 man 时的操作键功能:
操作键功能 |
含意 |
空格 |
空格键显示手册页的下一屏 |
Enter 键 |
一次滚动手册页的一行 |
b |
回滚一屏 |
f |
前滚一屏 |
q |
退出 |
/word |
搜索word字符串 |
注:现阶段只需要知道通过以下两种方式可以查询命令的帮助信息
先学习常用命令及常用参数的使用即可,工作中如果遇到问题可以借助网络搜索命令的中文资料
四、Linux基本命令
1.目标
- 熟练使用 Linux基本命令
2.基本命令
1>.清屏:clear
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl l ( “l” 为小写字母"L" )。
2>.输出重定向命令:> 「改变输入与输出的方向」
Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中。
- ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容)>:输出重定向会覆盖原来的内容,>>输出重定向则会追加到文件的尾部。
类 型 |
符 号 |
作 用 |
标准输出重定向 |
command >file |
以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。 |
command >>file |
以追加的方式,把 command 的正确输出结果输出到 file 文件中。 | |
标准错误输出重定向 |
command 2>file |
以覆盖的方式,把 command 的错误信息输出到 file 文件中。 |
command 2>>file |
以追加的方式,把 command 的错误信息输出到 file 文件中。 |
场景:
- 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
错误讯息与正确讯息需要分别输出时。
3>.分屏显示:more
分屏显示文件内容,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,每次只显示一页,
- 按下空格键可以显示下一页,
- 按下q键退出显示,
- 按下h键可以获取帮助。
4>.管道:| 格式:命令A|命令B
管道:一个命令的输出可以通过管道做为另一个命令的输入。
- 管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
- 例:ls / | more
- 例: ps aux | grep "test" 在 ps aux中的結果中查找test。
- 例: find . -name "*.txt" | xargs grep "good" -n --color=auto 把find的结果当成参数传入到grep中,即在那些文件内部查找good关键字。
- 注:本例中xargs将find产生的长串文件列表拆散成多个子串,
5>.建立链接文件:ln
Linux链接文件类似于Windows下的快捷方式。
链接文件分为软链接和硬链接。
硬链接使用格式:ln 源文件 链接文件
- 硬链接只能链接普通文件,不能链接目录。
- 建立一个硬链接文件,两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在
- 类似Windows中的复制副本
软链接使用格式:ln -s 源文件 链接文件
- 软链接不占用磁盘空间,源文件删除则软链接失效。
- 软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
- 类似Windows中的快捷键
6>.查看文件内容:cat
7>.文本搜索:grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep
打印包含模式的所有行。
grep一般格式为:
- grep [-选项] ‘搜索内容串’文件名在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep 'a' 1.txt
grep常用参数:
参数 |
含意 |
-v |
显示不包含匹配文本的所有行(相当于求反) |
-n |
显示匹配行及行号 |
-i |
忽略大小写 |
grep搜索内容串可以是正则表达式。
- 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
grep常用正则表达式:
参数 |
含意 |
^a |
行首 搜寻以 m 开头的行;grep -n '^a' 1.txt |
ke$ |
行尾 搜寻以 ke 结束的行;grep -n 'ke$' 1.txt |
[Ss]igna[Ll] [a-z]lll[0-9] |
匹配 [] 里中一系列字符中的一个;搜寻匹配单词signal、signaL、Signal、SignaL的行;grep-n '[Ss]igna[Ll]' 1.txt |
. |
(点)匹配一个非换行符的字符;匹配 e 和 e 之间有任意一个字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt |
例:
格式:grep “string” filename #通过grep命令从包含特定文本字符串的文件中获取一串字符
如: grep”error” a.log #文件a.log包含具有字符串“error”的句子,您可以在上面的输出中看到该句子。 关键字和字符串在搜索结果中以彩色形式显示
ls -l|grep -i "log" #搜索包含特定关键字的文件名,可以通过grep命令过滤文件列表
grep ‘test’ d* #显示所有以d开头的文件中包含 test的行
grep ‘test’ aa bb cc #显示在aa,bb,cc文件中匹配test的行。
grep ‘[a-z]\{5\}’ aa #显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
8>.查找文件:find
find命令功能非常强大,通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
find常用方法:
命令 |
含意 |
find . -name test.sh |
查找当前目录下所有名为test.sh的文件 |
find . -name '*.sh' |
查找当前目录下所有后缀为.sh的文件 |
例:
$ find . -name '[A-Z]*.txt' -print #在当前目录及子目录中,查找大写字母开头的txt文件
$ find /etc -name 'host*' -print #在/etc及其子目录中,查找host开头的文件
$ find ~ -name '*' #在$HOME目录及其子目录中,查找所有文件
附录: 格式:find [PATH] [option] [action] 【 -print 】
- path:要查找的目录路径
- ~ 表示$HOME目录
- . 表示当前目录
- / 表示根目录
- print:表示将结果输出到标准输出
- options常用的有下选项:
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n n #按文件更改时间来查找文件,-n指n天以内, n指n天以前
-atime -n n #按文件访问时间来查找文件,-n指n天以内, n指n天以前
-ctime -n n #按文件创建时间来查找文件,-n指n天以内, n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-prune #忽略某个目录
9>.打包、解包:tar
- 打包:将一堆文件或目录什么的变成一个总的文件。压缩:将一个大的文件经过某种压缩算法变成一个小文件。Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,
- 可以把一系列文件打包到一个大文件中,
- 也可以把档案文件解开以恢复数据。
tar使用格式: tar [参数] 打包文件名 文件目录
- 打包: tar -cvf a.tar *.txt #生成a.tar 文件 ,
#f必须放在最后,后面的第一个参数表示要生成的文件名,后面所有参数是要打包的文件列表
- 解包:tar xvf a.tar -C atar #解包到指定文件夹,文件夹需要提前创建好
- 解包:tar xvf a.tar #如果没有写目录,解压到当前目录
- tar命令很特殊,其参数前面可以#使用“-”,也可以不使用。
tar常用参数:
参数 |
含意 |
-c |
创建新打包文件 |
-v |
列出归档、解档的详细过程,显示进度 |
-f |
指定档案文件名称 |
-x |
解开归档文件 |
-t |
列出.tar包中所有文件,-t是列出文件的意思 (rad ) |
-r |
追加,将所指文件增加到.tar的包结尾。-r是表示增加文件的意思 如tar -rf all.tar *.gif |
例:
tar -cf all.tar *.jpg #将所有.jpg的文件打成一个名为all.tar的包。
tar -rf all.tar *.gif #将所有.gif的文件增加到all.tar的包里面去
tar -uf all.tar logo.gif #更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar #列出all.tar包中所有文件
tar -xf all.tar #解出all.tar包中所有文件
10>.文件压缩、解压:gzip
tar与gzip命令结合使用实现文件打包、压缩。
- tar只负责打包文件,但不压缩,文件用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。gzip使用格式如下:gzip [选项] 被压缩文件gzip通常用于文件压缩,但是不能压缩文件夹,并且压缩完原文件不保留
gzip常用参数:
参数 |
含意 |
-d |
解压缩 同gunzip |
-r |
压缩( -r 递归压缩或解压缩) |
-v |
对每一个压缩和解压的文件 输出详细信息,如显示文件名和压缩比 |
-c |
将输出写到标准输出上(输出到屏幕上),并保留原有文件。 |
- tar这个命令并没有压缩的功能,它只是一个打包的命令,
- 但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程
- 压缩用法:tar cvzf 压缩包包名 文件1 文件2 ...
-z :指定压缩包的格式为:file.tar.gz
- 解压用法: tar zxvf 压缩包包名
-z :指定压缩包的格式为:file.tar.gz
- 解压到指定目录:-C (大写字母“C”)
- 例1:
生成压缩文件:
- 打包:tar cf a.tar * #生成a.tar文件
- 压缩:gzip –r a.tar #生成a.tar.gz文件
解压压缩文件
- 解压:gzip –d a.tar.gz #生成a.tar文件
- 解包:tar xf a.tar –C ~/atar #解包到指定文件夹中
- 例2:
打包并压缩:tar czf a.tar.gz *txt #以gzip的方式打包并且压缩
解压并解包:tar zxf a.tar.gz –C a.tar #以gzip的方式解压并且解包
- Zip和gzip比较
压缩率: zip < gzip
通用率: zip > gzip
- 为了方便用户在打包解包的同时压缩或解压文件,tar命令提供了一种特殊的功能,就是可以在打包解包的同时调用其他的压缩程序,比如:gzip tar中使用-z这个参数来调用gzip
tar -czf all.tar.gz *.jpg
#将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz
tar -xzf all.tar.gz #将tar.gz包解开
11>.文件压缩、解压:zip、unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
参数 |
含意 |
-a |
将文件转成ASCII模式 |
-r |
压缩( -r 递归压缩或解压缩) |
-m |
将文件压缩之后,删除源文件 |
-n |
解压缩时不要覆盖原有的文件 |
-o |
不必先询问用户,unzip执行后覆盖原有的文件 |
-d [目录] |
指定文件解压缩后所要存储的目录 |
例:
zip -r test.zip tmb/ #将指定目录/tmp压缩成test.zip文件
unzip test.zip #将压缩文件text.zip在当前目录下解压缩
unzip -o test.zip -d tmp/
#将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
- gzip与zip的区别 : gzip主要是压缩单个文件,zip是压缩多个文件
- zip是将文件打包为zip格式的压缩文件
gzip是将文件打包为tar.gz格式的压缩文件
12>.查看命令位置:which
13>. 修改文件权限:chmod
chmod 修改文件权限有两种使用格式:字母法与数字法。
字母法:chmod u/g/o/a /-/= rwx 文件
chmod常用参数:
参数 |
含意 |
u |
user :文件的所有者 |
g |
group : 文件的所有者属于同一组( group )者,即用户组 |
o |
other : 其它用户 |
a |
all :表示这三者皆是,所有用户 |
参数[ -= ] |
含意 |
|
增加权限 |
- |
撤销权限 |
= |
设定权限 |
参数rwx |
含意 |
r /4 |
read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容 |
w/2 |
write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
x/1 |
excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
-/0 |
不具任何权限,数字代号为 "0" |
如执行:chmod u=rwx g=rx o=r filename 就等同于:chmod u=7 g=5 o=4 filename
chmod 751 file:
- 文件所有者:读、写、执行权限
- 同组用户:读、执行的权限
- 其它用户:执行的权限
- 注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
- 例:
chmod 123 test.txt
#第一位1数字代表自己的权限,
#第二位2代表自己组的权限,第三位3代表其它人的权限,3=1 2代表wx权限
- 例:
chmod u r g-w o=x test.txt
chmod a w test.txt
chmod a=rwx test.txt
14>.账号切换:su
帐号切换
- 切换到root帐号时需要密码,
- 切换到普通用户不用密码
15>.设置用户密码:passwd
在Unix/Linux中,用户修改密码
- 超级用户可以使用passwd命令为普通用户设置或修改用户密码。
- 用户也可以直接使用该命令来修改自己的密码,而无需在命令后面使用用户名。
16>. 退出登录账户: exit
- 如果是图形界面,退出当前终端;
- 如果是使用ssh远程登录,退出登陆账户;
- 如果是切换后的登陆用户,退出则返回上一个登陆账号。
17>. 查看登录用户:who
who命令用于查看当前所有登录系统的用户信息。
who常用参数选项:
参数 |
含意 |
-q或--count |
只显示用户的登录账号和登录用户的数量 |
-u或--heading |
显示列标题 |
18>.关机重启:reboot、shutdown
命令含义
参数 |
含意 |
reboot |
重新启动操作系统 |
shutdown –r now |
重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now |
立刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:25 |
系统在今天的20:25 会关机 |
shutdown -h 10 |
系统再过十分钟后自动关机 |
19>.查看进程:ps
ps是最基本进程查看命令。
- 查看进程状态、进程占用的资源等
- ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令
ps常用参数:
参数 |
含意 |
-A |
所有的进程均显示出来,与-e 具有同样的效用 |
-a |
显示现行终端机下的所有进程,包括其他用户的进程 |
-u |
以用户为主的进程状态 |
-x |
通常与 a 这个参数一起使用,可列出较完整信息 |
-e |
和-A的意思是一样的,即显示有关其他用户进程的信息,包括那些没有控制终端的进程 |
-f |
显示用户id,进程id,父进程id,最近CPU使用情况,进程开始时间等 |
- 例:ps aux
USER:该进程属于那个使用者账号
PID :该进程的进程ID号。
%CPU:该进程使用掉的 CPU 资源百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ :该进程使用掉的虚拟内存量 (Kbytes)
RSS :该进程占用的固定的内存量 (Kbytes)
TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?。
另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有:
- R :该程序目前正在运作,或者是可被运作;
- S :该程序目前正在睡眠当中,但可被某些讯号(signal) 唤醒。
- T :该程序目前正在侦测或者是停止了;
- Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该进程被触发启动的时间;
TIME :该进程实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令。
- 例:
ps –ef | grep tomcat 查看所有有关tomcat的进程
20>.进程监控:top
实时监控进程的状态
- 默认状态显示的是cpu密集型的进程,并且每5秒钟更新一次
- 显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令
- 显示内存和 CPU 使用率过高的正在运行的进程
- 例:top
PID: 进程描述符
USER: 进程的拥有者
PRI:进程的优先级
NI: nice level
SIZE: 进程拥有的内存(包括code segment data segment stack segment)
RSS: 物理内存使用
VIRT(virtul memory usage): 进程需要的虚拟内存大小
RES(resident memory usage): 常驻内存
SHARE: 和其他进程共享的物理内存空间
STAT:进程的状态,有 S=sleeping,R=running,T=stopped or traced,D=interruptible sleep(不可中断的睡眠状态),Z=zombie。
%CPU: CPU使用率
%MEM: 物理内存的使用
TIME: 进程占用的总共cpu时间
COMMAND:进程的命令
21>.结束进程:kill
用于发送信号来结束进程
- 若进程需要强制杀死(进程没有响应杀死命令),使用-9参数来执行。
- 注意,使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。
- 如果我们不知道进程PID或者打算用名字杀死进程时候,killall就能派上用场。
- 格式:
kill <pid>
kill -9 <pid>
killall -9 - 杀死所有拥有同样名字的进程
22>. 查看磁盘使用情况:df
Filesystem:文件系统的名称,
Size:一个特定的文件系统1K-块1K是1024字节为单位的总内存。
Used:已用内存量
Avail:可用内存量
Use%:已用内存量百分比
Mounted on:挂载的目录
df常用参数:
参数 |
含意 |
-h |
--human-readable以合适的单位显示内存使用情况 |
-l |
--local 限制列出的文件结构 |
23>.查看内存使用情况:free
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
free常用参数:
参数 |
含意 |
-b |
以Byte为单位显示内存使用情况 |
-k |
以KB为单位显示内存使用情况(默认以KB显示) |
-m |
以MB为单位显示内存使用情况 |
-g |
以GB为单位显示内存使用情况 |
-h |
--human-readable以合适的单位显示内存使用情况 |
-s<n> |
动态观察内存使用状况,每n秒刷新 如:free -h -s 3 |
Mem 内存的使用情况
Swap 交换空间的使用情况
total 系统总的可用物理内存和交换空间大小
used 已经被使用的物理内存和交换空间
free 未使用的物理内存和交换空间
shared 被共享使用的物理内存大小。
available 还可以被应用程序使用的物理内存大小
bbuff/cache 被 buffer 和 cache 使用的物理内存大小(缓存内存数)
tatal = used free buff/cache
available = free buff/cache - 不可回收的部分
- 其实 free 命令中的信息都来自于 /proc/meminfo 文件 如cat /proc/meminfo
- buffer:在操作系统中指 buffer cache, 中文一般翻译为 "缓冲区"
- cache 在操作系统中指 page cache,中文一般翻译为 "页高速缓存"
- swap交换空间(swap space) 是磁盘上的一块区域 当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
24>.查看cpu负载情况: uptime
用于查看系统的负载信息,格式:uptime
当前时间: 09:59:42
系统已运行的时间: 21:45
当前在线用户: 3 user
平均负载: 0 0 0,最近1分钟、5分钟、15分钟系统的负载
- cat /proc/loadavg: 直接查看系统平均负载命令如:cat /proc/loadavg何为系统负载呢?
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运
行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
25>.Netstat
Netstat是控制台命令 是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
Netstat常用参数:
参数 |
含意 |
-a |
(all)显示所有端口 包括监听的和未监听的 |
-n |
拒绝显示别名,能显示数字的全部转化成数字。 |
-t |
或–tcp 显示TCP 传输协议的连线状况,域名解析 |
-l |
或–listening 仅列出有在 Listen (监听) 的服务状态 |
-u |
或–udp 显示udp 传输协议的连线状况 |
-p |
显示建立相关链接的程序名 |
常用netstat相关命令
列出所有端口 #netstat -a
查看某个端口是否占用#netstat -ntlp | grep 端口 3306
查看网络连接情况 #netstat -anp
查看程序运行的端口:netstat -apn | grep '程序名'
查看端口的程序名:netstat -apn | grep '端口号'
例:
netstat –apn | grep 8080
ps -ef | grep pid 查看
、
字段介绍:
协议(Proto )
本地机器名(Local Address )及本地打开并用于连接的端口
远程机器名(Foreign Address )及远程端口:
状态:ESTABLISHED(LISTEN :在监听状态中、ESTABLISHED :已建立联机的联机情况、TIME_WAIT:该联机在目前已经是等待的状态)
26>. 组、用户(groupadd groupdel useradd userdel)
- 新建组:
格式:groupadd 组名 #如:groupadd group1
- 删除一个已有的用户组:
格式:groupdel 用户组 #如:groupdel group1
- 创建用户:
格式:useradd –g 组名 用户名 #如: useradd -g group1 wanghong
- 4、删除帐号:
格式:userdel –r 用户名
#如userdel -r wanghong--在删除用户的同时会删除用户的家目录,注意,在删除用户的同时如果不删除用户的家目录,那么家目录就会变成没有属主和属组的目录,也就是垃圾文件。
五、编辑器vi
vi简介
- vi是“Visual interface”的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。 vi没有菜单,只有命令,且命令繁多。vi有三种基本工作模式:
- 命令模式
- 文本输入模式
- 末行模式
命令行模式
任何时候,不管用户处于何种模式,只要按一下ESC键,即可使Vi进入命令模式;
我们在shell环境(提示符为$)下 输入启动Vi命令,进入编辑器时,也是处于该模式下。在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。
文本输入模式
在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模
式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,
若想回到命令模式下,按键ESC即可。
末行模式
末行模式也称ex转义模式。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通
常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式
下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。例如::sp newfile
则分出一个窗口编辑newfile文件。如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式
返回,则按Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。
vi基础操作
进入插入模式 | ||
i |
插入光标前一个字符 | |
I |
插入行首 | |
a |
插入光标后一个字符 | |
A |
插入行未 | |
o |
向下新开一行 插入行首 | |
O |
向上新开一行 插入行首 | |
命令模式:SC:从插入模式或末行模式进入命令模式 | ||
h |
左移光标 | |
j |
下移光标 | |
k |
上移光标 | |
l |
右移光标 | |
M |
光标移动到中间行 | |
L |
光标移动到屏幕最后一行行首 | |
G |
移动到指定行 行号 -G | |
w: |
向后一次移动一个字 | |
b |
向前一次移动一个字 | |
{ |
按段移动 上移 | |
} |
按段移动 下移 | |
Ctr-d |
向下翻半屏 | |
Ctr-u |
向上翻半屏 | |
Ctr-f |
向下翻一屏 | |
Ctr-b |
向上翻一屏 | |
gg |
光标移动文件开头 | |
G |
光标移动到文件末尾 | |
删除命令: | ||
x |
删除光标后一个字符 相当于 Del | |
X |
删除光标前一个字符 相当于 Backspace | |
dd |
删除光标所在行 n dd 删除指定的行数 如: 10 dd 删除10行 D: 删除光标后本行所有内容 包含光标所在字符 | |
: 1 10 d |
删除指定行 如: :1,2 d | |
d0 |
删除光标前本行所有内容 不包含光标所在字符 | |
dw |
删除光标开始位置的字 包含光标所在字符 | |
撤销命令: | ||
u |
一步一步撤销 | |
Ctrl-r |
反撤销 | |
重复命令 | ||
. |
重复上一次操作的命令 | |
文本行移动 | ||
>> |
文本行右移 | |
<< |
文本行左移 | |
复制粘贴: | ||
yy |
复制当前行 n yy 复制 n 行 | |
p |
在光标所在位置向下新开辟一行 粘贴 | |
可视模式 | ||
v |
按字符移动 选中文本 | |
V |
按行移动 选中文本可视模式可以配合 d y >> <<实现对文本块的删除 复制 左右移动 | |
替换操作: | ||
r |
替换当前字符 替换一个字符 | |
R |
替换当前行光标后的字符,直到按esc 可以替换多个字行 | |
查找命令: | ||
/ |
str查找 如: /ab | |
n |
下一个 | |
N |
上一个 | |
替换 | ||
:s/old/new |
替换当前行的第一个 | |
:s/old/new/g |
替换当前行的所有 | |
:%s/old/new/g |
替换整个文件 |
常用:
保存: :wq :q! # wq: 保存退出, # q!:不保存退出
查找: / n N #/查找,#n查找上一个,#N查找下一个
删除: dd d^ d$ #dd删除一行,#d^删除到行首,#d$删除到行尾
恢复: u U #u 恢复一步,#U恢复全部修改
替换: :s/old/new #替换当前行的第一个
:s/old/new/g #替换当前行的所有
:%s/old/new/g #替换整个文件