第二节 Linux常用命令

身份及位置查询

  1. whoami : 查询当前用户
whoami
  1. pwd : 查询当前所在目录
pwd

cd

  • 作用:跳转目录
  • 参数
    • 当前目录:.
    • 父目录:..
    • 主目录:~
    • 上一个目录:-
  • 主目录:主目录是用户的家,每一个用户都会在/home 有一个主目录,root除外
  • 普通用户主目录 /home/<username>
  • root用户主/root
    cd <dir>
    

ls

  • 作用:显示当前目录下的文件
  • 参数
-a :查看隐藏文件
-l:查看文件详细信息
-la :查看隐藏文件的详细信息
-R:递归查询
-r:查询结果以倒序列出(文件名首字母)
-t :查询结果按时间顺序排序
ls <option>

echo

  • 作用
    对shell说一句话(输入一段话或一段字符串)shell对这段话进行显示
  • 替换:`echo “str”>
  • 增加echo "str" >> <fiel>
echo Hello,linux
echo "Hello,linux" >` hello.txt
echo "Hello,linux" >`>` hello.txt

cat

cat hello.txt
  • 作用:查看文件内容
  • 命令格式:`cat

less

cat ~/.zsh.history
  • 作用:以分页方式查看文件内容
  • 命令格式:`less
  • 用法
    使用↑ ↓ 按键进行翻行
    g:跳转到文件首行
    G:跳转到文件末行 <shift+g>
    /<search> `:查询的字符或串内容
    q: 退出查看

mkdir

  • 作用:创建一个目录
  • 命令格式 mkdir <opstion> <dirname>
  • 参数
    -p 层级化建目录
mkdir "module one"  # 创建名称包含空格的目录
mkdir  dir2 dir3    # 创建多个目录
rm -rf dir2  dir3   # 删除目录
mkdir -p  {test1,test2}/{recon,exploit,report}   # 层级化创建多个目录

clear

clear

作用:清除当前屏幕

touch

作用:创建一个文件
命令格式touch <filename>

$touch hello2

file

作用:查询文件(file)或目录(dir)属性
命令格式file <filename or dirname>

file hello2  test
file test
file hello2

rm

作用:删除文件
命令格式rm <参数> <文件名>
删除文件rm <filename>
强制删除rm -r <fielname or dirname>
强制删除无法恢复(谨慎使用): rm -rf <filename or dirname>

rm test1
rm -r test

grep

作用
从文件中中筛选包含关键字的内容打印
与 ‘|’配合使用,实现或的查询(注意单引号中不要有空格): grep 'str1|str2' fiel
参数
-v 排除指定内容
-o 只显示抓取到的字符,而不是显示一行(每匹配到一个,另起一行打印)
-A 显示匹配字符行和上一行
-B 显示匹配字符行和下一行
-C 显示匹配字符行和上下行(相当于-A 加 -B)
-E 与管道符配合,对文件内容模糊查询与egrep相同 grep 'str1 * str2' file (* 占位一个字符)
-r 递归查询,查询目录中的所有文件
-R 同样是递归查询,但是可以行进一步glob匹配查询
-c 只显示匹配到字符的行数
-i 不区分大小写
-l "str"<文件名(多个)> 找到包含字符串的文件
-L "str"<文件名(多个)> 找到不包含字符串的文件
-e 可以连续指定多个参数 grep -e 'h' -e 'k' hello2

grep 'str' file 
cat file | grep 'str'

cp

作用:复制,将一个文件复制为另一个文件
格式:cp <file-s> <file-d>
复制目录
cp -r <dir-s> <dir-d>
复制多个文件到目标目录下
cp <./file1> <./fiel2> <./file3> <....> <d-dir>
备注:如果目标目录下有相同名称的文件时会被覆盖
cp -i <file-s> <fiel-d> :
当目标中有相同名称的文件时打印提醒

cp file1 file2

mv

作用:替换,将一个文件替换为另一个文件
命令格式mv <file-s> <file-d>

mv fiel1 fiel2

查找文件

which

在环境变量中定义的目录中查找文件,此变量中定义了一个目录列表,当发出指令时,linux 会在列表中搜索文件,当匹配到目标时,会显示完整路径。

echo $PATH
which sdb

locate

通过locate.db 一个内置的数据库来定位文件,而不是从磁盘查找。因此查找文件比较快捷。

  • 通过updatedb命令升级locate.db
sudo updatedb
locate  history

find

find 命令是这三种搜索工具中最复杂、最灵活的搜索工具。掌握它的语法有时很棘手,但它的功能强大,超出了正常的文件搜索。

find / -mtime 0  #搜索最近24小时修改过的文件
                 # 参数:
		 # -atime  访问时间
		 # -ctime  变更时间
find . -type f  -iname '*.sh' -mmin -30 -ls  
		# 搜索最近30分钟修改过的文件
find . -name .svn -exec rm -rf {} \; 
		# 对搜索结果执行命令(删除)
find . -name .svn |xargs rm -rf 
		# 对搜索结果执行命令(删除)
    # -name : 文件名称 
find / -type f -perm -u=s -ls 2>`/dev/null 
		# 搜索启用SUID权限的文件 
		# -perm :用户权限
    # -u=s  至少属主有S权限
		# u=s   属主只有S权限
find /test/ -type f -user kali -perm /220  -name test1
  	# -type : 文件类型
  	#	d:目录/l:链接/b:块设备/c:串行设备/s:套接字文件/f:文件
 	 # -user :用户属主
 	 # -grep :用户属组
find -name“*.txt”-maxdepth 1   
  # -maxdepth 1 表示查询目录深度为 1

help

作用:查看帮助信息

grep --help

man

  • 大多数用于Linux命令行的可执行程序都提供了一份正式的文档,通常称为 man 或man page 。 man 手册通常有名称、概要、命令用途描述以及相应的选项、参数或开关。让我们看看ls命令的man手册:
man ls

手册页不仅包含有关用户命令的信息,还包含有关系统管理命令编程界面等的文档。本手册的内容分为几个部分,编号如下:

  • 1、用户命令(普通命令)
  • 2、内核系统调用的编程接口
  • 3、C语言的编程接口
  • 4、设备节点和驱动程序等特殊文件
  • 5、文件格式
  • 6、游戏和娱乐相关如屏幕保护
  • 7、其他
  • 8、系统管理命令

man 手册使用

要找到你想看到man手册内容,只需通过关键字搜索,然后通过section 查看命令详情。举例:

  • 查看/etc/passwd 的文件格式
man  -k "^passwd"  #or man -k 'passwd'
  • 在上述命令的结果中可以看到 passwd 相关的man手册,其中一个是 passwd(5),这就是我们要的选项,可以进一步查看详情:
man 5 passwd

运用示例

man手册查看openssl passwd的使用方式

man -k "passwd"
man lssl "passwd"
openssl passwd -1 asd # openssl 生成密钥,并自动加盐
#vim 替换 /etc/passwd/中的密码,

apropos

我们可以根据关键字在man手册描述列表中搜索可能的匹配项,例如我们忘记了磁盘分区的命令,可以直接搜索"partition(分区)"。

apropos partition

alias

作用:为命令创建别名
alias <别名>="命令"
备注:"="两边不带空格
取消命令别名 :unalias <别名>

alias lsa = "ls -a"
unalias lsa

linux服务管理

  • 服务的启用,查看,与停止
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
sudo systemctl stop apache2
  • 查看端口占用
sudo ss -plantu | grep 22
  • 查看可用服务列表
systemctl list-unit-files

更新与卸载工具

  • 更新仓库列表
sudo apt update
  • 安装或跟新软件
    如果不指定,则默认跟新全部
sudo apt upgrade <packages>
  • 查找需要安装的软件包
sudo apt search <package>
  • 查看软件包的详情,包括版本,依赖等
sudo apt show <package>
  • 离线安装
    需要手动不解决依赖
sudo dpkg -i <package>
cd download
sudo apt install ./<package>
  • 卸载软件包
sudo apt remove --purge <package>

查看历史命令

history

history 命令可以查看当前用户的历史命令,如果想执行以前执行过的命令则使用'!'+ 编号
历史命令以文件形式存储,一般在 /.bash_history, kali 在/.zsh_history

history # 查看历史命令 
!1 # 执行编号为1 的命令

history 文件配置

针对history的配置在~/.bashrc 中
HISTSIZ: 控制当前会话存储在内存中的命令数量
HISTFILESIZE : 控制历史文件中保存的命令数量

使用 [CTRL+R] 在shell 中开启history命令搜索功能

当你在命令行中执行[CTRL+R] ,输入关键字,就会匹配到最新执行过的包含关键字的命令,点击回车可执行。

┌──(kali㉿bogon)-[~]
└─$
bck-i-search: _
┌──(kali㉿bogon)-[~]
└─$ sudo apt purge fcitx-rime
bck-i-search: im_
┌──(kali㉿bogon)-[~]
└─$ sudo apt purge fcitx-rime
[sudo] password for kali:

管道符和重定向

管道符"|" , 重定向 ">>" "<<"

  • 利用重定向符来计算文件中的字符数
┌──(kali㉿bogon)-[~]
└─$ echo "that is maintained and funded by Offensive Security" >`>` redirection_test.txt
┌──(kali㉿bogon)-[~]
└─$ cat redirection_test.txt
that is maintained and funded by Offensive Security
┌──(kali㉿bogon)-[~]
└─$ wc -m < redirection_test.txt
52

文件操作

grep

grep -Ri passwd .   #对当前目录中所有文件进行递归搜索
grep -E ^root /etc/passwd # 对搜索结果进行过滤,过滤出以root开头的行

grep sh | grep -v nologin  # -v 反选,抓取包含sh 且不含nologin的行

sed

sed是强大的流编辑器,对一组文件或其他命令输出执行流编辑操作
当可以在目标shell中可以使用命令但是是非交换的shell时,可以通过sed命令进行文件编辑。

  • 例:当无法使用vi时,用sed替换/etc/passwd中的root密码
openssl passwd -1 123
sed 's/x/$1$pD3eBFtC$uv/sG.z8LOMHI1ZQLV2pk0/g' >` /etc/passwd

cut

cut 从一行中提取一段文本并将其输出到标准输出。

cat  /etc/passwd | cut -d ":" -f 1,7 |grep sh -v nologin

awk

awk 和cut 的共功能一样,但是 -F 可以指定多个字符作为分隔符。

cat  /etc/passwd | awk -F ":abc" '{print $1,$7}' |grep sh -v nologin

sort

sort的功能是排序

cat access_log.txt | cut -d " " -f 1 |sort | uniq -c | sort -run
  • sort 命令排序
  • sort 默认按第一个字符正序
  • sort -u 去重
  • sort -run 按数值从大到小排序

uniq

使用 uniq 进行统计
uniq -c 按出现次数进行数值统计

文件内容比较

comm

comm  <file1>   <file2> 
  • 三列
    • 第一列: 只在第一个文件里有
    • 第二列:只在第二个文件里有
    • 第三列:两个文件中相同的内容
comm -12 <file1> <file2>  # 只显示相同的
comm -3  <file1>  <file3> # 只显示不同

diff

diff -c  <file1> <fiel2> # 两部分显示
diff -u  <file1>  <file2>  # 一起显示

vimdiff

meld 图形化文件目录对比工具

作业管理

后台运行进程:

  • 方法一:在命令末尾使用 &
ping -c 400 localhost > ping_results.txt &
  • 方法二:Ctrl + Z 挂起后 bg 切换后台运行
┌──(kali㉿bogon)-[~]
└─$ ping -c 400 localhost > ping_results.txt
^Z
zsh: suspended  ping -c 400 localhost > ping_results.txt

┌──(kali㉿bogon)-[~]
└─$ jobs
[1]  + suspended  ping -c 400 localhost > ping_results.txt

┌──(kali㉿bogon)-[~]
└─$ bg
[1]  + continued  ping -c 400 localhost > ping_results.txt

将后台进程切换为前提运行

┌──(kali㉿bogon)-[~]
└─$ jobs
[1]  + running    ping -c 400 localhost > ping_results.txt

┌──(kali㉿bogon)-[~]
└─$ fg %1
[1]  + running    ping -c 400 localhost > ping_results.txt

%Number : job编号,如 %1 or %2
%String : 命令名称,如 %ping
%+ OR%%: 当前的job
%- : 上一个job

进程管理

ps

用于查找进程ID

ps -ef

• -e: 显示所有进程
• -f: 显示所有列 (UID, PID, PPID, etc.)
• -C: 按命令名称显示

kill

向指定ID的进程发送信号.

kill <process-id>

对文件和命令进行实时监控

在渗透过程中实时监控文件和命令是非常有价值的,tail 和 watch 这两个命令对此非常有帮助

tail

• -f :随着文件内容的增长不断跟新显示
• -n :指定显示的行数,不带此选项,则默认10行
示例:监控apache2日志,显示行数为5

sudo tail -f -n 5 /var/log/apache2/access.log

watch

用于设定定时任务
• -n : 指定间隔时间
示例:每间隔5秒列出登录用户

watch -n 5 w

文件下载

wget

用于下载 http/https/FTP 协议的文件
• -O : 将下载后的文件以与源文件不同的名称在本地保存
示例:下面的命令将下载的文件保存为report_wget.pdf

wget -O report_wget.pdf https://www.offensivesecurity.com/reports/penetration-testing-sample-report-2013.pdf

curl

curl 是使用多种协议(包括IMAP/S、POP3/S、SCP、SFTP、SMB/S、SMTP/S、TELNET、TFTP等)向服务器传输数据或从服务器传输数据的工具。
用法与 wget 相同

curl -O report_wget.pdf https://www.offensivesecurity.com/reports/penetration-testing-sample-report-2013.pdf

axel

是一个下载加速器,支持断点续传。
• -n: 指定要使用的多个连接的数量
• -a: 简洁的进度指示器使用
• -o: 为下载的文件指定不同的文件名
示例:

axel -a -n 20 -o report_axel.pdf https://www.offensivesecurity.com/reports/penetration-testing-sample-report-2013.pdf

~/.bashrc

  • 中保存了history的设置参数、自定义环境变量、命令别名,因此有可能泄露敏感信息
  • Bash中交互shell的行为由/etc/Bash.bashc中的系统范围的bashrc文件决定。可以通过编辑任何用户主目录中的.bashrc文件来覆盖系统范围的Bash设置
  • .bashrc脚本在用户登录时执行。由于此文件是一个shell脚本,因此我们可以插入任何可以从命令提示符执行的命令
posted @ 2023-08-02 15:42  掰断曲别针  阅读(68)  评论(1)    收藏  举报