Linux基本命令回顾与总结

which

显示一个可执行文件的完整路径

按照alias -> $PATH的顺序查找

whereis

搜索一个可执行工具以及相关配置、帮助

相对于which更全,更详细,更完整

slocate   [关键字段]

所有文件名及其所在路径包含关键字段的文件与目录都会显示

slocate先将当前目录结构做成一个数据库,然后再在此数据库中搜索匹配记录。

find  [路径]  [参数]   [表达式]

从指定路径下递归向下搜索文件

支持

[参数] type(f,c,l,d), user, group, name,nouser, nogroup,perm(根据权限)

-exec 指令 {} /;

-{}find找到的文件

-/禁止转意

-;表示本行指令结束

举例:

find . -perm 6000 -exec chown lybing.lybing {} /; 表示把找到的文件,放到chown指令里执行改变文件的拥有者为lybing.lybing

wc (-l(),w(单词),c(字符))统计文件的行数,单词数,字符数

grep(-n(行号), -v(反向选择))在文件中查找包含指定字符串或不包含指定字符串的行

sort (-t,-k,-r) 按序重排文本并送显示

diff A B 用于比较两个文件的不同(与位置有关),报告文本差异内容

compare  A B 报告文本差异位置

uniqu  去除文件中重复的行

cut     显示文件中的某一列 cut –c4-8 cut1(显示第四到第八个字符)   cut –f2 –d.(.分栏显示第二栏)

 

paste    文本按列拼接 paste abc ABC > merge ()

                                              cat   abc ABC > merge(连接两个文件)

 

查看磁盘的情况 df –h(G为单位)

du –h(G为单位)查看文件的占用空间

head 查看文件的前几行内容

tail 显示文件的后几行内容

在系统中默认有12个虚拟控制台,默认情况下可以使用6个虚拟控制台,切换方式:Alt+F(n)(n=1,2,3,4,5,6)

su (-,-完全切换) + 用户名

file 查看文件的类型

ln –s(软连接) 源文件  新建连接名

硬链接:不能跨越文件系统,不能为目录建立硬链接(源文件删除,则链接依然有效,相当于源文件的一个copy

软链接(相当于快捷方式,源文件删除,则链接失效)

硬链接和软链接都会自动保持同步。

ext2/ext3文件格式的文件有Blocks Inode两部分组成

一旦用rm指令删除文件中的inode记录,文件无法被找回

可以用stat指令查看文件组成情况

chgrp  改变文件的所属组

文件名以.开头的文件是隐藏文件,隐藏文件可以用ls –a查看

...文件分别是当前文件和父文件的硬链接

对于目录的写权限:单独使用没有作用,必须同时具有执行权限才可以删除和增加

强制位与冒险位

除了读写执行权限以外,ext2文件系统还支持强制位(setuidsetgid)冒险位(sticky)的特别权限。

强制位与冒险位添加在执行权限的位置上。如果该位置上原已经有执行权限,则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。

set uidset gidugx位置上各采用一个s,sticky使用一个t

set gid 对目录的作用

默认情况下,用户建立的文件属于用户当前所在的组。

在目录上设置了setgid,表示在此目录中,任何人建立的文件,都会属于目录所属的组

冒险位对目录的作用

默认情况下,如果一个目录上有wx权限,则任何人可以在此目录中建立和删除文件

一旦目录上设置了冒险位,则表示在此目录中,只有文件的用户者目录的拥有者系统管理员可以删除文件

强制位对文件的作用:

在可执行文件上,用户可以添加set uid set gid

默认情况下,用户执行一个指令,会以该用户的身份来运行进程。

指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程

强制位与冒险位的设定:

强制位与冒险位的设定也可以通过数字加和,在读写执行的前面。

4(set uid)   2 (set gid)  1(sticky)

chmod 4777 test

注:setuid只能用于文件上,setgid可以在目录上也可以在文件上,冒险为只能在目录上设定。

umask

0022

[root@centos /]# umask -S

u=rwx,g=rx,o=rx

每个用户建立文件时,此文件都会有默认的权限。

默认权限的值是由环境中的umask来确定的

用户可以自主改动umask的指,并在改动后建立的文件上得到体现。

一般用户的默认umak值为002,系统用户的默认umask值为022.

系统用户:目录:755 文件644

一般用户 目录:775 文件 664

这与umask值有关,默认权限减去umask即的建立文件与目录默认权限。

Linux中的应用工具分为三种:

交互工具    过滤器   编辑器

能够接收数据,过滤再输出的工具, 称为过滤器

对过滤器和进程,存在着输入源与输出对象

重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向。

ls -l /dev/std*

lrwxrwxrwx  1 root root 15 Jun 23 23:47 /dev/stderr -> /proc/self/fd/2(标准错误输出)

lrwxrwxrwx  1 root root 15 Jun 23 23:47 /dev/stdin -> /proc/self/fd/0(标准输入)

lrwxrwxrwx  1 root root 15 Jun 23 23:47 /dev/stdout -> /proc/self/fd/1(标准输出)

输入从定向:使用“<”来重定向输入源   大多数工具都会以其后的文件名为输入源    有一些过滤器一定需要添加 < 以明确输入源

从当前文档输入:使用 <<让系统将一次键盘的全部输入,先送入虚拟的“当起文档”,然后一次性输入    需要一对字母、符号或字符串作为起始终结标识符     可以选择任意符号作为起始终结标识符

cat > cat.file <<!

> this is test

> !

[root@centos test]# cat cat.file

this is test

输出重定向:

使用>改变数据输出目标:  ls –l  > listfile,将当前目录下的文件以长模式显示,然后写入listfile文件,文件已有内容会被消除

使>>,可以将输出追加进入文件

错误输出重定向

系统错误与标准输出使用的I/O管道不同,默认情况下,系统报错会显示到终端屏幕上

使用2>将报错讯息重定向入一个文件  find / -type s 2>/dev/null

使用2>>将报错讯息追加入一个文件

双重输出重定向:使用>2>可以将一次操作的正确、错误输入,被单独地送到不同的地方

find / -perm -2 2> error > results

使用&> 将所有输入都送向同一个地方

find / -perm +6000 &> file

管道:

使用 | 将前一个过滤器的输出直接送入后一个过滤器的输入:

ls –l | grep pass

允许多重管道,两个管道的类型应该匹配。

拷贝文件的内容 cat< filea > fileb

cat file.* > file

将数个小文件合并成一个打文件

压缩:

gzip, gunzip(只能压缩文件)  Linux 标准压缩工具,对文本文件可以达到75%的压缩率, gzip (-d,解压) 文件名  gunzip(解压) 文件名, zcat 文件名(查看压缩文件的内容)

compress, uncompress  旧的Unix压缩工具

bzip2, bunzip2(只能压缩文件) 更新的Linux压缩工具,比gzip有着更高的压缩率。bzip2(-d,解压)  文件名  bunzip2(解压) 文件名   bzcat 文件名(查看压缩文件的内容)

tar: 用于在磁带机、软盘、zip设备上做备份。也可以备份在一个硬盘文件上(不提供压缩功能)

主要参数:

c: 将文件备份出来

v: 将过程输出

x: 从一个文件中接备份出来。

备份: tar cvf backup.tar  * .txt

解开: tar xvf backup.tar –C (解压缩路径)back/

tar打包并用gzip压缩: tar –zcvf test.tar.gz test –C /

tar解包用gzip压缩的文件: tar –zxvf test.tar.gz.test –C /

tar打包并用bzip2压缩:tar –jcvf test.tar.bz2 test –C /

tar解包用bizp2压缩的文件: tar –jxvf tar.bz2 test –C /

dump/restore  备份与还原ext2/3文件系统,不可以在其他文件系统上使用,可以选择进行完全备份或增量备份

dump -0(0,表示完全备份)u(将备份记录到/etc/dump/dates) –f指定备份路径  /var/tmp/hda2dump  /dev/hda1(要备份的分区)

restore –r(还原操作)f(文件) /var/tmp/hda2dump(还原到当前路径)

Shell: 命令解释器,是用户与系统沟通时的媒介。

Unix系统中有各种Shell, Linux 采用bash为其默认shell,系统可以使用的shell记录在/etc/shells中。

bash : Bourne Again Shell 的缩写。

环境变量:

定义: a= boobke  显示: echo $a eho ${a}   删除:unset a

常用的预定义环境变量:

HOME: 当前用户的主目录

PATH:当前用户的可执行文件搜索路径

LANG: 程序应该使用的默认语言(locale –a 查看系统支持的语系)

PS1: 行提示符 [/u@/h /W]/$

用户可以用set(显示本地变量和环境变量)或env(环境变量)查询当前的环境变量

将本地变量转换为环境变量的方式 export 变量名

history:bash中输入history指令可以查询用户的过往操作,内存中记录的过往指令数根据环境变量中HISTSIZE而定。history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中。在下次login时载入

.bash_history中的指令数根据环境变量中的HISTFILESIZE而定。

history –w 强制把用过的指令写入.bash_history文件

使用!来调用过往的指令:

!!: 重复执行上一条指令

!a: 重复执行上一条以a为首的指令

!number重复执行上一条在history表中记录号码为number的指令。

!-number:重复执行前第number条指令

!$ 截取上一条命令的参数

别名:alias可以查看shell的别名.

定义: alias la=’ls –al’  取消别名: unalias la

alias记录在shell中总是在最先行

命令行表达式:

“”将一串字符当成一个字符串来对待,如果字符川中包含特殊含义的字符,则转义$,/~!

‘’将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,也不转义

执行引用号——`` 引用命令的执行结果

ls –al ‘PWD’ 

数学运算——$[],在中括号内的表达式会被数学计算。

逸托付——/

用于取消命令行中字符的特殊含义用于表示一行未结束

用于分割多个指令,则同时执行多个指令。表示一行已结束,相当于回车键。

shell激活——()

在小括号内的命令行表示激活一个子shell在子shell中运行

并且子shell中不会传递给当前shell

shell命令行支持在同一行的两条命令中插入&&(逻辑与)||(逻辑或);&& 当前一条指令执行成功时再执行后一条指令

|| 当前一条指令执行失败时再执行后一条指令。

ls /test &&  echo "exist" || echo "no exist" 文件存在,则print exit,否则print “no exist”,

在默认情况下,在shell中设置变量,设置umask和别名,当退出shell时,改变则无效

一个通过登录而得到的shell,一般是用户的初始shell,在登录shell下激活的shell采用登录shell的环境设定

登录shell从配置文件中读取其环境变量

图形界面下的终端,及通过su都是非登录shell.

bash 在用户登录时从四个文件中读取环境设定:

全局设置文件(对所有用户生效):

/etc/profile(设置PATH, MAIL    /etc/bashrc(设置UMASK, PS1,自定义变量) 

用户设置文件(只对特定用户有效):

~/.bashrc (设置别名和一些函数,以及)         ~/.bash_profile (环境变量)

~/.bah_logout: 在用户logout的时候自动执行。

~/.bash_history: 用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。

/etc/profile.d/*.sh:/etc/profile中被执行,其中的环境设定,也会被全局引用。

登录shell  : /etc/profile   /etc/profile.d/*.sh   ~/.bash_profile 

~/.bashrc   /etc/bashrc(有些版本可能不存在这个文件) su - lybing

注:先设置的环境变量值会被后设置的环境变量值所覆盖

非登录shell: ~/.bashrc   /etc/bashrc(有些版本可能不存在这个文件):  /etc/profile.d/*.sh  su lybing

从上看出:当重新登录开启登录shell时,才会执行profile文件(包括家目录中的),而bash文件,则在登录和非登录中都会执行。

ctrl + d: 输入已结束。在shell下相当于一个exit

ctrl+c:  键盘中断请求

ctrl + s & ctrl + q:暂停/恢复屏幕输出

Tab双击可以列出所有可能匹配的选择。

系统监控:

uname(-a完整信息): 显示系统信息  hostname :  显示主机名

last: 列出最近的用户登录  lastlog: 列出每一个用户的最近登录情况  free,vmstat 显示内存的情况(Linux充分利用内存)   top 系统监视器(5秒更新一次)top –d 3(3秒更新一次)top –b(批处理)n(更新次数)top -b -n 2 > test.top top时按下大写P,cpu使用率排序,按下M,以内存的,系统的原始进程是init,initPID总是1,一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程。 top & 以后台执行

ps: 查询进程的指令 _Ae(显示所有的) -a(列出所有与,但不包含中断的)

-l(长模式,当前登录用户的)  –f(完整方式)  -x  -u(有效的)ps 后加不加(-)包含不同的含义 ps aux stat S(睡眠进程) S<(高优先级) SN(低优先级) Z(僵死进程,父进程已死的进程) R(运行进程) VSZ(虚拟内存占用量),(RSS,固定内存占有量)WCHAN 当前进程状态, F4超级用

pstree可以用来以树状方式表现进程关系-a, -aux

gnome-system-monitor  gnome下的图形监视工具

kill: 语法: kill [-signal]  PID, z向进程传递一个讯号(kill –l 查看所有讯息) SIGHUP(1,重启进程) , SIGINT(2,以前台方式终止进程) SIGKILL(9,强制终止进程)  SIGTERM(15,正常方式结束进程),查看每个讯号的作用 man 9 sinal

killall 根据名称

进程的优先级:用nice值来表示,nice:以一个不同的nice值来运行指令, nice –n(-20()19(),默认是0,一般用户只能降低优先级)num command  nice –n -2 top &

renice: 改变一个运行进程的nice renice –6 pid 

同时,在top命令时,也可以按r,然后改变nice

前台和后台

默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程。

对每一个控制台,都允许多个后台进程。

对前台/后台进程的控制与调度,被称为任务控制。

将进程送去后台执行: command &: 将一个进程直接丢入后台运行。

nohup command &: 将一个进程直接丢入后台运行,而且在该控制台退出后,进程仍不挂断。

ctrl +z:将一个正在运行的前台进程暂停,并丢入后台。

作业控制:即控制进程执行与挂起。

jobs: 列出系统当前的后台进程

fg:将后台进程拉回前台 fg jobid(作业号)

bg激活后台暂停的进程

/prof目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息,用户可以通过cat /etc/proc/下的文件,来获得系统的信息。

这些信息包含系统硬件,网络设置,内存使用,及其它一些东西

proc/sys目录下的文件,允许系统管理员更动,这些变动直接影响当前核心内核参数。

每一个进程在该文件夹下都对应一个目录,并且以pid作为文件夹名。

系统日志记录着系统运行中的记录信息,在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。

系统日志可以预警安全问题

系统日志一般都存放在/var/log目录下。

var/log/dmesg 核心启动日志(或直接输入dmesg查看)

var/log/messages 系统报错日志  tail -f /var/log/messages(查看最近写入日志的信息,并动态更新)

/var/log/maillog  邮件系统日志

/var/log/xferlog  FTP服务用日志

/var/log/secure   安全信息  系统登录与网络连接的信息

/var/log/wtmp(二进制文件)  登录记录,last, lastlog 从此获得信息

用户管理

用户可以使用下列指令了解用户

who: 查询当前在线的用户

groups: 查询用户所属的组 groups  查看当前用户  groups lybing 查看指定用户

id:     显示当前用户信息

finger: 查询用户信息

whoami : 查询当前用户

用指令添加命令:

useradd  <username>     passwd <password>

系统添加用户的标准步骤:

编辑/etc/passwd/etc/group

创建用户主目录

/etc/skel拷贝文件与目录

让新用户获得其主目录与文件的拥有权限

给新用户一个密码

usermod -c lybing lybing 更改用户的全名

usermod –d /home/lybing lybing(只是指定家目录为相应目录,并不建立目录,要手动创建,并改变权限拥有者的信息)

usermod –e “2009-01-01”  修改用户的过期时间

usermod –G 添加用户到指定组里面(实际上是更改用户所属的组)

usermod –g 更改用户的gid

usermod –s  更改用户的默认shell

usermod –u  更改用户的uid

usermod –p  更改用户的密码

usrmod –L   锁定用户 pssswd –S 查看用户密码状态

usermod –U  锁定用户解锁

你可能感兴趣的:(linux,shell,centos,command,bash,工具)