目录
1.bash
1.1作业控制
[进程名 + &] 程序将启动,且放弃控制终端,即该进程后台运行。
这样即使关闭终端,进程仍会继续运行,而不会被中断。
[ctrl + z] 可以将一个正在前台执行的命令放到后台,并且暂停
[jobs] 查看当前有多少在后台运行的命令
[fg number] fg(foreground)将进程号number的进程转到前台
number是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
[bg number] bg(background)将进程号number的进程转到后台,
1.2 环境变量
[printenv] 列出所有的环境变量
[printenv variable] variable是环境变量名,查看某一环境变量
[variable=value] 修改环境变量的值,只在当前shell中(局部的)成立,不要有空格
[export variable=value] 将shell变量输出为环境变量(应用于之后创建的进程中)
或者将shell函数输出为环境变量
[unset variable] 移除环境变量
1.3管道机制
[ | ]符号 程序的输出作为输入发送给另一个程序
常用与[grep ]命令组合 对于某个文本,grep 匹配关键字所在的行作为显示
如:printenv | grep TEAM 将只显示TEAM关键字所在的行
1.4重定向
所谓重定向就是重新定义输出的方向(目的地),重定向有3类:输出到文件、附加到文件和发送文件作为输入。
1.4.1 输出到文件 > 符
如:ls > /tmp/directory_listing 输出目录到/tmp/directory_list文件中
1.4.2 附加到文件 >> 符
如:echo "Directory listing" >> /tmp/directory_listing 在/tmp/directory_listing文件末尾追加“Directory listing"字符
1.4.3使用文件作为输入 < 符
如:grep ”root“ < /etc/passwd 将/etc/passwd文件传送给grep程序。
注意:< 符是从后向前传送。
2.shell快捷键
2.1通配符
通配符与正则表达式不同,只用来做文件名的匹配,它由shell解析,如比如find,ls,cp,mv命令。
通配符 | 含义 | 示例 |
---|---|---|
* | 匹配 0 或多个字符 | a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。 |
? | 匹配任意一个字符 | a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。 |
[list] | 匹配 list 中的任意单一字符 | a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。 |
[!list]或[^list] | 匹配 除list 中的任意单一字符 | a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] | a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b... a9b. |
[!c1-c2]或[^c1-c2] | 匹配不在c1-c2的任意字符 | a[!0-9]b 如acb adb |
{string1, string2, ....} | 匹配 sring1 或 string2 (或更多)其一字符串 | a{abc,xyz,123}b 列出aabcb,axyzb,a123b |
如:ls *.txt命令将列出以.txt 结尾的文件
转义,使用\将使得通配符失去特殊意义,如:ls \*.txt 仅仅列出*.txt这一个文件。
2.2环境变量作为参数 $ 符
$环境变量,可以引用环境变量的值
如:echo SHLVL 显示字符串”SHLVL“
echo $SHLVL 显示环境变量SHLVL的值”1“
2.3多个命令
使用;符分隔命令,一行可以执行多个命令。
如: ls -l
cat /etc/passwd
可以代替为:ls -l ; cat /etc/passwd
使用&& 符分隔命令,按照编程的逻辑与执行。
如:ls does-not-exist.txt && date 如果ls命令执行失败,后面的date命令就不会执行。
2.4反引号
在linux中单引号‘’,双引号”“,其中包含的内容都会被当作字符串处理,区别是双引号会解析特殊字符,如果想要忽略特殊字符,那么需要用到 \
转义字符,而单引号不会解析特殊字符。
反引号用来处理命令,反引号在将括号内的命令处理完毕之后,会将返回的信息传给bash,再次执行。
如:cat test.txt
/home/adins/snap/ 在test.txt文件中存储一个路径
执行:cd `cat /tmp/test/test.txt` , 会先执行cat /tmp/test/test.txt得到结果返回,再执行cd命令切换目录。
3.文档工具
Linux提供两个访问文档的工具:man和info。Info格式较优于man格式,但man格式存在了几十年,许多程序只支持man格式。
3.1man命令
[man program_name] program_name是程序的名字, 如:man ls
文档手册一般分为几部分(节) ,常见的1(标准命令、可执行程序),2(linux内核系统调用),3(C 库调用)等。
直接使用命令打开的一般是第一节(标准命令、可执行程序),如:man ls打开 ls(1)
想要引用其他部分可以在程序名前加上序号,如:man 3 printf,man 1 printf。
使用man -f 可以搜索手册所有节的摘要信息和节号,如:man -f printf
注:按q键退出手册
3.2texinfo系统
是一种类似于超链接万维网格式的文档系统
[info program_name] 如:info wget
注:按q键退出手册
4.文件
4.1文件类型
- 普通文件
- 目录
- 硬链接
- 符号链接
- 块设备
- 字符设备
4.2所有权和权限管理
4.2.1列出文件:ls
ls选项 | 说明 |
---|---|
-l | 长清单,显示文件大小、日期、权限、所有权和组信息 |
-a | 所有文件。包括隐藏文件 |
-R | 递归列出所有文件和子目录 |
-t | 按最后修改时间的顺序列出文件 |
4.2.2更改所有权:chown
chown [-R] username filename 将文件名filename的所有权更改为用户username。
当filename为目录时使用 -R 选项,将目录及目录下所有文件的所有权更改。
4.2.3更改组设置:chgrp
chgrp [-R] groupname filename 将文件名filename的所在组更改为用户groupname。
-R 选项指定目录
4.2.4更改模式:chmod
权限:-rwx-rwx-rwx- 分别对应所有者、组、其他人的读、写、运行权限。
常见的二进制对应:
字母 | 权限 | 值 |
---|---|---|
--- | 无权限 | 0 |
r-- | 只读 | 4 |
rw- | 读、写 | 6 |
rwx | 读、写、执行 | 7 |
r-x | 读、执行 | 5 |
--x | 仅执行 | 1 |
八进制权限:chmod [-R] numeric filename 如:chmod 700 FOO
符号形式权限:chmod [-R] chars filenam 如: chmod ug+x, o-rwx foobar.sh
chars代表符号组合:
- 所有者、组、其他人对应u、g、o;a 对应所有人
- + 代表赋予权力,- 代表收回权力,= 也是赋值权力,与+、-的区别是:+、-中未涉及的权限不变,而=中为涉及的权力会被擦除。
- r、w、x分别代表读、写、执行
4.3文件管理
4.3.1复制文件: copy
cp [-f/-i/-R/-r] 源文件 目标文件 如: cp foo.txt foo.txt.html
选项 | 说明 |
---|---|
-f | 强制执行复制操作,不需要验证 |
-i | 交互式复制,在复制文件前,需要用户确认验证 |
-R,-r | 递归复制目录 |
注:覆盖同名文件时,使用-i选项,会有警告提示,需要确认才能继续复制。
4.3.2移动文件:mv
mv [-f/-i] 源文件 目标目录 如:mv /tmp/foo.txt.html . 这里 . 代表当前目录。
选项 | 说明 |
---|---|
-f | 强制执行移动操作 |
-i | 交互式移动 |
4.3.3链接文件:ln
ln original_file new_file
ln 命令的常用选项 -s 创建符号链接(类似于快捷方式),如: ln -s foo.txt link-to-foo.txt
4.3.4查找文件:find
find start_directory [options] start_directory是搜索开始的目录,find的选项非常多,请查看参考手册。
如:find . -name core 查找当前目录中名为的core的文件
4.3.5文件打包与压缩:xz、zip、unzip、tar
打包跟压缩的区别:
打包是指将多个文件或者目录放在一起,形成一个总的包,这样便于保存和传输,但是大小是没有变化的,压缩是指将一个或者多个大文件或者目录通过压缩算法使文件的体积变小以达到压缩的目的,可以节省存储空间,在压缩的时候通常是先打包再压缩;
xz:
压缩:xz filename 就地解压,不保留源文件
解压:xz --keep -d filename --keep选项使得解压后,原压缩文件还在。
注:使用方式相同(直接压缩和-d解压)的还有gzip、bzip2,后缀为gz和bz2,xz的后缀为xz
zip:
zip [参数] [压缩包名] [压缩的目录或者文件的路径]
-m 将文件压缩后,删除原文件
-r 递归压缩,将自定目录下的所有子文件以及文件一起处理
uzip:
unzip [参数] [压缩文件] (-d [目录])
//如果不是用括号里面的内容,则解压文件在当前工作目录
tar:
tar [option] filename
-z 是否同时具有gz属性
-j 是否同时具有bz2属性
-J 是否同时具有xz属性
-x 解压缩、提取打包的内容
-t 查看压缩包内容
-c 建立一个压缩,打包文档
-v 显示压缩或者打包的内容
-f 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边
通常:压缩:tar -cf 目标文件名 原文件 如:tar -cf junk.tar junk
解压:tar -xf 目标文件名 如: tar -xf junk.tar
4.3.6创建目录:mkdir
mkdir 目录名
-p 选项通常指定当父目录不存在时,强制创建父目录。
4.3.7删除文件或目录:rm
rm [option] filename
注 :也可以使用流行的rmdir删除目录
4.3.8显示当前工作目录:pwd
4.3.9连接和显示文件:cat
cat filename 显示文本文件的内容
注:cat filename1 filename2 显示filename1和filename2的内容。
4.3.10一次一屏的显示文件:more或less
接收输入文件,如 : more /etc/passwd 或 less /etc/passwd
more阅读结束会回到shell,less阅读结束需要按q退出。
接受命令的输出,如:ls | more
4.3.11显示文件的目录位置:which
which 查找可执行文件名称,找到后返回文件所在路径。
如:which rm
注:并非是过滤整个文件系统,只查找环境变量中PATH中指定的目录。
4.3.12定位命令:whereis
搜索PATH和MANPATH(man手册所在路径)环境变量中指定的位置,并显示程序位置、源文件位置和命令手册位置。
如: whereis grep