
Linux shell
文章平均质量分 73
本专栏不是系统性的shell学习,只是记录在使用shell的过程中经常遇到的需求
R-QWERT
这个作者很懒,什么都没留下…
展开
-
Linux shell:/bin/bash和/bin/sh解释器的误用引起的脚本语法错误
GNU/Linux 操作系统中的 /bin/sh 是 bash(Bourne-Again Shell)的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash(Debian Almquist Shell) https://wiki.ubuntu.com/DashAsBinSh ,并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。下面的脚本,在Linux上运行良好,在SUNOS执行的时候报语法错误。一番折腾之后,是脚本解释器的问题.转载 2024-07-14 12:25:36 · 469 阅读 · 0 评论 -
Linux:进程信息/proc/pid/status的深入分析
这里我们主要介绍进程的状态,进程的状态可以通过/proc/PID/status来查看,也可以通过/proc/PID/stat来查看.如果说到工具大家用的最多的ps也可以看到进程的信息.这里我们通过/proc/PID/status来分析进程的信息.在2.6.18之后的内核,多了capibilty/cpusets等信息.转载 2024-05-30 23:32:30 · 2166 阅读 · 0 评论 -
Linux shell:查看线程运行状态的几种方法
在调试程序时需要查看各个线程的状态,方便定位问题。转载 2023-08-07 15:42:47 · 994 阅读 · 0 评论 -
Linux shell:fsck命令使用方法
fsck(file system check)命令作用为检查文件系统并尝试修复错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。注:千万不能在运行的系统上面直接执行fsck,特别是RHEL6.0以下ext3的文件系统 否则100%损坏根文件系统,使用fsck -y /dev/sdb1 修复磁盘时,必须先将sdb1分区umount掉。命令格式:fsck [-aANPrRsTV] [ -t ] [文件系统…]命令参数:-a 自动修复文件系统,不询问任何问题。转载 2023-03-12 21:57:45 · 625 阅读 · 0 评论 -
Linux shell:dd命令的使用
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2参数注释:if=文件名:输入文件名,缺省为标准输入。即指定源文件。of=文件名:输出文件名,缺省为标准输出。即指定目的文件。ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。转载 2023-02-19 23:58:52 · 848 阅读 · 0 评论 -
Linux shell:grep命令查找多个字符串(grep同时匹配多个关键字或任意关键字)
前言 grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl-compatible 。当没有指定正则表达式类型时,grep 命令将搜索模式默认为基本正则表达式。 要搜索多个匹配模式,可以使用 OR ( alternation ) 运算符。我们可以用 OR 运算符 |( pipe )指定不同的匹配项,这些匹配项可以是文本字符串,也可以是表达式集。值得注意的是,在所有正则表达式运算符中,这个运算符的优先级是最低的。 使用 grep 命令基本正则表达式搜索多个匹配模式的语法如下:转载 2022-03-06 16:50:58 · 12919 阅读 · 0 评论 -
Linux:查看和修改系统时区
对于部署在海外的Linux服务器来说,拿到的机器时区和本地并不一样,导致运行在上面的应用也面临时区问题。所以有必要修改系统本地时区。1. 查看时区查看当前生效的时区,可以简单的通过date命令查看当前时间:[root@shuai01 zoneinfo]# date -RTue, 17 Jan 2017 21:36:23 +0800最后的+0800,即东8区。2. 设置时区然并卵的tzselect命令看起来很像一个时区选择的工具,但并非如此。事实上tzselect仅仅是一个查看时区表示方转载 2021-09-07 21:13:54 · 721 阅读 · 0 评论 -
Linux shell:free命令的使用说明
Linux free命令使用 摘要: free命令用以显示当前系统内存使用情况,其数据取自/proc/meminfo文件。本文第一部分为free命令及参数(源自linux man手册)、第二部分展示常见命令free -m各字段含义,第三部分解释free命令数据来源。 一、free命令及相关参数 1.1、命令描述 free - 显示系统已用及空余物理内存量、交换分区使用情况(swap memory)、内核占用的缓存、及共享内存。其命令形式为 free + options(可多个参...转载 2021-08-31 23:04:33 · 7610 阅读 · 0 评论 -
Linux shell:echo N > /proc/sys/vm/drop_caches清理缓存
echo N>/proc/sys/vm/drop_caches清理缓存 引言:在内核窗口—proc文件系统这篇笔记中,我们介绍了/proc主要体现进程及内核信息状态。与/proc下其它文件的“只读”属性不同的是,管理员可对/proc/sys子目录的许多文件内容进行修改,以更改内核的运行特性。写入操作一般类似于 echo DATA >/path/to/your/filename的格式进行。这里以echo N>/proc/sys/vm/drop_caches为例介绍说明。 ...转载 2021-08-31 22:55:36 · 9523 阅读 · 0 评论 -
Linux shell:使用pushd和popd切换路径
其实,很早就知道pushd和popd在linux中可以用来方便地在多个目录之间切换。那时比较浮躁,感觉切换目录没必要这么复杂。在实际中,发现通过使用pushd和popd能够极大地提高效率。0、使用cd -进行目录切换一般,Shell中都可以通过cd -命令回到之前的目录,下面是一个例子:$ pwd/home/lfqy$ cd /$ cd -/home/lfqy$ 实际上,cd -中,-就相当于变量$OLDPWD。cd -就相当于cd $OLDPWD。下面是一个例子:$ pwd/hom转载 2021-08-31 22:29:30 · 989 阅读 · 0 评论 -
Linux shell:嵌入式调试之devmem命令
原文地址:https://www.veryarm.com/44366.html在Linux开发中着实用到的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够侦测内存地址中的数据变化,以此来检测驱动中对内存或者相关配置的正确性验证。http://blog.youkuaiyun.com/hens007/article/details/7268447这个工具的原理也比较简单,就是应用程序通过mmap函数实现对/dev/mem驱动中mmap方法的使用,映射了设备的内存到用户空间,实现对这些物理地址的转载 2021-08-31 22:01:11 · 3653 阅读 · 0 评论 -
Linux shell:set命令的使用
我们在使用操作系统的时候,会了解到系统中的 set 命令的主要作用或者说是大部分作用就是显示系统中已经存在的 shell 变量,以及设置 shell 变量的新变量值。使用 set 更改 shell 特性时,符号+和-的作用分别是关闭和打开指定的模式。set 命令不能够定义新的 shell变量,如果要定义新的变量,可以使用 declare 命令以变量名 = 值的格式进行定义即可。命令选项选项含义解释-a标示已修改的变量,以供输出至环境变量-b使被中止的后台程序立刻回报执行转载 2021-05-08 10:47:09 · 2260 阅读 · 0 评论 -
Linux shell:eval命令的使用
eval可以读取一连串的参数,然后按照参数特性来执行。参数数目不限,彼此之间用分号隔开。eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。eval 执行以下两个步骤:第一步,执行变量替换,类似与C语言的宏替代;第二步,执行替换后的命令串。下面来看几个例子:1、执行含有带字符串的命转载 2021-04-18 18:08:40 · 1901 阅读 · 0 评论 -
Linux shell:tee命令的使用方法介绍
1、命令帮助信息linrm@linrm-VirtualBox:~$ tee --help用法:tee [选项]... [文件]...将标准输入复制到每个指定文件,并显示到标准输出。 -a, --append 内容追加到给定的文件而非覆盖 -i, --ignore-interrupts 忽略中断信号 --help 显示此帮助信息并退出 --version 显示版本信息并退出如果文件指定为"-",则将原创 2021-04-14 10:38:51 · 867 阅读 · 0 评论 -
Linux shell:awk命令使用详解
1、简介awk与grep、sed命令一样都是以行为单位读取文本的,默认以空格或Tab键为分隔符,将分割所得的各个字段保存到内建变量中供后续使用。命令格式:awk [选项] '命令' 文件名选项说明:-F fs or --field-separator fs:相当于内建变量“FS”,指定分割符为fs,默认为空格或Tab制表符;-f scripfile or --file scriptfile:从文件中读取awk指令,用来代替命令行中输入的命令;-v var=value or --asign原创 2021-04-10 10:50:41 · 721 阅读 · 0 评论 -
Linux shell:sed命令使用详解
1、用法sed [OPTION]... {script-only-if-no-other-script} [input-file]...2、选项说明常见选项-n, --quiet, --silent:仅显示处理后的结果;-e script, --expression=script:以选项中的script作为输入的文本文件;-f script-file, --file=script-file:以选项中的script文件来处理输入的文本文件,与“-e”参数不同的是一个是表达式一个是文件,可以把原创 2021-04-09 18:43:54 · 1007 阅读 · 0 评论 -
linux:ntpdate和ntpd的区别以及配置使用
ntpd、ntpdate的区别使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,他还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间转载 2021-04-07 10:07:25 · 1301 阅读 · 0 评论 -
Linux:使用ntpdate命令同步更新系统时间
1、安装ntpdateyum install ntpdate -y转者注:以Ubuntu为例的Debian系统安装命令如下apt-get install ntpdate。ntpdate简单用法:# ntpdate ip# ntpdate cn.pool.ntp.org 2、date命令date :查看当前时间,结果如下:Tue Mar 4 01:36:45 CST 2014date -s 09:38:40 :设置当前时间,结果如下:Tue Mar 4 09:38:40 CST 2014转载 2021-04-06 20:07:54 · 9269 阅读 · 0 评论 -
Linux:crontab 定时任务
在Linux下我们用crontab来实现定期执行脚本。查看crontab 输入命令:cat /etc/crontab crontab -u //设定特定用户的定时服务 crontab -l //列出当前用户定时服务内容 crontab -r //删除当前用户的定时服务 crontab -e //编辑当前用户的定时服务在设定编辑之前都建议...转载 2021-04-06 16:47:12 · 378 阅读 · 0 评论 -
Linux shell:trap命令使用简介
1、添加信号捕获用法:trap [-lp] [[参数] 信号声明 …]可以捕捉Linux进程的信号、也可以捕捉shell脚本运行过程的信号;信号处理可以单纯打印信息、也可以调用函数处理;支持多次修改同一个信号捕捉等等…示例1: 打印信息#!/bin/bashecho 'I am testing the "trap" command...'# Capture "Ctrl + c"trap 'echo "You have press Ctrl-c"' SIGINTwhile true;d原创 2021-03-02 23:21:46 · 4548 阅读 · 0 评论 -
Linux shell:软/硬链接文件区别与制作(ln命令)
1、软链接 也称符号链接,类似于Windows上的快捷方式,使用cat、vi命令时打开的查看的是同一个文件内容。软链接文件的属性是777,但这不是源文件的属性,访问时仍然是依据源文件的属性来使用。 软链接文件的大小是所创建时源文件的文件路径字符长度,打开链接时相当于打开软链接文件所保存的源文件路径。所以为保证可以移动到其他目录使用,创建软链接文件时最好使用绝对路径。ln -s 源文件名 链接文件名2、硬链接 硬链接相当于复制一份源文件,但文件是同步的,用stat可以查看是相同的inod原创 2020-04-08 23:04:57 · 1770 阅读 · 0 评论 -
Linux shell:脚本编写快速入门
形式1:使用function关键字定义# cmd... }形式2:与C语言类似# cmd... }/bin/bashfunc(){func。原创 2021-02-06 16:47:11 · 2461 阅读 · 1 评论 -
Linux shell:查看文件内容的几个常用命令(cat/tac/more/less/head/tail)
cat适用场景:查看小型文件常用命令:cat file.txt # 查看文件cat -n file.txt # 查看并显示行号cat -b file.txt # 与-n类似,但对空行不编号cat -s file.txt # 将连续的空行“压缩”成1行cat file1.txt file2.txt > file3.txt # 将file1.txt和file2.txt合并到file3.txttac适用场景:查看小型文件,是“cat”原创 2021-01-27 20:17:39 · 3918 阅读 · 0 评论 -
Linux shell:批量替换文件内容和批量重命名文件
1、批量替换指定多个文件的文件内容在指定目录/your/path里,查找包含old_string字符串的所有文件,并用new_string字符串替换old_string字符串。sed -i "s/old_string/new_string/g" `grep old_string -rl /your/path`2、批量修改指定多个文件的文件名在指定的路径/your/path下,查找以old_name字符串开头的所有文件,并以new_string替换掉old_string字符串。find /yo转载 2021-01-27 16:38:23 · 1663 阅读 · 0 评论 -
Linux shell:echo显示彩色字体
shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数“-e”开启反斜杠转义。格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如:echo -e "\033[41;36m something here \033[0m"其中41的位置代表底色,36的位置是代表字的颜色。注:字背景颜色和文字颜色之间是英文的""文字颜色后面有个m字符串前后可以没有空格,如果有的话,输出也是同样有空格下面是对应的字和背景颜色,可以自己来尝试找出不同转载 2020-12-28 22:22:18 · 641 阅读 · 0 评论 -
Linux:diff制作补丁及patch打补丁(文件与文件夹2种方式)
单个文件方式制作补丁:diff -u old_file new_file > xxx.patch打补丁:patch -p0 < xxx.patch 或 patch -p0 old_file xxx.patch卸补丁:patch -RE -p0 < xxx.patch文件夹方式制作补丁:diff -urN old_dir new_dir > xxx.patch打补丁:patch -p1 < …/xxx.patch卸补丁:patch -R -p1 < …/xxx原创 2020-08-20 11:49:31 · 1724 阅读 · 0 评论 -
Linux:压缩与解压命令大全(tar、gz、bz2、Z、zip、rar、lha、rpm、deb)
tartar xvf FileName.tar # 解包tar cvf FileName.tar DirName # 仅打包,无压缩功能.gzgunzip FileName.gz # 解压1gzip -d FileName.gz # 解压2gzip FileName # 压缩(小文件).tar.gz 和 .tgztar zxvf FileName.tar.gz # 解压tar zcvf FileName.tar.gz DirName转载 2020-08-19 09:18:01 · 369 阅读 · 0 评论 -
Linux:常用的shell命令(cd/ls/pwd/rm/mv/cp/cat/find/grep/tar...)及记忆方法
pwd打印当前所在路径(print working directory)命令说明pwd打印当前路径cd切换路径(change directory)命令说明cd xxx切换到目录xxxcd ~切换到当前用户的家目录cd .切换到当前路径cd . .切换到上一级路径cd . ./. .切换到上上级路径(在linux中路径分隔符为斜杠/)cd -切换到上一次的路径ls列出目录内容(list)ls [选项原创 2020-04-08 20:59:49 · 1014 阅读 · 0 评论 -
Linux shell:判断变量是否包含某个字符串的几种方法
方法一:利用grep查找strA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else echo "不包含"fi先打印长字符串,然后在长字符串中 grep 查找要搜索的字符串,用变量result记录结果,如果结果不为空,说明strA包含strB。如果结果为空,说明不包含。这个方法充分利用了grep 的特性,最为简洁。转载 2020-10-29 09:25:17 · 44385 阅读 · 1 评论 -
Linux shell:rename命令批量重命名文件
修改单个文件修改文件名可以用mv命令来实现:mv filename1 filename2批量修改如果批量修改还是使用rename命令更为方便,现在我们有a b c d 四个文件。增加后缀:rename 's/$/\.txt/' *a.txt b.txt c.txt d.txt修改后缀:rename 's/\.txt/\.dat/' *a.dat b.dat c.dat d.dat删除后缀:rename 's/\.dat//' *a b c d批量修改: 比如将a改转载 2020-10-27 15:15:30 · 14093 阅读 · 0 评论 -
Linux shell:如何理解shell中的“2>&1”
前言有时候我们常看到类似这样的脚本调用:./test.sh > log.txt 2>&1这里的2>&1是什么意思?该如何理解?先说结论:上面的调用表明将./test.sh的输出重定向到log.txt文件中,同时将标准错误也重定向到log.txt文件中。有何妙用(如果已经明白是什么作用,可跳过此小节)上面到底是什么意思呢?我们来看下面的例子,假如有脚本test.sh:转载 2020-07-22 15:27:07 · 358 阅读 · 0 评论 -
Linux shell:脚本判断进程是否正在运行
1、命令命令说明ps aux | grep 进程名 | grep -v grep进程存在则输出信息,不存在则没输出ps -ef | grep 进程名 | grep -v grep | wc -l进程存在则输出行数(也就是数量),不存在则输出0其中以上两者输出的不同是由于后者加上了wc命令用于计算,这里-l计算行数。除此之外,ps的参数aux和-ef的区别就在于显示进程的风格(aux是BSD风格,而-ef是System V风格)和信息不同(COMMADN列如果过长,aux原创 2020-06-02 19:39:44 · 12020 阅读 · 1 评论 -
Linux shell:脚本读取文件内容赋给变量的三种方式
前段时间用到读取配置文件的相关信息,搜索到一些比较好的方法,整理一下作为笔记方便以后查看。先假设现在有一个配置文件net.config,内容如下:ID=123IP=192.168.1.1Name=test现在我们可以通过以下三种脚本读取它的内容或赋给我们的变量:方法①:利用sed解析文本,提取配置信息id=`sed '/^ID=/!d;s/.*=//' net.config` ip=`sed '/^IP=/!d;s/.*=//' net.config` name=`sed '/^Na翻译 2020-06-02 10:18:39 · 17713 阅读 · 3 评论