`

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

分享到:
评论

相关推荐

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

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

    windows API常用技巧

    根据给定文件的信息,我们可以总结出以下几个Windows API的实用技巧及其相关知识点: ### 一、拖动无标题窗体 在Windows系统中,通常我们可以通过点击窗口标题栏来进行移动操作。但对于那些没有标题栏的自定义窗口...

    API技巧,几个常用的函数

    AnsiString FileName = "C:\\WINDOWS\\SYSTEM\\SHELL32.DLL"; int TotalIcon = (int)ExtractIcon(Handle, FileName.c_str(), -1); Icon-&gt;Handle = ExtractIcon(Handle, FileName.c_str(), 0); Icon-&gt;SaveToFile...

    【大数据课设】p105出租车数据可视化分析-大数据-实训大作业.zip

    项目资源包含:可运行源码+数据集+文档 python + numpy, pandas, matplotlib, pyecharts, wordcloud 适用人群:学习不同技术领域的小白或进阶学习者;可作为课程设计、大作业、工程实训或初期项目立项。 数据来源:数据集taxis.csv从网络下载 数据清洗:异常值与缺失值的处理:有一些数据distance(乘车距离)为零而且上下车地点为空,还有些一些数据的payment(支付方式)为空。 数据预处理:将列名更改成中文 标准化与归一化: 数据分析: 数据可视化:

    TypeScript 入门教程

    TypeScript 入门教程

    人脸识别_课堂考勤_OpenCV_服务端系统_1741777828.zip

    人脸识别项目实战

    历届电赛试题及综合测评(真题+模拟题)

    本资源汇总了 历届全国电子设计竞赛(电赛)真题+模拟题,涵盖 电路设计、嵌入式系统、信号处理、自动控制等核心考点,并提供详细解析及综合测评,帮助参赛者高效备赛、查漏补缺、提升实战能力。 适用人群: 适合 准备参加电子设计竞赛的大学生、电赛爱好者、电子信息类相关专业的学生,以及希望提高电子设计和电路分析能力的工程师。 能学到什么: 电赛考察重点:熟悉往届竞赛的命题方向及考核重点。 电路设计与仿真:提升模拟电路、数字电路、单片机等核心技能。 问题分析与解决能力:通过综合测评找到薄弱点并针对性提升。 实战经验:掌握竞赛策略,提高应试效率和设计能力。 阅读建议: 建议先 通读真题,了解题型与解题思路,然后 结合模拟题实战演练,查找不足并通过测评强化练习,逐步提升竞赛能力。

    2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

    2024人工智能如何塑造未来产业:AI对各行业组织带来的的变革研究研究报告.pdf

    人脸识别_Golang_SDK_命令行登录_微信小程序应用_1741772240.zip

    人脸识别项目源码实战

    Vulkan原理与实战课程

    给大家分享一套课程——Vulkan原理与实战课程

    SiriYXR_Sokoban11_1741860914.zip

    c语言学习

    海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

    海豚鲸鱼数据集 5435张图 正确识别率可达92.6% 可识别:海豚 虎鲸 蜥蜴 海豹 鲨鱼 龟 支持yolov8格式标注

    答谢中书书教学设计.docx

    答谢中书书教学设计.docx

    人脸识别_环境搭建_dlib_face_recognitio_1741771308.zip

    人脸识别项目源码实战

    网络技术_Web服务器_C语言_学习交流版_1741863251.zip

    c语言学习

    安卓开发_Gradle配置_React_Native_Meg_1741777287.zip

    人脸识别项目源码实战

    人工智能_深度学习_图像识别_UI界面_项目展示.zip

    人脸识别项目实战

    基于Springboot框架的美发门店管理系统的设计与实现(Java项目编程实战+完整源码+毕设文档+sql文件+学习练手好项目).zip

    本美发门店管理系统有管理员和用户两个角色。用户功能有项目预定管理,产品购买管理,会员充值管理,余额查询管理。管理员功能有个人中心,用户管理,美容项目管理,项目类型管理,项目预定管理,产品库存管理,产品购买管理,产品入库管理,会员卡管理,会员充值管理,余额查询管理,产品类型管理,系统管理等。因而具有一定的实用性。 本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得美发门店管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高美发门店管理系统管理效率。 关键词:美发门店管理系统;SSM框架;MYSQL数据库;Spring Boot 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1 MYSQL数据库 2 2.2 B/S结构 3 2.3 Spring Boot框架简介 4 3系统分析 4 3.1可行性分析 4 3.1.1技术可行性 4 3.1.2经济可行性 5 3.1.3操作可行性 5 3.2系

    Python实现基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档介绍了基于SSA-CNN-GRU麻雀算法优化卷积门控循环单元数据分类预测的详细项目实例,重点讲述了该项目的背景、目标、挑战与解决方案、技术特点、应用领域等方面的内容。文档详细记录了从项目启动、数据预处理、算法设计(SSA优化CNN-GRU模型)、构建与评估模型到实现美观的GUI界面整个过程,并讨论了防止过拟合的技术如正则化、早停和超参数优化。另外还涵盖了项目扩展的可能性、部署和应用策略、需要注意的地方以及未来改进的方向。全文强调了模型的泛化能力和计算效率,展示了该混合算法模型在实际应用中的优越性能。 适合人群:具备一定的Python编程经验及机器学习基础知识的研究人员和技术人员;对深度学习、智能优化算法及实际应用感兴趣的学者和从业者;寻求提升数据分析和预测准确性的金融分析师、数据科学家等相关专业人士。 使用场景及目标:本文档非常适合用作学习和参考资料,以掌握如何将SSA、CNN与GRU三种先进技术结合起来进行复杂的分类和预测问题求解。具体应用场景包括但不限于以下几个方面:金融领域——股票价格预测;医疗保健领域——辅助诊断;工业制造——预防性维护;智能家居——个性化服务;以及其他涉及到时序数据分析和多模态数据处理的场合。文档既包含了理论知识又提供了完整的源代码示例,可以帮助读者理解算法原理并通过实践中加深对其的认识。 其他说明:该项目不仅仅是关于算法的设计实现,更是有关于系统的整体架构规划以及工程上的考量,比如环境准备(确保环境洁净、必要包的安装等)、数据准备、GPU配置支持等等。同时文中给出了详细的代码片段,方便开发者理解和复现实验成果。值得注意的是,虽然文中提供了一套通用解决方案,但在真实场景下还需要针对性的调整参数或修改网络结构来达到最好的性能效果。此外,对于追求更高的预测精度或解决更大规模的问题,作者建议进一步探索深度强化学习等高级技术和多任务学习策略,并且考虑使用增量学习让模型能够适应新数据而不必重新训练整个模型。最后提到安全性和隐私保护也是项目实施过程中的重要因素,要妥善保管用户的敏感信息并且做到合法合规地收集和使用数据。

    人脸识别_T形分布_Gabor变换_特征提取_增强鲁棒性_1741777397.zip

    人脸识别项目实战

Global site tag (gtag.js) - Google Analytics