Linux0.1Liunx的基础使用
1 Linux背景
Linux是一种操作系统内核,类似于Unix;源于GNU(GNU’sNot Unix)项目也可称协议,并遵循POSIX标准。
- GUN提供了编译器、调试器、文本编辑器、shell等。
- Linux内核提供了进程管理、内存管理、块设备驱动、文件系统接口等功能。
- POSIX有利于应用程序的移植性,并为Linux开发者提供了一致的接口。
2 Linux/Unix基本命令
- ls:列出目录内容
- la -a:列出目录内容,包括隐藏文件
- la -li:列出目录中文件的节点引索信息。
- 更多参见:Linux文件权限管理chmod
- pwd:显示当前目录
- cd:切换目录
- cd..:返回上级目录
- cd /:切换到根目录
- cd ~:切换到用户主目录
- cd : 切换到用户目录
- cd -:切换到上一次所在目录
- mkdir:创建目录
- mkdir -p [dirname1/dirname2/…/dirnameN]:创建多级目录
- mkfifo:创建命名管道文件,其中 FIFO 是 “First In First Out” 的缩写。
- rmdir:删除空目录
- rmdir -p [dirname1/dirname2/…/dirnameN]:删除多级空目录(不可删除非空目录)
- touch:创建文件
- touch [filename] [filename2]…:创建多个空文件
- touch [filename] 更新文件时间戳
- touch -t 202101010101.00 [filename]:创建指定日期的空文件
- rm:删除文件或目录
- rm -r [dirname]:递归删除目录及其内容
- rm -f [filename]:强制删除文件,无需确认
- rm -i [filename]:删除文件前提示确认
- mv:移动或重命名文件或目录
- mv [source] [target]:移动或重命名文件或目录
- mv [source] [target] -b:用于在覆盖目标文件之前备份目标文件。
- cp:复制文件或目录
- cat:查看文件内容,CAT命令是concatenate的缩写。CAT命令可以将多个文件的内容合并到一个文件中,也可以将多个文件的内容追加到一个文件中。
- cat [filename]:查看文件内容
- cat [filename1] [filename2]… > [targetfile]:将多个文件内容合并到一个文件中,这样操作会覆盖源文件内容。
- cat [filename1] [filename2]… >> [targetfile]:将多个文件内容追加到一个文件中
- cat -n [filename]:显示行号
- cat -b [filename]:显示空行不计行数
- ln :创建链接文件
- ln -s [source] [target]:创建软链接,指向源文件,删除源文件不会影响链接文件。
- ln [source] [target]:创建硬链接,指向源文件,删除源文件会影响链接文件。
详情参见:软链接与硬链接
2.1 Linux/Unix检索命令
- man:查看命令帮助
- man [command]:查看命令帮助也可查找相关函数。man命令对应的是man手册,man手册包含的主要章节为:1系统命令、2系统调用、3C库函数等的详细说明。
- man -k [keyword]:搜索帮助文档关键字
- find:搜索文件
- find / -name [filename]:搜索指定文件
- find / -name [filename] -type f:搜索指定文件,仅列出文件。其它类型同理。
- find “[filename]” | grep [pattern]:搜索指定文件,并过滤出包含pattern的行。find结合管道命令时要加上引号。
grep:搜索文件内容,一般结合管道命令使用。
- grep [pattern] [filename]:搜索filename文件中包含pattern的行。
- grep -i [pattern] [filename]:搜索filename文件中包含pattern的行,忽略大小写。
- grep -R [pattern] [dirname]:递归搜索dirname目录下所有文件中包含pattern的行。
- grep ‘^[]’ 查找以某个字符串或字符串开头的行。
- grep -F [pattern] [filename]:搜索内容不执行转义等处理。
- grep -n [pattern] [filename]:搜索filename文件中包含pattern的行,并显示行号。
head:显示文件开头内容
- head -n [number] [filename]:显示文件开头的number行内容。
- tail:显示文件末尾内容
- tail -n [number] [filename]:显示文件末尾的number行内容。
- more:分页显示文件内容
- more [filename]:分页显示文件内容,按空格翻页,按q退出。
- less:分页显示文件内容
- less [filename]:分页显示文件内容,按空格翻页,按q退出。
wc:统计文件行数、字数、字节数。统计文件行数、字数(单词个数即使是中文也需要用空格分隔才计算) 、字节数。
- wc -l [filename]:统计文件行数。
- wc -w [filename]:统计文件字数。
- wc -c [filename]:统计文件字节数。
sort:对文件内容排序
- sort [filename]:对文件内容排序。
whatis:显示命令的简单介绍。
- whereis:显示命令的详细位置。
- which:显示命令的主目录位置
- uname:显示系统信息,如内核版本、主机名、操作系统名称等。
- uname -a:显示全部信息
- history:显示历史命令。
2.2 Linux/Unix权限管理命令
- chmod:修改文件权限
- 详情参见:Linux文件权限管理chmod
- su:切换用户
- su - [username]:切换到指定用户
- who : 显示当前登录用户信息和对应的控制台tty。
- sudo:以超级用户权限运行命令
- chown:修改文件所有者
- chown [owner] [filename]:修改文件所有者为owner。
- chowm [owner]:[group] [filename]:同时修改文件所有者和群组。
- chown -R [owner]:[group] [dirname]:递归修改目录所有者为owner。注意是大写的R。
- umask:设置文件权限掩码也即默认权限。普通用户的默认权限
- umask [mask]:设置文件权限掩码为mask。
2.3 Linux/Unix网络管理命令
- netstat:显示网络连接信息,如端口、协议、状态等。
- netstat -anp:显示所有网络连接信息,包括PID、进程名、协议、本地地址、远端地址、状态等。
- ifconfig:查看网络接口信息,如IP地址、子网掩码、MAC地址等。部分Linux发行版中,ifconfig命令可能不直接包含如OpenWRT等嵌入式系统的网络接口信息。可以通过
opkg install net-tools
安装net-tools包,然后使用ifconfig -a
命令查看网络接口信息。- ifconfig [interface]:查看指定网络接口信息。
- ifconfig [interface] up/down:临时启用或禁用指定网络接口。也可用于临时设置ip地址。临时指系统重启后失效。
- route:查看路由信息,如路由表、默认网关等。
- ping:测试网络连接
- ping [hostname]:测试指定主机的网络连接,其中hostname可以是IP地址或域名。
- nmcli networking off:关闭网络连接
- nmcli networking on:开启网络连接
- service network-manager restart:重启网络管理服务
2.4 Linux/Unix进程管理命令
- ps: 显示当前进程状态,输出分别是进程号、控制台、时间和进程名
- ps aux:显示所有进程信息,包括命令、用户、PID、CPU占用率、内存占用率等。
kill:杀死进程
- kill -9 [PID]:强制杀死进程,信号不可被捕获、阻塞、忽略。Kill SIGKILL [PID]同效果。
- kill -15 [PID]:杀死进程,但可被捕获、阻塞、忽略。Kill SIGTERM信号。
- kill -19 [PID]:停止进程,SIGSTOP信号。
- kill -1 [PID]:挂起进程,SIGHUP信号。
- kill -2 [PID]:中断(停止)进程,SIGINT信号。
top:实时显示系统资源信息,包括CPU、内存、进程、IO等。top命令与ps命令相似,但top命令可以实时刷新显示,并提供更直观的图形化界面。ps适合用脚本分析,top适合用人工查看。
- top -u [username]:显示指定用户的进程信息。
- free:显示系统内存使用情况。
。
2.5 linux/unix文件操作命令
- diff:比较文件内容
- diff [filename1] [filename2]:比较两个文件内容。
- diff -b [filename1] [filename2]:比较两个文件内容,忽略尾行空格。
- diff -r [dir1] [dir2]:递归比较两个目录内容。
- diff -c [filename1] [filename2]:比较两个文件内容,并显示差异,带原文输出。
cmp :比较文件内容并显示不同的行号
- cmp [filename1] [filename2]:比较两个文件内容,显示不同的行号。
od :以特定的数据格式输出文件内容,默认以8进制显示。
- od -c [filename]:以字符格式显示文件内容。
- od [-t[type]] [filename]:以指定格式显示文件内容,如od -tx [filename]以16进制显示文件内容。
- file :显示文件类型
- ehco:输出内容到屏幕或文件
2.6 软件包管理命令
- dpkg:本地软件包管理
- dpkg -i 安装软件包
- dpkg -r 删除软件包
- dpkg -l 列出已安装软件包
- dpkg -s 查询软件包信息
- tar:打包和压缩文件,注意tar自身仅提供打包功能,使用-j等参数是调用其他压缩工具实现的压缩功能。
- tar -cvf 打包文件名.tar 源文件,cvf:create, verbose, file
- tar -xvf 解压文件名.tar xvf:extract, verbose, file
- tar -zcvf 打包文件名.tar.gz 源文件 -C 压缩目录,C指定压缩目录
- tar -jcvf [filename ].tar.gz.bz2 -C [目录名] 压缩目录并压缩成.tar.gz格式
- sudo tar -cf /ufile/t1.tar.gz -C ~/ufile/ t1.t 意义为将~/ufile/下的t1.t压缩为/ufile/t1.tar.gz
- gzip:压缩文件
- gzip [filename]:压缩文件
- gzip -d [filename.gz]:解压文件
- zip:压缩文件
- zip -r archive.zip /path/to/directory 压缩
- unzip -d archive.zip /path/to/directory 解压
- apt: 基于Debian的软件包管理器
- apt-get -h 帮助信息
- apt-get update 更新软件包列表
- apt-get install 安装软件包
2.7 Linux/Unix用户管理命令
切换用户:su 用户名
对于新系统无法切换root用户
新系统需要先创建root用户的密码。
1
2
3
4
5
6serenitatis@shumeipai:/ $ sudo apt install git
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
git is already the newest version (1:2.39.5-0+deb12u1).
0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.
查看当前用户:whoami
查看所有用户:cat /etc/passwd
添加用户:
- useradd 用户名
- useradd -m 用户名 创建用户同时创建主目录
- useradd -G 将用户并加入指定组
- adduser 用户名 创建用户同时创建主目录
删除用户:(若没有删除用户目录,利用rm -rf /home/用户名即可)
- userdel -r 用户名 删除用户同时删除主目录
- userdel 用户名 只删除用户,不删除主目录
修改用户密码:passwd 用户名
切换到root用户:su root
查看当前用户:whoami
查看所有用户:cat /etc/passwd
为新用户设置sudo权限:
- vim 编辑/etc/sudoers文件
- vim 编辑/etc/sudoers文件
禁用用户登录:
- vim编辑/etc/passwd文件,注销或在路径后任意添加即可。
图中用户为serenitatis
- vim编辑/etc/passwd文件,注销或在路径后任意添加即可。
2.8 Linux/Unix磁盘管理命令
- 查看磁盘分区(设备):fdisk -l
- 查看磁盘使用情况:df
- df -i:显示inode信息
- df -h:以可读方式显示磁盘使用情况
- 查看挂载点:mount
- mount -t [fstype] [device] [mount_point]; 参数-t用于指定文件系统类型,一般选择auto。
ls查看 ls -l /dev/sd* sd为采用SCSI 接口的磁盘,hd为采用 IDE 接口的磁盘较新的系统中也采用sd标记,fd为采用 Floppy 接口的软盘。
- /dev/sda1:第一个硬盘第一个分区,/dev/sda2:第一个硬盘的第二个分区
- /dev/sdb1:第二个硬盘第一个分区,/dev/sdb2:第二个硬盘的第二个分区
- 以此类推,可查看所有硬盘和分区。
挂载磁盘:mount /dev/sda1 /mnt
- 卸载磁盘:umount /mnt
2.9 Linux/Unix命令通配符
- :匹配任意字符串,如ls /home/user/,将列出/home/user目录下所有文件和目录。
-?:匹配单个字符,如ls /home/user/f?o,将列出/home/user目录下所有以f开头,后跟o的文件和目录。 - []:匹配指定范围内的字符,如ls /home/user/[0-9]*,将列出/home/user目录下所有以数字开头的文件和目录。
- {}:匹配多选一的字符,如ls /home/user/{foo,bar},将列出/home/user目录下foo或bar的文件和目录。
- !:排除指定字符,如ls /home/user/*[!0-9],将列出/home/user目录下所有非数字开头的文件和目录。
2.10 Linux/Unix管道命令
- |:管道命令,将前一个命令的输出作为后一个命令的输入。如ls /home/user | grep foo,将列出/home/user目录下所有文件和目录,并过滤出包含foo的行。
:重定向命令,将命令的输出重定向到文件。如ls /home/user > file.txt,将列出/home/user目录下所有文件和目录,并将输出保存到file.txt文件中。
- <:重定向命令,将文件内容作为命令的输入。如cat < file.txt,将读取file.txt文件的内容,并将内容作为cat命令的输入。
- <<:将后续内容作为输入,如echo “hello” | tr a-z A-Z,将输出HELLO。
2.11 Linux/Unix快捷键
- Ctrl + Alt +F1:切换到tty1,其它tty按同样的方式切换。默认共六个tty,分别是tty1、tty2、tty3、tty4、tty5、tty6。前两个为图形界面,后四个为字符界面。
- Ctrl + C:中断正在运行的命令。
- Ctrl + D:退出当前shell。
- Ctrl + Z:将当前进程放到后台暂停运行。
- Ctrl + W:删除光标前的单词。
- Ctrl + U:删除光标前的命令。
- Ctrl + L:清屏。
- Ctrl + A:移动光标到行首。
- Ctrl + E:移动光标到行尾。
- Ctrl + P:上一条命令。
- Ctrl + N:下一条命令。
- Ctrl + R:搜索命令历史记录。
- Ctrl + K:删除光标到行尾的内容。
- Ctrl + Y:粘贴刚刚删除的内容。
- Alt + F:移动光标到下一个单词的开头。
- Alt + B:移动光标到上一个单词的开头。
- Alt + D:删除光标处的单词。
- Alt + T:交换光标处的两个字符。
- Alt + L:将整行文字转为小写。
- Alt + U:将整行文字转为大写。
- Alt + C:将整行文字首字母大写。
- Alt + /:注释当前行。
- Alt + .:重复上一个命令。
- Alt + 回车:重复上一个命令。
- Shift + 方向键:选择文本块。
- Shift + PageUp:向上翻页。
- Shift + PageDown:向下翻页。
- Shift + Insert:粘贴复制的内容到光标位置。
- Shift + Delete:剪切光标位置到剪切板。
- Shift + Home:移动光标到行首。
- Shift + End:移动光标到行尾。
- Shift + Tab:切换到上一个窗口。
- F1:显示帮助信息。
- F2:设置窗口标题。
- F3:搜索文件。
- F4:关闭当前窗口。
- F5:刷新当前窗口。
- F6:切换全屏模式。
- F7:搜索命令历史记录。
- F8:命令行编辑。
- F9:命令行编辑。
- F10:退出当前窗口。
- F11:切换全屏模式。
- F12:切换当前窗口。
待续……
- top:实时显示进程信息
- kill:杀死进程
- free:显示内存使用情况
- df:显示磁盘使用情况
- mount:挂载文件系统
- unmount:卸载文件系统
- ssh:远程登录
- wget:下载文件
- curl:下载文件
- tar:打包和压缩文件
- unzip:解压文件
评论