Linux命令总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令总结相关的知识,希望对你有一定的参考价值。

命令总结:
mkdir -p (递归创建目录)创建目录的命令 make directorys。
ls -l(long)d(directory)a(all)显示目录或者文件 全称list。
vi/vim 类win记事本/emeditor编辑器,命令模式(:wq :q :q! :wq!)<==>插入模式(esc切换命令模式)
:set nu显示行号,dd删除当前行,yy拷贝当前行,p粘帖。行号gg定位改行,G切换到文件尾部。gg到文件头部。
cat -n显示行号 查看文件内容(concatenate)
tac 反转内容输出
cp -apr 拷贝文件或者目录
mv 移动目录或者改名字(rename),move (rename)files
rm -f强制删除文件 -r递归删除 删除文件或者目录 -fr删除指定的目录和文件
rmdir 删除空目录
head 头部 显示文件头部-n 行数 默认头部10行
tail -f 尾巴 显示文件尾部-n 行数 默认尾部10行
grep (过滤)核心命令之一(三剑客的老三) 排除-v"paichu" 直接过滤
"xiangyaode" -E (同时过滤多个字符串) i(忽略大小写)
egrep 相当于grep -E
sed 取各种内容(三剑客的老二) -n取消默认输出 p=print d=delete
alias 显示设置别名
which 查看命令所在路径whereis,locate,find
find 查找命令 -type (f d)-name "ddd" 按名字查找 -mtime 按照修改时间查找。
-maxdepth levels 查找目录的深度。
tree -L显示层数,-d列目录 查看目录结构
xargs 用于把find/ls 的输出交给后面处理。
seq -s指定分隔符,打印数字序列echo {1..5}
man 查看命令及配置文件等的帮助。
touch 创建文件或者修改文件时间戳
pwd 显示当前的路径
history -c(清空所有) -d 行号 查看历史记录
diff 比较文件内容差别(compare files line by line)
vimdiff edit two,three or four versions of a file with Vim and show differences
useradd 添加用户
passwd --stdin 修改用户密码,如果不指定用户,则修改当前用户密码,普通用户只能修改自己的密码。
whoami 查看当前命令行终端用户
su 切换用户角色,注意要带上 —。
sudo 让普通用户可以拥有指定用户root的权限的命令。
yum is an interactive,rpm based,package manager.包管理工具,解决rpm包的依赖。
rpm -ivh 软件安装命令rpm -ivh 包名.rpm。
chkconfig 查看设置开机自动启动软件的命令
netstat 查看网络状态lntup或者an
[--tcp|-t] [--udp|-u] [--listening|-i] [--numeric|-n] [--program|-p]
lsof -i :port 查看端口
chattr change file attributes
lsattr list file attributes
last last,lastb - show listing of last logged in users
ln 在文件中创建链接
more 查看文件但是不能向上回滚
less 查看文件,可以向上回滚
tar gzip打包组合zcvf,解包组合zxfv
bzip打包组合jcvf,解包组合jxvf
cut 按列切割 -d指定分隔符,-f数字选列,-c按字符

符合:
;多个命令的分割符
/根或者路径的分隔符

或者1> 标准输出重定向(数据流朝者箭头的方向流动),覆盖原来的文件
>或1>> 追加重定向(数据流朝着箭头的方向流动),再原来的文件的【结尾】,【追加】内容。
<或<0 标准输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
<<或<<0 输入重定向:后跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
.. 上一级目录
. 当前目录
~ 用户的家目录
| 管道 通过管道把前一个命令的输出交给后一个命令继续处理
{} 配合echo打印序列echo {1..6}
PATH 环境变量大写,所有包含在环境变量里面的路径,都可以直接敲出来执行。
全局生效/etc/profile。普通用户生效~/.bash_profile或者~/.bashrc

正则表达式:
^的意思是以...开头,例如^oldboy表示以oldboy开头的。
$的意思是以...结尾,例如oldboy$表示以oldboy字符串结尾。
^$意思是空行。
[^oldboy] ^意思是非,不是oldboy内容
\ 让一个字符脱掉马甲,还原它本来的意义。

做运维的原则:
简单,易用,高效

修改前做备份:
1、有问题回滚。
2、事后比对改过的内容

ls 用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法
ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
实例
列出根目录(/)下的所有目录:
列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面 :
ls -ltr s

将 /bin 目录以下所有目录及文件详细资料列出 :
ls -lR /bin
列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
ls -AF

cd 用于切换当前工作目录至 dirName(目录参数)。
其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
语法
cd [dirName]
dirName:要切换的目标目录。
实例
跳到 /usr/bin/ :
cd /usr/bin
跳到自己的 home 目录 :
cd ~
跳到上次的目录 :
cd -
跳到目前目录的上上两层 :
cd ../..

pwd
mkdir
touch
cat
注:

  1. OUTFILE 指输出的镜像文件名。
  2. IMG_FILE 指镜像文件。
  3. 若从镜像文件写回 device 时,device 容量需与相当。
  4. 通常用制作开机磁片。
    cp
    注意:用户使用该指令复制目录时,必须使用参数"-r"或者"-R"。

mv

rm

find

wc
用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。语法
wc [-clw][--help][--version][文件...]
参数:
-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示列数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。实例
在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。使用的命令为:
wc testfile
先查看testfile文件的内容,可以看到:
$ cat testfile
Linux networks are becoming more and more common, but scurity is often an overlooked
issue. Unfortunately, in today’s environment all networks are potential hacker targets,
fro0m tp-secret military research networks to small home LANs.
Linux Network Securty focuses on securing Linux in a networked environment, where the
security of the entire network needs to be considered rather than just isolated machines.
It uses a mix of theory and practicl techniques to teach administrators how to install and
use security applications, as well as how the applcations work and why they are necesary. 使用 wc统计,结果如下:
$ wc testfile # testfile文件的统计信息
3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598
其中,3 个数字分别表示testfile文件的行数、单词数,以及该文件的字节数。
如果想同时统计多个文件的信息,例如同时统计testfile、testfile_1、testfile_2,可使用如下命令:
wc testfile testfile_1 testfile_2 #统计三个文件的信息
输出结果如下:
$ wc testfile testfile_1 testfile_2 #统计三个文件的信息
3 92 598 testfile #第一个文件行数为3、单词数92、字节数598
9 18 78 testfile_1 #第二个文件的行数为9、单词数18、字节数78
3 6 32 testfile_2 #第三个文件的行数为3、单词数6、字节数32
15 116 708 总用量 #三个文件总共的行数为15、单词数116、字节数708

grep
grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
参数:
-a或--text 不要忽略二进制的数据。
-A<显示列数>或--after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或--count 计算符合范本样式的列数。
-C<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或--extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或--fixed-regexp 将范本样式视为固定字符串的列表。
-G或--basic-regexp 将范本样式视为普通的表示法来使用。
-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
-i或--ignore-case 忽略字符大小写的差别。
-l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或--quiet或--silent 不显示任何信息。
-r或--recursive 此参数的效果和指定"-d recurse"参数相同。
-s或--no-messages 不显示错误信息。
-v或--revert-match 反转查找。
-V或--version 显示版本信息。
-w或--word-regexp 只显示全字符合的列。
-x或--line-regexp 只显示全列符合的列。
-y 此参数的效果和指定"-i"参数相同。
--help 在线帮助。

实例
1、在当前目录中,查找后缀有"test"字样的文件中包含"test"字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test file
结果如下所示:
$ grep test test
#查找后缀有“test”的文件包含“test”字符串的文件
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
输出结果如下:
$ grep -r update /etc/acpi #以递归的方式查找“etc/acpi” #下包含“update”的文件 /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)
Rather than
/etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of
IO.) Rather than
/etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test
结果如下所示:
$ grep-v test
#查找文件名中包含test 的文件中不包含test 的行
testfile1:helLinux!
testfile1:Linis a free Unix-type operating system.
testfile1:Lin
testfile_1:HELLO LINUX!
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.
testfile_1:THIS IS A LINUX TESTFILE!
testfile_2:HELLO LINUX!
testfile_2:Linux is a free unix-type opterating system.
echo
Shell 的 echo 指令与 php 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。1.显示普通字符串:
echo "It is a test"
这里的双引号完全可以省略,以下命令与上面实例效果一致:
echo It is a test2.显示转义字符
echo "\"It is a test\""
结果将是:
"It is a test"
同样,双引号也可以省略3.显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
#!/bin/sh
read name
echo "$name It is a test"
以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:
[[email protected] ~]# sh test.sh
OK #标准输入
OK It is a test #输出4.显示换行
echo -e "OK! \n" # -e 开启转义
echo "It it a test"
输出结果:
OK!

It it a test5.显示不换行
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
输出结果:
OK! It is a test6.显示结果定向至文件
echo "It is a test" > myfile7.原样输出字符串,不进行转义或取变量(用单引号)
echo ‘$name\"‘
输出结果:
$name\"8.显示命令执行结果
echo date
注意: 这里使用的是反引号 `, 而不是单引号 ‘。
结果将显示当前日期

tree
Linux tree命令用于以树状图列出目录的内容。
执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。语法
tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
参数说明:
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I<范本样式> 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。实例
以树状图列出当前目录结构。可直接使用如下命令:
tree
该命令有如下输出结果:

tree #以树状图列出当前目录结构 . #当前目录结构 |-- README

|-- examples.desktop
|-- file
|-- file.new
|-- index.htm
|-- test
| |-- README
| |-- file
| |-- testfile
| |-- testfile1
| |-- xaa
| |-- xab
| |-- xac
| |-- xad
| |-- xae
| |-- xaf
| |-- xag
| |-- xah
| -- xai <br/>|-- test.tar.gz <br/>|-- test.zip <br/>|-- testfile <br/>|-- testfile.new <br/>|-- testfile.patch <br/>|-- testfile1 <br/>|-- testfile2 <br/>|-- testfile3 <br/>|-- xaa <br/>|-- xab <br/>|-- xac <br/>|-- xad <br/>|-- xae <br/>|-- xaf <br/>|-- xag <br/>|-- xah <br/>|-- xai <br/>|-- \345\205\254\345\205\261\347\232\204 <br/>|-- \345\233\276\347\211\207 <br/>| |-- 075b5c2bb1628c1a5343c10a.jpg <br/>| |-- 0c978fe989ac787e799757095719d3c4.jpg <br/>| |-- 20050726194826866443.jpg <br/>| |-- 20061113171548785122.jpg <br/>| |-- 2007102221576687.jpg <br/>| |-- 39.jpg <br/>| |-- 434887ec4340916a78f0559a.jpg <br/>| |-- 498da016ac02fb2bc93d6d08.jpg <br/>| |-- 7b284f5a0f854da2f3bf90b204149a34.jpg <br/>| |-- 9196c030d342a68d5edf0e98.jpg <br/>| |-- a56c5a90de15c8a9a977a4cc.jpg <br/>| |-- c74f62167c9d2b244a90a79e.jpg <br/>|-- img13.jpg
|-- \346\226\207\346\241\243
|-- \346\241\214\351\235\242
|-- \346\250\241\346\235\277
|-- \350\247\206\351\242\221
`-- \351\237\263\344\271\220
8 directories, 48 files #统计信息,该目录共8个子目录,48个文件
ln
Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。语法
ln [参数][源文件或目录][目标文件或目录]
其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
命令功能 :
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建命令参数
必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息实例
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
输出:
[[email protected] test]# ll
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[[email protected] test]# ln -s log2013.log link2013
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
输出:
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[[email protected] test]# ln log2013.log ln2013
[[email protected] test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
more
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。语法

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
参数:
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, ‘q‘ to quit.] ,如果使用者按错键,则会显示 [Press ‘h‘ for instructions.] 而不是 ‘哔‘ 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数实例
逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。

more -s testfile
从第 20 行开始显示 testfile 之文档内容。

more +20 testfile常用操作命令
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
less
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。语法
less [参数] 文件
参数说明:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页实例
1、查看文件
less log2013.log
2、ps查看进程信息并通过less分页显示
ps -ef |less
3、查看命令历史使用记录并通过less分页显示
[[email protected] test]# history | less
22 scp -r tomcat6.0.32 [email protected]:/opt/soft
23 cd ..24 scp -r web [email protected]:/opt/25 cd soft
26 ls
……省略……
4、浏览多个文件
less log2013.log log2014.log
说明:
输入 :n后,切换到 log2014.log
输入 :p 后,切换到log2013.log附加备注
1.全屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
2.单行导航
j - 向前移动一行
k - 向后移动一行
3.其它导航
G - 移动到最后一行
g - 移动到第一行
q / ZZ - 退出 less 命令
4.其它有用的命令
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
5.标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
ma - 使用 a 标记文本的当前位置
‘a - 导航到标记 a 处

系统管理命令
stat 显示指定文件的详细信息,比ls更详细
Linux stat命令用于显示inode内容。
stat以文字的格式来显示inode的内容。语法

stat [文件或目录]实例
查看 testfile 文件的inode内容内容,可以用以下命令:

stat testfile

执行以上命令输出结果:

stat testfile #输入命令

File: `testfile‘
Size: 102 Blocks: 8 IO Block: 4096 regular file
Device: 807h/2055d Inode: 1265161 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-13 14:07:20.000000000 +0800
Modify: 2014-08-13 14:07:07.000000000 +0800
Change: 2014-08-13 14:07:07.000000000 +0800

who 显示在线登陆用户
Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
使用权限:所有使用者都可使用。语法
who - [husfV] [user]
参数说明:
-h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
-f : 不要显示使用者的上线位置
-V : 显示程序版本实例
显示当前登录系统的用户

who //显示当前登录系统的用户

root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
显示标题栏

who -H

NAME LINE TIME COMMENT
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
显示用户登录来源

who -l -H

NAME LINE TIME IDLE PID COMMENT
LOGIN tty4 2014-05-13 12:11 852 id=4
LOGIN tty5 2014-05-13 12:11 855 id=5
LOGIN tty2 2014-05-13 12:11 862 id=2
LOGIN tty3 2014-05-13 12:11 864 id=3
LOGIN tty6 2014-05-13 12:11 867 id=6
LOGIN tty1 2014-05-13 12:11 1021 id=1
显示终端属性

who -T -H

NAME LINE TIME COMMENT
root + tty7 2014-05-13 12:12 (:0)
root + pts/0 2014-05-14 17:09 (:0.0)
root - pts/1 2014-05-14 18:51 (192.168.1.17)
root - pts/2 2014-05-14 19:48 (192.168.1.17)
只显示当前用户

who -m -H

NAME LINE TIME COMMENT
root pts/1 2014-05-14 18:51 (192.168.1.17)
精简模式显示

who -q

root root root root

users=4

whoami 显示当前操作用户
Linux whoami命令用于显示自身用户名称。
显示自身的用户名称,本指令相当于执行"id -un"指令。语法

whoami [--help][--version]
参数说明:
--help  在线帮助。
--version  显示版本信息。实例
显示用户名

whoami

root
hostname 显示主机名
定义和用法
hostname 属性是一个可读可写的字符串,可设置或返回当前 URL 的主机名。语法
location.hostname

实例
实例
返回当前URL的主机名:
<script>

document.write(location.hostname);

</script>
以上实例输出结果:
www.runoob.com

uname 显示系统信息
Linux uname命令用于显示系统信息。
uname可显示电脑以及操作系统的相关信息。语法

uname [-amnrsv][--help][--version]
参数说明:
-a或--all  显示全部的信息。
-m或--machine  显示电脑类型。
-n或-nodename  显示在网络上的主机名称。
-r或--release  显示操作系统的发行编号。
-s或--sysname  显示操作系统名称。
-v  显示操作系统的版本。
--help  显示帮助。
--version  显示版本信息。实例
显示系统信息

uname -a

Linux snail-hnlinux 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
显示计算机类型

uname -m

i686
显示计算机名

uname -n

snail-hnlinux
显示操作系统发行编号

uname -r

2.6.32-21-generic
显示操作系统名称

uname -s

Linux
显示系统时间

uname -v

#32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2014
top
Linux top命令用于实时显示 process 的动态。
使用权限:所有使用者。语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内实例
显示进程信息

top

显示完整命令

top -c

以批处理模式显示程序信息

top -b

以累积模式显示程序信息

top -S

设置信息更新次数
top -n 2

//表示更新两次后终止更新显示
设置信息更新时间

top -d 3

//表示更新周期为3秒
显示指定的进程信息

top -p 139

//显示进程号为139的进程信息,CPU、内存占用率等
显示更新十次后退出
top -n 10
使用者将不能利用交谈式指令来对行程下命令
top -s
将更新显示二次的结果输入到名称为 top.log 的档案里Linux ps命令用于显示当前进程 (process) 的状态。语法

ps [options] [--help]
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令实例

ps -A 显示进程信息

PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 cpuset
8 ? 00:00:00 khelper
9 ? 00:00:00 netns
10 ? 00:00:00 async/mgr
11 ? 00:00:00 pm
12 ? 00:00:00 sync_supers
13 ? 00:00:00 bdi-default
14 ? 00:00:00 kintegrityd/0
15 ? 00:00:02 kblockd/0
16 ? 00:00:00 kacpid
17 ? 00:00:00 kacpi_notify
18 ? 00:00:00 kacpi_hotplug
19 ? 00:00:27 ata/0
……省略部分结果
30749 pts/0 00:00:15 gedit
30886 ? 00:01:10 qtcreator.bin
30894 ? 00:00:00 qtcreator.bin
31160 ? 00:00:00 dhclient
31211 ? 00:00:00 aptd
31302 ? 00:00:00 sshd
31374 pts/2 00:00:00 bash
31396 pts/2 00:00:00 ps
显示指定用户信息

ps -u root //显示root进程用户信息

PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 cpuset
8 ? 00:00:00 khelper
9 ? 00:00:00 netns
10 ? 00:00:00 async/mgr
11 ? 00:00:00 pm
12 ? 00:00:00 sync_supers
13 ? 00:00:00 bdi-default
14 ? 00:00:00 kintegrityd/0
15 ? 00:00:02 kblockd/0
16 ? 00:00:00 kacpid
……省略部分结果
30487 ? 00:00:06 gnome-terminal
30488 ? 00:00:00 gnome-pty-helpe
30489 pts/0 00:00:00 bash
30670 ? 00:00:00 debconf-communi
30749 pts/0 00:00:15 gedit
30886 ? 00:01:10 qtcreator.bin
30894 ? 00:00:00 qtcreator.bin
31160 ? 00:00:00 dhclient
31211 ? 00:00:00 aptd
31302 ? 00:00:00 sshd
31374 pts/2 00:00:00 bash
31397 pts/2 00:00:00 ps
显示所有进程信息,连同命令行

ps -ef //显示所有命令,连带命令行

UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:22 ? 00:00:02 /sbin/init
root 2 0 0 10:22 ? 00:00:00 [kthreadd]
root 3 2 0 10:22 ? 00:00:00 [migration/0]
root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 10:22 ? 00:00:00 [watchdog/0]
root 6 2 0 10:22 ? /usr/lib/NetworkManager
……省略部分结果
root 31302 2095 0 17:42 ? 00:00:00 sshd: [email protected]/2
root 31374 31302 0 17:42 pts/2 00:00:00 -bash
root 31400 1 0 17:46 ? 00:00:00 /usr/bin/python /usr/sbin/aptd
root 31407 31374 0 17:48 pts/2 00:00:00 ps -ef
top -n 2 -b < top.log
ps 显示瞬间进程状态 ps -aux
Linux ps命令用于显示当前进程 (process) 的状态。语法

ps [options] [--help]
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令实例

ps -A 显示进程信息

PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 cpuset
8 ? 00:00:00 khelper
9 ? 00:00:00 netns
10 ? 00:00:00 async/mgr
11 ? 00:00:00 pm
12 ? 00:00:00 sync_supers
13 ? 00:00:00 bdi-default
14 ? 00:00:00 kintegrityd/0
15 ? 00:00:02 kblockd/0
16 ? 00:00:00 kacpid
17 ? 00:00:00 kacpi_notify
18 ? 00:00:00 kacpi_hotplug
19 ? 00:00:27 ata/0
……省略部分结果
30749 pts/0 00:00:15 gedit
30886 ? 00:01:10 qtcreator.bin
30894 ? 00:00:00 qtcreator.bin
31160 ? 00:00:00 dhclient
31211 ? 00:00:00 aptd
31302 ? 00:00:00 sshd
31374 pts/2 00:00:00 bash
31396 pts/2 00:00:00 ps
显示指定用户信息

ps -u root //显示root进程用户信息

PID TTY TIME CMD
1 ? 00:00:02 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 watchdog/0
6 ? 00:00:00 events/0
7 ? 00:00:00 cpuset
8 ? 00:00:00 khelper
9 ? 00:00:00 netns
10 ? 00:00:00 async/mgr
11 ? 00:00:00 pm
12 ? 00:00:00 sync_supers
13 ? 00:00:00 bdi-default
14 ? 00:00:00 kintegrityd/0
15 ? 00:00:02 kblockd/0
16 ? 00:00:00 kacpid
……省略部分结果
30487 ? 00:00:06 gnome-terminal
30488 ? 00:00:00 gnome-pty-helpe
30489 pts/0 00:00:00 bash
30670 ? 00:00:00 debconf-communi
30749 pts/0 00:00:15 gedit
30886 ? 00:01:10 qtcreator.bin
30894 ? 00:00:00 qtcreator.bin
31160 ? 00:00:00 dhclient
31211 ? 00:00:00 aptd
31302 ? 00:00:00 sshd
31374 pts/2 00:00:00 bash
31397 pts/2 00:00:00 ps
显示所有进程信息,连同命令行

ps -ef //显示所有命令,连带命令行

UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:22 ? 00:00:02 /sbin/init
root 2 0 0 10:22 ? 00:00:00 [kthreadd]
root 3 2 0 10:22 ? 00:00:00 [migration/0]
root 4 2 0 10:22 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 10:22 ? 00:00:00 [watchdog/0]
root 6 2 0 10:22 ? /usr/lib/NetworkManager
……省略部分结果
root 31302 2095 0 17:42 ? 00:00:00 sshd: [email protected]/2
root 31374 31302 0 17:42 pts/2 00:00:00 -bash
root 31400 1 0 17:46 ? 00:00:00 /usr/bin/python /usr/sbin/aptd
root 31407 31374 0 17:48 pts/2 00:00:00 ps -ef
du
Linux du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。语法

du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
参数说明:
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或--dereference-args 显示指定符号连接的源文件大小。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或--kilobytes 以1024 bytes为单位。
-l或--count-links 重复计算硬件连接的文件。
-L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或--megabytes 以1MB为单位。
-s或--summarize 仅显示总计。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
--help 显示帮助。
--version 显示版本信息。实例
显示目录或者文件所占空间:

du

608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小
显示指定文件所占空间

du log2012.log

300 log2012.log
方便阅读的格式显示test目录所占空间情况:

du -h test

608K test/test6
308K test/test4
4.0K test/scf/lib
4.0K test/scf/service/deploy/product
4.0K test/scf/service/deploy/info
12K test/scf/service/deploy
16K test/scf/service
4.0K test/scf/doc
4.0K test/scf/bin
32K test/scf
8.0K test/test3
1.3M test
df 查看磁盘大小 df -h 带有单位显示磁盘信息
Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。语法

df [选项]... [FILE]...
文件-a, --all 包含所有的具有 0 Blocks 的文件系统
文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
文件-i, --inodes 列出 inode 资讯,不列出已使用 block
文件-k, --kilobytes 就像是 --block-size=1024
文件-l, --local 限制列出的文件结构
文件-m, --megabytes 就像 --block-size=1048576
文件--no-sync 取得资讯前不 sync (预设值)
文件-P, --portability 使用 POSIX 输出格式
文件--sync 在取得资讯前 sync
文件-t, --type=TYPE 限制列出文件系统的 TYPE
文件-T, --print-type 显示文件系统的形式
文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
文件-v (忽略)
文件--help 显示这个帮手并且离开
文件--version 输出版本资讯并且离开实例
显示文件系统的磁盘使用情况统计:

df

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320704 23814388 16% /
udev 1536756 4 1536752 1% /dev
tmpfs 617620 888 616732 1% /run
none 5120 0 5120 0% /run/lock
none 1544044 156 1543888 1% /run/shm
第一列指定文件系统的名称,第二列指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。用和可用列正在使用中,分别指定的内存量。
使用列指定使用的内存的百分比,而最后一栏"安装在"指定的文件系统的挂载点。
df也可以显示磁盘使用的文件系统信息:

df test

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320600 23814492 16% /
用一个-i选项的df命令的输出显示inode信息而非块使用量。

df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda6 1884160 261964 1622196 14% /
udev 212748 560 212188 1% /dev
tmpfs 216392 477 215915 1% /run
none 216392 3 216389 1% /run/lock
none 216392 8 216384 1% /run/shm
显示所有的信息:

df --total

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320720 23814372 16% /
udev 1536756 4 1536752 1% /dev
tmpfs 617620 892 616728 1% /run
none 5120 0 5120 0% /run/lock
none 1544044 156 1543888 1% /run/shm
total 33344320 4321772 27516860 14%
我们看到输出的末尾,包含一个额外的行,显示总的每一列。
-h选项,通过它可以产生可读的格式df命令的输出:

df -h

Filesystem Size Used Avail Use% Mounted on
/dev/sda6 29G 4.2G 23G 16% /
udev 1.5G 4.0K 1.5G 1% /dev
tmpfs 604M 892K 603M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 156K 1.5G 1% /run/shm
我们可以看到输出显示的数字形式的‘G‘(千兆字节),"M"(兆字节)和"K"(千字节)。
这使输出容易阅读和理解,从而使显示可读的。请注意,第二列的名称也发生了变化,为了使显示可读的"大小"。
ifconfig

ping 测试网络连通

netstat 显示网络状态信息

man 命令不会用了,找男人 如:man ls

clear 清屏
alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
打包压缩相关命令
gzip:
bzip2:
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
查询“三剑客”
sed
sed小括号()分组功能
深入浅出linux三剑客之sed必杀技一例
老男孩linux培训第三节课程课前第考试一题,问题如下
1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字。
解答:
这个问题的解答方法我们已经介绍了不下10种了,这里给大家在深入浅出的讲一下最难理解sed特殊用法加正则的实现。
由于难度比较大,为了让同学们能了解的更清楚明白,我们需要先搭几个台阶。
台阶1:sed相关命令集选项参数
表1-1 sed命令
表1-2 sed选项
详细的参数,命令信息可以参考《老男孩linux实战培训教案-强大的流编辑器sed详解指南》
台阶2:sed替换基本命令
sed -n ‘s#▇#▲#g‘ oldboy.log
[[email protected] ~]# cat oldboy.log

执行下面命令把▇替换为▲,注意:原文件没变。
[[email protected] ~]# sed ‘s#▇#▲#g‘ oldboy.log br/>▲
提示:其中分隔符#,可以使用/,%,@等替代,详细使用可参考老男孩的相关文档。
台阶3:正则表达式基本用法(三剑客grep,sed,awk都支持正则表达式)

台阶4:sed中( )和\1的功能
1)sed的( )的功能可以记住正则表达式的一部分,其中,\1为第一个记住的模式即第一个小括号中的匹配内容,\2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。
例1:echo I am oldboy teacher.
如果你想保留一行的单词,删除剩下的部分,使用圆括号标记想保留的部分:
本例我们要保留oldboy把其他内容删除。

[[email protected] ~]# echo I am oldboy teacher. >test.txt
[[email protected] ~]# cat test.txt
I am oldboy teacher.
[[email protected] ~]# sed ‘s#^.am ([a-z].) tea.$#\1#g‘ test.txt
oldboy
命令说明:#命令说明中的□代替空格
a)^.
am□ -->这句的意思是以任意字符开头到am□为止,匹配文件中的“I am□”字符串,
b)([a-z].)□-->这句的外壳就是括号(\),里面的[a-z]表示匹配26个字母的任何一个,[a-z]. 合起来就是匹配任意多个字符,本题来说就是匹配oldboy字符串,由于oldboy字符串是需要保留的,因此用括号括起来匹配,后面通过\1来取oldboy字符串。
c)□tea.$ -->表示以空格tea起始任意字符结尾,实际就是匹配oldboy字符串后,紧接着的字符串“□teacher.”.
d)后面被替换的内容中的\1就是取前面的括号里的内容了,也就是我们要的oldboy字符串。
其实啊,你上了本台阶,本文的主题答案你就该会了。
台阶5:取字符串的技巧 ==>这个台阶的思路技巧是最重要的,也是老男孩linux培训课程深入浅出的一个小案例。
[[email protected] ~]# stat /ett|sed -n ‘4p‘
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
1)处理需要的目标(获取的字符串如本文开篇的644)前的字符串一般用以..开头(^.
)来匹配开头,匹配的目标前的结尾写上实际的字符,如:“^.(0”表达式匹配“Access: (0”,说到这先给个例子:
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed ‘s#^.
(0##g‘
644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
大家看到了吧,644前面的部分已经被删除了。
2)而处理目标后的内容一般在紧接着目标后匹配的开头写上实际的字符,而结尾是用以...结尾(.$)来匹配,如“/-r.$”表达式匹配“/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)”在来个例子:
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed ‘s#/-r.$##g‘
Access: (0644
哈哈,这次644后面的又被删除了。
有一点要注意,就是实际字符的选取最好要唯一,因为正则表达式是贪婪的,它总是尽可能的匹配更远的符合匹配的内容。另外不要落了字符串中的空格。
合起来就是答案了。
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed ‘s#^.
(0##g‘|sed ‘s#/-r.$##g‘
644
先删除目标前面的,在删除目标后的,这是应用了两次sed,每次只匹配了一半,第一次匹配目标前,第二次匹配目标后,那么能不能直接匹配整行字符串呢?
所有的台阶都上来后,接下来就引出本文的主题。
关键人物出场:
有了前面的台阶,现在这道题就简单多了,好先抛出答案,然后在分析说明。
[[email protected] ~]# stat /ett|sed -n ‘s#^.
(0([0-7].)\/-.$#\1#gp‘
644
命令说明:
a)“^.(0”匹配目标前的内容,这个不用再解释了吧,这里匹配的是“Access: (0
b)“\/-.
$” 匹配目标后的内容,这个也不用再解释了吧,这里匹配的是“/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)”
c)这中间的644就是我们要打印的结果,所以要用括号括起来呦,于是()就不用再解释了,[0-7].就是匹配644,匹配到斜线/前为止,虽然不是精确匹配但是这里够用了。因此,“([0-7].)”匹配的就是“644”了,前面的台阶已经讲过了,匹配模式中()的内容,可以用\1来取出(如果是第二个扩号就是\2,类推),所以啊,644的结果就出来拉。
后记小结:
当然了,匹配方法不只这一种,还可以写出很多种,但是老男孩老师给出的是偶自己总结的一个易于初学者记忆的思路,如果大家有更好的记忆的方法,可以告诉我啊。
同学们可以拿取网卡的IP地址练手,检验下,看看你们的刀磨快了么?哈哈!
附带其他解决答案汇总:
[[email protected] ~]# touch /ett
1)
[[email protected] ~]# stat /ett|sed -n ‘4p‘|awk -F ‘[(/]‘ ‘{print $2}‘
0644
2)
[[email protected] ~]# stat /ett|sed -n ‘4p‘|cut -d "/" -f1|cut -d "(" -f2
0644
3)
[[email protected] ~]# stat /ett|head -4|tail -1|cut -d "/" -f1|cut -d "(" -f2
0644
4)
[[email protected] ~]# stat /ett|head -4|tail -1|awk -F "/" ‘{print $1}‘|awk -F "(" ‘{print $2}‘
0644
5)
[[email protected] ~]# stat -c %a /ett
644
6)
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed ‘s#^.(0##g‘|sed ‘s#/-.$##g‘
644
7)
[[email protected] ~]# stat /ett|sed -n ‘s#^.(0([0-7].)\/-.$#\1#gp‘
644
8)
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed -ne ‘s/^.
(0([^ ])\/-.$/\1/gp‘
644
9)
[[email protected] ~]# stat /ett|sed -n ‘/Access: (/p‘|sed -r ‘s/^.(0(.)\/-.$/\1/‘
644
[[email protected] ~]# stat /ett|sed -n ‘4p‘|sed -e ‘s/^Access: (([0-9]
)\/-rw-r.$/\1/g‘
0644
10)
[[email protected] ~]# stat /ett|grep "Access: (0"|cut -c 10-13
0644
[[email protected] ~]# stat /etc/hosts|sed -nr ‘4s#^.
(0(.)/-.$#\1#gp‘
644

date


以上是关于Linux命令总结的主要内容,如果未能解决你的问题,请参考以下文章

markdown [Docker] Docker片段列表和命令#linux #docker #snippets

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

python常用代码片段总结

BootStrap有用代码片段(持续总结)

linux下svn的常用操作命令总结

linux命令总结