No Strarch ! 英文:http://linuxcommand.org/tlcl.php

Linux性能工具图(图片来自这里):

什么是shell

date — 当前时间和日期

cal — 输出当月日历

df — 输出磁盘剩余空间数量

free — 显示空闲内存的数量


shell提示符的最后一个字符如果是#表明该终端会话处于超级用户权限,如果是$表示处于普通用户权限。

X Window System (the underlying engine that makes the GUI go)支持快速复制粘贴,使用鼠标选中的文本将自动复制到由X系统管理的缓冲区中,可以直接按下鼠标中键将内容粘贴至光标处。

重定向

• sort -排序文本行

• uniq -报道或省略重复行

• grep -打印匹配行

• wc -打印文件中换行符,字,和字节个数

• head -输出文件第一部分

• tail - 输出文件最后一部分

• tee - 从标准输入读取数据,并同时写到标准输出和文件

ls /usr/bin | sort | uniq | grep zip | tail -n 5 | wc -l | tee ls.txt | less


默认情况下,标准输出和标准错误连接到屏幕,你可以把他们重定向到文件(将输入保存的文件中)。

利用重定向,可以把多个命令连接起来组成管道(filter)。

1
2
3
ls > ls-output.txt //标准输出重定向符>,如果文件不存在,则建立。
ls >> ls-output.txt //将输入追加到文件末尾。
ls &> .txt //标准输出和错误重定向到文件
  • cat – Concatenate Files

功能是将标准输入输出到标准输出上:

cat:等待用户输入,然后将输入的打印到输出上,ctrl+d结束。

因此,如果这样:cat [file]:意为将输入换成一个或多个文件。所以该命令常常用来查看简短的文本文件(short text files)的内容(display without paging)。

如果这样:cat > xx.txt:意为将输出换成为文本,用户输入输出到xx.txt文本中。cat 可以接受不只一个文件作为参数,所以也可以用来把文件连接在一起:cat movie.mpeg.0* > movie.mpeg

cat有一些选项可以用来更好的可视化文本。

-A:用来显示非打印字符,如tab键,回车键。

-n:打开显示行号。

-s:将多个空行压缩成一行

  • pipeline

符号|指的是左边命令的输出是右侧命令的输入。如果一个命令有多个|,这叫做filters。

例如:ls /bin /usr/bin | sort |less:将文件夹bin和usr/bin中的文件,排列后显示到屏幕上

|>的区别是:前者符号右侧是命令,后者右侧是文件。

  • uniq - Report or Omit Repeated Lines

uniq:去掉重复的部分。uniq -d:只查看重复的内容

  • wc - display the number of lines, words and bytes contained in files

wc -l x.txt:显示文件有多少行

  • grep - print lines matching a pattern

grep pattern [file]:输出包含pattern的行

  • head/tail

tails -n 5 x.txt:显示文件的最后五行,默认是10行。

tails -f x.txt:可以实时监控文件,立即在屏幕上显示在文件尾部新添加的行。

  • tee

ls /usr/bin | sort | uniq | grep zip | tail -n 5 | wc -l | tee ls.txt | less:tee会将它的输入输出到两个地方:1.给文件 2. 给filters中的下一个命令

第十章——进程

● ps – Report a snapshot of current processes

● top – Display tasks

● jobs – List active jobs

● bg – Place a job in the background

● fg – Place a job in the foreground

● kill – Send a signal to a process

● killall – Kill processes by name

● shutdown – Shutdown or reboot the system

ps:显示进程快照

ps x:将守护进程也显示出来

ps aux:显示更多信息

top:see dynamic view of the machine’s activity。上方是system summary,另一部分是a table of process sorted by CPU activity.

程序 &:后台运行程序。返回一个信息,称为job control,如[1] 28236,第一个数叫 jobspec 。

job:查看所有jobp

fg &1:jobspec是1的进程返回至前台。

kill: 发送信号给进程,默认是TERM(terminate),终止进程。

kill [-signal] PID

ctrl-c 发送的信号是INT(interrupt),it will usually terminate a program。

pstree:以树的形式显示进程,可以看到进程之间的父子关系

vmstat:内存,内存交换,I/O的快照。vmstat 5 2:每隔5秒采样两次。

12——vi– “vee eye” 文本编辑器

大多数Linux发行版本不包含真正的vi。通常,vim在Linux是”vi“的符号链接(或别名)。vim是vi的高级替代版本。

vi是一个模式编辑器,几乎每个按 键都是一个命令。如果迷失在vi中,按两次esc回到普通模式。

vim foo.txt:打开文件,如果文件不存在则创建。

:q:退出。如果修改了文件则不能退出。后加感叹号,强制退出:q!

:w:保存

i:插入模式。按下esc返回命令模式。

/character:全文查找。重复键入n会向下继续查找。

::set nu:打开行号

:%s/2/3 :将2替换为3

14——软件包管理

安装软件有两种方式:1.源码编译安装 2. 包安装。

包管理技术主要分两种:Debian的”.deb”,和红帽的“.rpm”。

包工具类型有两个:

  1. low-level tool,用来安装和卸载包
  2. high-level tool,可用来在资源库中搜索包或者解析包的依赖项。

Debian-style的底层工具是dpkg,上层工具是apt, apt-get, aptitude

apt is a condensed version of apt-get and apt-cache. apt is meant to simplify the life of end-users.

1
2
3
4
5
6
7
8
9
apt update; apt search search_string //在资源库中查找软件包
apt update; apt install package_name // 从资源库中安装一个软件包
dpkg -i package_file //通过软件包文件来安装软件 -i:--install

apt remove package_name //卸载软件
apt update; apt upgrade//经过资源库来更新软件包

dpkg -l //列出所安装的软件包 -l:--list
dpkg -s package_name //确定是否安装了一个软件包 -s:--status

16——网络

● ping – Send an ICMP ECHO_REQUEST to network hosts

● traceroute – Print the route packets trace to a network host

● ip – Show / manipulate routing, devices, policy routing and tunnels

● netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

● ftp – Internet file transfer program

● wget – Non-interactive network downloader

● ssh – OpenSSH SSH client (remote login program)


用ip代替ipconfig

**netstat**:是一个基于命令行界面网络实用工具,可显示当前的网络状态,包括传输控制协议层的连线状况、路由表网络接口状态和网络协议的统计信息等。

netstat可用于查找网络中的问题,并可通过计算网络流量来度量网络性能。尽管该工具仍然被包含在许多Linux发行版中,但基本都被看作过时、应被替代的工具。

Linux上,推荐使用ss替代netstat,使用ip route替代netstat -r,使用ip -s link替代netstat -i,使用ip maddr替代netstat -g

ss command is a tool that is used for displaying network socket related information on a Linux system.

ss选项

1
-p, --processes 显示使用套接字(socket)的进程

第十七章——查找文件

locate:通过文件名在数据库中查找。数据库由updatedb更新,频率为一天。

1
2
updatedb   //先更新数据库,locate就可以查找到新建的文件了
locate bin/zip

--regexpoption指使用基本的正则,--regex指可以使用扩展的正则。


find:可以通过各种特性(through options, tests, and actions)在指定的目录下查找文件、目录、符号链接,设备文件。

find ~ \( -type f -name "*.JPG" -size +1M \) -or \( -type d -not -perms 0700 \) -delete:将用户根目录下大小超过1M的以.JPG结尾的文件 与 将安全类型不是0700的目录删掉。(不要执行,这里主要是演示用法)

使用正则表达式:find . -regex '.*'| wc -l

find与grep使用正则上的区别:grep输出包含匹配项的行,find需要严格匹配。


touch: is usually used to set or update the access, change, and modify times of files. However, if a filename argument is that of a nonexistent file, an empty file is created.

18——Arching and Backup 归档和备份

第十九章——正则表达式

元字符(matacharacter):

  • basic regular expressions(BRE) : ^ $ . [ ] *

  • extended regular expressions(ERE) add following : ( ) { } ? + |

重复元字符:? + * { }

?:0或1个匹配。means “Make the preceding element optional”.


()|一起配合使用。a(bc|de)abc|de是两个意思


grep(global regular expression print): 默认支持基本的,添加选项-E支持扩展的正则表达式。

.:匹配任意一个字符

[]:匹配括号中的一个字符。

查找文件内容,less支持ERE,vim支持BRE。例如要匹配”(232) 298-2265”

使用less:^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$。对于ERE,’(‘ 与 ‘)’ 是元字符,使用\转为原义字符(Literals)

使用vim:^([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}$。‘\’ 的使用同上,将literals 转为matacharacter。

第二十三章——编译文件

1
2
3
./configure //直接写configure,shell会去默认的文件夹去找执行文件。所以应该加上./用来指定执行文件的位置是在当前目录。会生成一个  			//makefile文件
make //按照目前文件夹下的makerfile文件来执行程序
sudo make installed //将编译的执行文件注册到系统中,可以在其他目录下直接执行而不需要指定目标位置
  • gcc(GUN C Compiler)用来编译c文件。脚本语言如perl, ruby不需要编译这一步而能直接运行,解释器(interperter)读取源代码的每一行并执行。
  • 压缩文件.tar.gz,又称tarbll,该文件类型能记录该文件的树结构分布。diction项目属于gnu project software,会遵循一些标准。其中一个是解压之后是一个文件夹,命名为 project-x.xx。有些压缩文件会将文件们直接解压到当前文件夹,会造成文件混乱。在解压之前,用tar tzvf tarfile |head来确认该压缩文件记录的树结构,决定是否直接解压还是解压到新建的文件夹中。
  • make命令能保证最终生成的可执行文件相对于它的依赖文件是最新的,当有文件更新时,它能够(手动)重新编译生成新的可执行文件。如果没有变动,make命令不会起作用。

其他

ulimit

to see, set, or limit the resource usage of the current user. It is used to return the number of open file descriptors for each process. It is also used to set restrictions on the resources used by a process.