Linux速查(自用)
文章目录
常用相似命令
cd => fasd
cat => bat
ls => exa , ranger
find => fd , fzf 如:fzf --preview 'cat {}'
grep => ack , ag , rg
rm => trash
man => tldr
history => hstr
du => ncdu , nnn
wget,curl => axel , httpie
taskbook
tmux
sshrc
goaccess
查找
grep 命令
# 搜目录下
grep * "关键字" --color=auto
# 递归搜目录下及其子目录
grep * -r "关键字" --color=auto
# 查找.c和.h
grep * "关键字" -rn –color=auto --include='*.c' --include='*.h'
grep * "关键字" -rn –color=auto --include='*.[ch]' // 路径可选
# 查找排除.txt
grep * "关键字" --exclude "*.txt" // 排除txt文件
grep * "关键字" 文件名 -v //文中不包含关键字的行
#精确匹配
grep * -w "关键字"
#同时多条件或查找
grep -e 'addr' -e 'data' 路径或文件 -w --color=auto
#附加:
-i 忽略大小写
-n 显示行号
#一般与cat命令,管道| 连起来用
find 命令
find 路径 -name "*.txt"
find 路径 -iname "*.txt" # -iname 忽略大小写
# 查找最近15分钟修改的文件
find 路径 -cmin -15
# 查找超过15分钟修改的文件
find 路径 -cmin +15
#解释:
+n 大于n
-n 小于n
n 恰好n
压缩与解压缩 命令
xx是文件或者目录(文件夹)
类型 | 压缩 | 解压 |
---|---|---|
xx.tar | tar -cvf xx.tar xx (打包) | tar -xvf xx.tar (解包) |
xx.tar.gz (gzip) | tar -zcvf xx.tar.gz xx | tar -zxvf xx.tar.gz |
xx.tar.bz2 (bzip2) | tar -jcvf xx.tar.bz2 xx | tar -jxvf xx.tar.bz2 |
xx.xz | xz -z xx (xx必须是文件) | xz -d xx.xz |
xx.tar.xz | xz -z xx.tar | xz -d xx.tar.xz 变成xx.tar , 再解包 |
xx.tar.Z | 缺 | 缺 |
xx.zip | zip -r xx.zip xx | unzip xx.zip (解压到指定目录 -d) |
xx.rar | rar a xx.rar xx | rar e xx.rar |
tar命令说明: |
五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
删除 命令
rm 文件 #删除文件
rm -r 文件夹 #删除文件和目录
删除时间大于21天的文件
find /tmp -mtime +21 -name "*.*" -exec rm -Rf {} \;
释义:
/tmp :准备要进行清理的任意目录
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
"*.*":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} \; :固定写法,一对大括号+空格+\+;
拆分与合并
拆分
split -b 1024M -d -a 3 文件名 [前缀]
如:
split -b 1024M -d -a 3 filename filename_
释义:
-b 配个拆分文件大小,100M = 100MB, 100K=100KB,
有(K,M,G,T,P,E,Z,Y) (powers of 1024)
-a 生产长度为n的后缀
-d 使用十六进制数值起始,起始值为0
如最后生成:
filename =>
filename_000
filename_001
filename_002
合并
cat filename_* > filename
查看文件
查看某几行
# 查看 20到25行
sed -n '20,25p' 文件名
# 查看 20到25行
head -n 25 文件名 | tail 5
# 用变量灵活实现,是需要修改行数既可
set head_n=20; set tail_n=25; set line_n=`expr $tail_n - $head_n - 1`
head -n $tail_n 文件名 | tail -n $line_n
查看某一行
# 查看第20行
sed -n '20p' 文件名
#查看头20行内容
head -n 20 文件名
#查看尾20行内容
tail -n 20 文件名
history命令
history 是一个 Linux 命令,用于显示当前用户在当前会话中执行过的命令历史记录。它会列出已经执行过的命令,并显示与每个命令关联的编号。下面是 history 命令的一些常见用法和选项:
显示完整的命令历史记录:
history
这将显示当前用户在当前会话中执行过的所有命令历史记录。默认情况下,命令历史记录会显示最近执行的命令在最上面,并附带每个命令的编号。
显示指定数量的命令历史记录:
history N
这将显示最近执行的 N 条命令历史记录。将 N 替换为您想要显示的命令数量。
grep 过滤命令历史记录:
history | grep "keyword"
这将显示包含指定关键字的命令历史记录。将 “keyword” 替换为您要搜索的关键字。
执行命令历史记录中的命令:
!N
这将执行命令历史记录中特定编号(N)对应的命令。将 N 替换为要执行的命令的编号。
清除命令历史记录:
history -c
这将清除当前会话中的所有命令历史记录。
将命令历史记录保存到文件:
history -w filename
这将将当前会话中的命令历史记录保存到指定的文件中。将 filename 替换为您要保存的文件名。
请注意,history 命令默认会将命令历史记录保存在用户的家目录下的 .bash_history 文件中。这个文件可以在新的终端会话中加载和使用。
这些是 history 命令的一些常见用法和选项。您可以通过运行 man history
命令来查看更详细的帮助文档。
sed 命令
查找替换
sed -i 's/原字符串/新字符串/' 文件名
sed -i 's/原字符串/新字符串/g' 文件名 (加 g 表示替换每一处匹配)
sed -i 's/原字符串/新字符串/2g' 文件名 (加 Ng 表示从第N处匹配开始替换)
或
sed 's/text/replace/' 文件名 > 新文件名
不加-i,标准输出stdout
sed 's/原字符串/新字符串/' 文件名
或
cat 文件名 | sed 's/原字符串/新字符串/'
例子:
sed -i 's/df_common/nbdf_common/' *.c
sed -i 's/get_reg(dev, id)/get_reg(dev)/' *.c
sed -i 's/app/APP/2g' *.c
注意:一种有益的做法是先使用不带-i选项的sed命令,以确保正则表达式没有问题,
一旦结果符合要求,再加入-i选项将更改写入文件。
使用单引号时,变量不会被扩展(expand),将依照原样显示。
加 /g ,有时候我们只需要从第n处匹配开始替换。对此,可以使用/Ng选项。
查找删除某行
sed -i '/字符串/d' 文件名
例子:
sed -i '/nbdf_common/d' *.c
sed -i '/df_common/d' *.c
附加说明
单引号使用
sed表达式通常用单引号来引用。使用单引号时,变量不会被扩展(expand),将依照原样显示。这意味着:
echo '$var' will print $var
双引号使用
sed表达式通常用单引号来引用。不过也可以使用双引号。双引号会通过对表达式求值来对
其进行扩展。当我们想在sed表达式中使用一些变量时,双引号就能派上用场了。
例如:
text=hello
echo hello world | sed "s/$text/HELLO/"
输出:HELLO world
$text的求值结果是hello。
定界符
字符/
在sed中被作为定界符使用。我们可以像下面一样使用任意的定界符:
sed 's/原字符串/新字符串/g'
sed 's:原字符串:新字符串:g'
sed 's|原字符串:新字符串|g'
当定界符出现在样式内部时,我们必须用前缀\
对它进行转义:
有如下样式, 'te|xt'要被'replace'替换
sed 's|te\|xt|replace|g'
\| 是一个出现在样式内部并经过转义的定界符。
sed 选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。使用它时,一种有益的做法是先使用不带-i选项的sed命令,
以确保正则表达式没有问题,一旦结果符合要求
动作说明: [n1[,n2]]function
n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,
如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』
function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!
例如 1,20s/old/new/g 就是啦!
用户增加删除和添加sudo权限
添加新用户
创建用户
useradd -r -m -s /bin/bash 用户名
备注:
-r 创建系统账户
-m 创建home路径
-s 注册shell新账户
创建用户并且具有sudo权限
(默认情况下,在Ubuntu上,sudo组的成员被授予sudo访问权限。
如果您希望新创建的用户具有管理权限,请将用户添加到sudo组)
usermod -aG sudo 用户名
-a 把用户追加到某些组中,仅与-G选项一起使用
-G 修改用户所属的附加群组。
或
adduser 用户名 sudo
配置新用户密码
passwd 用户名
切换用户
su 用户名
删除用户
删除用户
userdel -r 用户名
仅删除用户sudo权限,从sudo组中删除
deluser 用户名 sudo