安全重启:
按住alt+<PrtSc>
,然后依次按下reisub即可安全重启。
语法
条件判断
if elif else
判断某环境变量是否存在
上面的文章好像写反了
例子:判断环境变量DISPLAY是否存在(若不存在说明没有提供显示设备)
或者
表示如果$DISPLAY不存在
字符串比较
大小判断
代码 | 含义 | 例子 |
-eq | = | |
-ne | != | |
-le | <= | |
-lt | < | |
-ge | >= | |
-gt | > | |
-a | && | |
-o | || | |
-z | 为空 | |
-n | 非空 | |
其中-eq
和-ne
可以分别用=
和!=
替换。
如果想像C语言那样进行条件判断,可以使用[[]]
。
例如下面这两句都表示如果参数的个数等于0或者大于2
判断文件类型
来源:https://jingyan.baidu.com/article/95c9d20d5ac536ec4e7561ad.html
函数
参考:https://www.runoob.com/linux/linux-shell-func.html
定义
其中function
可以省略,也可以不return。
参数用法与脚本类似。($#
表个数,$1, $9, ${10}
表具体参数)
使用
循环
while
参考:https://wiki.jikexueyuan.com/project/shell-tutorial/shell-while-loop.html
或者
也可以对命令返回值取反,比如
for
注意是双括号。
还有其他用法。看参考链接
按应用
crontab
启动
按功能
查看磁盘占用情况
以默认应用打开文件
按照十六进制查看文件
查看命令执行时间
去重
例如txt中有
执行以下命令
输出
输出到文件
查看8进制文件权限
参考:http://novell.me/Linux/201410/stat-get-file-permission-with-octal-numb.html
监视某命令的执行结果
Interval: 执行间隔,以秒为单位
查看group里的用户
加入某用户到某group
获取精确到纳秒的当前时间
时间戳
把stderr和stdout都重定向到一个文件
以另一用户的身份执行命令
查看端口占用情况
参考:https://jingyan.baidu.com/article/656db9183861cde381249c87.html
查看8236端口的占用情况。无输出表示没有被占用。
查看发行版信息
我的输出:
清空命令历史记录
参考:https://zhidao.baidu.com/question/1495253179240949419.html
创建临时文件
便会在/tmp
下创建一个文件并把文件名输出到stdout。
示例:
使用ImageMagick将多个jpg转换为A4大小的PDF
如果不想限定高度,可以
按命令
du
- 查看当前目录下所有文件夹的大小
-h
是--human-readable
的缩写。
- 查看当前目录的大小
-s
是--summarize
的缩写。
参考:https://jingyan.baidu.com/article/ca2d939d7867e0eb6c31ce80.html
pidof 进程名
返回某进程名对应的pid
例子:
杀掉所有名字为ssh-agent的进程
ip
查看本机ip地址
dpkg
显示当前已经安装的软件
grep
查找当前目录下有某字符串的文件:
-r:递归查找
-n:显示行号
-i:忽略大小写
*:当前目录所有文件。可以换成某个文件名。
find
例子
- 在当前目录下找到所有名字为input.txt的文件并将其放入回收站
其中{}替代查找到的文件,”;”是-exec的结束符
- 在当前目录下不区分大小写地找以Edition.pdf结尾的文件
- 在根目录下查找名字为gsettings的文件或文件夹,但是忽略目录/mnt和/media
这些都不对,不知道为什么
locate
查找文件(文件夹)
sed
保护链接
sed -i
会破坏符号链接和硬链接。
sed --follow-symlinks -i
保护软链接,但是不保护硬链接。
sed -i -c
会保护符号链接和硬链接(但是我的sed没有这个选项,可能只有新版本才有)。
把文件中的CRLF替换成LF
-i指直接修改文件,而不是把修改结果输出到stdout。
模式可以分解为
其中s是指替换,g是全局替换,/是分隔符。总体的意思是把\r替换成空字符串,也就是删掉\r(也就是CR)。
把文件中的LF替换成CRLF
$
的意思是每行的末尾。在每行的末尾把空字符串替换成\r(CR),也就是插入\r(CR)。在linux中换行是LF,所以相当于在LF前面插入一个CR,变成CRLF。
保留每行的最后一个单词
正则表达式里,点.
几乎可以匹配任何字符,所以.*
会尽量匹配尽量长的字符串。.*空格
表示最长的以空格结尾的字符串。s/.* //g
表示把每行的最长的以空格结尾的字符串删掉。所以每行只留下了最后一个单词了。
也可从stdin读取。
例:获取git版本号
在每个单词前插入
\b
: 单词边界
&
: 前面匹配的字符串
其他
linux中怎么用shell显示文件某一行或几行内容