$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 12:52 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file2.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file3.txt
第一个字符为’d’或’-’。 它区分文件类型。 带“-”(破折号)的条目是常规文件,带“ d”的条目是目录。 接下来的9个字符是权限(在第一个列表中为“ rwxr-xr-x”)。 权限后面的数字是链接数。 链接计数跟随用户和组所有者。 在上面的示例中,文件所有者是“ raghu”,组所有者也是“ raghu”。 接下来是文件的大小。 然后在文件(或目录)名称之前添加时间戳。
缺省情况下,不显示隐藏文件或目录,也可以使用-a选项查看隐藏文件。 Linux中的隐藏文件以点号(。)开头。 任何以句点开头的文件都是隐藏的。 因此,要隐藏文件,你只需要重命名它(并在文件名前加上句点)。
$ ls -la odesk
total 16
drwxr-xr-x 4 raghu raghu 4096 2012-07-06 13:46 .
drwxr-xr-x 11 raghu raghu 4096 2012-07-06 13:15 …
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 12:52 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file2.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file3.txt
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 13:46 .hiddendir
-rw-r–r-- 1 raghu raghu 0 2012-07-06 13:46 .hiddenfile1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 13:46 .hiddenfile2.txt
如果要查看目录的属性而不是包含目录中的文件,使用-d(带有-l)选项:
$ ls -ld odesk/
drwxr-xr-x 4 raghu raghu 4096 2012-07-06 13:46 odesk/
=========================================================================
该命令用于创建目录。
$ mkdir example
$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
该命令用于创建一个空的文件。
$ touch file1 file2 file3
$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
如果文件已经存在,touch命令将更新其时间戳。 还有许多其他方法可以创建新文件,例如 使用vi或gedit之类的文本编辑器,或使用重定向。
这是使用重定向创建文件的示例:
$ ls -l /usr > usrlisting
$ ls -l
total 8
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在本示例中,创建了一个名为usrlisting的文件。
==========================================================================
该命令用于复制文件和目录。
$cp source destination
复制的是文件,
$ cp usrlisting listing_copy.txt
$ ls -l
total 12
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 listing_copy.txt
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
如果目标是目录,则将文件以其原始名称复制到该目录中。
$ cp listing_copy.txt example/
$ ls -l example/
total 4
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:07 listing_copy.txt
也可以复制多个文件,但是在这种情况下,最后一个参数应该是要复制所有文件的目录。 其余参数将被视为文件名。
$ cp file1 file2 example/
$ ls -l example/
total 4
-rw-r–r-- 1 raghu raghu 0 2012-07-06 16:10 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 16:10 file2
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:07 listing_copy.txt
如果要复制目录,则必须使用其中包含的文件递归复制它。 要递归复制目录,需要在“ cp”命令中使用-r选项:
$ cp -r example /tmp/expertslogin/
$ ls -l /tmp/expertslogin
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 16:12 example
该命令用于移动文件或目录。
$ mv source destination
移动文件或目录。 “ mv”命令的工作方式类似于“ cp”命令,不同之处在于移动时原始文件已删除。 而且,可以使用mv命令重命名文件(或目录)。
$ mv listing_copy.txt usrcopy
$ ls -l
total 12
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 16:10 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 usrcopy
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在这里,“ listing_copy.txt”以名称“ usrcopy”移动到同一目录中(或者可以说它已被重命名)。
- ‘rmdir’ 命令删除所有空目录
$ rmdir
但是如果其中存在文件,则无法删除该目录。 要使用“ rmdir”命令,必须首先删除要删除的目录(可能还有目录,如果有)中的所有文件。
- ‘rm’ 命令用于删除文件和目录
$ rm files|directories
必须使用-r选项以递归方式删除目录。
$ rm file2
$ rm -r example/
$ ls -l
total 8
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 usrcopy
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在这里,首先删除名为“ file2”的文件,然后递归删除目录“ example”。 可以在“ ls -l”命令的输出中看到,这两个不再存在。
=========================================================================
file命令确定给定文件的文件类型。
$ file /etc/passwd
/etc/passwd: ASCII text
可以提供一个或多个文件作为file命令的参数。
$ file td.c td.out ARP.java Screenshot.png StringTokenizing.class
idl.rar List.pdf
td.c: ASCII C program text, with CRLF line terminators
td.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
ARP.java: ASCII Java program text, with CRLF line terminators
Screenshot.png: PNG image data, 1366 x 768, 8-bit/color RGB, non-interlaced
StringTokenizing.class: compiled Java class data, version 50.0 (Java 1.6)
idl.rar: RAR archive data, v1d, os: Win32
List.pdf: PDF document, version 1.4
该命令用于检查文件的状态。
这比“ ls -l”输出提供了有关文件的更多详细信息。
$ stat usrcopy
File: `usrcopy’
Size: 491 Blocks: 8 IO Block: 4096 regular file
Device: 808h/2056d Inode: 149452 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 1000/ raghu) Gid: ( 1000/ raghu)
Access: 2012-07-06 16:07:06.413522009 +0530
Modify: 2012-07-06 16:02:30.204152386 +0530
Change: 2012-07-06 16:17:18.992559654 +0530
“ cat”命令实际上是连接器,但可用于查看文件的内容。
$ cat /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/bin/sh
bin❌2:2:bin:/bin:/bin/sh
sys❌3:3:sys:/dev:/bin/sh
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/bin/sh
cat命令将文件整体列出。 但是,如果文件足够大以适合一个屏幕,那么我们将只能看到文件的最后一页。 命令’less’ 和’more’ 一次显示一个文件。 因此,它们也称为pagers。 可以使用箭头键浏览文件。 要退出pagers,按“ q”。
显示文件的前几行。 默认情况下,“ head”命令显示文件的前10行。 但是,使用-n选项,可以指定要查看的行数。
$ head /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/bin/sh
bin❌2:2:bin:/bin:/bin/sh
sys❌3:3:sys:/dev:/bin/sh
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/bin/sh
man❌6:12👨/var/cache/man:/bin/sh
lp❌7:7:lp:/var/spool/lpd:/bin/sh
mail❌8:8:mail:/var/mail:/bin/sh
news❌9:9:news:/var/spool/news:/bin/sh
类似于“头”; 默认情况下,“ tail”命令显示最后10行,并且-n选项也可用。
$ tail -n 4 /etc/passwd
raghu❌1000:1000:Raghu Sharma,:/home/raghu:/bin/bash
sshd❌113:65534::/var/run/sshd:/usr/sbin/nologin
dictd❌114:123:Dictd Server,:/var/lib/dictd:/bin/false
mysql❌115:124:MySQL Server,:/nonexistent:/bin/false
此命令对输入的行,单词和字母进行计数。
$ wc /etc/passwd
35 57 1698 /etc/passwd
/ etc / passwd文件中包含35行,57个单词和1698个字母。
“ grep”命令可在文件(或标准输入)中搜索模式。 它支持正则表达式。 如果与该行中的模式匹配,则返回该行。 因此,如果我们希望找到包含“ nologin”一词的行,可以使用“ grep”,如下所示:
$ grep nologin /etc/passwd
sshd❌113:65534::/var/run/sshd:/usr/sbin/nologin
ln命令在Linux中用于创建链接。 链接是指向其他文件的一种快捷方式。
$ ln TARGET LINK_NAME
链接有两种类型,软链接和硬链接。 默认情况下,将创建硬链接。 如果要创建软链接,请使用-s选项。 在此示例中,为文件usrlisting创建了两种类型的链接。
$ ln usrlisting hard_link
$ ln -s usrlisting soft_link
$ ls -l
total 12
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 2 raghu raghu 491 2012-07-06 14:23 hard_link
lrwxrwxrwx 1 raghu raghu 10 2012-07-09 14:00 soft_link -> usrlisting
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 usrcopy
-rw-r–r-- 2 raghu raghu 491 2012-07-06 14:23 usrlisting
======================================================================
“ Pico”是Linux中的文本编辑器。 “ Nano”编辑器的灵感来自“ pico”。 它们的工作原理几乎相同。 如果存在作为文件名给出的参数,则将在pico / nano中打开该文件进行编辑。 否则,将创建一个具有该名称的新文件。 让我们创建一个名为hello.txt的新文件:
$ pico hello.txt
GNU nano 2.2.6 File: hello.txt Modified
This file is edited with pico editor.
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell
对文件进行所有更改后,按“ ctrl + o”将更改写入文件,然后按“ ctrl + x”退出编辑器。 该编辑器有很多功能可用。 可以使用“ ctrl + g”键来访问帮助菜单。
VI代表可视化编辑器; Linux中的另一个文本编辑器。 这是许多Linux / Unix环境中的标准编辑器。 这是许多Linux发行版附带的默认编辑器。 它可能是发行版中唯一可用的文本编辑器。
可以使用vi打开文件进行编辑,方法如下:
$ vi hello.txt
vi编辑器有3种模式可以执行其功能。
默认为COMMAND模式,可以执行复制,粘贴,撤消等任务。 只能从命令模式更改模式(然后返回到该模式)。
第二种模式是INSERT模式,在该模式下,输入的任何键都将被视为字符,并将被加载到文件缓冲区中。 要进入此模式,在命令模式下按“ i”。
最后模式是EX模式或底线命令模式。 在命令模式下按 “:”进入底线命令模式。 在此模式下,可以保存或放弃在缓冲区中所做的更改。
Hello world.
This file is edited using vi editor.
~
~
~
~
~
“hello.txt” 2 lines, 50 characters
========================================================================
“别名”是命令的另一个名称。 如果未提供任何参数,则显示当前别名。 别名可用于命令的简称。 例如,你可能经常使用clear命令。 你可以为其创建别名:
$ alias c=“clear”
下次您在命令行上输入“ c”时,屏幕将被清空。 可以使用’alias’命令检查当前别名:
$ alias
alias alert=‘notify-send --urgency=low -i "$([ KaTeX parse error: Expected 'EOF', got '&' at position 9: ? = 0 ] &̲& echo terminal…(history|tail -n1|sed -e ‘’‘s/^\s*[0-9]+\s*//;s/[;&|]\s*alert$//’’‘)"’
alias c=‘clear’
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’
w命令用于检查哪些用户已登录系统以及在特定时间他们正在执行什么命令:
$ w
10:06:56 up 57 min, 3 users, load average: 0.04, 0.06, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:06 28.00s 1.02s 0.67s pager -s
raghu tty7 :0 09:19 57:33 1:22 0.20s gnome-session --session=classic-gnome
raghu pts/0 :0.0 09:34 0.00s 0.78s 0.00s w
它还显示了正常运行时间,登录的用户数和系统的平均负载(在上面的输出的第一行中)。
显示有关登录和注销系统的用户的信息。 最后一个命令的输出可能非常大,因此以下输出已过滤(通过头部),仅显示前十行:
$ last | head
root tty1 Mon Jul 9 10:06 still logged in
root tty1 Mon Jul 9 10:06 - 10:06 (00:00)
raghu pts/1 :0.0 Mon Jul 9 10:05 - 10:06 (00:00)
raghu pts/0 :0.0 Mon Jul 9 09:34 still logged in
raghu tty7 :0 Mon Jul 9 09:19 still logged in
reboot system boot 2.6.38-13-generi Mon Jul 9 09:09 - 10:12 (01:02)
raghu tty7 :0 Sun Jul 8 23:36 - 00:30 (00:54)
reboot system boot 2.6.38-13-generi Sun Jul 8 23:36 - 00:30 (00:54)
raghu tty7 :0 Sun Jul 8 21:07 - down (01:06)
reboot system boot 2.6.38-13-generi Sun Jul 8 21:07 - 22:14 (01:07)
类似的命令是“ lastb”,它显示最后一次失败的登录尝试。 但是此命令必须以root用户身份运行,否则报错,说明权限被拒绝。
$ lastb
raghu tty2 Mon Jul 9 10:16 - 10:16 (00:00)
UNKNOWN tty2 Mon Jul 9 10:15 - 10:15 (00:00)
ubuntu tty8 :1 Mon Jul 2 10:23 - 10:23 (00:00)
btmp begins Mon Jul 2 10:23:54 2012
du命令确定文件的磁盘使用情况。 如果为其提供的参数是目录,则它将递归列出该目录下所有文件和目录的磁盘使用情况:
$ du /etc/passwd
4 /etc/passwd
$ du hello/
52 hello/HelloApp
4 hello/orb.db/logs
20 hello/orb.db
108 hello/
df报告文件系统使用情况。 例如:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda7 10079084 7372872 2194212 78% /
none 1522384 768 1521616 1% /dev
none 1529012 252 1528760 1% /dev/shm
none 1529012 108 1528904 1% /var/run
none 1529012 4 1529008 1% /var/lock
/dev/sda8 5039616 3758824 1024792 79% /home
/dev/sda2 209715196 196519248 13195948 94% /media/Data
fdisk是用于获取分区信息以及添加和删除分区的工具。 fdisk工具需要超级用户权限。 要列出所有可用硬盘驱动器的所有分区:
$ fdisk -l
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x396f396f
Device Boot Start End Blocks Id System
/dev/sda1 1 2611 20971520 7 HPFS/NTFS
/dev/sda2 2611 28720 209715200 7 HPFS/NTFS
/dev/sda3 * 28720 38914 81882113 5 Extended
/dev/sda5 28720 33942 41943040 7 HPFS/NTFS
/dev/sda6 33942 34464 4194304 7 HPFS/NTFS
/dev/sda7 34464 35739 10240000 83 Linux
/dev/sda8 35739 36376 5120000 83 Linux
/dev/sda9 36376 36886 4096000 82 Linux swap / Solaris
/dev/sda10 36887 38276 11164672 83 Linux
/dev/sda11 38277 38914 5117952 83 Linux
fdisk是用于编辑分区表的交互式工具。 它以设备(硬盘)作为参数,来编辑其分区表。
$ fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!