《The Linux Command Line》中的命令

    《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:在终端上显示系统负载情况

猜你喜欢

转载自blog.csdn.net/u011008379/article/details/78842577