`

[置顶] Shell常用命令总结

阅读更多


key.test使用

1. 关于某个档名的『类型』侦测(存在与否),如 test -e filename 

-e  该『档名』是否存在?(常用

-f  该『档名』是否为档案(file)(常用

-d  该『文件名』是否为目录(directory)(常用

-b  该『文件名』是否为一个 block device 装置? 

-c  该『文件名』是否为一个 character device 装置? 

-S  该『档名』是否为一个 Socket 档案? 

-p  该『档名』是否为一个 FIFO (pipe) 档案? 

-L  该『档名』是否为一个连结档? 

2. 关于档案的权限侦测,如 test -r filename 

-r  侦测该文件名是否具有『可读』的属性? 

-w  侦测该档名是否具有『可写』的属性? 

-x  侦测该档名是否具有『可执行』的属性? 

-u  侦测该文件名是否具有『SUID』的属性? 

-g  侦测该文件名是否具有『SGID』的属性? 

-k  侦测该文件名是否具有『Sticky bit』的属性? 

-s  侦测该档名是否为『非空白档案』? 

3. 两个档案之间的比较,如: test file1 -nt file2 

-nt  (newer than)判断 file1 是否比 file2 新 

-ot  (older than)判断 file1 是否比 file2 旧 

-ef  判断 file2 与 file2 是否为同一档案,可用在判断 hard link 的判定上。 主要意义在判定,两个档案是否均指向同一个 inode 哩! 

4. 关于两个整数之间的判定,例如 test n1 -eq n2 

-eq  两数值相等 (equal) 

-ne  两数值不等 (not equal) 

-gt  n1 大于 n2 (greater than) 

-lt  n1 小于 n2 (less than) 

-ge  n1 大于等于 n2 (greater than or equal) 

-le  n1 小于等于 n2 (less than or equal) 

5. 判定字符串的数据 

test -z string  判定字符串是否为 ?若 string 为空字符串,则为 true 

test -n string 判定字符串是否非为 ?若 string 为空字符串,则为 false。 注: -n 可省略 

test str1 = str2  判定 str1 是否等于 str2 ,若相等,则回传 true 

test str1 != str2 判定 str1 是否不等于 str2 ,若相等,则回传 false 

6. 多重条件判定,例如: test -r filename -a -x filename 

-a  (and)两状况同时成立!例如 test -r file -a -x file,则 file 同时具有 与 权限时,才回传 true。 

-o  (or)两状况任何一个成立!例如 test -r file -o -x file,则 file 具有 或 权限时,就可回传 true。 

!  反相状态,如 test ! -x file ,当 file 不具有 时,回传 true 

key.sort

sort [-fbMnrtuk] [file or stdin] 

-f  :忽略大小写的差异,例如 与 视为编码相同; 

-b  :忽略最前面的空格符部分; 

-M  :以月份的名字来排序,例如 JAN, DEC 等等的排序方法; 

-n  :使用『纯数字』进行排序(预设是以文字型态来排序的); 

-r  :反向排序; 

-u  :就是 uniq ,相同的数据中,仅出现一行代表; 

-t  :分隔符,预设是 tab 键; 

-k  :以那个区间 (field) 来进行排序的意思,

key.uniq  

如果我排序完成了,想要将重复的资料仅列出一个显示

范例二:如果我还想要知道每个人的登入总次数呢? 

[root@linux ~]# last | cut -d ' ' -f1 | sort | uniq -c 

例子:取HTTPD访问最多的前十个IP

awk '{print $1}' /etc/httpd/logs/access_log |sort|uniq -c|sort -k1 -n -r|head -n10

key.head 

-n10 前十条

key.cut 

-d'分隔字符' -f fields

范例一:将 /etc/passwd 内的第一栏取出,仅取三行,使用 finger 这个指令将每个 

        账号内容秀出来 

[root@linux ~]# cut -d':' -f1 < /etc/passwd |head -n 3| xargs finger 

key.paste

[root@linux ~]# paste [-d] file1 file2 

参数: 

-d  :后面可以接分隔字符。预设是以 [tab] 来分隔的! 

-   :如果 file 部分写成 ,表示来自 standard input 的资料的意思。 

范例一:将 /etc/passwd 与 /etc/shadow 同一行贴在一起 

[root@linux ~]# paste /etc/passwd /etc/shadow 

key.split

[root@linux ~]# split [-bl] file PREFIX 

参数: 

-b  :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等; 

-l  :以行数来进行分割。 

范例一:我的 /etc/termcap 有七百多K,若想要分成 300K 一个档案时? 

[root@linux ~]# cd /tmp; split -b 300k /etc/termcap termcap 

[root@linux tmp]# ls -l termcap* 

-rw-rw-r--  1 root root  307200  8月 17 00:25 termcapaa 

-rw-rw-r--  1 root root  307200  8月 17 00:25 termcapab 

-rw-rw-r--  1 root root  184848  8月 17 00:25 termcapac 

key.join 

[-ti12] file1 file2 

-t  join 预设以空格符分隔数据,并且比对『第一个字段』的数据, 

      如果两个档案相同,则将两笔数据联成一行,且第一个字段放在第一个! 

-i  :忽略大小写的差异; 

-1  :这个是数字的 ,代表『第一个档案要用那个字段来分析』的意思; 

-2  :代表『第二个档案要用那个字段来分析』的意思。 

范例一:用 root 的身份,将 /etc/passwd 与 /etc/shadow 相关数据整合成一栏 

[root@linux ~]# join -t ':' /etc/passwd /etc/shadow 

key.sed

a   :新增, 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~ 

c   :取代, 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行! 

d   :删除,因为是删除啊,所以 后面通常不接任何咚咚; 

i   :插入, 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行); 

p   :打印,亦即将某个选择的数据印出。通常 会与参数 sed -n 一起运作~ 

s   :取代,可以直接进行取代的工作哩!通常这个 的动作可以搭配 

      正规表示法!例如 1,20s/old/new/g 就是啦! 

key.awk 

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

变量名称  代表意义 

NF  每一行 ($0)  拥有的字段总数 

NR  目前 awk  所处理的是『第几行』数据 

FS  目前的分隔字符,预设是空格键 

例子: awk '{if(NR==1) printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} 

NR>=2{total = $2 + $3 + $4 

printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}'

使用正则:awk 'BEGIN {FS=":"} $0~/root/' /etc/passwd 

key.grep 

[-acinv] '搜寻字符串' filename

-a :将 binary 档案以 text 档案的方式搜寻数据 

-c :计算找到 '搜寻字符串的次数 

-i :忽略大小写的不同,所以大小写视为相同 

-n :顺便输出行号 

-v :反向选择,亦即显示出没有 '搜寻字符串内容的那一行!

范例:grep 'root' /var/log/secure (将 /var/log/secure 这个档案中有 root 的那一行秀出来)

key.regular expression正则表达式

^word 待搜寻的字符串(word)在行首! 

范例:grep -n '^#' regular_express.txt  搜寻行首为 开始的那一行! 

word$ 待搜寻的字符串(word)在行尾! 

范例:grep -n '!$' regular_express.txt  将行尾为 的那一行打印出来! 

.  代表『任意一个』字符,一定是一个任意字符! 

范例:grep -n 'e.e' regular_express.txt 

搜寻的字符串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e  与 

中间『一定』仅有一个字符,而空格符也是字符!

\  跳脱字符,将特殊符号的特殊意义去除! 

范例:grep -n \' regular_express.txt  搜寻含有单引号 的那一行!  

重复零个或多个的前一个 RE 字符 

\{n,m\}  连续 到 m  个的『前一个 RE 字符』 

若为 \{n\} 则是连续 个的前一个 RE  字符, 

若是 \{n,\} 则是连续 n  个以上的前一个 RE  字符!  范例:grep -n 'go\{2,3\}g' regular_express.txt 

在 g  与 g  之间有 2  个到 3  个的 o  存在的字符串,亦即 (goog)(gooog) 

[]  1 [list]  范例:grep -n 'g[ld]' regular_express.txt 

2 [ch1-ch2] 范例:grep -n '[0-9]' regular_express.txt 

3 [^]  范例:grep -n 'oo[^t]' regular_express.txt 

扩展正则表达式

+    重复『一个或一个以上』的前一个 RE  字符

?  『零个或一个』的前一个 RE 字符 

|    用或( or )的方式找出数个字符串

()   找出『群组』字符串

fuser  

fuser [-ki] [-signal] file/dir 

-k  :找出使用该档案/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID; 

-i  :必须与 -k 配合,在删除 PID 之前会先询问使用者意愿!

lsof

 [-Uu] [+d] 

-a  :多项数据需要『同时成立』才显示出结果时! 

-U  :仅列出 Unix like 系统的 socket 档案类型; 

-u  :后面接 username,列出该使用者相关程序所开启的档案; 

+d  :后面接目录,亦即找出某个目录底下已经被开启的档案!  

pidof

 [-sx] program_name  

-s  :仅列出一个 PID 而不列出所有的 PID 

-x  :同时列出该 program name 可能的 PPID 那个程序的 PID 

LINUX C总结

gcc 命令参数:

-c   只激活预处理、编译和汇编,生成obj文件;不链接生成可执行文件 

-E   只激活预处理,不生成文件,可重定向到文件里查看

-S   只激活预处理和编译,源文件生成汇编代码 

-o   生成目标文件

-Wall   显示警告信息

-Werror    将警告转换为错误

-O[0,1...]   编译器优化选项

-g              编译时产生调试信息

 -ansi         关闭gnu c中与ansi c不兼容的特性

-pedantic   ANSI/ISO C标准列出的所有警告

-march=i686  指定CPU型号

GCOV

编译增加:gcc -fprofile-arcs -ftest-coverage srcfile.c -o srcfile

gcc  --coverage 也行 可增加-g3 -O0

2:运行一遍

3:运行 gcov srcfile就可以了

gprof

1. gcc -pg srcfile.c -o srcfile

2. 运行程序

3. 执行命令 gprof b ./srcfile

make

目标的(target): 目标文件目标文件

<tab>   gcc -o 欲建立的执行文件 目标文件目标文件 

与 bash shell script 的语法有点不太相同,变量的基本语法为:  

1.  变量与变量内容以『=』隔开,同时两边可以具有空格;  

2.  变量左边不可以有 <tab> ,例如上面范例的第一行 LIBS 左边不可以是 <tab>;  

3.  变量与变量内容在『=』两边不能具有『:』;  

4.  在习惯上,变数最好是以『大写字母』为主;  

5.  运用变量时,以 ${变量或 $(变量使用;  

6.  在该 shell 的环境变量是可以被套用的,例如提到的 CFLAGS 这个变数!  

7.  在指令列模式也可以给予变量。 

•  $@:代表目前的标的(target) 

分享到:
评论

相关推荐

    Linux常用命令全集CHM(非置顶版本)

    今天下载了Linux常用命令全集CHM,发现无论如何它都置顶,处于所有窗口的最上方,搞得我的虚拟机窗口被挡住一大半,用虚拟机时必须把CHM最小化,很不方便,为此破解了这个CHM,方便大家使用,文件内只是在首页增加了...

    Shell十三问-ChinaUnix精华贴整理(pdf)

    - Bash介绍:Bash是最常用的Shell,它是GNU项目的一部分,支持许多高级特性,如历史记录、命令别名、函数等。 2. **变量与数据类型** - 变量声明:在Shell中,变量不需要提前声明,直接赋值即可。 - 数据类型:...

    窗口置顶工具 窗口置顶

    窗口置顶工具是一种实用软件,主要用于帮助用户将指定的窗口设置为始终显示在其他窗口之上,使得该窗口始终保持可见状态,不受其他打开程序的影响。这种功能在多任务处理时非常有用,比如在观看教程视频的同时编写...

    将自己想要的窗口置顶:以Google浏览器为例

    将自己想要的窗口置顶:以Google浏览器为例,将自己想要的窗口置顶:以Google浏览器为例,将自己想要的窗口置顶:以Google浏览器为例,将自己想要的窗口置顶:以Google浏览器为例,将自己想要的窗口置顶:以Google...

    窗口置顶和取消置顶.zip

    在IT领域,窗口置顶和取消置顶是常见的操作需求,尤其对于多任务处理和工作效率提升有着显著的帮助。本资源包含两个`.exe`文件,它们是独立的应用程序,用于实现这一功能。首先,我们需要理解窗口置顶的概念以及如何...

    易语言窗口置顶

    易语言是一种专为中国人...总结来说,“易语言窗口置顶”涉及到易语言的API调用、窗口管理以及用户交互设计。通过学习和实践这部分源码,开发者可以更深入地理解易语言的窗口操作以及Windows API的使用,提高编程技能。

    windows窗口置顶工具.zip

    用户可以通过输入特定命令来使窗口置顶或取消置顶。这种工具虽然界面简洁,但在自动化脚本或批量处理任务中非常有用。 这些窗口置顶工具的工作原理通常是利用Windows操作系统提供的API函数,如SetWindowPos(),来...

    让任意窗口置顶的小工具

    在IT领域,窗口置顶是一种常见的功能,它允许用户将某个特定窗口设置为始终显示在其他窗口之上,以便在处理多个任务或查看重要信息时保持可见。这种小工具通常适用于那些需要频繁参考或操作的程序,例如视频会议、...

    强制窗口置顶

    将需要的窗口置顶显示,在进行多个窗口同时工作的时候很有用

    桌面置顶 小工具

    "桌面置顶小工具"是一种实用的软件工具,它的主要功能是允许用户将任何窗口设置为始终显示在其他窗口之上,即置顶显示。这种工具对于需要同时处理多个任务或者频繁参考某个特定窗口内容的用户来说非常有用。下面将...

    listView 滑动置顶漂浮

    ListView是Android平台上常用的一种列表控件,用于展示大量的数据列表。在开发中,有时我们需要实现一个功能,当用户上滑ListView时,某些特定的条目能够“漂浮”在顶部,即使列表继续滚动,这些条目依然保持可见,...

    窗口置顶小软件

    窗口置顶小软件是一种便捷的桌面工具,主要功能是让用户能够轻松实现窗口的置顶操作。在日常工作中,我们常常需要同时处理多个应用程序,而窗口置顶功能则可以帮助我们将某个重要的窗口始终显示在最前端,避免被其他...

    窗口置顶工具

    窗口置顶工具是一种实用软件,它的主要功能是帮助用户轻松实现电脑屏幕上任意窗口的置顶操作。在日常工作中,我们可能会遇到需要同时处理多个应用程序的情况,此时,将某个窗口始终显示在其他窗口之上就显得非常方便...

    Windows窗口置顶小工具

    在Windows操作系统中,窗口置顶功能是一项非常实用的特性,尤其对于多任务处理的用户来说。Windows窗口置顶小工具正是为了实现这一功能而设计的,它能够让你指定的窗口始终显示在其他窗口之上,方便你在不同的应用...

    SETUNA截图置顶软件

    SETUNA:截图浮动置顶 1、绿色免安装,运行需要.net3.5,首次执行联网自动安装; 2、启动后默认最小化在任务栏,开机自启动; 3、默认ctrl+alt+a快捷键截图,截图后自动置顶显示,双击可以收缩; 4、图标右键“选项...

    【工具】窗口置顶

    窗口置顶工具是一种实用的小程序,它允许用户将指定的窗口设置为始终显示在其他窗口之上,从而在多任务操作时提高工作效率。这种工具尤其适用于需要频繁参考或使用的应用程序,如计算器、记事本或者音乐播放器等。...

    网页局部div随滚动条置顶滚动

    网页局部div随滚动条置顶滚动是一种常见的网页交互设计,常用于新闻网站、电商页面或者任何需要突出显示特定内容的场景。这种效果使得用户在滚动页面时,某个div元素(通常包含重要信息或导航)始终保持在视口顶部,...

    强制置顶工具

    强制置顶工具,倒思制作的。 使用方法先点击需要置顶的窗口,再按F7或F8,一个是置顶,一个是取消置顶。

    使用labview2019置顶其他exe窗口

    总结来说,"使用LabVIEW2019置顶其他exe窗口"涉及到的主要知识点有:LabVIEW编程环境、系统服务VI的使用、VI引用的获取与操作、窗口属性的设置以及错误处理。通过理解这些概念和技术,你可以创建一个能够控制其他...

Global site tag (gtag.js) - Google Analytics