目录

1、如何使用 Xshell 远程访问云服务器

1.1、方法一

1.2、方法二

2、云服务器的账号/用户管理

3、Linux下常用的基本指令

3.1、ls 指令

3.2、pwd 指令

3.3、cd 指令

3.4、touch 指令

3.5、mkdir 指令

3.6、rmdir指令 && rm 指令


1、如何使用 Xshell 远程访问云服务器

1.1、方法一

利用云服务器跑代码 云服务器指令_linux

1.2、方法二

利用云服务器跑代码 云服务器指令_linux_02


2、云服务器的账号/用户管理

//必须在root用户下进行操作:

adduser Hjm //用户名为Hjm
passwd Hjm //为用户Hjm设置密码  123456

exit // exit 和 logout 均为退出或退出用户,当出现 [C:\~]$ 时,说明未链接云服务器、

    此时,已经在云服务器上创建了一个除 root 之外的用户,当再次打开 Xshell 时,在链接云服务器时,除了 root 用户之外,还可以使用刚创建的用户去登录,即,同一个云服务器可以具有多个用户,可以实现云服务器账号共享,多个用户之间不会产生冲突、

[Hjm@hjmlcc ~]$ whoami  //查看当前用户
Hjm

 当新建或者删除用户时,只能通过用户 root 去操作,如下:

[root@hjmlcc ~]# whoami  //查看当前正在使用的用户
root
[root@hjmlcc ~]# ls /home  //查看该云服务器中存在的所有用户
hjm  HJM
[root@hjmlcc ~]# userdel -r HJM  //删除该云服务器中的某一个用户
[root@hjmlcc ~]# ls /home  //查看该云服务器中存在的所有用户
hjm

当通过用户 root 删除某一个用户后,就不能再通过该用户再次连接该云服务器、

拓展:

一、

XShell 下的复制与粘贴:

复制:  ctrl + insert (Ins,有些同学的 Ins 需要配合 fn 来按)、

粘贴:   shift + insert (Ins)、

ctrl + c / ctrl + v 是不行的、


二、


[root@hjmlcc ~]# uname -r 3.10.0-1160.62.1.el7.x86_64 // Linux 内核版本为 3.10.0



3、Linux下常用的基本指令

3.1、ls 指令

语法: ls [选项][目录或文件]

功能: 对于目录,该命令列出该目录下的所有子目录与文件等等,对于文件,将列出文件名以及其他信息,用于显示当前目录下所有的(可见)内容,包括普通文件,子目录和可执行程序等等:


[HJM@hjmlcc code]$ ls hjm test.c

若当前目录下没有任何可见内容,则显示为:



[HJM@hjmlcc code]$ ls [HJM@hjmlcc code]$ //此处等待输入指令

但要注意的是,此时显示的都只是普通文件的文件名,子目录的目录名和可执行程序的名字,显示的内容均属于属性,而使用指令 ls -l 则可以在指令 ls 的基础上再显示出当前目录下所有的(可见)内容的更多的属性,如下所示:

[HJM@hjmlcc code]$ ls -l // -l这就是指令ls的选项 total 4 drwxrwxr-x 2 HJM HJM 4096 Oct 1 14:53 hjm -rw-rw-r-- 1 HJM HJM 0 Oct 1 14:51 test.c

拓展:

     若在磁盘中创建了一个空文件,则在磁盘中也会占据内存空间,因为,即使该文件是空文件,但该空文件也具有属性数据,包括文件名,文件的创建时间,文件的大小等等,而属性数据也是数据,属性数据需要被保存起来,所以在磁盘中创建一个空文件,是需要占据磁盘的内存空间的,由此可得:文件 = 文件内容 + 文件属性,文件属性本质上也是数据,需要被保存,则在以后所学的文件操作就包括对文件的内容进行操作和对文件的属性进行操作、



常用的指令的选项:

-a 列出当前目录下的所有文件,包括以 . 开头的隐含文件、

-d 将目录象文件一样显示,而不是显示其下的文件, 如:ls –d 指定目录、

-i   输出文件的 i 节点的索引信息, 如 ls –ai 指定文件、

-k 以 k 字节的形式表示文件的大小,ls –alk 指定文件、

-l   列出文件的详细信息、

-n 用数字的 UID,GID 代替名称, (介绍 UID, GID)

-F 在每个文件名后附上一个字符以说明该文件的类型,''*''表示可执行的普通文件;''/''表示目录;''@''表示符号链接;''|''表示FIFOs;''=''表示套接字(sockets),目录类型识别、

-r  对目录反向排序、

-t  以时间排序、

-s 在l文件名后输出该文件的大小,(大小排序,如何找到目录下最大的文件)、

-R 列出所有子目录下的文件,(递归)、

-1   一行只输出一个文件、

[HJM@hjmlcc code]$ touch test.c  //在当前目录下创建一个普通文件,
//注意:touch和test.c中间存在一个空格,当使用ls指令查看当前目录下所有的(可见)内容时,普通文件默认为黑色,子目录默认为蓝色,可执行程序默认为绿色、
[HJM@hjmlcc code]$ mkdir hjm  //在当前目录下创建一个目录,类似于Windows下的一个文件夹,
//注意:mkdir和hjm中间存在一个空格,当使用ls指令查看当前目录下所有的(可见)内容时,普通文件默认为黑色,子目录默认为蓝色,可执行程序默认为绿色、
[HJM@hjmlcc code]$ pwd  // pwd指令可以查看当前所处的目录(路径)、
/home/HJM/code
[HJM@hjmlcc code]$ ls
hjm  test.c
[HJM@hjmlcc code]$ ls -a  //再显示出当前目录下隐藏的内容(主要指文件),即,以 . 开头的隐藏文件,Window下也存在隐藏文件、
.  ..  hjm  test.c

[HJM@hjmlcc code]$ ls
hjm  test.c
[HJM@hjmlcc code]$ ls -a
.  ..  hjm  test.c

//以下两种方法的效果是一样的、
[HJM@hjmlcc code]$ ls -a -l  //再显示出当前目录下隐藏的内容(主要指文件)的更多属性、
total 12
drwxrwxr-x 3 HJM HJM 4096 Oct  1 14:53 .
drwx------ 6 HJM HJM 4096 Oct  1 14:17 ..
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:51 test.c
[HJM@hjmlcc code]$ ls -al
total 12
drwxrwxr-x 3 HJM HJM 4096 Oct  1 14:53 .
drwx------ 6 HJM HJM 4096 Oct  1 14:17 ..
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:51 test.c


[HJM@hjmlcc code]$ touch .cannotseeme.txt  //在当前目录下创建一个以 . 开头的隐藏的普通文件
[HJM@hjmlcc code]$ ls
hjm  test.c
[HJM@hjmlcc code]$ ls -l
total 4
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:51 test.c
[HJM@hjmlcc code]$ ls -a -l
total 12
drwxrwxr-x 3 HJM HJM 4096 Oct  1 15:41 .
drwx------ 6 HJM HJM 4096 Oct  1 14:17 ..
-rw-rw-r-- 1 HJM HJM    0 Oct  1 15:42 .cannotseeme.txt
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:51 test.c
[HJM@hjmlcc code]$ ls -al
total 12
drwxrwxr-x 3 HJM HJM 4096 Oct  1 15:41 .
drwx------ 6 HJM HJM 4096 Oct  1 14:17 ..
-rw-rw-r-- 1 HJM HJM    0 Oct  1 15:42 .cannotseeme.txt
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:51 test.c

//在任意目录下,都存在两个隐藏文件,  .(当前路径)  和  .. (上级路径)   这两者都是以 . 开头的隐藏(普通)文件、
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ cd ..   // cd 可理解为更改路径的意思,更改到某一路径(某一目录之下),  .. 代表上级路径、
[HJM@hjmlcc ~]$ pwd
/home/HJM


[HJM@hjmlcc code]$ pwd
/home/HJM/code            // Windows的路径分隔符是: \  , Linux的路径分隔符为:  /
[HJM@hjmlcc code]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cd ..
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ cd ..
[HJM@hjmlcc /]$ pwd
/
[HJM@hjmlcc /]$ cd ..
[HJM@hjmlcc /]$ pwd
/                   //注意:   /  代表根目录, 当已经回退到根目录 / 时,就不能再进行回退了,此时的                  
                              /  代表的是根目录,而不是指Linux的路径分隔符、

[HJM@hjmlcc /]$ cd /home/HJM/code   //直接更改到某一路径(某一目录之下)、
[HJM@hjmlcc code]$ pwd
/home/HJM/code

//  . 代表当前路径、
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ touch Test.c
[HJM@hjmlcc code]$ ls
a.out  hjm  test.c  Test.c  TEST.c
[HJM@hjmlcc code]$ nano Test.c
[HJM@hjmlcc code]$ cat Test.c   //打印出 Test.c 普通文件中的内容、
#include<stdio.h>
int main()
{
    printf("Hello,Linux\n");
    return 0;
}

[HJM@hjmlcc code]$ gcc Test.c   //当再一次 gcc Test.c 时,会再次生成一个a.out可执行程序,会把之前生成的a.out可执行程序覆盖掉、
[HJM@hjmlcc code]$ ls
a.out  hjm  test.c  Test.c  TEST.c  // 此处的a.out覆盖了前一个a.out、
[HJM@hjmlcc code]$ ./a.out   // . 代表当前路径,起限定作用,  / 为Linux下的路径分隔符,即代表要执行当前路径下的 a.out 可执行程序、
Hello,Linux
[HJM@hjmlcc code]$ 


//************* Linux下编译C++ **************

[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ll
total 16
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 HJM HJM   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 HJM HJM   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ clear
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ls
hjm  test.c  Test.c  TEST.c  Test.cpp
[HJM@hjmlcc code]$ touch test.cpp
[HJM@hjmlcc code]$ ls
hjm  test.c  Test.c  TEST.c  test.cpp  Test.cpp
[HJM@hjmlcc code]$ nano test.cpp
[HJM@hjmlcc code]$ cat test.cpp
#include<iostream>
using namespace std;
int main()
{
    cout<<"Hello,Linux!"<<endl;
    return 0;
}
[HJM@hjmlcc code]$ gcc test.cpp
/tmp/ccEkRSud.o: In function `main':
test.cpp:(.text+0xa): undefined reference to `std::cout'
test.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
test.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
test.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccEkRSud.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
test.cpp:(.text+0x59): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status

[HJM@hjmlcc code]$ g++ test.cpp
[HJM@hjmlcc code]$ ./a.out
Hello,Linux!
[HJM@hjmlcc code]$
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ls
a.out  hjm  test.c  Test.c  TEST.c  test.cpp  Test.cpp
[HJM@hjmlcc code]$ ls -l
total 32
-rwxrwxr-x 1 HJM HJM 8968 Oct  1 16:41 a.out
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 HJM HJM   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 HJM HJM  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 HJM HJM   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ ls -i
656264 a.out  656258 hjm  656257 test.c  656262 Test.c  656261 TEST.c  656260 test.cpp  656263 Test.cpp            //在文件系统中会对656264这些数字再进行阐述、
[HJM@hjmlcc code]$ ls -il
total 32
656264 -rwxrwxr-x 1 HJM HJM 8968 Oct  1 16:41 a.out
656258 drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
656257 -rw-rw-r-- 1 HJM HJM   67 Oct  1 16:08 test.c
656262 -rw-rw-r-- 1 HJM HJM   91 Oct  1 16:32 Test.c
656261 -rw-rw-r-- 1 HJM HJM    0 Oct  1 16:15 TEST.c
656260 -rw-rw-r-- 1 HJM HJM  101 Oct  1 16:41 test.cpp
656263 -rw-rw-r-- 1 HJM HJM   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ls -l
total 32
-rwxrwxr-x 1 HJM HJM 8968 Oct  1 16:41 a.out
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 HJM HJM   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 HJM HJM   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 HJM HJM  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 HJM HJM   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ ls -n
total 32
-rwxrwxr-x 1 1002 1002 8968 Oct  1 16:41 a.out
drwxrwxr-x 2 1002 1002 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 1002 1002   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 1002 1002   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 1002 1002    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 1002 1002  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 1002 1002   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ ls -n -l    //等价于  [HJM@hjmlcc code]$ ls -nl
total 32
-rwxrwxr-x 1 1002 1002 8968 Oct  1 16:41 a.out
drwxrwxr-x 2 1002 1002 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 1002 1002   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 1002 1002   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 1002 1002    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 1002 1002  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 1002 1002   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ ls -l -n    //等价于  [HJM@hjmlcc code]$ ls -ln
total 32
-rwxrwxr-x 1 1002 1002 8968 Oct  1 16:41 a.out
drwxrwxr-x 2 1002 1002 4096 Oct  1 14:53 hjm
-rw-rw-r-- 1 1002 1002   67 Oct  1 16:08 test.c
-rw-rw-r-- 1 1002 1002   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 1002 1002    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 1002 1002  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 1002 1002   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$ 

//将用户名HJM变成了数字,在Linux系统中,标识一个用户本质上用的是编号进行标识的,使得编号与用户名对应在一起、
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ ls -F
a.out*  hjm/  test.c  Test.c  TEST.c  test.cpp  Test.cpp
[HJM@hjmlcc code]$ ls -Fl
total 32
-rwxrwxr-x 1 HJM HJM 8968 Oct  1 16:41 a.out*   // 这里的*代表是一个可执行程序(可执行的普通文件)、
drwxrwxr-x 2 HJM HJM 4096 Oct  1 14:53 hjm/     // 这里的/代表是目录、
-rw-rw-r-- 1 HJM HJM   67 Oct  1 16:08 test.c   // 什么都不带,则代表的是普通文本文件、
-rw-rw-r-- 1 HJM HJM   91 Oct  1 16:32 Test.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 16:15 TEST.c
-rw-rw-r-- 1 HJM HJM  101 Oct  1 16:41 test.cpp
-rw-rw-r-- 1 HJM HJM   88 Oct  1 16:39 Test.cpp
[HJM@hjmlcc code]$

https://view.inews.qq.com/k/20221002A00KX800?web_channel=wap&openApp=false //上述是腾讯新闻中的某一个新闻的网址,也叫作URL,其中,view.inews.qq.com为域名,也是腾讯新闻的官网, //其次,/k/20221002A00KX800?web_channel=wap&openApp=false 中的/也是路径分隔符,而我们又知道,在 //Linux系统下的路径分隔符也是/,由此可知,企业的后端是Linux操作系统、 Windows: D:\微信\WeChat Files\wxid_p9w279f894r222 //由上也可得知: Windows系统下的路径分隔符是\


3.2、pwd 指令

语法 :

功能 :显示用户当前所处的目录(路径),即:查看用户当前所处的目录(路径)、

拓展:

切换用户:

[HJM@hjmlcc ~]$ whoami HJM [HJM@hjmlcc ~]$ pwd /home/HJM [HJM@hjmlcc ~]$ ls code hjm lcc LCC lcc.c [HJM@hjmlcc ~]$ su - root //用法:su - 用户名 Password: Last login: Sat Oct 8 15:52:31 CST 2022 on pts/0 Last failed login: Sat Oct 8 16:03:56 CST 2022 from 62.169.198.18 on ssh:notty There were 5 failed login attempts since the last successful login. [root@hjmlcc ~]# whoami root [root@hjmlcc ~]# pwd /root [root@hjmlcc ~]# ls code [root@hjmlcc ~]# //注意:指令su - 用户名,不仅仅可以切换用户,还能把路径改为切换到的用户的家目录下,如下所示: //取上述代码的后5行,有: [root@hjmlcc ~]# pwd //该行中的~代表的就是切换到的用户(root用户)的家目录,即:/root /root //若使用指令su - HJM的话,除了切换用户的功能外,还可以把路径改为切换到的用户 (HJM用户)的家目录下,即:/home/HJM,还要知道,该指令中的-代表的就是跳转路径的功能、 [root@hjmlcc ~]# ls code [root@hjmlcc ~]#


3.3、cd 指令


语法:    cd 目录名


功能: 改变工作目录,将当前工作目录改变到指定的目录下、


Linux系统的入口目录是根目录 / ,Linux系统的目录结构本质上是一颗多叉树(Windows系统的目录结构本质上也是多叉树):

利用云服务器跑代码 云服务器指令_利用云服务器跑代码_03

    每一个子节点,既可以是一个目录(该目录中可以存在普通文件和目录等等,属于递归式的定义),也可以是普通文件,这颗多叉树的每一个叶子结点一定是一个普通文件或者是是一个空目录,可执行程序本质上也属于普通文件,即,可执行程序又称为可执行的普通文件、

为什么所有的操作系统在进行路径定位时都采用目录的形式呢?

    因为,每一个子节点仅有一个父节点,所以从根目录开始往下,路径一定是唯一的,具有唯一性,也就具有辨别资源所在路径的能力、

   把从根目录开始的,路径具有唯一性的这种路径称为Linux系统下的绝对路径,绝对路径永远有效:

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ cd code
[HJM@hjmlcc code]$ ls
a.out  code  code1  hjm  test.c  Test.c  TEST.c  test.cpp  Test.cpp
[HJM@hjmlcc code]$ cd code
[HJM@hjmlcc code]$ ls
[HJM@hjmlcc code]$ pwd
/home/HJM/code/code
[HJM@hjmlcc code]$ touch lcc.c
[HJM@hjmlcc code]$ ls
lcc.c
[HJM@hjmlcc code]$ ls /home/HJM/code/code/lcc.c   //其中,/home/HJM/code/code/lcc.c 是绝对路径,并且该绝对路径中的/code/code是合法的,不会造成冲突,绝对路径是相对于根目录 / 的路径、
/home/HJM/code/code/lcc.c  
[HJM@hjmlcc code]$
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ cd 104
[HJM@hjmlcc 104]$ pwd
/home/HJM/104
[HJM@hjmlcc 104]$ ls ../code/code/lcc.c  //其中,../code/code/lcc.c 为相对路径,并且该绝对路径中的/code/code是合法的,不会造成冲突,相对路径即指,相对于当前所处的路径,比较容易失效、
../code/code/lcc.c
[HJM@hjmlcc 104]$ pwd
/home/HJM/104
[HJM@hjmlcc 104]$ cd ..  //返回上级目录
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cd code
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ cd code
[HJM@hjmlcc code]$ pwd
/home/HJM/code/code
[HJM@hjmlcc code]$ ls
lcc.c
[HJM@hjmlcc code]$ 

//若在平常使用,推荐相对路径---简单,若对某些路径进行添加配置文件,则推荐绝对路径---不会出错、
[HJM@hjmlcc code]$ pwd
/home/HJM/code/code
[HJM@hjmlcc code]$ cd ../..   //本质上使用的就是相对路径、
[HJM@hjmlcc ~]$ pwd 
/home/HJM
[HJM@hjmlcc ~]$ cd /home/HJM/code/code
[HJM@hjmlcc code]$ pwd
/home/HJM/code/code
[HJM@hjmlcc code]$ cd ../../
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cd -
/home/HJM/code/code
[HJM@hjmlcc code]$ cd ../../../
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ cd -
/home/HJM/code/code
[HJM@hjmlcc code]$ cd ../../..
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ cd /home/HJM/code/code
[HJM@hjmlcc code]$ pwd
/home/HJM/code/code
[HJM@hjmlcc code]$ cd /home
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ 

// cd后面可以跟任何以绝对路径或相对路径构建的路径、
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ ls
hjm  HJM
[HJM@hjmlcc home]$ cd HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cd ..
[HJM@hjmlcc home]$ pwd
/home
[HJM@hjmlcc home]$ cd HJM/
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ cd ~  //显示出当前用户的家目录,对于非root用户而言,所谓的家目录即为:/home/XXX(用户名)  ,,而对于root用户而言,家目录即为: /root 、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ cd code
[HJM@hjmlcc code]$ pwd
/home/HJM/code
[HJM@hjmlcc code]$ cd -
/home/HJM
[HJM@hjmlcc ~]$ cd -   //返回到最近一次访问的目录、
/home/HJM/code
[HJM@hjmlcc code]$ cd -
/home/HJM
[HJM@hjmlcc ~]$ cd -
/home/HJM/code
[HJM@hjmlcc code]$

拓展:

除了 root 用户外的其他用户,都存在于 home 目录下面,即 /home/xxx(用户名)、


3.4、touch 指令


语法:   touch [选项]... 文件...


功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件,但目前可以先不考虑这些功能,在后期再进行阐述、



常用选项:

-a   或--time=atime或--time=access或--time=use只更改存取时间、



-c   或--no-create  不建立任何文档、



-d    使用指定的日期时间,而非现在的时间、



-f     此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题、



-m   或--time=mtime或--time=modify  只更改变动时间、



-r     把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同、



-t     使用指定的日期时间,而非现在的时间、


[HJM@hjmlcc 104]$ pwd
/home/HJM/104
[HJM@hjmlcc 104]$ ls
105  2  lesson
[HJM@hjmlcc 104]$ touch file.txt   //在当前目录下创建一个普通文件,
//注意:touch和file.txt中间存在一个空格,当使用ls指令查看当前目录下所有的(可见)内容时,普通文件默认为黑色,子目录默认为蓝色,可执行程序默认为绿色、
[HJM@hjmlcc 104]$ ls
105  2  file.txt  lesson
[HJM@hjmlcc 104]$ touch mytest.c
[HJM@hjmlcc 104]$ ls
105  2  file.txt  lesson  mytest.c
[HJM@hjmlcc 104]$

拓展1:

    若Linux系统下不存在nano指令,则先切换到root用户(以非root用户为例),然后输入指令:yum install -y nano ,便可装上nano指令,若gcc没安装的话,则执行指令:yum install -y gcc-c++ ,注意:必须在root用户下进行上述操作,则在root和除root之外的用户下都可以使用nano和gcc指令了、

拓展2:

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ ls -l        //指令ls -l是指令ll的别名,两者的效果是一样的、
total 32
drwxrwxr-x 4 HJM HJM 4096 Oct  1 20:15 104
-rwxrwxr-x 1 HJM HJM 8360 Oct  1 14:16 a.out
drwxrwxr-x 5 HJM HJM 4096 Oct  1 17:05 code
-rw-rw-r-- 1 HJM HJM   94 Oct  1 10:30 mytest.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:06 test.c
-rw-rw-r-- 1 HJM HJM   99 Oct  1 14:15 Test.c
-rw-rw-r-- 1 HJM HJM   76 Oct  1 14:06 test.cw
[HJM@hjmlcc ~]$ ll
total 32
drwxrwxr-x 4 HJM HJM 4096 Oct  1 20:15 104
-rwxrwxr-x 1 HJM HJM 8360 Oct  1 14:16 a.out
drwxrwxr-x 5 HJM HJM 4096 Oct  1 17:05 code
-rw-rw-r-- 1 HJM HJM   94 Oct  1 10:30 mytest.c
-rw-rw-r-- 1 HJM HJM    0 Oct  1 14:06 test.c
-rw-rw-r-- 1 HJM HJM   99 Oct  1 14:15 Test.c
-rw-rw-r-- 1 HJM HJM   76 Oct  1 14:06 test.cw
[HJM@hjmlcc ~]$

3.5、mkdir 指令


语法: mkdir [ 选项 ] dirname...



功能: 在当前目录下创建一个名为  ''dirname''  的目录、



常用选项:



-p :--parents  可以是一个路径名称,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录、



[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  LCC  lcc.c  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ mkdir LCCHJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  LCC  lcc.c  LCCHJM  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ 


//在当前目录下创建一个目录,类似于Windows下的一个文件夹,
//注意:mkdir和LCCHJM中间存在一个空格,当使用ls指令查看当前目录下所有的(可见)内容时,普通文件默认为黑色,子目录默认为蓝色,可执行程序默认为绿色、
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  LCC  lcc.c  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ mkdir LCCHJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  LCC  lcc.c  LCCHJM  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ cd LCCHJM
[HJM@hjmlcc LCCHJM]$ ls
[HJM@hjmlcc LCCHJM]$ mkdir -p hjm1/hjm2/hjm3   //在当前目录下创建一串目录,递归建立多个目录、
[HJM@hjmlcc LCCHJM]$ pwd
/home/HJM/LCCHJM
[HJM@hjmlcc LCCHJM]$ ls
hjm1
[HJM@hjmlcc LCCHJM]$ cd hjm1
[HJM@hjmlcc hjm1]$ pwd
/home/HJM/LCCHJM/hjm1
[HJM@hjmlcc hjm1]$ ls
hjm2
[HJM@hjmlcc hjm1]$ cd hjm2
[HJM@hjmlcc hjm2]$ pwd
/home/HJM/LCCHJM/hjm1/hjm2
[HJM@hjmlcc hjm2]$ ls
hjm3
[HJM@hjmlcc hjm2]$ cd hjm3
[HJM@hjmlcc hjm3]$ pwd
/home/HJM/LCCHJM/hjm1/hjm2/hjm3   
[HJM@hjmlcc hjm3]$ ls
[HJM@hjmlcc hjm3]$
http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html  //参考文档、

3.6、rmdir指令 && rm 指令


rmdir是一个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除目录(空)、



语法:  rmdir [-p][dirName]


适用对象: 具有当前目录(空)操作权限的所有使用者、


功能 :删除空目录、


常用选项:


-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除、




rm命令可以同时删除普通文件或目录、



语法:rm [-f-i-r-v][dirName/dir]



适用对象:所有使用者、



功能:删除文件或目录、        



常用选项:



-f  即使属性为只读(即写保护),亦直接删除、



-i  删除前逐一询问确认、



-r  删除目录及其下所有文件、



//rmdir xxx(用户名):只能删除空目录,不常用,并且需要在该被删除的空目录的上一级目录中进行该指令操作、

[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  LCC  lcc.c  LCCHJM  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$ rmdir LCC     //LCC目录是空目录,在该空目录LCC的上一级目录HJM中进行的操作、
[HJM@hjmlcc ~]$ ls 
104  a.out  code  lcc.c  LCCHJM  mytest.c  test.c  Test.c  test.cw
[HJM@hjmlcc ~]$
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  lcc.c  LCCHJM
[HJM@hjmlcc ~]$ touch test.c
[HJM@hjmlcc ~]$ ls
104  a.out  code  lcc.c  LCCHJM  test.c
[HJM@hjmlcc ~]$ nano test.c
[HJM@hjmlcc ~]$ cat test.c
#include<stdio.h>
[HJM@hjmlcc ~]$ rm test.c    //删除普通文件,不管该文件是否为空文件,均可删除、
[HJM@hjmlcc ~]$ ls
104  a.out  code  lcc.c  LCCHJM
[HJM@hjmlcc ~]$ 

//由于可执行程序本质上是可执行的普通文件,所以删除可执行程序也是使用指令rm a.out
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
104  a.out  code  lcc.c  LCCHJM
[HJM@hjmlcc ~]$ mkdir 11
[HJM@hjmlcc ~]$ ls
104  11  a.out  code  lcc.c  LCCHJM
[HJM@hjmlcc ~]$ cd 11
[HJM@hjmlcc 11]$ ls
[HJM@hjmlcc 11]$ mkdir 22
[HJM@hjmlcc 11]$ ls
22
[HJM@hjmlcc 11]$ pwd
/home/HJM/11
[HJM@hjmlcc 11]$ cd ..
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ rmdir 11
rmdir: failed to remove ‘11’: Directory not empty  //不可删除
[HJM@hjmlcc ~]$ rm -r 11   //可删除,删除目录11(非空目录)及其下所有内容,递归删除目录11(非空目录),即使目录11(非空目录)不为空目录,也可以删除掉,但需要在该被删除的目录11(非空目录)的上一级目录HJM中进行该指令操作、
[HJM@hjmlcc ~]$ ls
104  a.out  code  lcc.c  LCCHJM
[HJM@hjmlcc ~]$ 

//rm -rf 11:在有的地方可能会提示:是否确定要删除,加上f的话,就不会再提示,而是直接删除、
//rm -rf 11 等价于 rm -r -f 11 ,其中,f是force的首字母,强制、
//rm -rf和rm -r,也可以删除普通文件,以后不管是删除普通文件(包括可执行程序)还是目录(包括空和非空目录),都常使用rm -rf指令、

//在root用户中,一定不要使用指令rm -rf / ,否则系统可能会挂掉、
[root@hjmlcc ~]# pwd
/root
[root@hjmlcc ~]# ls
a.out  code  mytest.c  test.c
[root@hjmlcc ~]# rm -rf *
[root@hjmlcc ~]# ls
[root@hjmlcc ~]# 

//rm -rf * 相当于 rm -rf ./* 删除当前目录下的所有内容,*是通配符,和谁都能匹配,所以可以达到全部删除的目的、
拓展:
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls
code1
[HJM@hjmlcc ~]$ tree code1
code1
`-- code2
    `-- code3

2 directories, 0 files
[HJM@hjmlcc ~]$