当前位置:首页 > 命令
  • 这显然针对Linux用户

    在开发过程中从应用程序获取反馈就像在需要时添加日志信息并在logcat中查找输出一样容易。 但是,当发生许多事情时,查找线的任务可能会有些棘手。 Logcat具有基本的过滤功能,如上一篇有关ADB命令的文章所述。 但是,我经常发现通过广泛的过滤(整个应用程序范围),我仍然花费大量时间滚动输出。 有一种工具可以通过对logcat输出进行颜色编码来减少繁琐的工作。 这项工作全部由Python程序包完成,该程序包分析logcat输出,并在运行时应用标签和列。它实时监视输出,但是您也可以在事后将其捕获文件。您可以使用Marshall Culpepper项目中包括的过滤器和配置文件功能轻松地对其进行调整,以执行所需的任何操作。我想说,您可能不必超越用户级别的选项,即可按自己的方式进行查找。 根据文档(egrep等)中使用的示例命令,这显然针对Linux用户。我没有要测试的Windows机器,但是logcat和Python都是跨平台工具,因此有可能会工作。

    时间:2020-09-08 关键词: 文档 命令 Linux

  • Linux命令格式教程

    每个Linux系统命令都提供某些系统功能。 尽管命令很多,但是命令的使用方式还是有一些相似之处的。 总之,Linux命令具有以下常规格式: 命令字 [选项] [参数] (“[ ]”中的内容代表可有可无) 其中命令字是必须写的,代表具体的命令,例如:ls,该命令字的功能是将指定目录中的文件列表显示给命令使用者,但是显示文件列表这个功能在显示格式和显示内容上通常会有更加细化的需求,有时候希望能够以一个文件一行的形式来展示同时附加文件详细的属性信息;有时候希望能够能够按照文件的修改时间来排序;有时候希望能够列出文件名以“.”开头的隐藏文件,类似这种更加具体化的功能需求还会有很多,每个命令字都是如此,因此,Linux命令字的作者通常提供选项来对命令的功能进行微调,以便满足命令使用者更加具体化的使用需求。选项常用的书写格式如下所示: 以 “-”引导短格式选项(单个字符),例如:“-l” 以“--”引导长格式选项(多个字符),例如:“--color” 多个短格式选项可以写在一起,只用一个“-”引导,例如:“-al” 参数是命令字实现功能时所作用的对象,通常是包含访问路径的文件名或目录名等。例如ls /tmp,“/tmp”就是ls命令字的作用对象,代表显示出/tmp目录下的文件列表;再举例:ls -l /media /mnt,“-l”是选项,“/media”和“/mnt”是2个参数,表示一次显示出/media和/mnt目录中的文件列表并以一个文件一行且带有文件属性信息的形式来展示。

    时间:2020-07-14 关键词: tmp 命令 Linux

  • Linux 系统命令及其使用详解(大全)

    Linux 系统命令及其使用详解(大全)(来源: 中国系统分析员) cat cd chmod chown cp cut名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName 说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案) 参数: -n 或 --number 由 1 开始对所有输出的行数编号 -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 -v 或 --show-nonprinting 范例: cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里 cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 名称:cd 使用权限:所有使用者 使用方式:cd [dirName]说明:变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录).另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。 范例:跳到 /usr/bin/:cd /usr/bin 跳到自己的 home directory:cd ~ 跳到目前目录的上上两层:cd ../.. 指令名称:chmod 使用权限:所有使用者 使用方式:chmod [-cfvR] [--help] [--version] mode file... 说明:Linux/Unix 的档案存取权限分为三级:档案拥有者,群组,其他。利用 chmod 可以藉以控制档案如何被他人所存取。把计:mode:权限设定字串,格式如下:[ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限,- 表示取消权限,= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 -c:若该档案权限确实已经更改,才显示其更改动作 -f:若该档案权限无法被更改也不要显示错误讯息 -v:显示权限变更的详细资料 -R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) --help:显示辅助说明 --version:显示版本范例 :将档案 file1.txt 设为所有人皆可读取:chmod ugo+r file1.txt 将档案 file1.txt 设为所有人皆可读取:chmod a+r file1.txt 将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入:chmod ug+w,o-w file1.txt file2.txt 将 ex1.py 设定为只有该档案拥有者可以执行:chmod u+x ex1.py 将目前目录下的所有档案与子目录皆设为任何人可读取:chmod -R a+r * 此外chmod也可以用数字来表示权限如 chmod 777 file 语法为:chmod abc file 其中a,b,c各为一个数字,分别表示User,Group,及Other的权限。r=4,w=2,x=1 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=7。 范例: chmod a=rwx file 和 chmod 777 file 效果相同 chmod ug=rwx,o=x file 和 chmod 771 file 效果相同 若用chmod 4755 filename可使此程式具有root的权限 指令名称:chown 使用权限:root 使用方式:chmod [-cfhvR] [--help] [--version] user[:group] file... 说明:Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 把计:user:新的档案拥有者的使用者 IDgroup:新的档案拥有者的使用者群体(group)-c:若该档案拥有者确实已经更改,才显示其更改动作-f:若该档案拥有者无法被更改也不要显示错误讯息-h:只对于连结(link)进行变更,而非该 link 真正指向的档案-v:显示拥有者变更的详细资料-R:对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help:显示辅助说明--version:显示版本 范例:将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie:chown jessie:users file1.txt 将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport:chmod -R lamport:users * 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。把计: -a 尽可能将档案状态,权限等资料都照原状予以复制。 -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。 -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。 范例: 将档案 aaa 复制(已存在),并命名为 bbb:cp aaa bbb 将所有的C语言程式拷贝至 Finished 子目录中:cp *.c Finished 名称:cut 使用权限:所有使用者 用法:cut -cnum1-num2 filename 说明:显示每行从开头算起 num1 到 num2 的文字。 范例: shell>> cat example test2 this is test1 shell>> cut -c0-6 example ## print 开头算起前 6 个字元 test2 this i 用法:find 使用说明:将档案系统内符合 expression 的档案列出来。你可以指要档案的名称,类别,时间,大小,权限等不同资讯的组合,只有完全相符的才会被列出来。 find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 -mount, -xdev:只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案 -amin n:在过去 n 分钟内被读取过 -anewer file:比档案 file 更晚被读取过的档案 -atime n:在过去 n 天过读取过的档案 -cmin n:在过去 n 分钟内被修改过 -cnewer file :比档案 file 更新的档案 -ctime n:在过去 n 天过修改过的档案 -empty:空的档案-gid n or -group name:gid 是 n 或是 group 名称是 name -ipath p, -path p:路径名称符合 p 的档案,ipath 会忽略大小写 -name name, -iname name:档案名称符合 name 的档案。iname 会忽略大小写 -size n:档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c:档案类型是 c 的档案。 d: 目录 c: 字型装置档案 b: 区块装置档案 p: 具名贮列 f: 一般档案 l: 符号连结 s: socket -pid n:process id 是 n 的档案 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2 范例: 将目前目录及其子目录下所有延伸档名是 c 的档案列出来。 # find . -name "*.c" 将目前目录其其下子目录中所有一般档案列出 # find . -ftype f 将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出 # find . -ctime -20 名称:less 使用权限:所有使用者 使用方式: less [Option] filename 说明: less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动 以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。范例: 指令名称:ln 使用权限:所有使用者 使用方式:ln [options] source dist,其中 option 的格式为:[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}] [--help] [--version] [--] 说明:Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种:硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。 ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。 不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。-f:链结时先将与 dist 同档名的档案删除-d:允许系统管理者硬链结自己的目录-i:在删除与 dist 同档名的档案时先进行询问-n:在进行软连结时,将 dist 视为一般的档案-s:进行软链结(symbolic link)-v:在连结之前显示其档名-b:将在链结时会被覆写或删除的档案进行备份-S SUFFIX:将备份的档案都加上 SUFFIX 的字尾-V METHOD:指定备份的方式--help:显示辅助说明--version:显示版本 范例:将档案 yy 产生一个 symbolic link:zz ln -s yy zz 将档案 yy 产生一个 hard link:zz ln yy xx 名称:locate 使用权限:所有使用者 使用方式: locate [-q] [-d ] [--database=] locate [-r ] [--regexp=] locate [-qv] [-o ] [--output=] locate [-e ] [-f ] <[-l ] [-c] 

    时间:2019-07-09 关键词: 命令 Linux

  • [VIM]命令笔记

    1、切换到下一个文件假设要切换的文件名为 ne.c:ex ne.c2、文档内复制命令yy   "复制光标所在行。或大写一个Y。 2yy  "复制两行。 y^   "复制至行首,或y0。不含游标所在处字元。 y$   "复制至行尾。含游标所在处字元。(注意跟y^的区别) yw   "复制一个单词(word)。 y2w  "复制两个字(单词)。 yG   "复制至档尾。 y1G  "复制至档首。 p    "小写p,贴至光标后(下)。 P    "大写P,贴至光标前(上)。3、文档间复制命令需要复制到粘贴板a第2条中的命令在后面加一个英文双引号和一个a即可,例如:"ayy   "复制一行 "a3yy  "复制3行 "ap    "粘贴至光标后(下)4、取消高亮查找有使用查找之后,想取消下高亮,我一般用两个方法:使用命令::noh或者搜索一个不存在的字符串5、常用折叠命令zf12G "从光标处折叠到12行 zd      "仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效

    时间:2019-07-08 关键词: 命令

  • 分享一下管理进程的 8 个 Linux 命令

    一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止。如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理。这八个命令可用于管理进程的整个生命周期。启动进程启动进程的最简单方法是在命令行中键入其名称,然后按回车键。如果要启动 Nginx web 服务器,请键入 nginx 。也许您只是想看看其版本。1234alan@workstation:~$ nginx alan@workstation:~$ nginx -vnginx version: nginx/1.14.0查看您的可执行路径以上启动进程的演示是假设可执行文件位于您的可执行路径中。理解这个路径是可靠地启动和管理进程的关键。管理员通常会为他们想要的目的定制这条路径。您可以使用 echo $PATH 查看您的可执行路径。12alan@workstation:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binWHICH使用 which 命令查看可执行文件的完整路径。12alan@workstation:~$ which nginx/opt/nginx/bin/nginx我将使用流行的 web 服务器软件 Nginx 作为我的例子。假设安装了 Nginx。如果执行 which nginx 的命令什么也不返回,那么是找不到 Nginx 了,因为它只搜索您指定的可执行路径。有三种方法可以补救一个进程不能简单地通过名字启动的情况。首先是键入完整路径 —— 虽然,我不情愿输入全部路径,您会吗?12alan@workstation:~$ /home/alan/web/prod/nginx/sbin/nginx -vnginx version: nginx/1.14.0第二个解决方案是将应用程序安装在可执行文件路径中的目录中。然而,这有时可能是办不到的,特别是如果您没有 root 权限。第三个解决方案是更新您的可执行路径环境变量,包括要使用的特定应用程序的安装目录。这个解决方案是与 shell 相关的。例如,Bash 用户需要在他们的 .bashrc 文件中编辑 PATH= 行。1PATH="$HOME/web/prod/nginx/sbin:$PATH"现在,重复您的 echo 和 which 命令或者尝试检查版本。容易多了!12345678alan@workstation:~$ echo $PATH/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin alan@workstation:~$ which nginx/home/alan/web/prod/nginx/sbin/nginx alan@workstation:~$ nginx -v                                                nginx version: nginx/1.14.0保持进程运行NOHUP注销或关闭终端时,进程可能不会继续运行。这种特殊情况可以通过在要使用 nohup 命令放在要运行的命令前面让进程持续运行。此外,附加一个& 符号将会把进程发送到后台,并允许您继续使用终端。例如,假设您想运行 myprogram.sh 。1nohup myprogram.sh &nohup 会返回运行进程的 PID。接下来我会更多地谈论 PID。管理正在运行的进程每个进程都有一个唯一的进程标识号 (PID) 。这个数字是我们用来管理每个进程的。我们还可以使用进程名称,我将在下面演示。有几个命令可以检查正在运行的进程的状态。让我们快速看看这些命令。PS最常见的是 ps 命令。ps 的默认输出是当前终端中运行的进程的简单列表。如下所示,第一列包含 PID。1234alan@workstation:~$ psPID TTY          TIME CMD23989 pts/0    00:00:00 bash24148 pts/0    00:00:00 ps我想看看我之前启动的 Nginx 进程。为此,我告诉 ps 给我展示每一个正在运行的进程(-e)和完整的列表(-f)。12345678910111213141516171819202122alan@workstation:~$ ps -efUID        PID  PPID  C STIME TTY          TIME CMDroot         1     0  0 Aug18 ?        00:00:10 /sbin/init splashroot         2     0  0 Aug18 ?        00:00:00 [kthreadd]root         4     2  0 Aug18 ?        00:00:00 [kworker/0:0H]root         6     2  0 Aug18 ?        00:00:00 [mm_percpu_wq]root         7     2  0 Aug18 ?        00:00:00 [ksoftirqd/0]root         8     2  0 Aug18 ?        00:00:20 [rcu_sched]root         9     2  0 Aug18 ?        00:00:00 [rcu_bh]root        10     2  0 Aug18 ?        00:00:00 [migration/0]root        11     2  0 Aug18 ?        00:00:00 [watchdog/0]root        12     2  0 Aug18 ?        00:00:00 [cpuhp/0]root        13     2  0 Aug18 ?        00:00:00 [cpuhp/1]root        14     2  0 Aug18 ?        00:00:00 [watchdog/1]root        15     2  0 Aug18 ?        00:00:00 [migration/1]root        16     2  0 Aug18 ?        00:00:00 [ksoftirqd/1]alan     20506 20496  0 10:39 pts/0    00:00:00 bashalan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginxalan     20521 20520  0 10:39 ?        00:00:00 nginx: worker processalan     20526 20506  0 10:39 pts/0    00:00:00 man psalan     20536 20526  0 10:39 pts/0    00:00:00 pageralan     20564 20496  0 10:40 pts/1    00:00:00 bash您可以在上面 ps 命令的输出中看到 Nginx 进程。这个命令显示了将近 300 行,但是我在这个例子中缩短了它。可以想象,试图处理 300 行过程信息有点混乱。我们可以将这个输出输送到 grep,过滤一下仅显示 nginx。123alan@workstation:~$ ps -ef |grep nginxalan     20520  1454  0 10:39 ?        00:00:00 nginx: master process nginxalan     20521 20520  0 10:39 ?        00:00:00 nginx: worker process确实更好了。我们可以很快看到,Nginx 有 20520 和 20521 的 PID。PGREPpgrep 命令更加简化单独调用 grep 遇到的问题。123alan@workstation:~$ pgrep nginx2052020521假设您在一个托管环境中,多个用户正在运行几个不同的 Nginx 实例。您可以使用 -u 选项将其他人排除在输出之外。123alan@workstation:~$ pgrep -u alan nginx2052020521PIDOF另一个好用的是 pidof。此命令将检查特定二进制文件的 PID,即使另一个同名进程正在运行。为了建立一个例子,我将我的 Nginx 复制到第二个目录,并以相应的路径前缀启动。在现实生活中,这个实例可能位于不同的位置,例如由不同用户拥有的目录。如果我运行两个 Nginx 实例,则pidof 输出显示它们的所有进程。12345alan@workstation:~$ ps -ef |grep nginxalan     20881  1454  0 11:18 ?        00:00:00 nginx: master process ./nginx -p /home/alan/web/prod/nginxsecalan     20882 20881  0 11:18 ?        00:00:00 nginx: worker processalan     20895  1454  0 11:19 ?        00:00:00 nginx: master process nginxalan     20896 20895  0 11:19 ?        00:00:00 nginx: worker process使用 grep 或 pgrep 将显示 PID 数字,但我们可能无法辨别哪个实例是哪个。12345alan@workstation:~$ pgrep nginx20881208822089520896pidof 命令可用于确定每个特定 Nginx 实例的 PID。12345alan@workstation:~$ pidof /home/alan/web/prod/nginxsec/sbin/nginx20882 20881 alan@workstation:~$ pidof /home/alan/web/prod/nginx/sbin/nginx20896 20895TOPtop 命令已经有很久的历史了,对于查看运行进程的细节和快速识别内存消耗等问题是非常有用的。其默认视图如下所示。12345678910111213141516top - 11:56:28 up 1 day, 13:37,  1 user,  load average: 0.09, 0.04, 0.03Tasks: 292 total,   3 running, 225 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem : 16387132 total, 10854648 free,  1859036 used,  3673448 buff/cacheKiB Swap:        0 total,        0 free,        0 used. 14176540 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND17270 alan      20   0 3930764 247288  98992 R   0.7  1.5   5:58.22 gnome-shell20496 alan      20   0  816144  45416  29844 S   0.5  0.3   0:22.16 gnome-terminal-21110 alan      20   0   41940   3988   3188 R   0.1  0.0   0:00.17 top    1 root      20   0  225564   9416   6768 S   0.0  0.1   0:10.72 systemd    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq    7 root      20   0       0      0      0 S   0.0  0.0   0:00.08 ksoftirqd/0可以通过键入字母 s 和您喜欢的更新秒数来更改更新间隔。为了更容易监控我们的示例 Nginx 进程,我们可以使用 -p 选项并传递 PID 来调用 top。这个输出要干净得多。12345678910111213alan@workstation:~$ top -p20881 -p20882 -p20895 -p20896 Tasks:   4 total,   0 running,   4 sleeping,   0 stopped,   0 zombie%Cpu(s):  2.8 us,  1.3 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st KiB Mem : 16387132 total, 10856008 free,  1857648 used,  3673476 buff/cacheKiB Swap:        0 total,        0 free,        0 used. 14177928 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND20881 alan      20   0   12016    348      0 S   0.0  0.0   0:00.00 nginx20882 alan      20   0   12460   1644    932 S   0.0  0.0   0:00.00 nginx20895 alan      20   0   12016    352      0 S   0.0  0.0   0:00.00 nginx20896 alan      20   0   12460   1628    912 S   0.0  0.0   0:00.00 nginx在管理进程,特别是终止进程时,正确确定 PID 是非常重要。此外,如果以这种方式使用 top,每当这些进程中的一个停止或一个新进程开始时,top 都需要被告知有新的进程。终止进程KILL有趣的是,没有 stop 命令。在 Linux 中,有 kill 命令。kill 用于向进程发送信号。最常用的信号是“终止”(SIGTERM)或“杀死”(SIGKILL)。然而,还有更多。下面是一些例子。完整的列表可以用 kill -L 显示。1234 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR111) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM 注意第 9 号信号是 SIGKILL,通常,我们会发出比如 kill -9 20896 这样的命令。默认信号是 15,这是 SIGTERM。请记住,许多应用程序都有自己的停止方法。Nginx 使用 -s 选项传递信号,如 stop 或 reload。通常,我更喜欢使用应用程序的特定方法来停止操作。然而,我将演示用 kill 命令来停止 Nginx 进程 20896,然后用 pgrep 确认它已经停止。PID 20896 就不再出现。1234567alan@workstation:~$ kill -9 20896 alan@workstation:~$ pgrep nginx20881208822089522123PKILL命令 pkill 类似于 pgrep,因为它可以按名称搜索。这意味着在使用 pkill 时必须非常小心。在我的 Nginx 示例中,如果我只想杀死一个 Nginx 实例,我可能不会选择使用它。我可以将 Nginx 选项 -s stop 传递给特定的实例来消除它,或者我需要使用 grep 来过滤整个 ps 输出。12/home/alan/web/prod/nginx/sbin/nginx -s stop/home/alan/web/prod/nginxsec/sbin/nginx -s stop如果我想使用 pkill,我可以包括 -f 选项,让 pkill 过滤整个命令行参数。这当然也适用于 pgrep。所以,在执行 pkill -f 之前,首先我可以用 pgrep -a 确认一下。12345alan@workstation:~$ pgrep -a nginx20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec20882 nginx: worker process20895 nginx: master process nginx20896 nginx: worker process我也可以用 pgrep -f 缩小我的结果。pkill 使用相同参数会停止该进程。1234alan@workstation:~$ pgrep -f nginxsec20881                                           alan@workstation:~$ pkill -f nginxsecpgrep(尤其是 pkill)要记住的关键点是,您必须始终确保搜索结果准确性,这样您就不会无意中影响到错误的进程。大多数这些命令都有许多命令行选项,所以我总是建议阅读每一个命令的 man 手册页。虽然大多数这些命令都存在于 Linux、Solaris 和 BSD 等平台上,但也有一些不同之处。在命令行工作或编写脚本时,始终测试并随时准备根据需要进行更正。

    时间:2019-01-22 关键词: 命令 Linux

  • 华为交换机维护常用命令分享

    交换机除了能够连接同种类型的网络之外,还可以在不同类型的网络(如以太网和快速以太网)之间起到互连作用。华为交换机日常维护检查有哪些常用的命令?华为交换机都是24小时运行的,日常需要做维护检查,查看设备的基本运行情况需要哪些命令?下面我们就来看看详细的教程,需要的朋友可以参考下请看下文详细介绍。1、查看子卡的运行状态,可以用命令display device。此命令可以查看子卡在位信息及状态信息是否正常。2、查看设备复位情况,可以用命令display reboot-info。3、查看设备温度,可以用命令display temperature all。各模块当前的温度应该在上下限之间,即“Current”的值在“Lower"和“Upper”之间。4、查看设备的告警信息,可以用命令display alarm urgent。如果没有告警就会显示无。5、查看cpu状态,可以用命令display cpu-usage。各模块的CPU占用率正常。如果出现CPU占用率长时间超过80?者频繁出现超过80?情况,建议重点关注。6、查看内存占用情况,可以使用display memory-usage。7、查看日志信息,可以用display logbuffer或者display trapbuffer。这两个命令为会经常用到。相关阅读:交换机工作原理过程交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通讯中,发往该MAC地址的数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。交换机拥有一条很高带竞的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在,广播到所有的端口,接收端口回应后交换机会“学习“新的MAC地址,并把它添加入内部MAC地址表中。使用交换机也可以把网络“分段”,通过对照IP地址表,交换机只允许必要的网络流量通过交换机。通过交换机的过滤和转发,可以有效的减少冲突域,但它不能划分网络层广播,即广播域。

    时间:2019-01-19 关键词: 华为 命令

  • Android:开发常用的命令集锦

    adb get-product (设备型号)adb get-serialno (序列号)等待正在运行的设备: adb wait-for-device端口转发: adb forward adb forward tcp:5555 tcp:1234 (将默认端口TCP 5555转发到1234端口上)查看bug报告: adb bugreportadb shell sqlite3 访问数据库SQLite3 adb shell logcat -b radio 记录无线通讯日志: 一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:应用程序配置文件:"AndroidManifest.xml"中"-----------------------------------------------------------------------------------am指令(在shell内使用am来加载android应用):am [start|instrument]        am start [-a1.android:对你只要输入android就会出来,SDK and AVD manager我们可以更新SDK,增删修改AVD 2.android list avds:这条命令将会列出所有我们创建的android模拟器  3.android list targets:这条命令是列出我们所有的SDK可用版本  4.adb devices:这条命令是列出所有装载的设置  5.adb shell:这条命令是进入设备根目录/,取得对设备的控制权  6.adb install XXX.apk.这条命令是安装apk文件,如果你有多个设备(而你想把apk安装到emulator-5554这个模拟器上)则要输入:adb install -s emulator-5554 D:/XXX.apk.  7.emulator -avd avdname这条命令将启动一个模拟器,初学者学会这条,就不用下次启动模拟器的时候还要打开Eclipse了  8.mksdcard 256M d:/sdcard.img对于模拟器当然要创建sdcard了,这条命令是将在D盘下生成256M的sdcard  9.adb pull我们创建完sdcard以后,要向里面放东西,或者把里面的东西弄出来,就用到以上命令了。以adb push(将sdcard外的东西存放进去.)为例,用法如下:adb push foo.txt /sdcard/foo.txt  10.android create avd --name Android2.0 --target 5这是创建avd 的命令。--name后面就是avd 的名称,target 是SDK的版本。这条语句是创建名称为Android2.0并且版本为5的avd.创建完可以用android list avds。查看是否已经创建成功。  11.ctrl + F11 键的使用当我们启动模拟器的时候,通常是port模式,如果我们想在land下看效果,这个组合按钮就用到啦   //创建Android虚拟设备(AVD) android create avd -n –name –t –target(1、2、3)//ddms(其文件管理功能)创建sdcard mksdcard –l label//启动模拟器 emulator –avd –name//启动具有sdcard的模拟器 emulator –avd –name –sdcard//adb功能太多了,常用的install、uninstall、shell等。 //指定特定设备,发送命令 adb -s//杀死adb服务 adb kill-server//重启adb服务 adb start-server//启动一个activity adb shell am start//发送一个广播 adb shell am broadcast//Monkey测试 adb shell monkey -v -p pkgname millisecond// 生成密钥 keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000//Release下编译 ant release//apk签名 jarsigner -verbose -keystore my-release-key.keystore my_application.apk alias_name // 校验签名 jarsigner -verify -verbose my_application.apk//apk对齐 zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk//apk对齐校验 zipalign -c -v 4 application.apk1.模拟器外观的定制:480x320, landscape: emulator -skin HVGA-L320x480, portrait : emulator -skin HVGA-P (default)320x240, landscape: emulator -skin QVGA-L240x320, portrait : emulator -skin QVGA-P2.为模拟器加上SD卡:emulator -sdcard D:sdcard.img下面我们再来说说如何创建"sdcard.img"文件:“tools”目录下还有另外一个很好用的工具“mksdcard.exe”,一看名字就知道——make sdcard。对,就用它来创建一个“SD卡”。命令为:mksdcard 1024M D:sdcard.imgOK,这样一个容量为1G的SD卡就创建完毕了。使用SDCard:创建: mksdcard<1024m>连接到模拟器: emulator -sdcard 传文件到SDCard: adb push 玩过手机模拟器的人一般最感兴趣的当然是模拟器能做什么呢?下面一一道来:GPhone的模拟器有个特有的号码:15555218135,这个就类似我们实体手机的SIM卡号码啦。要实现拨号,用手机?当然不行!更简单,三步:1.运行 cmd2.连接: telnet localhost 55543.命令:gsm call 15555218135look!是不是模拟器上显示来电了?接听/挂断和实体手机一样。发短信也一样简单,重复上面1,2两步,第三部命令改一下:sms send 15555218135 Hello,this is a Message.来说说PC与模拟器文件传输的方法吧。这里需要用到另一个重要工具,也在“tools”目录下,“adb.exe”。adb:adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机 模拟器 的状态 。还可以进行以下的操作:1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;2、在设备上运行shell命令; 3、管理设备或手机模拟器上的预定端口;4、在设备或手机模拟器上复制或粘贴文件一些常用的操作:进入Shell: adb shell通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:adb shell [command]如:adb shell dmesg会打印出内核的调试信息。(Android的linux shell做了大量精简,很多linux常用指令都不支持)上传文件: adb push安装程序: adb install补充一点,通过adb安装的软件(*.apk)都在"/data/app/"目录下,所以安装时不必制定路径,卸载只需要简单的执行"rm"就行。结束adb: adb kill-server显示android模拟器状态:adb devices (端口信息) am instrument [-e启动浏览器:am start -a android.intent.action.VIEW -d http://www.google.cn/拨打电话:am start -a android.intent.action.CALL -d tel:10086启动google map直接定位到北京:am start -a android.intent.action.VIEW geo:0,0?q=beijing 

    时间:2019-01-04 关键词: Android 命令

  • mysql命令简述

    1、连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:    mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)3、退出MYSQL命令: exit (回车)   2、修改密码 格式:mysqladmin -u用户名 -p旧密码 password 新密码1、给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令    mysqladmin -u root -password ab12注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。2、再将root的密码改为djg345。    mysqladmin -u root -p ab12 password djg345 3、增加新用户 注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:    grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。    grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;如果你不想test2有密码,可以再打一个命令将密码消掉。    grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;   4.1 创建数据库 注意:创建数据库之前要先连接Mysql服务器命令:create database

    时间:2018-12-28 关键词: mysql 命令

  • 想要入门Linux?先把这些都背过

    Linux历史Linux是一套免费使用的类Unix操作系统linux创始人:  林纳斯·托瓦茨UNIX系统是一个多用户,多任务的分时操作系统。vim   vim 是vi的改进版本vi/vim是unix/linux中最基本,最常用,功能最强大的文本编辑器。vi/vim有两种模式:命令模式:键盘上所有输入的字符都当成命令(刚进入vim就是命令模式)输入模式:键盘上所有输入的字符都当成文本内容输入模式-->命令模式: Esc命令模式-->输入模式i:insert 进入输入模式后,光标不动I:insert 进入输入模式后,光标会移动到本行的行首o:open 向下开路。在光标的下一行,新开一行。O:open 向上开路。在光标的上一行,新开一行。a:append 追尾。进入输入模式后,光标向后移动一个字符。A:append 追尾。进入输入模式后,光标移动到行尾。vim的删除与修改命令x:删除光标所在的字符dd:delete删除光标所在的行,同时也有"剪切"的功能ndd:  n表示一个数字,删除光标及以下的n行r:replace 替换光标所在的单个字符R:replace 替换光标及后面的多个字符(按Esc键退出替换)vim退出命令:q (quit)不保存退出(若修改了文件会询问是否保存):q! 不保存强制退出:w (write)保存:w filename 保存内容到指定的路径名filename(另存为):wq 保存并退出:x  保存并退出vim撤销命令u: undovim拷贝和粘贴命令:yy: yanked 把当前行的内容拷贝到剪贴板中去nyy把光标及以下n行的内容粘贴到剪贴板中去p: paste 将剪贴板中的内容贴在光标所在的行的后面P: paste 将剪贴板中的内容贴在光标所在的行的前面vim搜索命令/pattern(模式)eg:  /abcn: 光标跳到下一个搜索结果N:光标跳到上一个搜索结果显示行号:set nu:set nonu 取消行号:行号    光标跳到指定的行:$光标跳到文件的最后一行vim配置文件在主目录下   .vimrcls -avim .vimrcCtrl+z 挂起vim    fg命令返回4.查看Linux说明手册(manual)man  commandname/functionname   完整的手册vim:  shift + K  查看光标所在函数的第一章手册info commandname  额外的帮助文档5,基本的系统维护命令sync 同步,把缓冲区的数据写去文件。shutdown  关机   shutdown -h 0(立即关机)reboot  重启passwd [username] 修改用户密码su  username  切换用户sudo -s  进入root用户exit 退出用户或终端clear 清屏echo "string" 在标准输出上显示文字date 输出当前的日期``反撇号(~键),里面加一个命令,整体表示引用命令的输出结果eg:B=`date`echo $BTAB键: 自动补全命令向上,向下方向键: 调出上一个/下一个命令6,用户管理/etc/passwd :用户信息文件用户名:口令:用户ID(UID):用户组(GID):用户主目录:用户shell/etc/group :用户组的信息文件,在Linux下面是分组来管理用户的组名:口令:GID号:成员列表                                            这里组名是创建这个组的用户(组长)的名字GID是创建这个组的用户(组长)的IDadduser username //创建一个普通用户userdel username //删除一个用户7,进程管理   processps: process status 查看进程的状态信息-e: every 每一个-f: full 全部的ps -ef: 查看每一个进程的全部信息每个进程的信息都保存在一个文件目录中/proc/$PIDtop:以CPU占用率来实时排名进程kill:杀死一个进程kill -9  $PID8,linux文件系统linux文件系统的组织形式 :树状绝对路径:以"/(根目录)"开头的路径,叫做绝对路径相对路径:不以"/(根目录)"开头的路径,叫做相对路径相对路径是以当前路径为参照的,系统查找文件本质上都是以绝对路径来查找的。在查找相对路径时,是把当前目录路径和相对路径合为绝对路径再查找。pwd:显示当前目录路径cd : change directorycd /目录名在每个目录下面都会有两个特殊的隐藏的目录.  :表示当前目录.. :表示上一层目录cd .. 返回上一层目录cd -  返回上一次目录./程序名   运行该程序ls: list status 把某个文件(包含目录)的状态信息给列出来ls  [options]  [文件名/目录]options:-a: all ,把所有的文件都列举出来。在linux下以.开头的文件,视为隐藏文件-l:把文件的详细信息给列举出来eg:-rwxrw-r--    1       gec      gec      40         Feb  16  19:40   test.txt 硬链接数   用户    用户组   文件大小       最后修改时间    文件名第一个字符表示文件类型:- :普通文件(regular file),ASCII文本文件,二进制可执行文件 d :directory 目录(文件夹)b :block 块设备文件c :char 字符设备文件l :link符号链接文件,指向另外一个文件P :pipe 管道文件s :socket套接字文件下面的九个字符rwx表示文件对不同情况下的权限r:read 读的权限w:write写的权限x:excute可执行的权限,对目录可执行,表示可以进入目录分三组:user/group/otherchmod :change mode 改变文件的模式(权限)chmod  权限  文件名权限有两种指定方式:(1)  u/g/o/a+/-  r/w/x(2)  以八进制的形式表示权限位0774rm:remove 移除,删除rm [options] DESTDEST:要删除的目标文件,既可以是普通文件,也可以是目录options:-r :recursive(递归),若DEST是目录文件,必须要用递归删除-f :force(强制)。非交互模式交互模式:在正式删除前会询问用户是否确定要删除非交互模式:不会询问直接删除cp: copycopy [options] SOURCE DESTSOURCE:源文件。既可以是普通文件也可以是目录DEST:目标文件。既可以是普通文件也可以是目录options:-r:recursive(递归)-f:force(强制)。非交互模式mv: move移动 (既可以移动普通文件,也可以移动目录)mv SOURCE DEST把SOURCE移动到DEST中去eg: mv 1.txt ../mv 1.txt 2.txt把1.txt改名为2.txtmkdir:make directory 创建一个目录mkdir  目录名-p:parent 创建目录时,如果父目录不存在,则一并创建rmdir:remove directory 删除一个空目录file:查看一个文件的格式。在UNIX里文件的扩展名不能决定文件的格式。显示文本文件的内容cat 把文本文件的内容全部一次性打印在终端more 分屏显示一个文本文件的内容,按Enter一行一行显示,空格键一屏一屏的显示,q退出less 分屏显示一个文本文件的内容,方向键上/下把内容前后滑动,q退出head -num 显示文件的前num行tail -num 显示文件的末尾num行创建链接文件硬链接    ln      target   link_name软链接    ln  -s  target   link_name文件的压缩和解压缩文件的压缩实质上分为归档和压缩两个过程归档文件:将一组文件或目录打包到一个文件中去tar [options] tarfile  filelist-c  create 创建一个归档文件-f  file  指定归档文件的名字-x  extract 释放一个归档文件压缩文件:将一个文件进行压缩压缩: gzip  xx  ==> xx.gz解压  gunzip xx.gz ==>xx压缩  bzip2 xx ==> xx.bz2解压  bunzip2 xx.bz2 ==> xx我们可以一步完成归档压缩这两个过程tar [options] tarfile  filelist-c create 创建一个归档文件-f file 指定归档文件的名字-v 显示归档或释放的过程信息-x extract 释放一个归档文件-z 由tar生成归档文件,然后由gzip压缩-j 由tar生成归档文件,然后由bzip压缩eg:压缩:tar -zcvf mp3.tar.gz  1.mp3 2.mp3 3.mp3tar -jcvf mp3.tar.bz2 1.mp3 2.mp3 3.mp3解压tar -vxf mp3.tar.gz -C 目标目录tar -vxf mp3.tar.bz2 -C 目标目录

    时间:2018-11-02 关键词: 基础知识 命令 Linux

  • linux文件命令大全 (二上)

    http://linux文件命令大全 (二)一、rename 文件重命名  格式: rename 字符串 更新字符串 文件名  提示:一般使用mv比较简单一些  范例:mv a1 a2 、rename 1 2 a1 、rename a1 a2 a1 功能相同  将所有扩展名是gz的文件改为gzbkrename .gz .gzbk *.gz 想想和 rename .gz .gzbk *.gz rename a0 a1 a*****************************************************************二、cat使用权限:所有使用者提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  使用方式:cat [-option] [file]  说明:显示字串  常用参数:-n输出时给行编号 -b与-n 相似,只不过对于空白行不编号 -s当遇到有连续两行以上的空白行,就代换为一行的空白行提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html范例: cat /etc/passwdcat /etc/passwd |more   如果没有设置参数file,则把从标准输入中读入的文件从标准输出上输出。  例如: cat > 123   这个命令表示先从标准输入读入数据,直到输入结束字符ctrl+d,最后保存为123类似于dos下的 copy con 123提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html如果是 cat f1 > f2 , 则相当于 cp f1 f2如果在f1前加-号 , 如 :cat - f1 > f4  - 的作用是: 这个命令表示从键盘上读入数据,直到输入结束字符ctrl+d上面命令的作用: f4的文件内容=键盘输入内容+f1文件内容***想想 : cat - f1 - > f5 是什么意思 ?用这个命令还可以把多个文件连接在一起(文件合并)。例如:cat a1 a2 > a3cat *.txt > outall.txt 表示把所有的txt后缀的文件按照字母顺序连接起来,然后再写到outall.txt文件里。提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html

    时间:2018-10-29 关键词: 文件 大全 命令 Linux

  • Linux其他命令综合(三)

    http://指令名称 : chown 使用权限 : root (其他用户只能查看 --help)基本使用方法:  1、chown 用户名文件/目录名  2、chown 用户名:所属组文件/目录名  3、chown :所属组文件/目录名  只修改组,所属用户不变,不管它是否是该组用户。  可以加参数: -r 递归处理所有文件和子程序范例:  提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html将目前目录下的所有文件和子目录的所属组设为 jkx01b1 使用者为 test : chown -r test:jkx01b1 *  将/ttt目录给组jkx01b1的同学使用,其它组的人不能使用:# cd /# mkdir ttt# chown :jkx01b1 ttt# chmod 770 ttt  这就是一个所谓组的共享目录了。 ****************************************************************.常用命令练习:  (1)查看当前目录相对于根目录的位置pwd  (2)查看当前目录内容ls 以长格式查看当前目录内容。对应每个文件的条目将包括连接数目、所有者、大小、最后修改时间、权限等内容ls -l ls -la(显示隐藏文件)  (3)改变当前目录。目的目录名可用相对路径表示,也可以用绝对路径表示。cd [目的目录名]转移到上一级目录cd .. 转移到上一级目录  (4)创建目录mkdir [新目录名] 例: mkdir /var/ftp   删除空目录rmdir [目录名] 例:rmdir /var/ftp   (5)递归删除一个目录中的所有文件和该目录本身。rm -r [目录名]   (6)复制文件cp [源文件名] [目标文件名]   重命名文件mv [源文件名] [目标文件名] 例:提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html mv /etc/rc.d/rc3.d/k50xinetd /etc/rc.d/rc3.d/s50xinetd  (7)删除文件  rm [文件名]   不需确认地删除多个文件  rm -f [带通配符的文件名]  (8)硬链接文件。不能对目录文件做硬链接,不能在不同的文件系统之间做硬链接。  ln [源文件名] [目标文件名]   如下面的例子。源文件abc.png存储在/root下,硬链接myabc.png 存储在用户workman的家目录下。  做了这个链接之后,用户root 和workman 就可以使用不同的文件名来读写同一个图形文件。即使root 把  abc.png删除,这个图形文件仍然存在,只有当workman把myabc.png也删除后,这个文件才会彻底从计算机上消失。l  n/root/abc.png /home/workman/myabc.png  (9)软链接文件。也就是符号链接。可用此法创建文件的快捷方式。ln -s [源文件或文件夹名] [目标名]  (10)按文件名查找文件。find / -name nametofind -print  (11)改变文件所有者。例: chown workman.workgroup /data/pub/upload改变文件访问权限例: chmod -r 755 /usr/local/lumaqq   (12)查看一个文件有多少行wc -l usr.bin 查看一个文件有多少字节wc -c usr.bin  (13)查看文本文件的内容cat usr.bin   (14)改变身份。如果不指定用户名,则默认将用户身份换至root。从root身份切换到其他任何身份都不需要口令。su [username]   (15)添加用户例: adduser -c "myw" -d /home/workman -g root workman  (16)设置用户口令例: passwd workmanlinux文件内容查询命令 grep、fgrep和egrep命令  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。  这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。  该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模

    时间:2018-10-22 关键词: 命令 Linux

  • Linux文件查找命令(四上)

    http://find命令  功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。   语法:find 起始目录 寻找条件 操作,提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。  该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:   (1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:  $ find –name ’tmp’ –xtype c -user ’inin’ 该命令寻找三个给定条件都满足的所有文件。  (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。  例如:提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  $ find –name ’tmp’ –o –name ’mina*’  该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。  (3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。  例如:  $ find ! –name ’tmp’  该命令查询文件名不是’tmp’的所有文件。  需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免shell本身对括号引起误解,在话号前需要加转义字符“\”来去除括号的意义。提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  例:$ find (–name ’tmp’ –xtype c -user ’inin’ ) 寻找条件有以下选项:  首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则:  +20 表示20以后(21,22,23等)  -20 表示20以前(19,18,17等)20 表示正好是20  1. 以名称和文件属性查找。  - name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。  - lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[ ]。   -gid n 查找属于id号为n的用户组的所有文件。  -uid n 查找属于id号为n的用户的所有文件。  -group ’字串’ 查找属于用户组名为所给字串的所有的文件。   -user ’字串’ 查找属于用户名为所给字串的所有的文件。  -empty 查找大小为0的目录或文件。提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  -path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。  -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。   -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。  -type x 查找类型为x的文件,x为下列字符之一:  b 块设备文件  c 字符设备文件  d 目录文件   p 命名管道(fifo)   f 普通文件  l 符号链接文件(symbolic links)  s socket文件   -xtype x 与-type基本相同,但只查找符号链接文件。  2. 以时间为条件查找  - amin n 查找n分钟以前被访问过的所有文件。  - atime n 查找n天以前被访问过的所有文件。提供各类arm开发板/开发工具http://edmarket.com.cn/plist-3-855.html  - cmin n 查找n分钟以前文件状态被修改过的所有文件。   - ctime n 查找n天以前文件状态被修改过的所有文件。  - mmin n 查找n分钟以前文件内容被修改过的所有文件。  - mtime n 查找n天以前文件内容被修改过的所有文件。

    时间:2018-10-22 关键词: 文件 命令 Linux

  • 如何来写自己的ls命令

    作者:王姗姗,华清远见嵌入式学院讲师。很多实际证明,最好的学习方法是将相关的知识点应用到具体的例子中。这样我们不仅知道了原理,也学会了怎么应用。在学习文件IO时,我们可以尝试来写ls命令。所以在写ls命令之前,我们必须要明确ls命令能做些什么,然后才能知道要怎么去写ls命令。其实ls的参数选项很多,大多也可以组合使用。我们必须明确实现自己的ls命令不是一步就到位的,要先学会怎样去实现它的基本功能。在这里,我以最简单的 ls –l (特定的文件) 作为例子里给大家分析下如何去写linux的命令。 我们观察终端的打印信息,怎样才能按照特定的格式去输出文件的这些信息?为了完成这个特定的功能我们要完成以下两步: 1.如何获取文件信息 2.如何按格式规则去输出文件信息下面我们来做进一步分析: 第一步,如何来获取文件信息。 在C库中为我们提供了一组函数用来获取文件(普通文件,目录,管道,socket,字符,块)的属性。 它们的函数原型 #include #include #include int stat(const char *path, struct stat *buf); /*提供文件名字,获取文件对应属性。*/ int fstat(int filedes, struct stat *buf); /*通过文件描述符获取文件对应的属性。*/ int lstat(const char *path, struct stat *buf);/* 连接文件描述命,获取文件属性。*/这里要指出的stat和lstat不同点在于对于链接文件,stat显示的是链接文件指向的实际的文件的属性,也就是返回该符号链接引用文件的信息,而lstat显示的是由返回该符号链接的有关信息 参数: path: 文件路径名。 filedes:文件描述词。 buf:是以下结构体的指针,用来描述文件对应的属性 struct stat { dev_t st_dev; /* 文件所在设备的标识 */ ino_t st_ino; /* 文件结点号 */ mode_t st_mode; /* 文件保护模式 */ nlink_t st_nlink; /* 硬连接数 */ uid_t st_uid; /* 文件用户标识 */ gid_t st_gid; /* 文件用户组标识 */ dev_t st_rdev; /* 文件所表示的特殊设备文件的设备标识 */ off_t st_size; /* 总大小,字节为单位 */ blksize_t st_blksize; /* 文件系统的块大小 */ blkcnt_t st_blocks; /* 分配给文件的块的数量,512字节为单元 */ time_t st_atime; /* 最后访问时间 */ time_t st_mtime; /* 最后修改时间 */ time_t st_ctime; /* 最后状态改变时间 */ }; 函数实现如下: #include #include #include #include #include #include #include #include int main(int argc,char *argv[]) { if(argc < 2 ) { printf("commend error!n"); return -1; } int i; struct stat buf; char out[500]; char *p; if (lstat(argv[1],&buf)==-1) { // printf("No such filen"); return -1; } }这个时候我们已经得到了buf这个结构体,从这个结构体中很容易就能写出以下信息,实现起来比较容易://连接数 printf(" %d",buf.st_nlink); // 用户id struct passwd *user; user=getpwuid(buf.st_uid); printf(" %s",user->pw_name); //组id struct group *group; group=getgrgid(buf.st_gid); printf(" %s",group->gr_name); //大小 printf(" %d ",buf.st_size); //时间 struct tm *t; t=localtime(&buf.st_ctime); printf(" %d-%d-%d %d:%d",t->tm_year+1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_sec); printf(" %s",argv[1]);到目前为止,还剩下文件类型,以及对于用户,组,其他用户的读写权限没有解析出来,其实我们所需要的信息已经包含在buf的st_mode中,只要对这个返回的st_mode进行解析就可以得到我们所需要的信息。 先来看看文件的类型,如何对文件类型来判断呢?可以使用掩码来解码得到文件的类型。在中有以下定义: #define S_IFMT 0170000 #define S_IFREG 0100000 #define S_IFDIR 0040000 #define S_IFBLK 0060000 .... 我们如何要判断文件类型是否是普通文件,可以写如下代码: if( (info.st_mode & 0170000) == 0100000) printf("this is a regular file");当然我们也可采取中定义的宏来实现 #define S_ISFIFO(m) ((m) &(0170000) == (0010000)) #define S_ISREG(m) ( (m) & (0170000) == 0100000)) ....所以我们也可以写如下代码: if( S_ISDIR(info.st_mode) ) printf("this is a regular file");现在继续补充刚刚没有写完的程序: if (S_ISREG(buf.st_mode)) p="-"; else if (S_ISDIR(buf.st_mode)) p="r"; else if (S_ISCHR(buf.st_mode)) p="c"; else if (S_ISBLK(buf.st_mode)) p="b"; else if (S_ISFIFO(buf.st_mode)) p="f"; else if (S_ISLNK(buf.st_mode)) p="l"; else if (S_ISSOCK(buf.st_mode)) p="s";还剩下文件对不同用户的权限的描述怎么实现,同理用以上的方式来实现。 int n; for(n=8;n>=0;n--) { if(buf.st_mode&(1<

    时间:2018-10-11 关键词: ls 嵌入式开发 自己的 来写 命令

  • " 用rz、sz命令在Xshell传输文件 "

    用rz、sz命令在Xshell传输文件2014-03-27 14:38:17标签:用rz、sz命令在Xshell传输文件Xshell很好用,然后有时候想在windows和linux之间上传或下载某个文件。有个很简单的方法就是rz,sz命令。首先你的Linux需要安装rz、sz(如果没有安装,请执行以下命令,安装完的请跳过。其它版本linux请自行安装相应软件)yum install lrzsz -y安装完毕即可使用rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具。windows端需要支持ZModem的telnet/ssh客户端(xshell支持,好像putty不支持),SecureCRT就可以用SecureCRT登陆到Unix/Linux主机(telnet或ssh均可)运行命令rz,即是接收文件,xshell就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到linux里的当前目录。运行命令sz file 就是发文件到windows上(保存的目录是可以配置) 比ftp命令方便多了,而且服务器不用再开FTP服务了。更简便的方法是直接拖动文件到Xshell里面,就可以完成上传。

    时间:2018-09-07 关键词: quot 总线与接口 传输文件 rz 命令

  • ISE 10.1提供其他Tcl命令

    除了上一节中介绍的Tcl的脚本管理功能之外,通过ISE 10.x工具的Tcl Shell还可以执行几乎所有的综合、布局布线、仿真,以及参数和设计环境设置等操作。以下介绍一些主要命令。 1.工程管理类(project)该类命令的第1个关键字为“project”°(1)project new <proect_name>:创建一个新的工程。(2)project archive<archive name>:归档整理工程设置工程项目。(3)project clean:清除工程中所创建的设计文件和中间结果。(4)project close:关闭该工程。(5)project get <property_name>:获得工程中的某些信息,例如project get package表示了解工程所使用器件的封装形式。(6)project open<project_/filename>:打开一个工程文件。(7)project save_as <project_filename>:保护工程文件。(8)project set <property_name><property_value>:用来设置设计的参数和属性值。 2.参数设置类所有的参数名称需要用引号来定义,需要通过set命令来调用。例如,project set“powarreducation”true。这些参数如下。(1)“Optimization Goal”{Speed|Area}:优化目标,可选择速度或面积优化策略。(2)“Perform Timing-Driven Packing and Placement”{True|False}:时序驱动的布局设置。(3)“Map Effort Level“{ Standard Medium|High}:映射的努力设置。(4)“Use SmartGuide”{True|False}为对当前的设计工程激活或关闭SmartGuide优化策略。(5)“Pack I/O Registers/Latches into IOBs”{“For Inputs and Outputs”|“For Inputs Only”|“For Outputs Only”|“Off”}:是否将寄存器放入IOB中。(6)“Power Reduction”{True|False}:是否选择功耗优化。(7)“Place&Route Effort Level(Overall)”{ Standt涮|Medium|High}布局布线努力程度设置。 (8)“Generate Post-Place&Route Static Timing Report'’{True|False}:是否生成布局布线后的时序报告。 (9)“Generate Post-Place & Route Simulation Model”{True False}是否生成布局布线后的仿真模型。(10)“Combinatorial Logic Optimization”(True|False}:是否需要组合逻辑优化策略。 (11)“Global Optimization”{True|False}:全局优化控制。 (12)“Retiming”{True False}时序再优化策略选择。 (13)“Register Duplication”{True/ False}:是否选择寄存器复制。 3.执行和实现命令(process) 这些命令的第一个关键字为process。 process run<process_goal>[-instance<instance_name>][-force rerun|rerun all]:例如process run“Implement Design”将完成从综合到时序分析。4.时序分析类命令(timing_analysls) 该命令的第一个关键字为timing_analysis。 (1) timing_analysis disable_constraints<analysis_name> <timing_constraint_specs>:禁止使用约束。 (2)timing_analysis run<analysis_name>:运行时序分析程序。 (3) timing_analysis set constraint<analysis_name><constraint type)(constraint_details>:约束设置。 (4)timing_analysis_show_settings<analysis_name>:观察时序分析的参数设置。5.文件管理(xfile) 用于删除及添加等操作。 (1)xfile add<file name>[-copy][-lib_vhdl<library_name>]: 添加HDL源文件。(2)xfile get<file name>{name|timestamp lib_vhdl):获取文件的信息。(3 )xfile remove<file_name):从工程中移去一个源文件。来源:ks992次

    时间:2018-06-12 关键词: tcl ise 命令

  • 单片机片外程序存储器数据存储器操作命令分析

      单片机片外程序存储器数据存储器操作命令与通常所说的存储器不同,和I2C总线的AT24C02不同,SPI协议的也不同,是指采用专用接口电路,应用P0口P2口地址总线和控制线的“三总线”方式访问的。关于编程的时候,和访问内部程序存储器,数据存储器不同是:1对外部程序存储器,和内部一样,程序不用改。2,.对片外的数据存储器,汇编要用MOVX DPTR 什么的,我也不懂,C语言相关的部分比如:变量关键字:pdata xdata 是片外数据存储器类型。输送的片外数据的寄存器地址也要按实际输送,其他没什么区别。没有说要特意操作特殊寄存器。. 在设计片外程序存储器之前,首先要决定EA引脚的电平。 EA=0,单片机只访问外部程序存储器,对于8031单片机此引脚必须接地.EA=1,单片机访问内部程序存储器,对于内部有程序存储器的8XX51单片机,此引脚应接高电平,但若地址值超过4KB范围,单片机将自动访问外部程序存储器。 设定好EA后,单片机自动按程序所设定的次序执行。 在编程中不需要专门的语句指定调用的是外部程序存储器。比如设定EA接高电平,则程序在执行完片内的程序存储器指令后自动转入片外程序存储器,而无需特殊命令。这就是所谓的程序存储器是片内外统一编址,而数据存储器则用Mov和Movx分别对待的。 但楼主要知道程序在读取片外指令代码时的过程:先寻址,再取数。单片机会根据PC的值先给P2和p0送一个选通地址(PC的值),接下来从片外程序存储器读取代码。因为PC的值一般是连续的,这就要求片外的程序存储器空间要连续分布,这和数据存储器不同。如果不连续分布,就要用特殊的行号改变PC的值,使它和片外程序存储器分布能够对应 总之,记住三总线传递的方式,先寻址,再传数,由控制总线控制 存储器一般都有WR,RD,CS线以及地址端口、数据端口,有些数据地址端口复用,有些分开。看这些存储器的datasheet就会明白如何访问他们内部的数据。例如读出外部ram地址为0x0001里的数据(假设有这个地址),那么就WR置高,CS置低,地址线上输出0x0001,那么CPU的数据线就可以等到需要的数据了,这种情况下CPU的I/O只是做普通的I/O口。但是一般单片机和ARM都能够把I/O选择作为外部存储器的访问口,这时只要根据datasheet里的说明,把相应的线连上,CPU就能够根据你的指令自动在时序上配合,使得访问外部设备就像访问内部ram一样,这样做的好处就是节省CPU时间。 把地址0x0001置为0x55的C语言指令为 (*(unsigned char*)0x0001)=0x55; //(这里假设数据宽度为8bit) 假如I/O口选择的功能是外部数据地址总线,并且硬件上接好,那么这条指令也就是对外部存储器相应地址的读写。 值得一提的是,各种类型的存储器件的访问速度都不一样,因此如果把程序放在外部器件里执行,执行时间就会有比较大的差别,例如一个for循环放在外部ram和外部flash中执行速度可能会差到3倍。 第一,单片机采用三总线结构传递数据。地址总线、数据总线、控制总线。传递数据的过程是先寻址,再传递数据。即先送一个地址信息(由单片机向总线写地址信息),由寄存器(程序存储器或数据存储器)根据这个地址,把微处理器要读取的数据写到总线上,微处理器再读取这个数据。整个过程由控制总线控制。所以每次读的数据是针对那个地址对应的寄存器操作的,不会发生混乱。写数据时一样,先寻址,再写数据,数据就写入刚才寻址时的地址对应的那个寄存器里去了。 第二、程序存储器、数据存储器有不同的选通信号,在一个指令周期里,是不同的时间选通的,所以不会混乱。 第三、选通的引脚不同。拿片外数据存储器来说,是P3的第6和第7引脚做选通信号,程序存储器是PSEN做选通信号,他们接在各自器件的选通引脚上,所以不会混乱。 第四,指令不同。拿汇编指令来说。MOV是程序存储器传递数据用,MOVX是数据存储器传递数据用(对片外而言)。 总之,记住三总线传递的方式,先寻址,再传数,由控制总线控制,这个模式,你就容易理解这个了。 单片机的p2和p0分别传递地址的高八位和低八位。同时p0还传递数据。在时序信号的ALE高电平期间,锁定地址信息。/PSEN是选通程序存储器的。在/PSEN低电平期间是向程序存储器传递程序代码,/WR和/RD是选通数据存储器的,即在/WR和/RD低电平期间把数据传递给数据寄存器。而/PSEN和/WR及/RD是在不同时间变为低电平的,没有重叠的部分。也就是说,当/WR及/RD变成低电平时,/PSEN已经恢复高电平了,由P0口传出的数据信息当然只会传到数据存储器里,因为程序存储器已经不再处于选通状态了!从表面看,都是从p0口传出的,但因为选通器件的时间不同而不会发生混乱。当然我说的是片外程序存储器和数据存储器的的情况,其实对片内也一样,还是三总线的这种控制方式,使它们在不同的时间被选通,而不至于发生冲突。 看看单片机的一个电路图。你会发现p0既跟74LS373连,又跟8155或8255或键盘或数模转换器等连接。而8155或8255或键盘或数模转换器等对单片机而言是当做数据存储器处理的。74LS373连的多半是程序存储器。那么p0送出的信号不是两者都接受了吗?注意看ALE接74LS373的G接口,锁存地址用,PSEN有时用有时不用。WR和RD接数据存储器的选通接口。因为WR和RD跟ALE的信号在时间上没有重叠部分,所以p0的信号不会被程序存储器和数据存储器同时收到。这是一个举例说明,具体情况要具体分析。    

    时间:2018-05-17 关键词: 存储器 单片机 操作 命令

  • Linux 中 grep 命令的超级用法实例

    你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧。 grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum)。 $ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora 我发现使用现实世界中的真实例子让你投身其中是让你接触grep命令的最容易方式。   1.搜索和寻找文件 假设你已经在你的电脑上安装了一个全新的Ubuntu,然后你打算卸载Python。你浏览网页寻找教程,但是你发现存在两个不同版本的Python在使用,而你不知道你的Ubuntu安装器到底在你的系统中安装了哪个版本的Python,也不知道它安装了哪些模块。解决这个烦恼只需简单的运行以下命令: $ sudo dpkg -l | grep -i python 输出例子 ii python2.7 2.7.3-0ubuntu3.4Interactive high-level object-oriented language(version2.7) ii python2.7-minimal2.7.3-0ubuntu3.4Minimal subset of the Python language(version2.7) ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library ii python-pam 0.4.2-12.2ubuntu4APython interfacetothe PAM library 首先,我们运行dpkg -l列出你系统上安装的.deb包。接着,我们使用管道将输出结果传输给命令grep -i python,这一步可以简单解释为把结果传输给grep然后过滤出所有含有python的项,并返回结果。–i选项用于忽略大小写,因为 grep 是大小写敏感的。使用选项-i是个好习惯,除非你打算进行更细节的搜索。 2.搜索和过滤文件 grep还可以在一个或多个文件里用于搜索和过滤。让我们来看一个这样的情景: 你的Apache网页服务器出现了问题,你不得不从许多专业网站里找一个发帖询问。好心回复你的人让你粘贴上来你的/etc/apache2/sites-available/default-ssl文件内容。假如你能移除掉所有的注释行,那么对你,对帮你的人,以及所有阅读该文件的人,不是更容易发现问题吗?你当然可以很容易的做到!只需这样做就可以了: $ sudo grep -v "#" /etc/apache2/sites-available/default-ssl 选项-v是告诉grep命令反转它的输出结果,意思就是不输出匹配的项,做相反的事,打印出所有不匹配的项。这个例子中,有#的是注释行(译注:其实这个命令并不准确,包含“#”的行不全是注释行。关于如何精确匹配注释行,可以了解更多的关于正则表达式的内容。)。 3.找出所有的mp3文件 grep命令对于过滤来自于标准输出的结果非常有用。例如,假设你的一个文件夹里面全是各种格式的音乐文件。你要找出艺术家jayZ的所有mp3格式的音乐文件,里面也不要有任何混合音轨。使用find命令再结合管道使用grep就可以完成这个魔法: $ sudo find . -name ".mp3" | grep -i JayZ | grep -vi "remix"" 在这个例子中,我们使用find命令打印出所有以.mp3为后缀名的文件,接着将其使用管道传递给grep -i过滤和打印出名字为“JayZ”的文件,再使用管道传送给grep -vi以便过滤掉含有“remix”的项。 4.在搜索字符串前面或者后面显示行号 另外两个选项是-A和-B之间的切换,是用以显示匹配的行以及行号,分别控制在字符串前或字符串后显示的行数。Man页给出了更加详细的解释,我发现一个记忆的小窍门:-A=after、-B=before。 $ sudo ifconfig | grep -A 4 etho $ sudo ifconfig | grep -B 2 UP 5.在匹配字符串周围打印出行号 grep命令的-C选项和例4中的很相似,不过打印的并不是在匹配字符串的前面或后面的行,而是打印出两个方向都匹配的行(译注:同上面的记忆窍门一样:-C=center,以此为中心): $ sudo ifconfig | grep -C 2 lo 6.计算匹配项的数目 这个功能类似于将grep输出的结果用管道传送给计数器(wc程序),grep内建的选项可以达到同样的目的: $ sudo ifconfig | grep -c inet6 7.按给定字符串搜索文件中匹配的行号 当你在编译出错时需要调试时,grep命令的-n选项是个非常有用的功能。它能告诉你所搜索的内容在文件的哪一行: $ sudo grep -n "main" setup.py 8.在所有目录里递归的搜索 假若你要在当前文件夹里搜索一个字符串,而当前文件夹里又有很多子目录,你可以指定一个-r选项以便于递归的搜索: $ sudo grep -r “function” * 9.进行精确匹配搜索 传递-w选项给grep命令可以在字符串中进行精确匹配搜索(译注:包含要搜索的单词,而不是通配)。例如,像下面这样输入: $ sudo ifconfig | grep -w “RUNNING” 将打印出含有引号内匹配项的行。另外,你还可以试一下这个: $ sudo ifconfig | grep -w “RUN” 搜索这个匹配项时,若搜索的东西里面没有这样的一个单独的单词,将什么也不会返回。 10.在Gzip压缩文件中搜索 我们还要关注一下grep的衍生应用。第一个是zgrep,这个与zcat很相似,可以用于gzip压缩过的文件。它有与grep相似的命令选项,使用方式也一样: $ sudo zgrep -i error /var/log/syslog.2.gz 11.在文件中匹配正则表达式 egrep是另一个衍生应用,代表着“扩展全局正则表达式”。它可以识别更多的正则表达式元字符,例如at + ? | 和()。在搜索源代码文件时,egrep是一个非常有用的工具,还有其他的一些零碎代码文件的搜索需要,使得这样的搜索能力成为必需。可以在grep命令中使用选项-E来启用它。 $ sudo grep -E [!--empirenews.page--]12.搜索一个固定匹配字符串 fgrep用于在一个文件或文件列表中搜索固定样式的字符串。功能与grep -F同。fgrep的一个通常用法为传递一个含有样式的文件给它: $ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt 这仅仅是grep命令的开始,你可能已经注意到,它对于实现各种各样的需求简直是太有用了。除了这种我们运行的这种只有一行的命令,grep还可以写成cron任务或者自动的shell脚本去执行。保持好奇心,试验一下man页的各个选项,为实现你的目的写出一些grep表达式吧。

    时间:2018-03-19 关键词: grep 超级用法 命令 Linux

  • 智能命令行设计及其在SOPC系统中的应用

    收藏 评论(0) 分享到 微博 QQ 微信 LinkedIn 命令行是计算机系统中最重要的组件之一。它可以帮助开发人员更方便的控制系统。在调试过程中,可以让开发人员随时变更测试方法。 FPGA的成本越来越低,FPGA上的嵌入式系统(SOPC)也应用得越来越广泛。但是相对其他成熟的计算机体系,SOPC系统现在还没有命令行。为了更好的推广SOPC应用,笔者开发了一个智能的命令行模块,可以调用系统中的任意函数,降低了开发人员的使用难度。在最小配置时,它只有大约1000行代码,占用14KB存储容量,可以放在完全由FPGA片内资源构成的计算机系统中。它的结构也具有很好的扩展性,开发人员可以结合自己的需求,轻松添加命令,丰富它的特性。 命令行框架设计 1 总体设计 好的命令行要具有扩展性,开发人员能轻松添加自己的命令;也要傻瓜化,简单易于使用。 为了达到这两个目的,可采用编译器创建的数组作为命令的总索引数据结构。为每条命令创建一个变量,指定它放在一个命令行专用的段中;其中用段“shell_cmd_tab”存放用户主动创建的命令;用段“shell_cmd_tab_auto”存放系统中所有全局函数。创建变量只需调用宏SHELL_CMD_DECL,提供命令名、命令说明和函数名即可。这样就可以实现C语言函数、变量、段、内存区域的自动映射过程。 命令的数据结构如下。 typedef struct _ncommand_t { const char *name; const char *descr; shell_st_call cfunc; } ncommand_t; 为了简化命令的创建,定义下面这个宏来创建命令。 #define SHELL_CMD_DECL(name, usage, func) ncommand_t _shell_cmd_tab_##func _attribute_ ( (section( “.shell_cmd_tab”) ) )={ name, usage, func }; // small memory version 创建命令的实例如下:SHELL_CMD_DECL(“dump”, “Shows a memory dump”, hexdump); 2 连接脚本 在连接脚本里指定段的位置是简化命令行使用流程的关键。GCC使用PROVIDE定义变量。笔者使用PROVIDE定义了各个段的起始地址和结束地址,从而可以在代码中使用段地址查询到所有命令。在编译器使用的连接脚本中添加如下行定义函数表。 .shell : { PROVIDE (__ram_shell_start = ABSOLUTE(.)); . = ALIGN(32 / 8); PROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.)); *(.shell_cmd_tab .shell_cmd_tab.*) PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.)); PROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.)); *(.shell_cmd_tab_auto .shell_cmd_tab_auto.*) PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.)); *(.shell .shell.*) . = ALIGN(32 / 8); PROVIDE (__ram_shell_end = ABSOLUTE(.)); } > ddr_sdram 3 动态函数表创建 由工具自动根据系统中的全局函数创建的命令被称为自动命令。自动命令使用户可以在命令行中调用任意普通函数,即使开发人员没有声明这些函数为命令。自动命令也需要一个数组包含系统中所有全局函数的信息,这个表为动态函数表。使用一个脚本根据系统的可执行文件自动生成动态函数表。要先编译软件,生成可执行文件;再调用脚本创建动态函数表;最后再编译出包含动态函数表的可执行文件。 在脚本中先使用GNU的nm工具从可执行文件导出所有全局符号,再使用grep提取出包括函数名的行,接着使用cut删除函数名前的地址信息,使用sed将字符T替换为创建命令的宏SHELL_CMD_DECL_AUTO,并在行尾添加括号。最后将所有这些信息写入一个C源代码文件,交给编译器编译,就能得到一个动态函数表。 4 自动命令参数个数 为了便于开发人员使用,自动命令最好能适应所有函数类型,假设都是unsigned int的函数类型。对于可以成功转化为unsigned int类型整数的参数,将真实的值传递给函数;对于其他参数,则将参数作为一个字符串传递给函数。 5 字符输入 命令行从标准输入设备中获取字符。命令行只接受可打印的字符和特定的控制字符。如果收到了回车或者换行字符,代表用户完成了命令输入,就解析命令。解析命令前,去掉多余的空格符(0x20),即不允许有连续的两个或多个空格符存在,命令的最后也不能有空格符。 6 参数解析 命令行模块要从用户输入的字符串中解析出命令名和参数。为命令提供与DOS和Linux类似的两个参数,argc和argv。argc表示参数的个数;argv是字符串指针的数组,最多10个字符串。argv[0]是第一个参数,argv[1]是第二个参数,如此类推。 7 函数解析 在代码中使用SHELL_CMD_DECL创建了命令列表,使用工具创建了自动命令列表。这两个表实际上都是数据结构ncommand_t的数组,其中有命令名和函数地址的信息。解析函数实际上就是根据在这两个数组中依次比较函数名。如果用户输入的命令名和数组中的命令名一致,就使用对应的函数地址。 8 命令执行 得到函数地址后,就可以执行命令对应的函数。对于主动创建的命令,使用argc和argv作为参数。对于自动命令,命令行模块先尝试将原始参数转换无符号整数。如果成功,使用无符号整数作为参数;如果不成功,则将原始参数的地址作为参数,实际上是一个字符串。 命令设计 完成总体设计后,就可以逐个添加开发需要的命令了。 ● 帮助命令用于显示所有命令名及其用法。 ● IO命令用来访问输入输出设备的寄存器,可以实现对外部设备的控制。 ● 存储器命令用来显示、修改存储器的值。最基本的包括:dump命令显示指定位置的内存的值;modify命令用来修改指定内存单元的值。 ● 用户在使用过程中,会使用很多命令。能够查询历史命令、循环执行历史命令将给用户带来很多方便。因此笔者实现了三条命令。history_show用来显示所有已经使用了的命令;history_del用来删除指定的历史命令;history_exec用来执行指定的历史命令。[!--empirenews.page--] 优化处理 Altera提供了简化版的输出函数alt_printf来替代printf,降低了嵌入式系统的开销,笔者在命令行中也支持这个这个函数。命令行的代码中,只调用SHELL_PRINT;在头文件中,根据用户设置,SHELL_PRINT使用标准的printf或者简化的alt_printf。如果使用简化的alt_printf,这个命令行占用的内存小于14KB。 在SOPC系统中的应用 Altera为SOPC系统开发提供的集成开发环境NIOS II IDE附带了多个软件实例。在使用这些软件实例时,用户只需要选择模块,完全不用新编代码,非常简单。 智能命令行模块也可以作为NIOS II IDE的一个实例。先在“nios2edsexamplessoftware”目录下为命令行创建一个子目录shell_standard,再以其他软件实例的template.xml为模板创为命令行建一个template.xml文件,然后复制命令行模块的所有文件到这个目录中。这样,用户在创建工程时,直接选中智能命令行模板,就可以使用智能命令行模块了。

    时间:2017-05-23 关键词: 嵌入式开发 智能 命令行 设计 命令

  • 智能命令行在SOPC系统中的设计

    命令行是计算机系统中最重要的组件之一。它可以帮助开发人员更方便的控制系统。在调试过程中,可以让开发人员随时变更测试方法。 FPGA的成本越来越低,FPGA上的嵌入式系统(SOPC)也应用得越来越广泛。但是相对其他成熟的计算机体系,SOPC系统现在还没有命令行。为了更好的推广SOPC应用,笔者开发了一个智能的命令行模块,可以调用系统中的任意函数,降低了开发人员的使用难度。在最小配置时,它只有大约1000行代码,占用14KB存储容量,可以放在完全由FPGA片内资源构成的计算机系统中。它的结构也具有很好的扩展性,开发人员可以结合自己的需求,轻松添加命令,丰富它的特性。 命令行框架设计 1 总体设计 好的命令行要具有扩展性,开发人员能轻松添加自己的命令;也要傻瓜化,简单易于使用。 为了达到这两个目的,可采用编译器创建的数组作为命令的总索引数据结构。为每条命令创建一个变量,指定它放在一个命令行专用的段中;其中用段“shell_cmd_tab”存放用户主动创建的命令;用段“shell_cmd_tab_auto”存放系统中所有全局函数。创建变量只需调用宏SHELL_CMD_DECL,提供命令名、命令说明和函数名即可。这样就可以实现C语言函数、变量、段、内存区域的自动映射过程。 命令的数据结构如下。 typedef struct _ncommand_t { const char *name; const char *descr; shell_st_call cfunc; } ncommand_t; 为了简化命令的创建,定义下面这个宏来创建命令。 #define SHELL_CMD_DECL(name, usage, func) ncommand_t _shell_cmd_tab_##func _attribute_ ( (section( “.shell_cmd_tab”) ) )={ name, usage, func }; // small memory version 创建命令的实例如下:SHELL_CMD_DECL(“dump”, “Shows a memory dump”, hexdump); 2 连接脚本 在连接脚本里指定段的位置是简化命令行使用流程的关键。GCC使用PROVIDE定义变量。笔者使用PROVIDE定义了各个段的起始地址和结束地址,从而可以在代码中使用段地址查询到所有命令。在编译器使用的连接脚本中添加如下行定义函数表。 .shell : { PROVIDE (__ram_shell_start = ABSOLUTE(.)); . = ALIGN(32 / 8); PROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.)); *(.shell_cmd_tab .shell_cmd_tab.*) PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.)); PROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.)); *(.shell_cmd_tab_auto .shell_cmd_tab_auto.*) PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.)); *(.shell .shell.*) . = ALIGN(32 / 8); PROVIDE (__ram_shell_end = ABSOLUTE(.)); } > ddr_sdram3 动态函数表创建 由工具自动根据系统中的全局函数创建的命令被称为自动命令。自动命令使用户可以在命令行中调用任意普通函数,即使开发人员没有声明这些函数为命令。自动命令也需要一个数组包含系统中所有全局函数的信息,这个表为动态函数表。使用一个脚本根据系统的可执行文件自动生成动态函数表。要先编译软件,生成可执行文件;再调用脚本创建动态函数表;最后再编译出包含动态函数表的可执行文件。 在脚本中先使用GNU的nm工具从可执行文件导出所有全局符号,再使用grep提取出包括函数名的行,接着使用cut删除函数名前的地址信息,使用sed将字符T替换为创建命令的宏SHELL_CMD_DECL_AUTO,并在行尾添加括号。最后将所有这些信息写入一个C源代码文件,交给编译器编译,就能得到一个动态函数表。 4 自动命令参数个数 为了便于开发人员使用,自动命令最好能适应所有函数类型,假设都是unsigned int的函数类型。对于可以成功转化为unsigned int类型整数的参数,将真实的值传递给函数;对于其他参数,则将参数作为一个字符串传递给函数。 5 字符输入 命令行从标准输入设备中获取字符。命令行只接受可打印的字符和特定的控制字符。如果收到了回车或者换行字符,代表用户完成了命令输入,就解析命令。解析命令前,去掉多余的空格符(0x20),即不允许有连续的两个或多个空格符存在,命令的最后也不能有空格符。 6 参数解析 命令行模块要从用户输入的字符串中解析出命令名和参数。为命令提供与DOS和Linux类似的两个参数,argc和argv。argc表示参数的个数;argv是字符串指针的数组,最多10个字符串。argv[0]是第一个参数,argv[1]是第二个参数,如此类推。 7 函数解析 在代码中使用SHELL_CMD_DECL创建了命令列表,使用工具创建了自动命令列表。这两个表实际上都是数据结构ncommand_t的数组,其中有命令名和函数地址的信息。解析函数实际上就是根据在这两个数组中依次比较函数名。如果用户输入的命令名和数组中的命令名一致,就使用对应的函数地址。 8 命令执行 得到函数地址后,就可以执行命令对应的函数。对于主动创建的命令,使用argc和argv作为参数。对于自动命令,命令行模块先尝试将原始参数转换无符号整数。如果成功,使用无符号整数作为参数;如果不成功,则将原始参数的地址作为参数,实际上是一个字符串。 命令设计 完成总体设计后,就可以逐个添加开发需要的命令了。 ● 帮助命令用于显示所有命令名及其用法。 ● IO命令用来访问输入输出设备的寄存器,可以实现对外部设备的控制。 ● 存储器命令用来显示、修改存储器的值。最基本的包括:dump命令显示指定位置的内存的值;modify命令用来修改指定内存单元的值。 ● 用户在使用过程中,会使用很多命令。能够查询历史命令、循环执行历史命令将给用户带来很多方便。因此笔者实现了三条命令。history_show用来显示所有已经使用了的命令;history_del用来删除指定的历史命令;history_exec用来执行指定的历史命令。 优化处理 Altera提供了简化版的输出函数alt_printf来替代printf,降低了嵌入式系统的开销,笔者在命令行中也支持这个这个函数。命令行的代码中,只调用SHELL_PRINT;在头文件中,根据用户设置,SHELL_PRINT使用标准的printf或者简化的alt_printf。如果使用简化的alt_printf,这个命令行占用的内存小于14KB。[!--empirenews.page--] 在SOPC系统中的应用 Altera为SOPC系统开发提供的集成开发环境NIOS II IDE附带了多个软件实例。在使用这些软件实例时,用户只需要选择模块,完全不用新编代码,非常简单。 智能命令行模块也可以作为NIOS II IDE的一个实例。先在“nios2edsexamplessoftware”目录下为命令行创建一个子目录shell_standard,再以其他软件实例的template.xml为模板创为命令行建一个template.xml文件,然后复制命令行模块的所有文件到这个目录中。这样,用户在创建工程时,直接选中智能命令行模板,就可以使用智能命令行模块了。

    时间:2017-05-22 关键词: 系统 嵌入式开发 智能 行在 命令

  • Linux命令行大全:移动和重命名文件

    移动和重命名文件 现在passwd这个名字似乎没有那么有趣而我们毕竟是在进行实战演练因此我们给它改个名字 [me@linuxbox playground]$ mv passwd fun 现在传送fun文件这是通过将重命名的文件移动到各个目录然后再移动回当前目录来实现的 [me@linuxbox playground]$ mv fun dir 首先移到目录dir下然后 [me@linuxbox playground]$ mv dir/fun dir 将文件从目录dir移到dir然后 [me@linuxbox playground]$ mv dir/fun 再将文件fun重新移到当前工作目录下下面来看mv命令的效果首先再次将数据文件移到目录dir [me@linuxbox playground]$ mv fun dir 然后将目录dir移到dir并且使用ls命令进行确认 [me@linuxbox playground]$ mv dir dir [me@linuxbox playground]$ ls l dir total drwxrwxrx me me : dir [me@linuxbox playground]$ ls l dir/dir total rwrr me me : fun 注意因为目录dir已经存在mv命令将目录dir移到dir如果dir不存在mv将dir重命名为dir最后我们将所有东西放回原处 [me@linuxbox playground]$ mv dir/dir [me@linuxbox playground]$ mv dir/fun

    时间:2015-06-15 关键词: 命令 Linux

首页  上一页  1 2 3 下一页 尾页
发布文章

技术子站