🗒️Linux基础
type
status
date
slug
summary
tags
category
icon
password
✅一些Linux基础知识。简单记录,方便回顾。
基础
- 系统变量: PATH:搜索命令的路径。 HOME:当前用户的主目录。 PS1:你的提示符设定。 SHELL设置登录shell的路径。 TERM设置你的登录终端的类型。 TMOUT:用于Shell内建命令read的默认超时时间。 HISTSIZE:记录在命令历史中的命令数。
- 变量定义:字母/下划线开头,大小写敏感
- 变量赋值引用:a=3;b=$a;echo $b
- 输出: ①var=shell;printf "%4.2s-%4.1s\n" $var(.n表示字符个数) %x16进制 %e浮点数 ②echo “is $var”或echo -e “is $var\t”(-e:激活转义字符)
- 变量引用:”$var”单引号不能引用变量
- 删除变量:unset var
- 检测变量是否存在: ${var? bcz}或${var:? bcz}
- 回调命令历史: ①↑↓ ②ctrl+r ③history
- 大括号扩展: ①echo a{b,c}e输出abe,ace ②echo {a..z}输出a ... z
- 创建使用别名:~/.bashrc中alias var=’df -h’ 删除别名:unalias var
常用命令
- ls扫描目录: ①ls -l ②时间倒序:ls -ltr ③文件大小:ls -ls ④所有文件:ls -la
- cat显示文件内容: ①显示序号(-b不显示空行):cat -n file ②he开头:cat *he ③.sh结尾:cat *.sh
- less\more分屏显示文: ①翻页查看(每页n行):more (-n) file ②more *.sh翻页查看.sh结尾 ③less支持前后翻页,不需要提前加载所有速度更快,能指出pageup和down,可以单行滚动。 ④退出q/ZZ,跳至开头g,跳至末尾G
- head显示文件头部: ①前x行:head -n x file或head -x file ②除最后x行外所有行:head -n -x file ③前x个字节数据:-c x,-c -x:除…
- tail显示文件尾部: ①最后x行:head -n x file ②head -x file ③除前x行外所有行:head -n +x file ④最后x字节:head -c num file ⑤实时监控:head -f -n x file ⑥每3秒更新最后x行:-f -s 3 -n x file
- file查看文件类型: ①file name ②格式和编码:file -b name
- wc查看统计信息: ①行-l,单词-w,字符数-c ②文件个数:ls -l | grep “^-” | wc -l ③文件总个数:ls -lR | grep “^-” | wc -l ④目录个数:ls -l | grep “^d” | wc -l
- find查找文件: ①搜索/etc下是否存在group文件名的文件find /etc -name group ②根目录下查找名为etc的目录find / -type d -name etc ③文件名以.sh结尾的所有文件find / -type f -name “*.sh” ④所有空文件find / -type -f -empty ⑤所有空目录find / -type -d -empty ⑥30天以前60天以内的所有文件find / -type f -mtime +30 -mtime -60:
- touch创建文件: ①创建:touch file ②更改访问时间:touch -a file或-c ③改变修改时间:touch -m file ④更改修改和访问时间12/12/13/10/30:touch -c -t 1212131030 file
- mkdir创建目录: ①自动创建不存在父目录:mkdir -p dir ②设置权限:mkdir -p -m 777 dir
- cp复制: ①复制he开头文件到当前目录:cp he* ./ ②目录到目录:cp -r file1 file2
- ln链接文件:ln -s file2 file1
- mv重命名与移动: ①重命名:mv file1 file2 ②mv source file
- rm删除: ①文件:rm file ②目录:rm dir -r
- ls -l显示权限:所有者-用户组-其他用户。读r4,写w2,执行x1。
- chmod修改权限: ①移除文件ex.sh用户组成员的写权限:chmod g-w ex.sh ②添加文件ex.sh其他用户的写权限:chmod o+x ex.sh ③只给文件ex.sh的所有者执行权限:chmod u=x ex.sh ④赋予所有人对文件ex.sh读、写、执行权限:chmod ugo+rwx ex.sh ⑤赋予所有人对文件file.sh读、写、执行权限:chmod 777 file.sh ⑥赋予文件的所有者和用户组成员读写权限、其他用户只读权限:chmod 664 file.sh
- sort文本排序: ①按照数值大小对file内容逆序排序:sort -n -r file ②字符串排序:sort u file ③按照第二列字符串顺序,-t指定分隔符,-k指定排序的列:sort -t ‘,’ -k2,2 file
- uniq文本去重: ①去除重复行,并统计重复行次数:uniq -c file ②显示重复行-d ③显示不重复行-u ④只比较每行前n个字符:uniq -w n file
- tr替换和删除字符: ①小转大写:echo linux | tr a-z A-Z ②删除字符:tr -d a-z
- grep查找字符串: ①file中是否存在xx字符串:grep xx file ②递归搜索dir目录下的文件是否包含xx(并显示行号):grep -r (-n) xx dir
- diff比较两个文件: ①diff file1 file2 ②w忽略空格,c另一种对比风格:diff -cw fil1 file
- hostname查看主机名
- w、who列出登录用户
- uptime查看系统运行时间
- uname查看系统信息:-a打印系统多个信息
- date显示和设置时间: ①获取时间戳:date +%s ②显示年月日:date +"%Y-%m-%d" ③date -d ④时间戳转日期:date -d ‘@时间戳’
- id显示用户属性
进阶命令
- paste合并文件:将文件各行按照’|’进行合并:paste -d’|’ file1 file2
- dd备份和拷贝文件:
- gzip、bzip2压缩和归档文件: ①压缩并生成.gz结尾的文件,删除原始文件:gzip file ②压缩并保留,写入到指定文件:gzip -c file > file.gz ③-d解压缩:gzip -d file.gz
- tar打包和解包文件: ①-c创建新的归档,-v列出被处理的文件,-f指定归档文件的名称 ②对/home/data目录进行归档不压缩(tar.gz就是压缩):tar -cvf /home/file.tar /home/data ③对归档文件file.tar进行解压:tar -xvf /home/file.tar ④对压缩文件file.tar.gz进行解压:tar -zxvf /home/file.tar.gz ⑤列出文件file.tar的内容,不进行解压:tar -tvf /home/file.tar ⑥tar -tzvf /home/file.tar.gz
- mount、unmount挂载和卸载存储介质: ①查看磁盘分区与挂载信息:df -h或lsblk -f ②查看磁盘信息:fdisk -l ③fdisk路径 进行磁盘分区添加,mkfs -t路径 进行分区格式化、mount 路径 进行文件系统挂载
- df报告磁盘利用率:可读显示磁盘可用空间信息:df -h
du评估文件空间利用率:显示dir目录所有目录大小且以1024字节为单位(可读\递归\可读
+递归):du (-a\-h\-ah) dir
- crontab执行计划任务: ①分时日月周 用户 命令 ②每天六点:0 6 * * *③每周一到周五凌晨两点:0 2 * * 1-5 ③每五分钟:*/5 * * * * ④每天零点,两点:0 0,2 * * * ⑤列出当前用户所有定时计划:crontab -l ⑥创建或修改定时计划:crontab -e
- nohup 运行一个对挂起免疫的命令:nohup 命令 参数 &
shell编程基础
- 命令模式:i输入模式,x退格,:底线命令模式,Ctrl+v可视化模式(可复制粘贴),x字符删除
- 底线模式:ESC退出,w保存,q退出vim,q!强制退出
- 输入模式:backspace\del字符删除,enter回车,方向键移动
- 定义变量:①$a或${a}。${a}引用a的值。
- 大括号扩展: ①${a^}第一个字符大写,小写’,’,’^^’全大写’,,’全小写。 ②${!a*}或${!a@}以a开头所有变量名。
- 字符串移除: ${参数#模式}, #和##用于移除从参数值的开头匹配指定模式的字符串, %h和%%用于从参数值的末尾匹配指定模式的字符串, ‘#’和‘%’表示将移除匹配指定模式的最短文本, ‘##’和‘%%’表示移除匹配指定模式的最长文本。
- 字符串搜索和替换: 替换参数值中匹配指定模式的子字符串: ${参数值/模式/子字符串}。 ‘/’表示只替换一个匹配的字符串, ‘//’表示替换所有匹配的字符串。 ‘##’和‘%%’表示移除匹配指定模式的最长文本。 字符串长度:${#参数} 子字符串:${参数:起:终}
- 运算符: ①按位:&与,^异或,|或 ②逻辑:&&与,||或,ex?ex:ex条件运算
- let运算:let a=5+4;echo
条件执行
- test条件测试: test表达式,0真1假 ①test 5 -eq 5 && echo Y || echo N:输出Y(大于-gt,大于等于ge,小于lt,小于等于le) ②判断文件是否存在:test -e file && echo “$_ found” || “$_ not found”
- if结构: ①if [命令];then命令;fi ②if [];then;命令;else;if [] then;命令;fi
- 逻辑与&&:1成功才2。var长度不为零且存在:if [-n $var] && [-e $var]
- 逻辑或||:1失败才2。
- case语句: case expres in;参数1;命令;;;;参数2;命令;;;;esac
循环
- for循环: ①for var in item1,item2或$fileNames;do或((i=;i<;i++));do;命令1;命令2;done ②for循环遍历:LIST="one two ";for
var in $LIST;do;echo "$var";done
- while循环:无限循环:while :或true;do;命令;done
- until循环:假才执行。until ();do;命令;done
- select循环:select var in list;do;命令;done
- break语句:退出(n层)循环:break [n]
- continue语句:不能select。跳过剩余循环,开始下次循环:continue [n]
函数
- 函数定义:[function] name();{;命令;}
- 调用函数:name 参1 参2。 ①脚本开头要定义所有变量:TEST=”/tmp/filename”;delete_file(){;echo “Deleting $TEST”;}。 ②函数中调用:. 路径.sh 或source filename 参数。 ③递归函数调用:a=${name $a}
- 本地变量:默认全局,创建本地:local 变量
- return返回:最大255,返回测试值:if [checkpid $pid1 $pid2];then;echo “running”;else;echo “not” fi
- 函数放到后台运行:name &
上一篇
Go语言题目练习
下一篇
Python基础
Loading...