您的位置:首页 > 运维架构 > Linux

《The Linux Command Line》中的命令

2017-12-19 14:47 357 查看
《The Linux Command Line》是一本Linux命令入门级图书,网上也有免费版下载,我这里只是按章节做一个简单的书中提到的命令的收集记录和翻译,也为了记录的简洁性略作调整。注意,部分概念说明和命令的使用技巧没有体现在本文中。

2. 导航命令

pwd
:打印当前工作目录

cd [绝对或相对路径]
:切换工作目录

cd
:切换到用户主目录

cd -
:切换到上一个工作目录

cd ~用户名
:切换工作目录到对应用户名的主目录

ls [dir...]
:列出目录(可以同时指定多个目录)中的文件,如果没有指定目录,则列出当前工作目录的文件

-a(--all)
:列出所有文件,包括隐藏文件(以
.
开头)

-A(--almost-all)
:除了
.
(当前目录)
..
(上级目录)以外的所有文件

-d(--directory)
:列出目录本身的信息而不是目录里的内容,通常与
-l
合用

-F(--classify)
:在列出的文件名后面追加一个指示字符,例如在文件夹后面追加“/”符号

-h(human-readable)
:使“长格式”中的文件大小字段以用户易读的方式展现,而不仅仅是字节大小,通常与
-l
合用

-l
:以“长格式”展示信息,内容更丰富

-r --reverse
:使排列顺序与原来相反

-S
:按文件大小排序

-t
:按文件最后修改时间排序

3. 探索系统

file 文件名
:显示文件类型信息

less 文件名
:查看文件内容

Page Up 或 b:向上翻页

Page Down 或 space:向下翻页

Up Arrow:向上滚动一行

Down Arrow:向下滚动一行

G:滚动到文件结尾

1G 或 g:滚动到文件开头

/characters:查找指定字符

n:要查找的下一个指定字符

h:显示帮助信息

q:退出less程序

4. 操作文件和目录

mkdir 目录...
:创建目录,可以是一个目录也可以同时创建多个目录

cp item1 item2
:复制文件或目录(需要
-r
选项)

cp item... 目录
:复制文件(一个或多个)到指定目录

-a(--archive)
:复制文件或目录,并且复制保留原有的所属信息和权限属性,一般来说,复制文件或文件夹的属性是执行命令用户的属性

-i(--interactive)
:当存在写覆盖时会提示用户进行确认。如果没有指定该选项,则是默认覆盖

-r(--recursive)
:当复制文件夹时,需要指定该选项

-u(--update)
:当复制若干文件到另一个目录时,只会复制目标目录没有的文件和比已有文件更新的文件

-v(--verbose)
:显示复制的相关信息

mv item1 item2
:移动文件或目录

mv item... 目录
:移动文件(一个或多个)到指定目录

-i(--interactive)
:当存在写覆盖时会提示用户进行确认。如果没有指定该选项,则是默认覆盖

-u(--update)
:当移动若干文件到另一个目录时,只会移动目标目录没有的文件和比已有文件更新的文件

-v(--verbose)
:显示移动的相关信息

rm item...
:删除文件或目录(需要
-r
选项)

-i(--interactive)
:在删除文件前需要用户确认。如果没有指定该选项,则会直接删除没有提示

-r(--recursive)
:当删除涉及目录时,需要指定该选项

-f(--force)
:忽略不存在的文件,并且不给出提示。此选项会使
--interactive
选项失效

-v(--verbose)
:显示删除的相关信息

ln file link
:创建文件的硬链接

ln -s item link
:创建文件或目录的符号(软)链接

5. 用命令工作

type 命令
:显示命令的类别(可执行程序,shell内建命令,shell函数或命令别名)

which 可执行程序
:显示可执行程序的位置

help shell内建命令
:显示shell內建命令帮助信息

--help
:显示使用信息的选项,大部分命令都支持该选项

man [section] 命令
:显示命令的用户手册,也可以指定显示某一节的用户手册信息。man使用less来显示,所以可以使用less中的相关操作

apropos 命令
:模糊查询命令信息,相当与在man命令中使用
-k
选项

whatis 命令
:查询指定命令的简单描述

info 命令
:查询命令的info内容

alias 命令别名='命令或命令的组合'
:给命令或命令的组合(用分号分隔的命令)取别名。注意当shell会话关闭后,用命令行创建的别名就失效了。

unalias 命令别名
:删除命令别名

alias
:显示系统中存在的命令别名

6. 重定向

<(标准输入重定向
:将文件作为标准输入来源

>(标准输出重定向); 2>(标准错误输出重定向); &>(标准输出和标准错误输出重定向)
:写入文件开头,即会清除原有文件内容

>>(标准输出重定向); 2>>(标准错误输出重定向); &>>(标准输出和标准错误输出重定向)
:写入文件结尾,即追加新的内容

cat [文件名...]
:读取一个或多个文件,并复制到标准输出文件,即打印到屏幕上。如果没有提供文件名作为参数,则从标准输入中读取,使用Ctrl+d作为EOF。

|
:管道操作符,将一个命令的标准输出作为另一个命令的标准输入。

sort [文件名]
:对文件内容排序。没有文件则从标准输入中读取。(很多命令在没有给出文件名参数时会从标准输入中读取。)

uniq [文件名]
:去除重复的行,注意要先将输入内容排序。没有文件则从标准输入中读取。

-d
:显示重复的行

wc [文件名]
:打印对行、单词数、字节数的计数。没有文件则从标准输入中读取。

-l
:只显示行数

grep 模式 [文件名...]
:打印匹配模式的行。没有文件则从标准输入中读取。

head [文件名]
:打印文件的前10行。没有文件则从标准输入中读取。

-n 数字
:显示指定打印的行数

tail [文件名]
:打印文件的最后10行。没有文件则从标准输入中读取。

-n 数字
:显示指定打印的行数

-f
:实时显示指定文件内容,Ctrl+c用于终止显示

tee
:从标准输入中读取内容并同时输出到标准输出和文件中,例如
ls /usr/bin | tee ls.txt | grep zip


7. 以shell的视角看世界

路径名扩展:可以在表示路径的字符串中使用通配符,shell会匹配所有符合条件的内容,形成不同的路径字符串

波浪线(
~
)扩展:
~
代表当前用户的主目录,
~用户名
代表对应用户的主目录

算数扩展(
$((算数表达式))
):只支持整数运算,可以嵌套,也可以使用括号。部分支持的运算符:加法(+),减法(-),乘法(*),整除(/),取模(%)和指数运算(**)

大括号扩展:可以创建多个特定形式的字符串

形式1——
{str1,str2[,str3...]}
{c1,c2[,c3...]}
:生成逗号隔开的字符串或字符(中间无空白字符),例如
echo Front-{A,B,C}-Back
输出
Front-A-Back Front-B-Back Front-C-Back


形式2——
{数字1..数字2}
{字母1..字母2}
:生成指定范围内的数字或字母。例如
echo Number_{1..5}
,对应的输出为
Number_1 Number_2 Number_3 Number_4 Number_5
;还可以支持显示指定位数,空位由0补齐,
echo {01..15}
输出为
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
;生成反序序列
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
;还可以嵌套使用
echo a{A{1,2},B{3,4}}b
,输出为
aA1b aA2b aB3b aB4b


参数扩展:显示变量对应的值,例如
echo $USER
输出
me


命令替换(
$()
):将一个命令的输出作为另一个命令的参数,例如,
ls -l $(which cp)
输出“-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp”。早期的shell使用反引号也有同样的功能,例如,
ls -l `which cp`
输出
-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp


word-splitting:去除多余的空白字符。例如:
echo this is a
test
,输出
this is a test


双引号:使得全部的特殊字符被视作普通字符,失去了特殊的意义,除了
$
\
(反斜杠),
`
(反引号)之外。例如:
ls -l "two words.txt"
,输出
-rw-rw-r-- 1 me me 18 2016-02-20 13:03 two words.txt
。如果没有双引号,则会被视为两个参数。

单引号:使得所有的扩展都失效。例如:
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
,输出
text ~/*.txt {a,b} \$(echo foo) \$((2+2)) $USER


转义字符:使得具有特殊意义的字符变成普通字符。例如:
echo "The balance for user $USER is: \$5.00"
,输出
The balance for user me is: $5.00


8. 高级键盘技巧

Ctrl-a
:移动光标到行首

Ctrl-e
:移动光标到行尾

Ctrl-f
:光标向前移动一个字符,和右箭头作用一样

Ctrl-b
:光标向后移动一个字符,和左箭头作用一样

Alt-f
:光标向前移动一个单词

Alt-b
:光标向后移动一个单词

Ctrl-l
:清除屏幕并且移动光标到左上角。与
clear
命令作用一样

Ctrl-d
:删除光标所在字符

Ctrl-t
:交换光标所在字符与前一个字符的顺序

Alt-t
:交换光标所在单词和前一个单词的顺序

Alt-l
:将从光标处到单词结尾的字符转换为小写

Alt-u
:将从光标处到单词结尾的字符转换为大写

Ctrl-k
:删除光标处到行尾的字符

Ctrl-u
:删除光标前一个字符到行首的字符

Alt-d
:删除光标到单词结尾的字符

Alt-Backspace
:删除光标前一个位置到单词开头处的字符。如果光标已经处于单词的开头,则删除前一个单词

Ctrl-y
:把kill-ring缓冲区中的文本粘贴到光标前

Alt-?
:显示所有可能的自动补齐列表。在大多数系统上,可以通过按第二次tab键来实现。(该快捷键需要结合Shift键)

Alt-*
:直接插入所有可能的补全项。当你需要使用多个匹配项时会很有用。(该快捷键需要结合Shift键)

9. 权限

id
:显示用户身份信息

chmod <[ugoa][+-=][rwx]|表示模式的三个八进制数字> 文件名
:改变文件的模式

umask
:显示默认权限

umask 四个八进制数字
:设置默认权限

su [-[l]] [用户名]
:以另一个用户的身份来启动shell。
-l
选项可以缩写为
-
,如果包含该选项,择该用户的运行环境会被加载,工作目录也将更改为该用户的主目录。如果没有给出用户名,则默认用户名是超级用户。
exit
命令用于退出。

su -c '命令'
:以超级用户身份执行单条命令,输入的密码是超级用户的密码

sudo 命令
:以超级用户身份执行命令,输入的密码是用户自己的密码

chown [ower][:[group]] 文件...
:改变文件或目录所属的用户和组

passwd [用户名]
:更改用户密码。如果不指定用户名,则是更改当前用户的密码

10. 进程

ps [选项]
:查看进程信息。常用方法为
ps aux
(选项前不带连字符,将使命令以BSD模式运行)。

top
:动态查看进程信息。ps命令显示的是机器进程状态的快照。

Ctrl-C
:终止程序运行

Ctrl-Z
:暂停程序运行

命令 &
:让程序在后台运行

jobs
:显示作业状态列表(可以显示后台进程)

fg %作业编号
:将指定作业放到前台运行

bg %作业编号
:将指定作业放到后台运行

kill [-信号名或编号] PID...
:向进程发送指定信号

killall [-u 用户名] [-信号名或编号] 进程名...
:向指定名称的进程发送信号,还可以指定用户名

pstree
:以树状形式输出进程列表,该模式显示了进程间的父子关系

vmstat [数字]
:输出系统资源使用情况,可以指定更新的频率的数字,以秒为单位。如果不指定数字,则只显示一份快照

xload
:图像化显示系统负载情况

tload
:在终端上显示系统负载情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: