linux命令学习

Linux 命令学习

常用命令

显示磁盘容量

1
$ df -h

显示内存信息

1
$ free -h

确定文件类型

1
file 文件名

lessmore都能浏览文件,但是前者可以前后分页浏览,后者只支持向前分页浏览

以管理员模式打开资源管理器

1
$ sudo nautilus

说明怎样解释一个命令名

1
type 命令名

获取命令简介

1
whatis 命令名

helpman都可以查看命令帮助文档,但是前者是shell内部命令的帮助文档

输入文件前多少行

1
head -n 行数 文件名

输出文件后多少行

1
tail -n 行数 文件名

清空屏幕,与ctrl+l功能一样

1
clear

显示历史列表内容

1
history

显示所有服务的运行状态

1
$ service --status-all

显示单个服务的运行状态,例如ssh服务

1
$ service ssh status

特殊符号

;命令分隔符,可以用来在一行中来写多个命令

""部分引用,阻止了一部分特殊字符

''全引用,阻止了全部特殊字符

` 反引号,命令替换

?测试操作,在参数替换中,可以测试一个变量是够被set

$?退出状态变量

$$进程ID变量,保存运行脚本进程ID

文件操作

cp - 复制文件和目录

mv - 移动/重命名文件和目录

mkdir - 创建目录

rm - 删除文件和目录

ln - 创建硬链和符号链接

命令

命令可以是下面四种形式之一:

  1. 是一个可执行程序,就像我们所看到的位于目录/usr/bin 中的文件一样。属于这一类的程序,可以编译成二进制文件,诸如用 C 和 C++ 语言写成的程序, 也可以是由脚本语言写成的程序,比如说 shell, perl, python, ruby,等等。
  2. 是一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令
    (builtins)。例如, cd 命令,就是一个 shell 内部命令。
  3. 是一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。在后续的章节里,我们将讨论配置环境变量以及书写 shell 函数。但是现在,仅仅意识到它们的存在就可以了。
  4. 是一个命令别名。我们可以定义自己的命令,建立在其它命令之上。

重定向

>会删除文件中的内容,然后将内容定向到文件中,>>则是在文件末尾中追加

标准输入和标准输出以及标准错误流是各自重定向的,shell内部参考它们文件描述符为0,1,2

1
$ ls -l /bin/use 2>> ls-error.txt

上述命令就是将错误流输出到ls-error.txt文件中

如果我们想实现将标准输出和标准错误重定向到同一个文件中,我们可以:

1
$ ls -l /bin/usr > ls-output.txt 2>&1

上述命令就是先将标准输出重定向到文件, 然后将标准错误重定向到标准输出

注意重定向的顺序很重要,标准错误的重定向必须总是出现在标准输出重定向之后,要不然它不起作用

现在的bash也支持使用以下更精简的方法来将标准输出和错误重定向到同一个文件中

1
$ ls -l /bin/usr &> ls-output.txt

有时候,我们不想要一个命令的输出结果,只想把它扔掉,我们就可以利用一个特殊的设备/dev/null(相当于垃圾桶)

1
$ ls -l /bin/usr 2> /dev/null

上述命令就是将标准错误流扔掉了

1
$ cat /dev/null > filename

将文件内容清空,如果文件不存在,则创建文件,与下面命令功能一样

1
$ : > filename

:是空命令

管道命令|是将一个命令的标准输出重定向到另一个命令的标准输入

例如,我们使用:

1
$ ll | less

就能更方便的查看当前目录下的所有文件了

tee命令从标准输入读取数据,并同时输出到标准输出和文件中。

花括号展开

1
2
3
4
$ echo {1..5}
1 2 3 4 5
$ echo {z..a}
z y x w v u t s r q p o n m l k j i h g f e d c b a

命令替换

命令替换允许我们把一个命令的输出作为一个展开模式来使用

1
2
$ ll $(which cp)
-rwxr-xr-x 1 root root 151024 2月 18 2016 /bin/cp*

也可以使用反引号来代替美元符号和括号

1
2
$ ll `which cp`
-rwxr-xr-x 1 root root 151024 2月 18 2016 /bin/cp*

特殊权限

setuid

当应用到一个可执行文件时,它把有效用户ID从真正的用户(实际运行程序的用户)设置成程序所有者的ID

setgid

与setuid位相似,把有效用户组ID从真正的用户组ID更改为文件所有者的组的ID

sticky

linux会忽略文件的sticky位,但是如果一个目录设置了sticky位,那么它能阻止用户删除或重命名,除非用户是这个目录的所有者,或是文件的所有者,或是超级用户

进程

ps显示当前有TTY(进程的控制终端)的进程,ps x显示所有进程,不管它们由什么终端控制,px aux还可以显示进程的所有者,CPU和内存使用率等

进程状态

  1. R - 运行
  2. S - 正在睡眠
  3. D - 不可中断睡眠,进程正在等待I/O
  4. T - 已停止
  5. Z - 僵尸进程
  6. < - 高优先级进程
  7. N - 低优先级进程

ps只是进程快照,而top命令可以动态的显示系统进程更新的信息(默认情况下,每3秒更新一次).pstree可以输出一个树形结构的进程列表

进程控制

可以在命令之后加上&,让它立即在后台执行

1
2
$ xlogo &
[1] 28236

jobs可以显示当前终端后头运行的任务以及状态

一个在后台运行的进程对一切来自键盘的输入都免疫,也不能用ctrl+c来中断它。

使用fg将一个进程返回前台执行

1
2
3
$ xlogo &
[1] 55692
$ fg %1 //这里的%1被称为jobspec

有时候我们需要停止一个进程,而不是终止。这样会把一个前台进程移到后台等待,输入ctrl+z,可以停止一个前台进程。处于停止的进程可以使用fg命令恢复程序到前台运行或者用bg命令把程序移到后台。

可以使用kill PIDkill jobspec来终止进程

vim

常用命令:

  1. yy - 复制当前行
  2. 5yy - 复制当前行以及随后的四行文本
  3. y0 - 复制当前光标位置到当前行首的内容
  4. y$ - 复制当前光标位置到当前行的尾部
  5. p - 粘贴
  6. d - 删除/剪切文本

文本处理

cat -A 文件名可以查看文件中的特殊符号

cat -n 文件名输出文件内容并显示行号

sort对标准输入的内容,或命令行中指定的一个或多个文件进行排序,然后把排序结果发送到标准输出。

cut用来从文本行中抽取文本,并把它输入到标准输出

paste功能与cut相反,它会添加一个或多个文本列到文件中,而不是从文件中抽取文本列。它通过读取多个文件,然后把每个文件中的字段整合成单个单个文本流,输入到标准输出。

sed命令对文本流就行编辑,一般用来做替换操作。

坚持原创技术分享,您的支持将鼓励我继续创作!