`

[置顶] 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)

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

    易语言窗口置顶

    易语言窗口置顶源码,窗口置顶,GetForegroundWindow,SetWindowPos

    强制置顶工具

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

    Snipaste 屏幕截图 取色软件 屏幕置顶

    屏幕置顶Snipaste 是一款简单强大的截图取色软件 屏幕置顶Snipaste 是一款简单强大的截图取色软件 屏幕置顶Snipaste 是一款简单强大的截图取色软件 屏幕置顶Snipaste 是一款简单强大的截图取色软件 屏幕置顶Snipaste...

    窗口置顶工具 2021

    亲测,绝对好用的窗口置顶工具!!(本人一直在用) 上班、娱乐,方便快捷!!

    DIY记事本可以置顶

    可以置顶 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    vc对其进程的窗口置顶、取消置顶操作;拖拽消息DROPFILES封装及发送给其他进程

    vs2010实现对其进程的窗口置顶、取消置顶操作;实现DROPFILES消息封装并发送给其他进程。 注:1.一个pid获取到的是多个窗口句柄,操作的要是主窗口句柄;2.可以配合spy++看获取到的句柄是否正确;

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

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

    窗口置顶和取消置顶.zip

    两个exe文件,下载后把每个右键快捷方式发送到桌面,找到桌面上的图标,分别右键属性找到快捷键给这俩设置快捷键,比如置顶F7,取消置顶F8(win7下正常使用)

    SETUNA截图置顶软件

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

    java界面置顶显示文字

    java界面,窗口置顶,没有标题栏,没有最小化,没有最大化,没有关闭,可以拖动,显示文字。

    让任意窗口置顶的小工具

    一个可以让任意窗口置顶,方便操作。快捷键可以随意设置的。

    Windows窗体置顶 C#/wpf编程

    在项目开发中,希望窗体一直处于置顶状态,使用该Demo可方便实现这个功能。

    TopWindows应用程序窗口一键置顶工具V1.0.47.6官方免费版

    Top_Windows应用程序窗口一键置顶工具是一款使用AutoHotKey开发的窗口置顶工具,使用可以把任意一个窗口设置为顶层窗口,使其不会被其它非置顶的窗口遮盖。永远保持在最上方,支持使用快捷键,可取消置顶,使用简单、...

    窗口置顶器,超好用

    窗口置顶器,很好用的说,可以用来边工作边看视频之类的消遣

    置顶、精华,20种经典图标文件包

    置顶、精华,20种经典图标文件包,网页常用置顶、精华,系统程序常用置顶、精华图标,20种类型,任挑任选,绝对给力!

    窗口置顶助手Delphi版

    窗口置顶助手可以把某个窗口置顶,对着置顶窗口查看信息或在置顶窗口记笔记,可提高工作效率。类似于Spy++的查找窗口的功能,本程序增加在找到窗口后,可以把该窗口置为顶层窗口。开发语言:Delphi10.2.3,适用于...

Global site tag (gtag.js) - Google Analytics