服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux命令行六大技巧

Linux命令行六大技巧

2023-10-25 18:13未知服务器之家 Linux

watch watch 命令会重复运行您给出的任何命令,并显示输出。默认情况下,它每两秒运行一次命令。命令的每次运行都将覆盖上一次运行时显示的内容,因此您始终可以看到最新的数据。 您可能会在等待某人登录时使用它。在这种情

watch

watch 命令会重复运行您给出的任何命令,并显示输出。默认情况下,它每两秒运行一次命令。命令的每次运行都将覆盖上一次运行时显示的内容,因此您始终可以看到最新的数据。

您可能会在等待某人登录时使用它。在这种情况下,您可以使用 watch who 命令或者 watch -n 15 who 命令使每 15 秒运行一次,而不是两秒一次。另外终端窗口的右上角会显示日期和时间。

$watch-n5who
Every5.0s:whostinkbug:WedAug2314:52:152017
shspts/02017-08-2314:45(192.168.0.11)
zoepts/12017-08-2308:15(192.168.0.19)

您也可以使用它来查看日志文件。如果您显示的数据没有任何变化,则只有窗口角落里的日期和时间会发生变化。

$watchtail/var/log/syslog
Every2.0s:tail/var/log/syslogstinkbug:WedAug2315:16:372017
Aug2314:45:01stinkbugCRON[7214]:(root)CMD(command-vdebian-sa1>/dev/nu
ll&&debian-sa111)
Aug2314:45:17stinkbugsystemd[1]:StartedSession179ofusershs.
Aug2314:55:01stinkbugCRON[7577]:(root)CMD(command-vdebian-sa1>/dev/nu
ll&&debian-sa111)
Aug2315:05:01stinkbugCRON[7582]:(root)CMD(command-vdebian-sa1>/dev/nu
ll&&debian-sa111)
Aug2315:08:48stinkbugsystemd[1]:StartingCleanupofTemporaryDirectories...
Aug2315:08:48stinkbugsystemd-tmpfiles[7584]:[/usr/lib/tmpfiles.d/var.conf:1
4]Duplicatelineforpath"/var/log",ignoring.
Aug2315:08:48stinkbugsystemd[1]:StartedCleanupofTemporaryDirectories.
Aug2315:13:41stinkbugsystemd[1]:StartedSession182ofusershs.
Aug2315:14:29stinkbugsystemd[1]:StartedSession183ofusershs.
Aug2315:15:01stinkbugCRON[7828]:(root)CMD(command-vdebian-sa1>/dev/nu
ll&&debian-sa111)

这里的输出和使用命令 tail -f /var/log/syslog 的输出相似。

look

这个命令的名字 look 可能会让我们以为它和 watch 做类似的事情,但其实是不同的。look 命令用于搜索以某个特定字符串开头的单词。

$lookecl
eclectic
eclectic's
eclectically
eclecticism
eclecticism's
eclectics
eclipse
eclipse's
eclipsed
eclipses
eclipsing
ecliptic
ecliptic's

look 命令通常有助于单词的拼写,它使用 /usr/share/dict/words 文件,除非你使用如下的命令指定了文件名:

$lookesac.bashrc
esac
esac
esac

在这种情况下,它的作用就像跟在一个 awk 命令后面的 grep ,只打印匹配行上的第一个单词。

man -k

man -k 命令列出包含指定单词的手册页。它的工作基本上和 apropos 命令一样。

$man-klogrotate
dh_installlogrotate(1)-installlogrotateconfigfiles
logrotate(8)-rotates,compresses,andmailssystemlogs
logrotate.conf(5)-rotates,compresses,andmailssystemlogs
help

当你完全绝望的时候,您可能会试图使用此命令,help 命令实际上是显示一个 内置命令的列表。最令人惊讶的是它有相当多的参数变量。你可能会看到这样的东西,然后开始想知道这些内置功能可以为你做些什么:

$help
GNUbash,version4.4.7(1)-release(i686-pc-linux-gnu)
Theseshellcommandsaredefinedinternally.Type`help'toseethislist.
Type`helpname'tofindoutmoreaboutthefunction`name'.
Use`infobash'tofindoutmoreabouttheshellingeneral.
Use`man-k'or`info'tofindoutmoreaboutcommandsnotinthislist.
Astar(*)nexttoanamemeansthatthecommandisdisabled.
job_spec[&]history[-c][-doffset][n]orhist>
((expression))ifCOMMANDS;thenCOMMANDS;[elifC>
.filename[arguments]jobs[-lnprs][jobspec...]orjobs>
:kill[-ssigspec|-nsignum|-sigs>
[arg...]letarg[arg...]
[[expression]]local[option]name[=value]...
alias[-p][name[=value]...]logout[n]
bg[job_spec...]mapfile[-ddelim][-ncount][-Oor>
bind[-lpsvPSVX][-mkeymap][-ffile>popd[-n][+N|-N]
break[n]printf[-vvar]format[arguments]
builtin[shell-builtin[arg...]]pushd[-n][+N|-N|dir]
caller[expr]pwd[-LP]
caseWORDin[PATTERN[|PATTERN]...)>read[-ers][-aarray][-ddelim][->
cd[-L|[-P[-e]][-@]][dir]readarray[-ncount][-Oorigin][-s>
command[-pVv]command[arg...]readonly[-aAf][name[=value]...]o>
compgen[-abcdefgjksuv][-ooption][>return[n]
complete[-abcdefgjksuv][-pr][-DE]>selectNAME[inWORDS...;]doCOMM>
compopt[-o|+ooption][-DE][name..>set[-abefhkmnptuvxBCHP][-ooption->
continue[n]shift[n]
coproc[NAME]command[redirections]shopt[-pqsu][-o][optname...]
declare[-aAfFgilnrtux][-p][name[=v>sourcefilename[arguments]
dirs[-clpv][+N][-N]suspend[-f]
disown[-h][-ar][jobspec...|pid>test[expr]
echo[-neE][arg...]time[-p]pipeline
enable[-a][-dnps][-ffilename][na>times
eval[arg...]trap[-lp][[arg]signal_spec...]
exec[-cl][-aname][command[argume>true
exit[n]type[-afptP]name[name...]
export[-fn][name[=value]...]orex>typeset[-aAfFgilnrtux][-p]name[=v>
falseulimit[-SHabcdefiklmnpqrstuvxPT][l>
fc[-eename][-lnr][first][last]o>umask[-p][-S][mode]
fg[job_spec]unalias[-a]name[name...]
forNAME[inWORDS...];doCOMMAND>unset[-f][-v][-n][name...]
for((exp1;exp2;exp3));doCOMMAN>untilCOMMANDS;doCOMMANDS;done
functionname{COMMANDS;}orname>variables-Namesandmeaningsofso>
getoptsoptstringname[arg]wait[-n][id...]
hash[-lr][-ppathname][-dt][name>whileCOMMANDS;doCOMMANDS;done
help[-dms][pattern...]{COMMANDS;}
stat -c

stat 命令用于显示文件的大小、所有者、用户组、索引节点号、权限、修改和访问时间等重要的统计信息。这是一个非常有用的命令,可以显示比 ls -l 更多的细节。

$stat.bashrc
File:.bashrc
Size:4048Blocks:8IOBlock:4096regularfile
Device:806h/2054dInode:421481Links:1
Access:(0644/-rw-r--r--)Uid:(1000/shs)Gid:(1000/shs)
Access:2017-08-2315:13:41.781809933-0400
Modify:2017-06-2117:37:11.875157790-0400
Change:2017-06-2117:37:11.899157791-0400
Birth:-

使用 -c 选项,您可以指定要查看的字段。例如,如果您只想查看一个文件或一系列文件的文件名和访问权限,则可以这样做:

$stat-c'%n%a'.bashrc
.bashrc644

在此命令中, %n 表示每个文件的名称,而 %a 表示访问权限。%u 表示数字类型的 UID,而 %U 表示用户名。

$stat-c'%n%a'bin/*
bin/loop700
bin/move2nohup700
bin/nohup.out600
bin/show_release700
$stat-c'%n%a%U'bin/*
bin/loop700shs
bin/move2nohup700shs
bin/nohup.out600root
bin/show_release700shs
TAB

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


延伸 · 阅读

精彩推荐