大部分同学对Linux的第一印象就是这个黑漆漆的终端,然后通过这个窗口输入命令行让里面的命令解释器来执行我们的输入。这个命令行解释器也就是我们所说的shell(壳)。其实它也是一个linux内核的软件,在系统启动后加载进RAM(内存)内,每个用户通过终端登录系统后,就会运行。负责不间断的接收用户的输入,通过创建新的‘进程’来运行用户输入的命令,执行完后再次返回等待新的命令输入。那有的小伙伴的Linux开启之后是带有图形界面的,那就去菜单搜索terminal(终端)。
在此之前我会默认你已经有了自己的Linux环境。
init
init 3
一句话解释就是:将图形界面切换到黑漆漆的命令行模式。
在Linux系统中,运行 init 3 命令会切换系统的运行级别(runlevel)到级别 3。在传统的Unix风格的系统中,运行级别代表了系统的运行模式,每个运行级别都定义了一组特定的服务和功能。不同的运行级别决定了系统启动时启动的服务和进程。
在大多数Linux系统中,运行级别如下:
运行级别 0:关机 运行级别 1:单用户模式(救援模式) 运行级别 2:多用户,没有网络服务(通常为自定义级别) 运行级别 3:多用户,带网络服务(文本模式) 运行级别 4:保留,未使用 运行级别 5:多用户,带图形界面(X11) 运行级别 6:重新启动 因此,运行 init 3 命令会将系统切换到多用户模式,带有网络服务,但没有图形界面。这在需要使用纯文本界面或服务器环境时很有用,因为它可以减少资源消耗,并提供更多的系统资源用于运行服务。 那么反过来,init 5也可以切换成图形界面(前提是已经安装了图形界面)想想你的同学还是在用windows-like的图形界面,而你像黑客一样哒哒哒的敲着命令行,是不是一下子NB起来了。
pwd
pwd 是 Linux 系统中的一个命令,它是 "print working directory"(打印当前工作目录)的缩写。当你在终端中运行 pwd 命令时,它会显示当前工作目录的完整路径。
例如,如果你在终端中运行 pwd 命令,输出将是当前工作目录的路径,如下所示:
/home/user/Documents
这表示你当前正在 /home/user/Documents 目录下工作。
pwd 命令对于确定当前所在的位置以及查找文件和目录的路径非常有用。
ls
ls 是 Linux 和 Unix 系统中的一个常用命令,用于列出指定目录中的文件和子目录。它的名字来自于 "list"(列出)的缩写。
当你在终端中运行 ls 命令时,它会显示当前工作目录下的文件和目录列表。后面也可以拼接你想要的选项命令
基本用法如下:
ls [options] [file or directory]
-l:以长格式(详细信息)列出文件和目录。
-a:显示所有文件和目录,包括隐藏文件(以点开头的文件)。
-h:以人类可读的方式显示文件大小(例如,KB、MB)。
-r:以逆序显示文件和目录。
-t:按修改时间排序显示文件和目录。
-F 将会:
对于普通文件,不做任何特殊标记。
对于目录,在目录名后面加上 / 标记。
对于可执行文件,加上 * 标记。
对于符号链接,在文件名后面加上 @ 标记。
对于 socket 文件,在文件名后面加上 = 标记。
对于管道文件(FIFO),在文件名后面加上 | 标记。
例举几个常用的用法:
我要看看这里都有什么文件
root@SSUN-LT1:/# ls
bin data etc init lib32 libx32 media opt root sbin srv tmp var
boot dev home lib lib64 lost+found mnt proc run snap sys usr
我想查看隐藏文件
root@SSUN-LT1:/# ls -a
. bin data etc init lib32 libx32 media opt root sbin srv tmp var
.. boot dev home lib lib64 lost+found mnt proc run snap sys usr
查看文件权限
root@SSUN-LT1:/# ls -l
total 2124
lrwxrwxrwx 1 root root 7 Apr 23 2020 bin -> usr/bin
drwxr-xr-x 2 root root 4096 Apr 23 2020 boot
drwxr-xr-x 3 root root 4096 Feb 9 09:41 data
drwxr-xr-x 16 root root 3520 Feb 28 11:30 dev
drwxr-xr-x 99 root root 4096 Feb 28 11:30 etc
drwxr-xr-x 4 root root 4096 Feb 9 12:05 home
-rwxrwxrwx 1 root root 2102392 Nov 10 15:29 init
lrwxrwxrwx 1 root root 7 Apr 23 2020 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Apr 23 2020 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 Apr 23 2020 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 Apr 23 2020 libx32 -> usr/libx32
drwx------ 2 root root 16384 Apr 10 2019 lost+found
drwxr-xr-x 2 root root 4096 Apr 23 2020 media
drwxr-xr-x 5 root root 4096 Feb 9 10:20 mnt
drwxr-xr-x 4 root root 4096 Feb 8 11:50 opt
dr-xr-xr-x 213 root root 0 Feb 28 11:30 proc
drwx------ 7 root root 4096 Feb 28 11:30 root
drwxr-xr-x 26 root root 840 Feb 28 11:30 run
lrwxrwxrwx 1 root root 8 Apr 23 2020 sbin -> usr/sbin
drwxr-xr-x 6 root root 4096 Feb 28 11:30 snap
drwxr-xr-x 2 root root 4096 Apr 23 2020 srv
dr-xr-xr-x 11 root root 0 Feb 28 11:30 sys
drwxrwxrwt 6 root root 4096 Feb 28 11:30 tmp
drwxr-xr-x 14 root root 4096 Apr 23 2020 usr
drwxr-xr-x 13 777 root 4096 Apr 23 2020 var
这里再提一个别名 ll, 是的两个小写的L
root@SSUN-LT1:/# ll
total 2132
drwxr-xr-x 20 root root 4096 Feb 28 11:30 ./
drwxr-xr-x 20 root root 4096 Feb 28 11:30 ../
lrwxrwxrwx 1 root root 7 Apr 23 2020 bin -> usr/bin/
drwxr-xr-x 2 root root 4096 Apr 23 2020 boot/
drwxr-xr-x 3 root root 4096 Feb 9 09:41 data/
drwxr-xr-x 16 root root 3520 Feb 28 11:30 dev/
drwxr-xr-x 99 root root 4096 Feb 28 11:30 etc/
drwxr-xr-x 4 root root 4096 Feb 9 12:05 home/
-rwxrwxrwx 1 root root 2102392 Nov 10 15:29 init*
lrwxrwxrwx 1 root root 7 Apr 23 2020 lib -> usr/lib/
lrwxrwxrwx 1 root root 9 Apr 23 2020 lib32 -> usr/lib32/
lrwxrwxrwx 1 root root 9 Apr 23 2020 lib64 -> usr/lib64/
lrwxrwxrwx 1 root root 10 Apr 23 2020 libx32 -> usr/libx32/
drwx------ 2 root root 16384 Apr 10 2019 lost+found/
drwxr-xr-x 2 root root 4096 Apr 23 2020 media/
drwxr-xr-x 5 root root 4096 Feb 9 10:20 mnt/
drwxr-xr-x 4 root root 4096 Feb 8 11:50 opt/
dr-xr-xr-x 212 root root 0 Feb 28 11:30 proc/
drwx------ 7 root root 4096 Feb 28 11:30 root/
drwxr-xr-x 26 root root 840 Feb 28 11:30 run/
lrwxrwxrwx 1 root root 8 Apr 23 2020 sbin -> usr/sbin/
drwxr-xr-x 6 root root 4096 Feb 28 11:30 snap/
drwxr-xr-x 2 root root 4096 Apr 23 2020 srv/
dr-xr-xr-x 11 root root 0 Feb 28 11:30 sys/
drwxrwxrwt 6 root root 4096 Feb 28 11:30 tmp/
drwxr-xr-x 14 root root 4096 Apr 23 2020 usr/
drwxr-xr-x 13 777 root 4096 Apr 23 2020 var/
alias
查看别名和创造别名
root@SSUN-LT1:/# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
这里可以看到 ll就等于 'ls -alF'
我们也可以创建自己的alias
root@SSUN-LT1:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
none 8110068 4 8110064 1% /mnt/wsl
none 989560828 544884984 444675844 56% /usr/lib/wsl/drivers
/dev/sdc 263112772 9498672 240175944 4% /
none 8110068 80 8109988 1% /mnt/wslg
none 8110068 0 8110068 0% /usr/lib/wsl/lib
rootfs 8106772 2056 8104716 1% /init
none 8106772 0 8106772 0% /dev
none 8110068 860 8109208 1% /run
none 8110068 0 8110068 0% /run/lock
none 8110068 0 8110068 0% /run/shm
tmpfs 8110068 0 8110068 0% /sys/fs/cgroup
none 8110068 76 8109992 1% /mnt/wslg/versions.txt
none 8110068 76 8109992 1% /mnt/wslg/doc
drvfs 989560828 544884984 444675844 56% /mnt/c
tmpfs 1622012 0 1622012 0% /run/user/0
root@SSUN-LT1:/# alias df='df -h'
root@SSUN-LT1:/# df
Filesystem Size Used Avail Use% Mounted on
none 7.8G 4.0K 7.8G 1% /mnt/wsl
none 944G 520G 425G 56% /usr/lib/wsl/drivers
/dev/sdc 251G 9.1G 230G 4% /
none 7.8G 80K 7.8G 1% /mnt/wslg
none 7.8G 0 7.8G 0% /usr/lib/wsl/lib
rootfs 7.8G 2.1M 7.8G 1% /init
none 7.8G 0 7.8G 0% /dev
none 7.8G 860K 7.8G 1% /run
none 7.8G 0 7.8G 0% /run/lock
none 7.8G 0 7.8G 0% /run/shm
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
none 7.8G 76K 7.8G 1% /mnt/wslg/versions.txt
none 7.8G 76K 7.8G 1% /mnt/wslg/doc
drvfs 944G 520G 425G 56% /mnt/c
tmpfs 1.6G 0 1.6G 0% /run/user/0
root@SSUN-LT1:/#
但是要注意,这种方式创建的别名只在当前的 shell 会话中有效。要让别名在每次登录时都生效,需要将别名添加到你的 shell 配置文件中,比如 ~/.bashrc(对于 Bash shell)或者 ~/.zshrc(对于 Zsh shell)等。在配置文件中添加别名的行,就可以在每次登录后自动加载并生效。
另外,你也可以通过编辑对应的 shell 配置文件手动添加别名,比如使用文本编辑器打开 ~/.bashrc 文件,并在文件中添加你需要的别名。
cd
change directory,顾名思义就是用于改变当前工作目录。
cd /path/to/directory
切换到某一路径
cd ..
切换到上级目录
cd -
切换到上一次访问的目录
cd ~
切换到家目录
mv
move的缩写,两个作用:
- ctrl+X and ctrl+V
- 重命名
mv file1 /path/to/directory
这会将 file1 移动到指定的目录中。
mv oldfile newfile
这会将 oldfile 文件重命名为 newfile。
也可以组合使用
mv file1 /path/to/newfile
移动多文件
mv file1 file2 file3 /path/to/directory
rm
remove 删除命令, 慎用
rm filename
删除某文件
rm -f filename
-f强制删除
rm file1 file2 file3
一次性多删除几个
像什么-r这种递归删除我就不介绍了以免闯祸
##whoami 和 su
whoami命令用于显示当前有效的用户名称。
su命令是"Switch User"的缩写,用于切换用户。
su
什么都不加就是 su root
su username
就是切换到这个用户
cat、less、more和echo
cat、less、more和echo是在Linux和类Unix系统中常用的命令,用于不同的文件操作和文本输出。
- cat cat命令用于连接文件并打印到标准输出设备(通常是终端)。它也可以用于创建新文件、追加内容到文件、从终端接收输入等。
基本用法:
cat filename
这会将名为 filename 的文件的内容输出到终端。
- less less命令用于以一页一页的方式浏览文本文件,它允许向前或向后浏览文件,并提供搜索和其他功能。
基本用法:
less filename
这会在终端中打开名为 filename 的文件,允许你向上、向下浏览文件内容。
- more more命令也用于以一页一页的方式浏览文本文件,类似于less,但功能相对较少。
基本用法:
more filename
这会在终端中打开名为 filename 的文件,允许你向上、向下浏览文件内容。
- echo echo命令用于向标准输出设备(通常是终端)输出一个字符串。
基本用法:
echo "Hello, World!"
这会将字符串 "Hello, World!" 输出到终端。
除了输出简单的字符串之外,echo还可以与变量一起使用,用于输出变量的值。
例如:
name="John"
echo "My name is $name"
这会输出 "My name is John"。
有兴趣的小伙伴可以了解一下tac命令
vim、vi
创建文本编辑文本的命令,这个要是写起来能写很多行。
i 进入编辑模式
:回到命令模式
q 推出
w保存
!强制执行
mkdir
mkdir是Linux和类Unix系统中用于创建目录(文件夹)的命令。它的用法为:
mkdir test
创建单个目录
mkdir -p /path/to/parent/child/grandchild
递归创建多层目录
mkdir -m 755 new_directory
创建的同时设置权限
总结
希望本篇文章能够满足新手朋友的命令参考。首先承认比我写的好的太多太多了,我也不会标榜全网最全或者最好之类。只是希望新手朋友能够尽快入门可以玩起来。 推个类linux的游戏 store.steampowered.com/app/365450/…
需要免费使用IDEA的小伙伴可以关注公众号【AIGoland之星】回复【idea】领取最新且免费的激活工具。回复【工具】可获得虚拟机,centos镜像等工具。