linux脚本一般放在哪个目录,linux 脚本判断一个目录不存在

2023-05-16

linux 脚本判断一个目录不存在

#!/bin/sh

`test -d ~/booo`

stat=$?

if [ $stat -eq 1 ]

then `mkdir ~/booo`

fi

if [ ! -d /mnt/u ]; then

mkdir -p /mnt/u

[[ -d /mnt/u ]]&&mkdir /mnt/u

mkdir /mnt/u 2>/dev/null

反正它自己会判断目录是否存在。[ -d /mnt/u ] || mkdir /mnt/u

liyihongcug 发表于 2010-07-19 19:43

经常考的一些linux脚本/管理命令总结

时间:2009-11-18 13:12:45  来源:Linux联盟  作者:

awk #对字段的处理是sed,grep不能实现的。

awk -F , 'NR==1,NR==2 {print $1 $2}' file, 打印第一行到第二行中,以‘,’为分隔符,每行第一,二个字段的值。

print可以改为printf,不过后者不输出换行符。NR:已经读出的记录数,NF:当前记录中的字段个数。

awk '/main/' file or awk '/sun/{print}' filename #显示文件中包含main的行。

sed #替换s,删除d,插入i(a),修改c,截取显示: sed -n '2,6p' file

#echo "a b c a" | sed 's/a/d/g' ,注意有没有g的差别。

#sed -n '2,3p' file,只显示第2,3行,去掉-n试试,sed 默认将来自源文件的每一行显示到屏幕上。-n就是用来覆盖这个操作的。

#sed '/main/ d' file #从文件中删除包含main的行。sed '1,3 d' file,删除前三行。

#sed '1i shit' file, sed '1a shit' file,前者是插入在第i行,后者是在第i行后插入。

tr #删除空行:tr -s ["n"] < file,小写转大写:tr ["a-z"] ["A-Z"] < file,删除字符‘a’:tr -d ["a"] < file

grep

sort #sort -t: +1 -2 b (-r倒序输出) (-u输出唯一行),-t: 表示用:作为分隔符,+1,-2:指定字段作为key,从0开始.

find

#find path -name filename;

# find path -type x;

-type x 查找类型为 x 的文件,x 为下列字符之一:

b 块设备文件

c 字符设备文件

d 目录文件

p 命名管道(FIFO)

f 普通文件

l 符号链接文件(symbolic links)

s socket文件

-xtype x 与 -type 基本相同,但只查找符号链接文件。

# find ./code -type f -exec ls -il {} ;

#exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个,最后是一个分号。

#在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

#find ./code -type f -print | xargs file

wc#wc -lcw filename, l:统计行数,c:统计字节数,w:统计字数

uniq #对相邻行操作;-d 仅显示重复行;-u 仅显示不重复的行;因为它只能处理相邻行,所以一般跟sort配合。

cut #从一个文本文件或者文本流提取数据.

cut -f 1-2 -d: filename #编号从1开始

-d: 以:作为分隔符,默认是tab.

-b ,-c ,-f:字节byte,字符character,字段filed.

1-2,表示范围.N:只有第N项;N-:从第N项一直到行尾;N-M:第N项到第M项(包括M);-M:从第一项到第M项;-:所有项;

cat/tac #cat与tac显示顺序相反

tee #cmd1 | tee file1...N | cmd2, 命令1的输出送给tee,tee 的输出送给file1...N,并且作为命令2的输入。

tail/head #head -3 file,tail -3 file,显示前三行,后三行

eval#eval cmd[;cmd;cmd],把参数作为命令去执行

expr #expr args,比如,a=`expr $b+1`

let #let express-list, 比如,let "a=b+c"

xargs #将输入输出给xargs后面的命令,作为那个命令的参数。

正则表达式

colrm #命令从文件中除去选定的列。colrm [开始行数编号]。colrm 2 5 < filename

rev #把字符串反序。

[sword@localhost ~]$ temp=/home/sword

[sword@localhost ~]$ basename $temp

sword

[sword@localhost ~]$ dirname $temp

/home

[sword@localhost ~]$ basename /home/sword.c .c

sword

ls

joindu#(disk   usage):显示目录或文件的大小。

mail # mail -s "标题" [email]filwsyl@gmail.com[/email] < 文件名。

tar / gzip #归档和压缩。我一度认为它俩是一个意思。

#tar cvf ***.tar 等待打包的文件。 tar xvf ***.tar,恢复文件。c(create) 产生归档文件,x恢复归档文件。

tar xvzf ***.tgz -C /tmp;解压缩到/tmp这个文件夹下面。

date

useradd/userdel/usermod

groupadd/groupdel

echo

sleep

crontab/crond

fg %n       #使n号作业成为前台作业。 apue p.223

bg

stty tostop #禁止后台作业输出到控制终端 apue p224

file #判断一个文件是二进制文件,c/c++文件,普通文件等。

lpr,lpq,lprm #印机文件

whereis #查询系统上是否存在特定的一个命令,如果有相应的帮助文档,也会相应地输出。

which #如果系统中一个命令有多个版本,它告诉你当输入某个命令执行时,shell到底调用了哪个版本的命令。

history/fc#显示或操作历史命令列表。

变量声明:

declare/typeset #声明,初始化变量,设置变量属性,查询相关变量。

local -a array_name #local命令只能在函数中声明变量。

readonly -a array_name #带-a选项的readonly命令用来声明只读数组变量。

declare -a array_name

[sword@localhost ~]$ moves=("shit" "fuck" [20]="mother fucking")

[sword@localhost ~]$ echo ${moves[0]}

shit

[sword@localhost ~]$ echo ${moves[1]}

fuck

[sword@localhost ~]$ echo ${moves[2]}

[sword@localhost ~]$ echo ${moves[20]}

mother fucking

ln #ln -s pathOfSourceFile pathOfObjectFile

ps#显示进程的状态,ps -aux | grep "XXX"

kill #kill -l 返回所有信号的号码以及对应的名字。

pstree #用图的形式显示当前系统中执行进程的进程树,勾勒出进程间的父子关系。

ifconfig #修改网卡地址 service network restart

hostname #显示主机名

whoami #我是哪个账户?

uname #显示系统信息,uname -r 显示内核版本

source #使得刚修改过的系统配置文件生效

read    #从标准输入设备读入

shift #shit [N],把命令行参数向左移动N个位置,默认移动一个位置。

set # set $(date),$1~$9被设置为输出。

here文件 #bash的here文件特性可以将脚本中命令的标准输入重定向到脚本中的数据,这个特性主要用来显示菜单。

trap #trap ['命令列表'] [信号列表],bash 中断处理的命令。

exec #1.执行命令or程序取代当前进程。2.打开or关闭文件描述符,与重定向符号一起使用时,允许读写文件。

bash -xv debug_file #脚本调试

top #实时显示正在运行的进程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux脚本一般放在哪个目录,linux 脚本判断一个目录不存在 的相关文章

  • Apache 端口转发 80 到 8080 并访问 Apache (80) 中托管的应用程序,即 phpMyadmin 和 Tomcat (8080)

    我想访问托管在 tomcat 服务器 8080 中的应用程序 myapp 当前可以通过以下方式访问http example com 8080 myapp http example com 8080 myapp in http example
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • bash while 循环的布尔表达式中的 -lt 意味着什么?

    我猜测它代表小于基于输出 但是我在哪里可以找到有关此语法的文档 bin bash COUNTER 0 while COUNTER lt 10 do echo The counter is COUNTER let COUNTER COUNTE
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了

随机推荐