Linux的shell命令

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:查看指定软件包的详细信息。

相关推荐
voltina2 小时前
事务操作流程
数据库
码界奇点2 小时前
基于Django与Ansible的自动化运维管理系统设计与实现
运维·python·django·毕业设计·ansible·源代码管理
OnlyEasyCode2 小时前
.net程序部署Linux运行
linux·运维·服务器
裤裤兔2 小时前
linux查看内存
linux
kobe_OKOK_2 小时前
在 Ubuntu Server 24.04 (Noble)** 上安装 **SQL Server 驱动程序
linux·运维·ubuntu
星哥说事2 小时前
Zabbix与Prometheus在服务器及网络设备管理中的应用
服务器·zabbix·prometheus
Jeremy爱编码2 小时前
leetcode热题路径总和 III
算法·leetcode·职场和发展
haiyanglideshi2 小时前
ubuntu上使用samba访问另一台ubuntu的数据
linux·运维·ubuntu
hd51cc2 小时前
MFC消息处理机制
c++·mfc