1.基础的shell命令
在Linux系统中不同于window中的图形化操作,linux更多的是用的命令行的操作,下面我们来看看其中的一些基础shell命令。首先我们看下面这段命令解释一下其中的提示符:
bash
linux@ubuntu:~$ sudo su
[sudo] linux 的密码:
root@ubuntu:/home/linux#
@是分隔符,linux和root是用户名,ubuntu是计算机名,~表示家目录即linux/home是根目录的子目录,/是根目录,~后的符号表示是普通用户,#表示是管理员用户。
接下来是一些快捷键,如终端里的复制时ctrl+shift+c,粘贴时crtl+shift+v,上键获取上一次输入执行的命令,左右键用来移动光标到指定的命令位置,ctrl+c结束一个正在执行的命令,crtl+l清除屏幕,Tab补齐命令和文件名。
下面是一些基础的shell命令:
bash
linux@ubuntu:~$ df
文件系统 1K的块 已用 可用 已用% 挂载点
tmpfs 396128 2072 394056 1% /run
/dev/sda3 50770432 14251564 33907464 30% /
tmpfs 1980636 0 1980636 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
/dev/sda2 524252 6232 518020 2% /boot/efi
tmpfs 396124 100 396024 1% /run/user/1000
/dev/sr0 160192 160192 0 100% /media/linux/CDROM
linux@ubuntu:~$ free
total used free shared buff/cache available
内存: 3961272 986732 2118496 49480 856044 2692980
交换: 3991548 0 3991548
linux@ubuntu:~$ history
1 sudo apt update
2 sudo apt install open-vm-tools-desktop cloud-init
3 reboot
4 history
linux@ubuntu:~$ history -c
linux@ubuntu:~$ history
1 history
linux@ubuntu:~$
df:查看磁盘使用情况,free:显示系统空闲内存,history:显示历史命令,history-c:清空历史命令。
bash
linux@ubuntu:~$ ls
Desktop Documents Downloads Music Pictures Public snap Templates Videos work
linux@ubuntu:~$ alias myls='ls'
linux@ubuntu:~$ myls
Desktop Documents Downloads Music Pictures Public snap Templates Videos work
linux@ubuntu:~$ unalias myls
linux@ubuntu:~$ myls
找不到命令 "myls",您的意思是:
"pyls" 命令来自 Debian 软件包 python3-pyls (0.36.2-3)
"mmls" 命令来自 Debian 软件包 sleuthkit (4.11.1+dfsg-1)
"tyls" 命令来自 Debian 软件包 terminology (1.12.1-1)
尝试 sudo apt install <deb name>
ls:查看当前路径下文件,alias:给命令取别名,unalias:消除别名。
bash
linux@ubuntu:~$ ls
Desktop Documents Downloads Music Pictures Public snap Templates Videos work
linux@ubuntu:~$ cd work
linux@ubuntu:~/work$ ls
jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz word.c
linux@ubuntu:~/work$ touch file_fist.c file_second.c file_three.c
linux@ubuntu:~/work$ ls
file_fist.c file_second.c file_three.c jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz word.c
linux@ubuntu:~/work$ ls file_*.c
file_fist.c file_second.c file_three.c
linux@ubuntu:~/work$ touch file_1.c file_2.c file_3.c
linux@ubuntu:~/work$ ls
file_1.c file_2.c file_3.c file_fist.c file_second.c file_three.c jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz word.c
linux@ubuntu:~/work$ ls file_?.c
file_1.c file_2.c file_3.c
linux@ubuntu:~/work$ touch file_o.c file_t.c file_a.c
linux@ubuntu:~/work$ ls file_?.c
file_1.c file_2.c file_3.c file_a.c file_o.c file_t.c
linux@ubuntu:~/work$ ls file_[ota].c
file_a.c file_o.c file_t.c
linux@ubuntu:~/work$ ls file_[a-q].c
file_a.c file_o.c
linux@ubuntu:~/work$ ls file_[^a].c
file_1.c file_2.c file_3.c file_o.c file_t.c
linux@ubuntu:~/work$ rm file*
linux@ubuntu:~/work$ ls
jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz word.c
cd:进入到指定路径下,touch:创建文件。通配符,*匹配任意长度的字符串,?匹配一个长度的字符的,[]匹配指定的字符,[-]匹配字符范围内的字符,[^]匹配除了指定字符的字符。rm:删除指定文件。
bash
linux@ubuntu:~$ ls -l
总计 40
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Desktop
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Documents
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Downloads
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Music
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Pictures
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Public
drwx------ 4 linux linux 4096 12月 3 16:03 snap
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Templates
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Videos
drwxrwxr-x 3 linux linux 4096 12月 14 15:29 work
linux@ubuntu:~$ ls -l | grep work
drwxrwxr-x 3 linux linux 4096 12月 14 15:29 work
linux@ubuntu:~$ ls > log
linux@ubuntu:~$ ls
Desktop Documents Downloads log Music Pictures Public snap Templates Videos work
linux@ubuntu:~$ cat log
Desktop
Documents
Downloads
log
Music
Pictures
Public
snap
Templates
Videos
work
linux@ubuntu:~$ ls -l > log
linux@ubuntu:~$ cat log
总计 40
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Desktop
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Documents
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Downloads
-rw-rw-r-- 1 linux linux 0 12月 14 15:32 log
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Music
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Pictures
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Public
drwx------ 4 linux linux 4096 12月 3 16:03 snap
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Templates
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Videos
drwxrwxr-x 3 linux linux 4096 12月 14 15:29 work
linux@ubuntu:~$ ls >> log
linux@ubuntu:~$ cat log
总计 40
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Desktop
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Documents
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Downloads
-rw-rw-r-- 1 linux linux 0 12月 14 15:32 log
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Music
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Pictures
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Public
drwx------ 4 linux linux 4096 12月 3 16:03 snap
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Templates
drwxr-xr-x 2 linux linux 4096 12月 3 15:48 Videos
drwxrwxr-x 3 linux linux 4096 12月 14 15:29 work
Desktop
Documents
Downloads
log
Music
Pictures
Public
snap
Templates
Videos
work
linux@ubuntu:~$ grep < log
用法:grep [选项]... 模式 [文件]...
请尝试执行 "grep --help" 来获取更多信息。
linux@ubuntu:~$ grep work < log
drwxrwxr-x 3 linux linux 4096 12月 14 15:29 work
work
ls -l:显示该路径下文件详细信息。| :管道将以一个的输出作为第二个输入。grep:查找指定信息。> :输出系统标准输出为终端窗口,可以指定输出到哪里,如果没有该文件则删除后重新创建,没有该文件则创建文件。>>:追加输出,没有文件创建,有则追加输出。< :输入,系统的标准输入为键盘,可以指定文件作为输入。cat:显示一个文件里面的内容。
bash
linux@ubuntu:~/work/test$ ls
linux@ubuntu:~/work/test$ ls /
bin boot cdrom dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv swapfile sys tmp usr var
linux@ubuntu:~/work/test$ touch `ls /`
linux@ubuntu:~/work/test$ ls
bin boot cdrom dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin snap srv swapfile sys tmp usr var
linux@ubuntu:~/work/test$ rm *
linux@ubuntu:~/work/test$ ls
linux@ubuntu:~/work/test$ cd ~
linux@ubuntu:~$ cd work/test/
linux@ubuntu:~/work/test$ cd .
linux@ubuntu:~/work/test$ cd ..
反引号:一个命令的输出作为一个命令的输入。cd:进入到指定目录。work/test/:绝对路径。..:相对路径,..表示当前目录的上一个,.表示当前路径。
bash
linux@ubuntu:~/work$ ls
jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
linux@ubuntu:~/work$ mkdir dir1
linux@ubuntu:~/work$ ls
dir1 jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
linux@ubuntu:~/work$ mkdir dir1/dir2/dir3
mkdir: 无法创建目录 "dir1/dir2/dir3": 没有那个文件或目录
linux@ubuntu:~/work$ mkdir -p dir1/dir2/dir3
linux@ubuntu:~/work$ ls
dir1 jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
linux@ubuntu:~/work$ ls dir1
dir2
linux@ubuntu:~/work$ ls dir1/dir2
dir3
linux@ubuntu:~/work$ rm -r dir1
linux@ubuntu:~/work$ ls
jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
linux@ubuntu:~/work$ mkdir dir1/dir2/dir3
mkdir: 无法创建目录 "dir1/dir2/dir3": 没有那个文件或目录
linux@ubuntu:~/work$ mkdir -p dir1/dir2/dir3
linux@ubuntu:~/work$ cd dir1
linux@ubuntu:~/work/dir1$ touch test
linux@ubuntu:~/work/dir1$ cd ..
linux@ubuntu:~/work$ rm -r dir1
linux@ubuntu:~/work$ ls
jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
mkdir:创建目录。mkdir -p :可创建子目录。rm -r:删除目录。rm -rf:强制删除不提示错误信息。
bash
linux@ubuntu:~/work$ pwd
/home/linux/work
linux@ubuntu:~/work$ man
您需要什么手册页?
例如,尝试使用"man man"。
linux@ubuntu:~/work$ man man
pwd:显示当前路径。man:在线接口手册,可以产看相关信息。
2.vim编辑器
bash
linux@ubuntu:~/work$ cd ..
linux@ubuntu:~$ sudo apt install vim
[sudo] linux 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
vim 已经是最新版 (2:8.2.3995-1ubuntu2.24)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 9 个软件包未被升级。
linux@ubuntu:~$ cd work
linux@ubuntu:~/work$ vi hello.c
sudo apt install vim:通过包管理器下载vim编辑器,我这里已经下载好了。vi:以vim编辑器打开文件,没有文件创建。
vi的三种工作模式:视图模式:打开文件后的默认模式只能查看不能修改,编辑模式:编辑文本,命令模式:在下方输入操作命令。模式切换快捷键:i:视图进入编辑,esc:编辑进入视图,:冒号:视图进入命令。esc:命令进入视图。命令模式中的输入命令:q:不保存退出,w:保存,wq:保存退出,q!:强制退出,x:保存退出,X:文件加密,只有输入密码后才能进入文件。
视图下的快捷键:上下左右键光标移动。o:重启一行进入编辑模式,a:光标移动到后一个进入编辑模式。s:删除一个字符进入编辑模式。x:删除字符不进入编辑模式。yy:复制一行。nyy:复制n行。y:复制选中内容。d:剪切选中的内容。dd:剪切一行。ndd:剪切n行。p:粘贴粘贴板上的内容。u:撤销。crtl+r:恢复。ggvGG:全选。=:对齐。/:查找指定内容。
bash
linux@ubuntu:~/work$ vi hello.c
linux@ubuntu:~/work$ gcc hello.c
linux@ubuntu:~/work$ ls
a.out hello.c jeffy-vim-sl-v6.0 jeffy-vim-sl-v6.0.tar.xz
linux@ubuntu:~/work$ ./a.out
hello worldlinux@ubuntu:~/work$
gcc:使用gcc编译器编译指定文件。
3.环境变量
环境变量指的是程序运行的需要的运行环境,该环境可以由多个环境变量组成。环境变量按生效范围分可以分为系统环境变量:公共的,整个系统生效。用户环境变量:用户的,用户生效。按周期分为永久环境变量,在环境变量脚本中配置,每次登录都会执行相当于永久。临时环境变量:在shell中定义的,退出shell后失效。
bash
linux@ubuntu:~$ env
SHELL=/bin/bash
SESSION_MANAGER=local/ubuntu:@/tmp/.ICE-unix/1324,unix/ubuntu:/tmp/.ICE-unix/1324
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
SSH_AGENT_LAUNCHER=gnome-keyring
...
linux@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
env:显示所有环境变量。echo:显示指定的环境变量,环境变量前的符号不能省略。
bash
linux@ubuntu:~$ NUM=200
linux@ubuntu:~$ echo $NUM
200
上面的命令就是创建一个环境变量,当设置环境变量时有空格等特殊字符要加上单引号。
4.软件包管理
对于软件包管理主要时软件的安装下载和删除,我们继续看命令。
bash
linux@ubuntu:~$ sudo apt install sl
[sudo] linux 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列【新】软件包将被安装:
sl
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 9 个软件包未被升级。
需要下载 12.7 kB 的归档。
解压缩后会消耗 60.4 kB 的额外空间。
获取:1 http://mirrors.huaweicloud.com/repository/ubuntu jammy/universe amd64 sl amd64 5.02-1 [12.7 kB]
已下载 12.7 kB,耗时 0秒 (30.8 kB/s)
正在选中未选择的软件包 sl。
(正在读取数据库 ... 系统当前共安装有 224084 个文件和目录。)
准备解压 .../archives/sl_5.02-1_amd64.deb ...
正在解压 sl (5.02-1) ...
正在设置 sl (5.02-1) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
linux@ubuntu:~$ sudo apt remove sl
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列软件包将被【卸载】:
sl
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 9 个软件包未被升级。
解压缩后将会空出 60.4 kB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 224107 个文件和目录。)
正在卸载 sl (5.02-1) ...
正在处理用于 man-db (2.10.2-1) 的触发器 ...
linux@ubuntu:~$ sudo apt policy gcc
gcc:
已安装:4:11.2.0-1ubuntu1
候选: 4:11.2.0-1ubuntu1
版本列表:
*** 4:11.2.0-1ubuntu1 500
500 http://mirrors.huaweicloud.com/repository/ubuntu jammy/main amd64 Packages
100 /var/lib/dpkg/status
linux@ubuntu:~$ sudo apt list gcc
正在列表... 完成
gcc/jammy,now 4:11.2.0-1ubuntu1 amd64 [已安装]
gcc/jammy 4:11.2.0-1ubuntu1 i38
linux@ubuntu:~$ sudo apt purge sl
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
软件包 sl 未安装,所以不会被卸载
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 9 个软件包未被升级。
linux@ubuntu:~$ sudo apt search sl
linux@ubuntu:~$ sudo apt update
命中:1 http://mirrors.huaweicloud.com/repository/ubuntu jammy InRelease
获取:2 http://mirrors.huaweicloud.com/repository/ubuntu jammy-updates InRelease [128 kB]
获取:3 http://mirrors.huaweicloud.com/repository/ubuntu jammy-backports InRelease [127 kB]
获取:4 http://mirrors.huaweicloud.com/repository/ubuntu jammy-security InRelease [129 kB]
linux@ubuntu:~$ sudo apt autoclean
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
linux@ubuntu:~$ sudo apt show gcc
Package: gcc
Version: 4:11.2.0-1ubuntu1
Priority: optional
Build-Essential: yes
Section: devel
Source: gcc-defaults (1.193ubuntu1)
sudo apt install : 安装软件。sudo apt remove:删除软件。sudo apt policy:查看软件安装信息。sudo apt list :列出软件包清单。sudo apt purge:删除软件和配置文件。sudo apt search:搜索软件。sudo apt update:从服务器更新软件到系统,让系统于服务器的软件信息保持一致。sudo apt upgrade:更新系统。sudo apt autoclean:自动删除旧的安装包。sudo apt clean:删除所有安装包。sudo apt show:查看指定软件包的详细信息。