Linux的一些基本指令

一.ls -l命令

ls基本为列出当前目录的文件和文件夹,也可添加-a,-h,-l选项(三者可搭配使用)

  • -a:列出目录内所有内容(包括隐藏文件和文件夹)
  • -l:以列表形式展示内容,并显示更多信息
  • -h: 以易于阅读的形式列出文件大小,如K,M,G(-h选项必须要搭配-l使用)

ls命令

二.touch创建文件

如果文件不存在,touch 文件名 ,创建一个空文件。如果文件已存在,touch 更新文件的访问和修改时间为当前时间。

示例:touch newfile.txt 创建空文件newfile.txt,touch -t 202503151200 file.txt 将file.txt的时间戳设为2025年3月15日12:00

三.管道符 | 的应用

管道符将前一个命令的标准输出作为后一个命令的标准输入。

示例:

  • ls -l | grep “flag”:列出当前目录所有文件,然后过滤出包含”txt”的行。
  • · cat /var/log/syslog | tail -n 20:显示日志文件最后20行。
  • · echo “hello” | wc -c:统计字符串的字符数。

管道符

四.mv指令

mv 用于移动文件或重命名。

  • 重命名:mv 原文件名 新文件名
    • 示例:mv old.txt new.txt 将old.txt重命名为new.txt。
  • 移动:mv 文件名 目标目录/
    • 示例:mv file.txt /home/user/docs/ 将file.txt移动到docs目录。
  • 同时移动并重命名:mv 文件名 目标目录/新文件名
    • 示例:mv report.txt /backup/report_20250315.txt。

注意:如果目标已存在,mv 会直接覆盖(可用 -i 选项提示确认)。
示例:mv -i source.txt dest.txt 若dest.txt存在则询问是否覆盖。

五.软链接

软连接(符号链接)类似于Windows的快捷方式,指向另一个文件或目录。

  • 创建:ln -s 目标文件 链接名
    • 示例:ln -s /home/user/data.txt link.txt 创建指向data.txt的软连接link.txt。
  • 使用:通过链接名访问,如同访问原文件一样。例如 cat link.txt 会显示data.txt的内容。
  • 查看链接指向:ls -l link.txt 会显示 link.txt -> /home/user/data.txt。
  • 注意事项:
    • 如果原文件被删除或移动,链接会失效(“断链”)。
    • 链接可跨文件系统。示例:为目录创建软连接 ln -s /var/log logs,然后可以通过 cd logs 进入/var/log目录。
      软链接

六.用cp指令复制文件到指定位置

  • 复制文件到目录:cp 源文件 目标目录/

    • 示例:cp file.txt /backup/ 将file.txt复制到/backup目录。
  • 复制并重命名:cp 源文件 目标目录/新文件名

    • 示例:cp report.doc /archive/report_20250315.doc。
  • 复制目录:需要 -r(递归)选项。

    • 示例:cp -r /home/user/docs /backup/ 将docs目录及其内容复制到/backup。
  • 常用选项:

    • -i:覆盖前提示。
    • -v:显示复制过程。
    • 示例:cp -iv file1.txt file2.txt /target/ 复制两个文件到/target,并显示过程,覆盖前询问。

七.绝对路径与相对路径

  • 绝对路径:从根目录 / 开始的完整路径,唯一确定文件或目录的位置。

    • 示例:/home/user/docs/report.txt
  • 相对路径:相对于当前工作目录的路径。

    • 示例:假设当前目录是 /home/user,则 docs/report.txt 表示 /home/user/docs/report.txt。
  • . 表示当前目录,.. 表示上级目录。

  • ../pics/photo.jpg 表示从当前目录的上级目录进入pics目录找到photo.jpg。

识别:以 / 开头的是绝对路径,否则是相对路径。

八.设置用户密码和root用户密码,切换用户

  • 设置当前用户密码:

    • 直接输入 passwd,按提示输入当前密码,然后输入新密码两次。
  • 设置root密码(需要root权限):

    • 方法1:sudo passwd root(输入当前用户密码后,设置root密码)。
    • 方法2:先切换到root(su -),然后输入passwd。
  • 切换用户:

    • su 用户名:切换到指定用户,需要输入该用户密码。环境变量可能不完全加载。
    • su - 用户名:切换到指定用户,并加载该用户的环境变量(相当于重新登录)。
    • sudo -i:以root身份运行交互式shell(需要当前用户在sudo组)。

九.使用文本编辑器

常用命令行编辑器有 nano 和 vim。

  • nano
    • 打开文件:nano 文件名
    • 编辑:直接输入内容。
    • 保存:按 Ctrl+O,然后回车确认文件名。
    • 退出:按 Ctrl+X。如果文件未保存,会提示保存。
    • 示例:nano myfile.txt 创建/编辑myfile.txt。
  • vim
    • 打开文件:vim 文件名
    • 进入插入模式:按 i,此时可输入内容。
    • 退出插入模式:按 Esc。
    • 保存并退出:输入 :wq 然后回车。
    • 不保存退出:输入 :q!。
    • 示例:vim /etc/hosts 编辑hosts文件。

十.打包文件和压缩文件

打包与压缩通常结合使用,主要用 tar 命令。

  • 创建tar包(不压缩):tar -cvf 包名.tar 文件/目录…

    • 示例:tar -cvf backup.tar /home/user/docs 将docs目录打包成backup.tar。
  • 创建并压缩(gzip):tar -czvf 包名.tar.gz 文件/目录…

    • 示例:tar -czvf project.tar.gz project/ 将project目录打包并用gzip压缩。
  • 解包/解压:

    • 解压tar包:tar -xvf 包名.tar
    • 解压tar.gz:tar -zxvf 包名.tar.gz
    • 可指定解压目录:tar -zxvf 包名.tar.gz -C /目标路径

    压解包

  • 单独压缩:

    • zip -r 压缩包.zip 目录 打包成zip(压缩目录时用)。
    • unzip 压缩包.zip 解压zip。

十一.查看基本的日志文件

日志文件通常位于 /var/log/ 目录下。常用查看方法:

  • 直接查看:
    • cat /var/log/syslog 显示全部。
    • less /var/log/syslog 分页查看(按空格翻页,按q退出)。
    • tail -n 50 /var/log/syslog 显示最后50行。
    • tail -f /var/log/syslog 实时跟踪日志更新(按 Ctrl+C 停止)。
    • head -n 20 /var/log/syslog 显示前20行。
  • 过滤特定内容:
    • grep “error” /var/log/syslog 查找包含”error”的行(不区分大小写加 -i)。
    • grep -E “error|fail” /var/log/syslog 同时搜索多个关键词。
  • 常用日志文件:
    • /var/log/syslog 或 /var/log/messages:系统总日志。
    • /var/log/auth.log:认证日志(登录、sudo等)。
    • /var/log/kern.log:内核日志。
    • /var/log/dmesg:内核环缓冲区信息(可用 dmesg 命令查看)。
    • /var/log/boot.log:系统启动日志。
    • 应用日志如 /var/log/nginx/access.log、/var/log/mysql/error.log。
  • 使用 journalctl(systemd系统):
    • journalctl -xe 查看最近系统日志及解释。
    • journalctl -u ssh.service 查看ssh服务日志。
    • journalctl –since “1 hour ago” 查看最近1小时日志。

十二. 常用二进制文件目录

  • /bin:基本命令(ls, cp等)。
  • /sbin:系统管理命令(fdisk, ifconfig等)。
  • /usr/bin:大多数用户命令。
  • /usr/sbin:系统管理命令(许多属于root)。
  • /usr/local/bin:本地安装的程序。
  • /opt:可选软件包。
  • 这些目录通常包含在环境变量 PATH 中,可直接执行其中的程序。

十三. 给文件赋权(修改权限)

使用 chmod 命令。

  • 符号方式:chmod [u/g/o][+/-/=][r/w/x] 文件
    1
    2
    3
    4
    5
    6
    示例:
    . chmod u=rwx,g=rx,o=rx 给每个用户设置具体的权限。
    · chmod u+x script.txt 给所有者加执行权限。
    · chmod g-w file.txt 移除组的写权限。
    · chmod o=r file.txt 设置其他用户只有读权限。
    · chmod a+x script.txt 给所有用户(所有者、组、其他)加执行权限。
  • 数字方式:用三位八进制数表示权限(r=4, w=2, x=1)。
    1
    2
    3
    4
        示例:
    - chmod 755 script.txt 设置权限 rwxr-xr-x(所有者读写执行,组和其他读执行)。
    - chmod 644 file.txt 设置 rw-r--r--。
    - 递归修改目录权限:chmod -R 755 directory/ 将目录及其内部文件都设为755。

十四.运行可执行文件

  • 运行可执行文件:

    • 如果文件在当前目录:./可执行文件名(需要执行权限)。
      • 示例:./hello 运行当前目录下的hello程序。
    • 如果文件在PATH环境变量包含的目录中(如/bin、/usr/bin),直接输入文件名即可。
      • 示例:ls、python3。
    • 使用绝对路径或相对路径执行。
      • 示例:/home/user/bin/myapp。
    • 如果没有执行权限,先赋予:chmod +x 文件名,再运行。
    • 对于脚本(如Python、Shell),也可用解释器运行:python3 script.py 或 bash script.sh。

十五. 递归删除

  • rm -r 目录名 删除目录及其所有内容(递归)。

    示例:rm -r old_project/ 删除old_project目录。
    
  • rm -rf 目录名 强制递归删除,不提示确认。

    示例:rm -rf /tmp/cache/ 强制删除/tmp/cache目录。
    
  • 删除文件:rm 文件名。

  • 安全选项:rm -i 删除前逐个询问,rm -v 显示删除过程。

  • 危险命令:绝对避免 rm -rf / 或 rm -rf /*,会删除系统所有文件。

十六.使用 find、grep 查找flag

find 查找文件中flag

  • 按文件名:find 起始路径 -name “文件名模式”
    • 示例:find /home -name “flag.txt” 在/home下查找名为flag.txt的文件。
  • 使用通配符:find / -name “flag*” 查找所有以flag开头的文件。
  • 忽略大小写:-iname。
  • 按文件类型:-type f(普通文件)、-type d(目录)。
    • 示例:find /var/log -type f -name “*.log” 查找所有.log文件。
  • 按大小:-size +100M 查找大于100M的文件。
  • 按时间:-mtime -7 7天内修改过的文件。
  • 执行操作:-exec 对找到的文件执行命令。
    • 示例:find . -name “*.tmp” -exec rm {} ; 删除所有.tmp文件

grep 搜索文件内容

  • 基本搜索:grep “要查找的字符串” 文件
    • 示例:grep “flag{“ secret.txt ( 在secret.txt中搜索flag{ )。
  • 递归搜索目录:grep -r “flag” /home/user/ 在/home/user/下所有文件中递归搜索。
  • 常用选项:
    • -i 忽略大小写。
    • -l 只显示包含匹配内容的文件名。
    • -n 显示行号。
    • -v 显示不匹配的行。
    • -c 统计匹配行数。

组合使用 find 和 grep:

  • 方法1:find / -type f -name “*.txt” -exec grep -l “flag” {} ; 查找所有txt文件中包含flag的文件名。
  • 方法2:grep -r –include=”*.txt” “flag” / 用grep的–include限制文件类型。

十七.查看当前登录用户的用户名:

1
whoami

十八.查看网络配置信息

1
2
ip addr
ifconfig

十九.查看进程

1
ps aux

输出第一列数据

1
ps aux | awk "{print $1}"

二十.查找进程中USER为root的进程

1
ps -u root

二十一.创建新目录

1
mkdir 文件名

二十二.添加用户

1
sudo useradd 用户名

二十三.主机ssh虚拟机

1
ssh 用户名@虚拟机IP

二十四.定时任务cron,每分钟执行新建的shell脚本,结果追加到/test.txt

1
crontab -e