Linux基础 运行人生的第一个linux命令

发布于 2022-07-02  225 次阅读


预备知识

速记表

#号在Shell中是注释符号,其后面的内容不会被执行

cd ~ # 进入用户的home目录
pwd # 列出当前目录的绝对路径
ls # 列出当前目录的内容
mkdir ~/father/son # 创建一文件夹 
mv ~/father/son ~/father/daughter # 改名/移动文件(夹)
cp ~/father/daughter ~/father/daughter2 # 复制文件(夹)
rm -r ~/father/daughter  # 删除目录(删除文件不用-r)

基本命令

假设你已经用Shell客户端进入了VPS的后台,那么下一步要做些啥呢? :sunglasses:

首先应该是观察一下你的用户名。一个典型的名字是:

用户名@主机名 

比如这样:

[email protected]:~

那么主机名就是VM-123,而用户名则是root

很多VPS主机的初始化用户就是root用户,有一些却不是。root用户与文件权限及安全管理有重要关系,但现在并不是深入讨论它的时机。

因为此时你应该先运行人生的第一个linux命令:

cd ~

是不是感觉好像没有发生什么?这就对了,哈哈哈 :yum:

这个命令的意思是:进入当前用户的home目录。这个~在Linux中就是代表你的home目录。你可以通过下面的命令看看你的home目录的绝对路径:

pwd

如果是root用户,一般会输出/root。如果是非root,一般是/home/用户名。其实这里也体现出root用户确实是比较特别的,它住在系统更加上层的目录中。:stuck_out_tongue:

那么,下面应该做些啥呢?

可以试试这个命令:

ls

它会列出当前文件夹,也就是root用户的home目录的所有文件(夹),但不包括隐藏文件。

比如我的目录里的非隐藏文件就有:

aliyunpan              Downloads  mybackup  rImages.zip                 wordpress
aliyun_recnerd_backup  legacy     rImages   virt-sysprep-firstboot.log  wordpress2

接下来,我们要尝试一下ls命令的变种:

l

我没有少打,就是一个字母l。我输出的内容是这样的:

total 321M
drwx------ 16 root root 4.0K Apr 17 22:42 .
drwxr-xr-x 27 root root 4.0K Apr 14 18:53 ..
drwxr-xr-x  2 root root 4.0K Apr 13 19:13 aliyunpan
drwxr-xr-x  2 root root 4.0K Apr 14 08:54 aliyun_recnerd_backup
-rw-------  1 root root 4.2K Apr 12 14:06 .bash_history
-rw-r--r--  1 root root 3.1K Apr  9  2018 .bashrc
drwx------  2 root root 4.0K Apr 30  2018 .cache
drwx------  3 root root 4.0K Apr 14 19:16 .config
drwxr-xr-x  3 root root 4.0K Apr 14 08:09 Downloads
drwx------  3 root root 4.0K Apr  6 07:35 .gnupg
drwxr-xr-x  2 root root 4.0K Apr 17 10:56 legacy
drwxr-xr-x  3 root root 4.0K Apr 30  2018 .local
drwxr-xr-x  6 root root 4.0K Apr 17 12:31 mybackup
drwxr-xr-x 12 root root 4.0K Apr 12 14:05 .oh-my-zsh
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
drwxr-xr-x  5 root root 4.0K Apr 17 10:48 rImages
-rw-r--r--  1 root root 320M Apr 17 10:44 rImages.zip
-rw-r--r--  1 root root   10 Apr 12 14:05 .shell.pre-oh-my-zsh
drwxr-xr-x  2 root root 4.0K Apr 13 14:27 .vim
-rw-------  1 root root  27K Apr 17 17:30 .viminfo
-rw-r--r--  1 root root  929 Apr  5 23:47 virt-sysprep-firstboot.log
-rw-r--r--  1 root root  260 Apr 14 08:11 .wget-hsts
drwxr-xr-x  4 root root 4.0K Apr 13 08:40 wordpress
drwxr-xr-x  4 root root 4.0K Apr 15 19:35 wordpress2
-rw-------  1 root root  244 Apr 17 16:48 .Xauthority
-rw-r--r--  1 root root  42K Apr 12 14:05 .zcompdump
-rw-r--r--  1 root root  43K Apr 12 14:05 .zcompdump-racknerd-cffc5f-5.4.2
-rw-------  1 root root  55K Apr 17 22:42 .zsh_history
-rw-r--r--  1 root root 3.8K Apr 12 14:07 .zshrc

我简单地解释一下这些东西,你不想现在了解也没关系。

我们以drwxr-xr-x 2 root root 4.0K Apr 14 08:54 aliyun_recnerd_backup这一个记录为例:

  • drwxr-xr-x:文件权限。前面的d表明它是一个文件夹(document)。后面那些乱七八糟暂时不解释。
  • 2:硬链接数?不重要,之前没了解过 :stuck_out_tongue_winking_eye:
  • root: 所属用户名
  • root: 所属的用户组
  • 4.0K: 文件夹的大小。不包括里面的内容。
  • Apr 14 08:54:创建/修改时间
  • aliyun_recnerd_backup:文件名。

感觉好像也没啥特别的对吧?确实没啥特别 :grinning:

值得一提的是,第一个.代表的是当前目录,而..代表的是上一层目录。这和windows是一样的。

此外,凡是有.在前面的,一般属于系统的隐藏文件,正常情况下是不显示的。

更加常用的一个ls类命令是:

ls -hl

有些系统还可以用:

ll

显示结果如下:

total 320M
drwxr-xr-x 2 root root 4.0K Apr 13 19:13 aliyunpan
drwxr-xr-x 2 root root 4.0K Apr 14 08:54 aliyun_recnerd_backup
drwxr-xr-x 3 root root 4.0K Apr 14 08:09 Downloads
drwxr-xr-x 2 root root 4.0K Apr 17 10:56 legacy
drwxr-xr-x 6 root root 4.0K Apr 17 12:31 mybackup
drwxr-xr-x 5 root root 4.0K Apr 17 10:48 rImages
-rw-r--r-- 1 root root 320M Apr 17 10:44 rImages.zip
-rw-r--r-- 1 root root  929 Apr  5 23:47 virt-sysprep-firstboot.log
drwxr-xr-x 4 root root 4.0K Apr 13 08:40 wordpress
drwxr-xr-x 4 root root 4.0K Apr 15 19:35 wordpress2

是不是感觉要干净许多?

这时你可能会发现一个恼人的事,特别是有强迫症的人。那就是:命令的输出结果占了一大屏。

怎么快速清屏呢?有两种常用方式:一般是在键盘上用Ctrl+L;一种是使用命令clear。两者效果类似,可以试试看。用哪个就看个人喜好。我一般喜欢在键盘上用Ctrl+L

好的,下面接着玩。创建一个文件夹吧:

mkdir abcdefghijklmnopqrst

然后进入这个文件夹:

cd abcdefghijklmnopqrst

这时,敏锐的小伙伴可以还发现一个事,那就是:如果我要进入一个有着很长名字的文件夹,不是要打好多字?你可以先在Shell中打出cd加个空格,然后按一下键盘上的TAB键,它会有自动补全提示。再打几个前面的字母,接着按TAB键,最后可以精准地定位到目录文件夹。自己试试看。是不是很好玩?

你还可以多建立几个文件夹:

mkdir abcdefghijklmnopqrst2
mkdir abcdefghijklmnopqrst3
mkdir abcdefghijklmnopqrst4

然后随便玩一下,比如:

# 进入目录
cd abcdefghijklmnopqrst2

# 返回目录上层
cd ..

# 再回到home目录
cd ~

复制(copy)一个文件夹试试看:

cp abcdefghijklmnopqrst2 test

这样会生成一个和abcdefghijklmnopqrst2内容一模一样的test(如果里面有内容的话)。

我想改个好点的名字,怎么改?

mv abcdefghijklmnopqrst4 iloveyou

此时abcdefghijklmnopqrst4的文件名就变成了iloveyou了。

如果我要删除一些文件或者文件夹怎么办呢?

cd ~
rm -r abcdefghijklmnopqrst2 abcdefghijklmnopqrst3

或者干脆两个命令一起运行:

cd ~ && rm -r abcdefghijklmnopqrst2 abcdefghijklmnopqrst3

cd ~对于此时不是必需的,只是让你明白在这个moment,你要在~,即自己的home目录里进行文件夹的删除操作。

关于rm命令

对于rm命令值得多说几句。

linux默认没有内置回收站功能,所以你rm过的内容将无法恢复(据说有一些方法可以恢复,但我从来没有用过)。你执行rm命令时要三思而后行。有一些方法可以创建类似windows的回收站机制,不过现在不作讨论。

此外,偶尔网络上也会出现一些“删库跑路”的新闻,有一些还与官司有关。

他们多数是通过root用户运行这个命令:

# rm -rf /*

永远不要使用这个命令!这可不是开玩笑的!

rm就是删除的意思,-rf就是要安静地、不加确认地将文件(夹)执行命令,而/*代表系统根目录所有文件。这一条命令下去,整个世界都清净了 :sleeping: 。文件都无了还怎么玩嘛!

这里你应该可以感受到,root用户确实是特别的。以后我们会更加了解它的!

到这里,你基本上已经学完linux日常使用70%左右的命令。怎么会这样子? :fearful:

就是这样子。

linux本质上就是一些文件管理的过程,所以这些命令用得最频繁了。其它命令按需学习就行 :stuck_out_tongue: 。

基础命令的学习到此结束啦!多多练习,相信很快就可以掌握。没有什么速记法,惟手熟尔。

root用户

对于新手来说,还是有必要再隆重地介绍一下root用户。

如果谁掌握了root,他就掌握了这个linux机器的一切,可以为所欲为。

你以后也会慢慢体会到,有了root的权限,你可以随意修改文件的内容、归属用户(组),甚至是删除它。

另外,root的用户名一般都是root,这对于有公网ip的VPS来说可能是一个隐患。别人知道你的公网ip和root这个名字,就可以通过一些手段登陆你的主机。如果你使用了弱密码,分分钟就被破解了(~ ̄▽ ̄)~

当然,在现阶段的学习中,其实不用太过在意安全问题,毕竟你的主机里啥也没有。大不了重装系统嘛,VPS不是有后台吗?现在你只要知道,它和你主机的安全有很大关系就行了。

在新手熟悉linux命令的过程中,我觉得用root用户还是有一定的好处的,因为它不用频繁地使用sudo和输入密码去操作某些命令,降低了学习难度。也算是利弊参半吧。

如果你熟悉了基本命令,还是要尽快减少使用root用户,转用非root用户作为平时使用的用户。

且听下回分解喽!