[ ] 如何修改命令颜色?
ls is aliased to
ls --color=auto'为
ls is aliased tols --color=tty'
C1 - C5 基础
[[Linux命令行大全(第2版)]]《Linux命令行大全(第2版)》
<u style="color:red;">不熟悉的命令用法</u>
apropos
- whatis //- list directory contents
- usr/share/doc //文档文件
alias //自定义命令
- alias zl='cd /home/zeronlee; ll'
- [ ] 如何删除自定义命令?unalias
- [ ] 如何自定义常驻命令?重启或者退出终端依然存在。
防火墙1
ubuntu关闭防火墙
systemctl stop firewalld.service
ubuntu启动防火墙
systemctl start firewalld.service
开启端口
sudo firewall-cmd --zone=public --permanent --add-port=80/tcp
sudo firewall-cmd --reload
- firewalld和ufw的区别
C6重定向
重定向操作,C6
覆盖写入文件
追加写入文件
- 2> 重定向错误
2>&1 重定向标准输出和标准错误到同一个文件,eg:
[me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1
- 0:标准输入 1:标准输入 2:标准错误
ls /bin /usr/bin | sort | less
和ls /bin /usr/bin | sort less
的区别是什么?- sort 排序 , uniq去重
uniq命令
- uniq -d 显示重复的行
wc命令
- 显示结果解释
| 行数 | 单词数 | 字节数 |
| -- | -- | -- |
| 7902 |64566 | 503634 |
- 显示结果解释
- grep命令
head/tail命令
- tail -f 动态监听文件
tee命令
标准输出写入文件,二次写入会覆盖,文件内容不想被覆盖,则追加-a参数。
ping baidu.com|tee output.txt
C8 高级键盘
高级键盘技巧C8
- 光标移动组合键
- 剪贴和粘贴文本组合键
- ![[Pasted image 20230514115521.png]]
历史记录
- 历史记录保存在主目录下的bash_history文件中。
- 巧妙使用历史记录
- ![[Pasted image 20230514121122.png]]
搜索历史记录
- Crtl + R ,输入要搜索的字符,Crtl + J复制编辑或者Enter执行。
C9高级权限
权限C9
- rwx的分配
- ![[Pasted image 20230521120132.png]]
- id命令:查询当前用户信息
chmod命令:修改文件权限
- chmod 777 file
sudo chmod g+s /usr/local/share/Music
以二进制形式和八进制形式表示的文件模式
- ![[Pasted image 20230521121045.png]]
umask: 设置默认权限
- [ ] 掩码值
- su命令
- sudo命令
su 和 sudo区别
- eg: 你来给我递文件,文件给保安,保安给我送来,这属于su。保安给了一张通行证(/etc/sudoers),限时30min,这属于sudo。
chown命令
- chown zeronlee:zeronlee /home/zeronlee/
chgrp命令
- 在较旧的UNIX版本中,chown命令只能更改文件属主,但不能更改文件属组。
passwd命令
- passwd zeronlee 回车后提示输入密码
usermod命令
- 用户组添加用户:
usermod -aG music zeronlee
- 用户组添加用户:
查看用户
cat /etc/passwd
查看用户组
cat /etc/group
C10 进程
进程操作
ps命令
- STAT:该程序的状态,( R )为可执行的,( S )为该程序正在睡眠中,就是没有执行了,( T )正在侦测或者是停止了,( Z )僵尸程序,就是 zombie 死掉的程序啦!需要以 kill 除去啰!
![[Pasted image 20230527192730.png]] - TIME: 进程消耗CPU的时间总和。
- %CPU:代表该程序使用了多少 CPU 资源。
- <u color="red;">VSZ, RSS:占去的 ram 的大小( bytes )。</u>
- <u>%MEM:代表该程序使用了多少的 RAM。</u>
![[Pasted image 20230527194521.png]]
- STAT:该程序的状态,( R )为可执行的,( S )为该程序正在睡眠中,就是没有执行了,( T )正在侦测或者是停止了,( Z )僵尸程序,就是 zombie 死掉的程序啦!需要以 kill 除去啰!
top命令
jobs命令
- jobs -l 显示后台进程。
fg命令
- fg %工作号:后台进程恢复到前台执行,工作号就是jobs命令显示的第一个数字。
bg命令
- crtrl + z后台停止服务之后,通过bg调到前台执行。
kill命令
- kill -signal PID...
![[Pasted image 20230529221011.png]]
- kill -signal PID...
killall命令
- killall 进程名,这里的进程名就是启动进程时候的进程名字。
C11 环境
环境/shell变量相关
- printenv:显示部分或全部环境变量。
- set:显示Shell变量和环境变量。
- echo:查看变量内容。
- alias:查看命令别名。
.bashrc
配置启动项alias zl='ll /home/zeronlee' #注意引号 source ./bashrc
C12 VI入门
- 尝试运行Vim,而不是Vi。如果可行,考虑在.bashrc文件中添加alias vi='vim。
光标移动
- j: 下一行
- k: 上一行
- h: 左移一个字符
- l: 右移一个字符
- G: 移动到最后一行
- 0:移动到行首
- A: 移动到行尾并进入编辑模式
- 1G: 移动到第一行
插入
- o: 当前行下面新建一行
- O: 当前行上面新建一行
删除
- dd: 删除当前行
- 2dd: 删除当前行和下面一行
- d0: 删除光标处到行首
- d$: 删除光标处到行尾
- dG: 删除当前行到文件末尾
- d2G: 删除当前行到第二行
- 选中删除
剪贴复制和粘贴
- y是复制的主命令,配合使用类似删除
- p: 复制到当前行的下一行
- P:复制到当前行的上一行
合并行
- J: 合并下一行到当前行尾
搜索替换
行内搜索
- fx搜索字符x,继续搜索下一个x输入;直到找完为止。
单文件搜索
- 命令模式下输入/,然后输入要搜索的关键字,按回车键定位到第一次出现的位置,查找下一个输入字母n.
替换
- ex命令
- 替换命令:
:%s /search/replace /g
,可以不写空格。
编辑多文件
- 准备文件
ls -l /usr/bin > ls-output.txt
- 同时打开2个文件,
vim file1.txt file2.txt
文件之间切换
:bn
: 切换到下一个文件:bp
: 切换到上一个文件:buffers
:查看被修改的文件- 第一次只打开了一个文件,载入另一个文件时候输入
:e file.txt
将一个文件复制到另一个文件
- vi打开,yy复制,buffer2切换,p粘贴。
将整个文件插入另一个文件
- vi打开,
3G
定位行,:r foo.txt
插入整个文件。
- vi打开,
- 准备文件
- C13 定制提示符
常见任务与必备工具
C17 查找文件
查找文件
测试条件
find -size x
x:下图解释- ![[Pasted image 20231213221556.png]]
- 匹配空文件或目录:
find -empty
- 匹配属于组的文件或目录:
find -group zeronlee
- 匹配属于用户的文件或目录:
find -user zeronlee
操作符
-and
: 操作符两侧都为真,则匹配-or
: 操作符任意一侧为真,则匹配-not
: 操作符后的测试结果为假,则匹配()
: 测试条件分组,需要转义find / \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
: 括号要转义,并且前后需要空格
预定义操作
-delete
: 删除当前匹配的文件-ls
: 匹配的结果发送到标准输出-print
: 匹配结果的完整路径发送到标准输出-quit
: 一旦发现匹配就退出
用户自定义操作
-exec command {} ;
find ./ -type f -name 'foo*' -ok ls -l '{}' ';'
find ./ -type f -name 'foo*' -exec ls -l '{}' ';'
xargs命令
find /home/zeronlee -type f -name '*test*' | xargs ls -l
find / -name '*nginx*'| xargs ls -l
: 根据关键字查找文件或者路径
批量创建文件夹和文件
mkdir -p playground/dir-{001..100}
touch playground/dir-{001..100}/file-{A..Z}
find playground/ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)
C18 归档和备份
归档和备份
压缩
gzip
: 替换压缩源文件gunzip
: 替换解压源文件zip -r xx.zip xx
: 压缩文件unzip -d xx xx.zip
: 解压缩文件
归档
tar cf xx.tar xx
: 创建归档tar tf xx.tar
: 查看归档文件列表tar xf xx.tar xx
: 解压文件find playground -name 'file-A' -exec tar rf playground.tar '{}' '+'
: 查找文件归档
同步文件与目录
rsync -av playground test-async
: 同步目录,playground放到test-async目录里面- rsync和scp的区别
C20 文本处理
文本处理
cat
cat -A
: 查找非输出字符cat -ns
: 输出行号
sort
sort a.txt b.txt > final.txt
: 合并文件du -s /usr/share/ /* | sort -nr | head
: 列出从大到小占用磁盘最多的十个文件sort -k 1,1 -k 2n distros.txt
: 多字段排序,n是按数字排序sort -k 3.7nbr -k 3.1nbr -k 3.4nbr distros.txt
: 文件按字符串日期排序demo.sort -t ':' -k 7 /etc/passwd | head
: 指定分隔符排序
uniq
sort foo.txt | uniq
: uniq只能删除连续的重复行,所以只能sort
排序.
cut: 提取列
cut -f 3 distros.txt | cut -c 7-10
-f
以制表符(tab)分隔 ,-c
: 截取的字符开始和结束位置, 文本demo如下SUSU 10.2 12/07/2006 Fedora 10 11/25/2008
-d
: 指定分隔符,cut -d ':' -f 1 /etc/passwd | head
paste: 添加列,配合
distros.txt
使用sort -k 3.7nbr -k 3.1nbr -k 3.4nbr distros.txt > distros-by-date.txt cut -f 1,2 distros-by-date.txt > distros-versions.txt cut -f 3 distros-by-date.txt > distros-dates.txt paste distros-dates.txt distros-versions.txt
join: 连接两个文件中有公共字段的行
cut -f 1,1 distros-by-date.txt > distros-name.txt paste distros-dates.txt distros-name.txt > distros-key-names.txt cut -f 2,2 distros-by-date.txt > distros-vernums.txt paste distros-dates.txt distros-vernums.txt > distros-key-vernums.txt join distros-key-names.txt distros-key-vernums.txt
comm
comm -12 file1.txt file2.txt
, 1 2 表示要禁止显示的列
diff
diff -u file1.txt file2.txt
, file2相对file1的变动.
patch
diff -Naur file1.txt file2.txt > patchfile.txt patch < patchfile.txt
tr
echo "lowercase letters" | tr a-z A-Z
, 小写转换成大写.
sed
echo "front" | sed 's/front/back /'
sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/' distros.txt
, 替换distros.txt中的xx/xx/xxxx为xxxx-xx-xx.
aspell: 检查单词拼写是否正确
aspell foo.txt
[ ] 配置应用开机启动
安装应用
源码安装
- 安装redis
1.下载 wget https://download.redis.io/releases/redis-6.0.9.tar.gz 2.解压 tar xzf redis-6.0.9.tar.gz 3.移动到你要安装的目录,我这里安装到了/user/local下 sudo mv ./redis-6.0.9 /usr/local/redis 4.进入你移动的目录 cd /usr/local/redis 5.编译redis sudo make 6.测试编译是否成功(这一步时间会比较长,测试耗时5分钟左右) sudo make test 7.安装 sudo make install
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。