1.使用tab补全命令

回到顶部

2.使用ctrl+c快捷键快速终止正在执行的命令

回到顶部

假如你在命令行下执行了一条耗时很长的命令,运行的过程中发现键入的命令是有问题的,或者因为一些其他的原因想要终止正在运行的命令。 这时候可以键入ctrl+c组合键终止正在执行的程序

3.使用ctrl+d终止输入或者退出当前终端

回到顶部

ctrl+d表示输入结束(End Of File, EOF 或 End Of Input)的意思! 此外ctrl+d也可以用来取代exit的输入! 例如想要退出bash,可以在命令行输入exit,也可以直接按下Ctrl-d。

4.更多linux命令行快捷键

回到顶部

ctrl + a 光标切换到命令行行首
ctrl + e 光标切换到命令行末尾
ctrl + l 清屏 等同于clear
ctrl + u 清除剪切光标之前的内容
ctrl + k 清楚剪切光标之后的内容
ctrl + w 清除剪切光标之前的一个word
alt + d 清除剪切光标之后的一个word
ctrl + y 粘贴刚才删除字符
ctrl + h 向行首删除一个字符
ctrl + d 向行尾删除一个字符,空行时等于exit和logout
ctrl + _ 恢复刚操作的命令 xshell无法使用
ctrl + b 光标向行首移动一个字符 ( backwards )
ctrl + f 光标向行尾移动一个字符( forwards )
ctrl + ← 光标向行首移动一个word
ctrl + → 光标向行尾移动一个word
ctrl + r 历史命令中查找 (关键字可用)
ctrl + z 转入后台运行
History 快速再次执行重复命令
history 10 显示最近使用过的10个命令
!! 执行前一个命令
! + 字符 执行前一个以“字符”开头的命令
! + Num 执行对应行号的命令
! + ? abc 执行前一个包含abc的命令
! -n 执行n个命令之前的那个命令
快速调用命令行上一命令
!* 调用上一条命令的所有参数
!$ 调用上一条命令的最后一个参数
!-: 调用上一条命令除了最后一个参数的部分
ALT + <num> + . 调用上一条命令中任意一个部分
其中num表示的上一条命令中的第几部分,从0开始,对于ls -shld hello.txt。ALT +0+. 就是ls。1就是-shld
!!:gs/<$1>/<$2> 替换上一条命令中所有$1为$2 !!:gs^$1^$2 替换上一条命令中第一个$1为$2

参考阅读:

你是否注意到,在电影中一个“超级黑客”坐在电脑前,从不摸一下鼠标, 就能够在30秒内侵入到超安全的军事计算机中。
这是因为电影制片人意识到,作为人类,本能地知道让计算机圆满完成工作的唯一途径,是用键盘来操纵计算机。 现在,大多数的计算机用户只是熟悉图形用户界面(GUI),并且产品供应商和此领域的学者会灌输给用户这样的思想,命令行界面(CLI)是过去使用的一种很恐怖的东西。
这就很不幸,因为一个好的命令行界面,是用来和计算机进行交流沟通的非常有效的方式,正像人类社会使用文字互通信息一样。人们说,“图形用户界面让简单的任务更容易完成, 而命令行界面使完成复杂的任务成为可能”,到现在这句话仍然很正确。
因为 Linux 是以 Unix 家族的操作系统为模型写成的,所以它分享了 Unix 丰富的命令行工具。
Unix 在20世纪80年代初显赫一时(虽然,开发它在更早之前),在普遍地使用图形界面之前,开发了一种广泛的命令行界面。
事实上,很多人选择 Linux(而不是其他的系统,比如说 Windows NT)是因为其可以使“完成复杂的任务成为可能”的强大的命令行界面。
非常实用的Linux命令行技巧

1、将输出内容做一个清晰明了的表格

有时,在你看到命令行执行的输出时,因为字符串过度拥挤(比如说 mount 命令的输出)导致输出内容难以识别。 如果我们看到的内容是一张表格会如何呢?其实这是很容易做到的!
为了看清楚些,我们可以把输出转化为一张表格,只需要加几个字符就行了:
              [peter@study ~]$ mount | column -t
            
在这个小例子中,我们用空格把输出结果隔成了一个表格,整个界面瞬间清楚美观了很多。如果你不太喜欢空格作为分隔符,你也可以换成其他的,比如换成冒号(:)。
依然非常简单:只需要在末尾使用 -s 参数制定一下相应的分割符就可以了:
              [peter@study ~]$ cat /etc/passwd | column -t -s :
            

2、重复执行一个命令,直到它运行成功

如果在 Google 上搜索这个功能,你会发现很多人都问到了如何重复执行命令,直到这个命令成功返回并且运行正常。 Google上的建议里就包括 ping 服务器,直到它变得空闲为止,还有就是检查是否有向特定的目录上传了具有特定扩展名的文件,还有就是检查特定的URL是否已经存在,诸如此类的办法。
不过你还是有其他选择,比如使用 while true 循环来把事情搞定:
在上面这个示例中,>/dev/null 2>&1 会让程序的输出重定向到 /dev/ null。标准错误和标准输出都会被包含进去。
这是我认为最酷的Linux命令行技巧之一。

3、按内存资源的使用量对进程进行排序

              [peter@study ~]$ ps aux | sort -rnk 4
            

4、按CPU资源的使用量对进程进行排序

              [peter@study ~]$ ps aux | sort -nk 3
            

5、检查机器架构

              [peter@study ~]$ getconf LONG_BIT
            

6、同时查看多个日志文件

毫无疑问,你可能已经会使用 tail 命令来查看日志文件了,但可能有时候你还想着能同时查看多个日志文件,这是 tail 就比较麻烦。这时就可以使用 multi-tail 命令,既支持文本的高亮显示,又支持内容过滤以及更多你可能需要的功能:
如果系统里还没有这个命令,运行apt-get install multitail 命令就可以把它给装上了。

7、回到操作过的上一个目录去

返回上一个目录的操作非常简单, cd – 就可以了。

8、让非交互式 Shell 会话可进行交互

想要这样做,那就把设置从 ~/.bashrc 改成 ~/.bash_profile 吧。

9、定时的监视性命令输出

使用 watch 命令(watch df -h),你就可以查看到任何命令的任何输出。例如,你可以查看可用空间以及它的使用量增长情况。
通过利用 watch 命令来操作会变化的数据,你可以尽情想象自己能拿这个来做些什么哦。

10、在会话关掉以后继续运行程序

如果你在后台运行了什么程序,然后你关掉了的 shell 会话,那么这个后台运行的程序就会被你的 shell 杀掉。关闭 shell 以后怎么让程序继续运行下去呢?
这个可以用 nohup 命令做到 – 该指令表示不做挂断操作:
              [peter@study ~]$ nohup wget http://site.com/file.zip
            
这个命令大部分人都不会用,这全拜 screen 环境所赐:
这样会在同一个目录下生成一个名称为 nohup.out 的文件,其中包含了正在运行的程序的输出内容:
命令很酷,对吧?

11、自动对任何命令回答 Yes 或者 No

如果你想自动化需要向用户说的 Yes 的过程,可以使用 yes 命令来实现:yes | apt-get update。
也许你想做的是自动地说“No”。这个可以使用 yes no | 命令来实现。

12、创建具有指定大小的文件

可以使用 dd 命令来创建出具有指定大小的文件:
              [peter@study ~]$ dd if=/dev/zero of=out.txt bs=1M count=10
            
这样就会创建出一个 10 MB 的文件,填充零作为内容:

13、以root用户来运行最后一个命令

有时,你会忘记在需要 root 权限的命令之前敲入 sudo。这时候你没必要去重写命令; 只要输入 sudo !! 就行了。

14、对命令行会话进行记录

如果想要把自己在 shell 屏幕上敲的内容记录下来,可以使用 命令将所有敲写的内容保存到一个名为 type 的文件中去。
等你敲入 exit 命令以后,所有命令就都会被写入该文件,以便你事后再回过头去查看。

15、用标签符号替换空格符

可以使用 tr 命令替换任何字符,这个用起来非常方便:cat geeks.txt | tr ‘:[space]:’ ‘ ’ > out.txt.

16、将文件内容转换为大写或者小写

              [peter@study ~]$ cat myfile | tr a-z A-Z> output.txt
            

17、强大的 Xargs 命令

xargs 命令是最重要的 Linux 命令行技巧之一。你可以使用这个命令将命令的输出作为参数传递给另一个命令。例如,搜索 png 文件然后对其进行压缩或者其它操作:
              [peter@study ~]$ find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz
            
又或者你的文件中有一个 URL 的列表,而你想要做的是以不同的方式下载或者处理这些 URL,可以这样做:
              [peter@study ~]$ cat urls.txt | xargs wget
            
请你要记得,第一个命令的输出会在 xargs 命令结尾处传递。
那如果命令需要中间过程的输出,该怎么办呢?这个简单!
只需要使用 {} 并结合 -i 参数就行了。如下所示,替换在第一个命令的输出应该去的地方的参数:
              [peter@study ~]$ ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out
            
这只是 Linux 命令行技巧其中的几个而已。你可以使用其他命令来做一些更 HAPPY 的事情,比如 awk 命令和 sed 命令!
总结:
命令行有优点也有缺点
优点在哪呢?
1、人生苦短,效率,效率,效率,还是效率
2、鼠标不适合快速操作,命令行通常比在菜单中点来点去更简单,更容易,更直接。
3、稳定,可移植性强
4、开发省心省钱
缺点在哪儿呢?
1、命令行对新手不太友好,所以能否熟练应用命令行算是一个高手和新手能显著拉开效率差距的点。
2、娱乐的时候不友好,你要打游戏或者要聊天,这个时候就还是图形化界面占上风了,当然对用户来说也美观, 看到有人这样说—我就想让照片上妹子脸上的小痘痘消失,怎么用命令行实现呢?

一些非常有用的命令能让命令行的生活更满足
使用 Linux 命令工作可以获得许多乐趣,但是如果您使用一些命令,它们可以减少您的工作或以有趣的方式显示信息时,您将获得更多的乐趣。
在今天的文章中,我们将介绍六个命令,它们可能会使你用在命令行上的时间更加值当。
watch
watch 命令会重复运行您给出的任何命令,并显示输出。默认情况下,它每两秒运行一次命令。命令的每次运行都将覆盖上一次运行时显示的内容,因此您始终可以看到最新的数据。
您可能会在等待某人登录时使用它。在这种情况下,您可以使用 watch who 命令或者 watch -n 15 who 命令使每 15 秒运行一次,而不是两秒一次。
另外终端窗口的右上角会显示日期和时间。

              [peter@study ~]$ watch -n 5 who
              Every 5.0s: who stinkbug: Wed Aug 23 14:52:15 2017
              shs pts/0 2017-08-23 14:45 (192.168.0.11)
              zoe pts/1 2017-08-23 08:15 (192.168.0.19)
            
您也可以使用它来查看日志文件。如果您显示的数据没有任何变化,则只有窗口角落里的日期和时间会发生变化。
              [peter@study ~]$ watch tail /var/log/syslog
              Every 2.0s: tail /var/log/syslog stinkbug: Wed Aug 23 15:16:37 2017
              Aug 23 14:45:01 stinkbug CRON[7214]: (root) CMD (command -v debian-sa1 > /dev/nu
              ll && debian-sa1 1 1)
              Aug 23 14:45:17 stinkbug systemd[1]: Started Session 179 of user shs.
              Aug 23 14:55:01 stinkbug CRON[7577]: (root) CMD (command -v debian-sa1 > /dev/nu
              ll && debian-sa1 1 1)
              Aug 23 15:05:01 stinkbug CRON[7582]: (root) CMD (command -v debian-sa1 > /dev/nu
              ll && debian-sa1 1 1)
              Aug 23 15:08:48 stinkbug systemd[1]: Starting Cleanup of Temporary Directories...
              Aug 23 15:08:48 stinkbug systemd-tmpfiles[7584]: [/usr/lib/tmpfiles.d/var.conf:1
              4] Duplicate line for path "/var/log", ignoring.
              Aug 23 15:08:48 stinkbug systemd[1]: Started Cleanup of Temporary Directories.
              Aug 23 15:13:41 stinkbug systemd[1]: Started Session 182 of user shs.
              Aug 23 15:14:29 stinkbug systemd[1]: Started Session 183 of user shs.
              Aug 23 15:15:01 stinkbug CRON[7828]: (root) CMD (command -v debian-sa1 > /dev/nu
              ll && debian-sa1 1 1)
            
这里的输出和使用命令 tail -f /var/log/syslog 的输出相似。
look 这个命令的名字 look 可能会让我们以为它和 watch 做类似的事情,但其实是不同的。look 命令用于搜索以某个特定字符串开头的单词。
              [peter@study ~]$ look ecl
              eclectic
              eclectic's
              eclectically
              eclecticism
              eclecticism's
              eclectics
              eclipse
              eclipse's
              eclipsed
              eclipses
              eclipsing
              ecliptic
              ecliptic's
            
look 命令通常有助于单词的拼写,它使用 /usr/share/dict/words 文件,除非你使用如下的命令指定了文件名:
              [peter@study ~]$ look esac .bashrc
              esac
              esac
              esac
            
在这种情况下,它的作用就像跟在一个 awk 命令后面的 grep ,只打印匹配行上的第一个单词。
man -k
man -k 命令列出包含指定单词的手册页。它的工作基本上和 apropos 命令一样。
              [peter@study ~]$ man -k logrotate
              dh_installlogrotate (1) - install logrotate config files
              logrotate (8) - rotates, compresses, and mails system logs
              logrotate.conf (5) - rotates, compresses, and mails system logs

              help
              
当你完全绝望的时候,您可能会试图使用此命令,help 命令实际上是显示一个 shell 内置命令的列表。
最令人惊讶的是它有相当多的参数变量。你可能会看到这样的东西,然后开始想知道这些内置功能可以为你做些什么:
              [peter@study ~]$ help
              GNU bash, version 4.4.7(1)-release (i686-pc-linux-gnu)
              These shell commands are defined internally. Type `help' to see this list.
              Type `help name' to find out more about the function `name'.
              Use `info bash' to find out more about the shell in general.
              Use `man -k' or `info' to find out more about commands not in this list.
              A star (*) next to a name means that the command is disabled.
              job_spec [&] history [-c] [-d offset] [n] or hist>
              (( expression )) if COMMANDS; then COMMANDS; [ elif C>
              . filename [arguments] jobs [-lnprs] [jobspec ...] or jobs >
              : kill [-s sigspec | -n signum | -sigs>
              [ arg... ] let arg [arg ...]
              [[ expression ]] local [option] name[=value] ...
              alias [-p] [name[=value] ... ] logout [n]
              bg [job_spec ...] mapfile [-d delim] [-n count] [-O or>
              bind [-lpsvPSVX] [-m keymap] [-f file> popd [-n] [+N | -N]
              break [n] printf [-v var] format [arguments]
              builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir]
              caller [expr] pwd [-LP]
              case WORD in [PATTERN [| PATTERN]...)> read [-ers] [-a array] [-d delim] [->
              cd [-L|[-P [-e]] [-@]] [dir] readarray [-n count] [-O origin] [-s>
              command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] o>
              compgen [-abcdefgjksuv] [-o option] [> return [n]
              complete [-abcdefgjksuv] [-pr] [-DE] > select NAME [in WORDS ... ;] do COMM>
              compopt [-o|+o option] [-DE] [name ..> set [-abefhkmnptuvxBCHP] [-o option->
              continue [n] shift [n]
              coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...]
              declare [-aAfFgilnrtux] [-p] [name[=v> source filename [arguments]
              dirs [-clpv] [+N] [-N] suspend [-f]
              disown [-h] [-ar] [jobspec ... | pid > test [expr]
              echo [-neE] [arg ...] time [-p] pipeline
              enable [-a] [-dnps] [-f filename] [na> times
              eval [arg ...] trap [-lp] [[arg] signal_spec ...]
              exec [-cl] [-a name] [command [argume> true
              exit [n] type [-afptP] name [name ...]
              export [-fn] [name[=value] ...] or ex> typeset [-aAfFgilnrtux] [-p] name[=v>
              false ulimit [-SHabcdefiklmnpqrstuvxPT] [l>
              fc [-e ename] [-lnr] [first] [last] o> umask [-p] [-S] [mode]
              fg [job_spec] unalias [-a] name [name ...]
              for NAME [in WORDS ... ] ; do COMMAND> unset [-f] [-v] [-n] [name ...]
              for (( exp1; exp2; exp3 )); do COMMAN> until COMMANDS; do COMMANDS; done
              function name { COMMANDS ; } or name > variables - Names and meanings of so>
              getopts optstring name [arg] wait [-n] [id ...]
              hash [-lr] [-p pathname] [-dt] [name > while COMMANDS; do COMMANDS; done
              help [-dms] [pattern ...] { COMMANDS ; }

              stat -c
              
stat 命令用于显示文件的大小、所有者、用户组、索引节点号、权限、修改和访问时间等重要的统计信息。
这是一个非常有用的命令,可以显示比 ls -l 更多的细节。
              [peter@study ~]$ stat .bashrc
              File: .bashrc
              Size: 4048 Blocks: 8 IO Block: 4096 regular file
              Device: 806h/2054d Inode: 421481 Links: 1
              Access: (0644/-rw-r--r--) Uid: ( 1000/ shs) Gid: ( 1000/ shs)
              Access: 2017-08-23 15:13:41.781809933 -0400
              Modify: 2017-06-21 17:37:11.875157790 -0400
              Change: 2017-06-21 17:37:11.899157791 -0400
              Birth: -
              
使用 -c 选项,您可以指定要查看的字段。例如,如果您只想查看一个文件或一系列文件的文件名和访问权限,则可以这样做:
              [peter@study ~]$ stat -c '%n %a' .bashrc
              .bashrc 644
            
在此命令中, %n 表示每个文件的名称,而 %a 表示访问权限。%u 表示数字类型的 UID,而 %U 表示用户名。
              [peter@study ~]$ stat -c '%n %a' bin/*
              bin/loop 700
              bin/move2nohup 700
              bin/nohup.out 600
              bin/show_release 700
              [peter@study ~]$ stat -c '%n %a %U' bin/*
              bin/loop 700 shs
              bin/move2nohup 700 shs
              bin/nohup.out 600 root
              bin/show_release 700 shs

              TAB
            
如果你没有使用过 tab 键来补全文件名,你真的错过了一个非常有用的命令行技巧。tab 键提供文件名补全功能(包括使用 cd 时的目录)。它在出现歧义之前尽可能多的填充文件名(多个文件以相同的字母开头。如果您有一个名为 bigplans 的文件,另一个名为 bigplans2017 的文件会发生歧义,你将听到一个声音,然后需要决定是按下回车键还是输入 2 之后再按下 tab 键选择第二个文件。

initroot编辑整理,转载请注明出处 www.initroot.com