曾佳明(知乎)Linux教程

第一阶段:常规文件夹及文件管理基础命令

- ls ## list
- pwd ## print working directory
- cd ## change directory
- mkdir ## make directory
- touch ## 创建文本
- mv ## move
- rm ## ReMove
- cp ## copy and paste
- tar ## Tape archive
- ln ## LINK

ls命令的参数

//常见参数
-a:全部的目录,连同隐藏文件夹一起列出来
-h:将目录容量转换为以易读的方式(例如GB,KB等等)
-l:列出目录的详细信息
-S:以文件大小排序
-t:以时间排序
-R:递归目录列出文件
-d:结合目录本身,而非目录下文件

第二阶段:文本文件处理大全

三个配对操作命令

head # 功能:显示文档的开头至标准输出中,默认显示十行
tail # 功能:显示文档的末尾至标准输出中,默认显示十行
less # 功能:逐页查看文档内容
more # 功能:也是逐页查看文档内容,跟less类似
cat # cat命令(concatenate)查看文本,输出到屏幕
tac # tac命令,反向查看,是cat命令的补充

cat命令的参数

-A:显示全部内容,包括特殊字符,可列出一些特殊字符而不是空白而已
-b:列出行号,仅针对非空白行做行号显示,空白行不标记行号
-E:将结尾的断行字符$显示出来
-n:打印出行号,连同空白行也会有行号,与-b的选项不同
-T:将[tab]按键以I显出出来
-V:列出一些看不出来的特殊字符

类似于Excel表格功能的命令

sort # 排序
sort lines of text files 对文件的数据进行排序(默认根据ASCII表升序排列)
cut # 提取列,可以以列(字段)为单位处理数据
wc # 计数
grep # 筛选
uniq # 去冗余
awk # 切割
tr,sed # 替换
cat,paste # 合并,补齐

grep命令的参数

-v ## 逆向匹配
-w ## 匹配上整个words
-B ## 输出匹配行之前的指定的行数
-A ## 输出匹配行之后的指定的行数
-E ## 指定支持扩展表达式
-C ## 对匹配到的行计数
-n ## 输出计数后的一行
-o ## -n形式输出匹配的内容

第三阶段:元字符,通配符及shell中的各种扩展

shell扩展

brace expansion ({})
tilde expansion (~)
parameter and variable expansion
arithmetic expansion
command subsitution
process substitution
word splitting
Filename Expansion ## 通配符扩展

linux shell通配符(wildcard)

* ## 匹配0或多个字符
?## 匹配任意一个字符
[list] ## 匹配list中的任意单一字符
[!list] ## 匹配除list中的任意单一字符
[c1-c2] ## 匹配c1-c2中的任意单一字符,如[0-9][a-z]
{string1,string2,...} ## 匹配string1或string2(或更多)其一字符串

shell元字符(特殊字符Meta)

cd ## 回到用户家目录
cd ~ ## 回到用户家目录
cd - # 回到前个目录
cd .. ## 切换到上层目录,相对路径
cd ../.. ## 切换到上上层目录
cd / ## 切换到根目录
cd /teach/ ## 切换到根目录下的teach,绝对路径

其他shell元字符

IFS ## 由<space>或<tab>或<enter>三者之一组成(我们常用space)
CR ## 由<enter>产生
= ## 设定变量
$ ## 做变量或运算替换(请不要与shell prompt搞混了)
> ## 重导向stdout
< ## 重导向stdin
| ## 命令管线
& ## 重导向file descriptor,或将命令至于背境执行
() ## 将其内的命令置于nested subshell执行,或用于运算或命令替换
{} ## 将其内的命令置于non-named function中执行,或用在变量替换的界定范围
; ## 在前一个命令结束时,而忽略其返回值,继续执行下一个命令
&& ## 在前一个命令结束时,若返回值为true,继续执行下一个命令
|| ## 在前一个命令结束时,若返回值为false,继续执行下一个命令
! ## 执行history列表中的命令

第四阶段:高级目录管理

主要命令类型

alias ## 别名
keyword ## 关键字,Shell保留字
function ## 函数,Shell函数
builtin ## 内建命令,Shell内建命令
file ## 文件,磁盘文件,外部命令
unfound ## 没有找到

linux预设的变量

$SHELL ## 默认Shell
$HOME ## 当前用户家目录
$IFS ## 内部字段分隔符
$LANG ## 默认语言
$PATH ## 默认可执行程序路径
$PWD ## 当前目录
$UID ## 当前用户ID
$USER ## 当前用户
$HISTSIZE ## 历史命令大小,可通过HISTTIMEFORMAT变量设置命令执行时间
$RANDOM ## 随机生成一车0至32767的整数
$HOSTNAME ## 主机名
$0 ## 保存当前程序或脚本的名称
$* ## 保存传递给脚本或进程的所有参数
$$ ## 当前进程给脚本的PID号
$! ## 后台运行的最后一个进程的PID号
$? ## 用于返回上一条命令是否成功执行。如果成功执行,将返回数字0,否则返回非零数字(通常情况下都返回数字1)
$# ## 用于保存脚本的参数个数

绝对路径和相对路径

  • 绝对路径:从根目录/开始,用/隔开的各级目录,例如/home/vip1这个目录
  • 相对路径:目标目录相对于当前目录的位置。主要是活学活用.和..这两个特殊字符

第五阶段:任务提交及批处理,脚本编写

任务提交

sleep 100
# 这个命令提交后系统进入睡眠状态,时间是100秒,它会占用我们的命令行,在输入任何命令也不起作用
# 我么可以用下面的命令,来把任务提交到后台运行,这样我们就可以继续使用命令行
nohup sleep 100 &
# 提交任务后可以通过 ps -ef | grep sleep 来查看后台sleep任务的运行情况
# 也可以提供fg等命令把挂在后台的命令拿回来

批处理的两个语法

for i in {1...1000};do (mkdir -p dir${i});done
echo {1...1000}|tr ' ' '
'| while read id;do (mkdir -p dir${id});done

第六阶段:软件安装及conda管理

写在后面:服务器管理和运维

w/last/top/qsub/condor/apache/socket/IO/ps/who/uid/
磁盘挂载/格式化/重启系统/文件清理/IP查看/网络管理/用户管理/目录结构了解/计划任务/各种库文件
用户组,目录权限管理等等

本文来自博客园,作者:小恒2020,转载请注明原文链接:https://www.cnblogs.com/xiaoheng2020/p/13616206.html

原文地址:https://www.cnblogs.com/xiaoheng2020/p/13616206.html