电子说
1.1 `find -regex` 与 `find -name` 的区别
若一个目录中,有如下目录:
susu@ubuntu:~/find_test$ lsaaa aaa 22 1susu@ubuntu:~/find_test$
可以使用 -name 进行名字匹配查询:
susu@ubuntu:~/find_test$ find 。 -name “a*”。/aaa./aasusu@ubuntu:~/find_test$
若同样的方式,使用 -regex 查询,则不能得到想要的结果:
susu@ubuntu:~/find_test$ find 。 -regex “a*”susu@ubuntu:~/find_test$
出现以上结果的原因在于 -name 只要求匹配当前目录中的文件(夹)名称,而 -regex 则是把 find 输出的完整结果作为匹配对象,所以上面的命令中,默认是以 a 作为开头的字符串匹配,是不符合 -regex 规则,所以没能匹配到想要的结果。
正确用法如下:
susu@ubuntu:~/find_test$ find 。 -regex “.*a+”。/aaa./aasusu@ubuntu:~/find_test$
注意:
根据正则表达式的语法,应该加上 .* 而不是 *,具体正则表达式语法,参见链接http://www.runoob.com/regexp/regexp-syntax.html。
命令选项之后的参数,可用双引号包裹起来,也可以不用。
在 -name 语法中,可以使用星号 *,在知道部分文件名的情况下使用。但是正则表达式语法中的其他特殊字符是没有效果的,而且两种方式下的星号含义也不同。比如如下的操作,是找不到文件夹 “cccccc” 的。
susu@ubuntu:~/find_test$ ls1 aa cccccc mycprogram.c Program.c2 aaa mybashprogram.sh MyCProgram.csusu@ubuntu:~/find_test$ find 。 -name “c*”。/ccccccsusu@ubuntu:~/find_test$ find 。 -name “c.*”susu@ubuntu:~/find_test$
eg:
eclipse 工程文件夹下有 4 个 project:
susu@ubuntu:~/workspace$ lsRemoteSystemsTempFiles test_new_web_maventestJust test_quickstart_mavensusu@ubuntu:~/workspace$ cd 。.susu@ubuntu:~$
退回到上一层之后,用 -regex 查找 workspace 文件夹下的内容,使用如下语句:
susu@ubuntu:~$ find 。/workspace/ -regex “.*test_new.*”。/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core/state.dat./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/.markers./workspace/test_new_web_maven./workspace/test_new_web_maven/src./workspace/test_new_web_maven/src/main./workspace/test_new_web_maven/src/main/webapp./workspace/test_new_web_maven/src/main/webapp/index.jsp./workspace/test_new_web_maven/src/main/webapp/WEB-INF./workspace/test_new_web_maven/src/main/webapp/WEB-INF/web.xml./workspace/test_new_web_maven/src/main/resources./workspace/test_new_web_maven/.classpath./workspace/test_new_web_maven/.project./workspace/test_new_web_maven/target./workspace/test_new_web_maven/target/classes./workspace/test_new_web_maven/pom.xmlsusu@ubuntu:~$
1.2 Linux 命令中的 “permission denied” 问题
普通用户在根目录中使用 find 命令时,通常会碰到类似以下的问题:
susu@ubuntu:/$ find / -name *.txt.。.find: `。/.gvfs‘: Permission deniedfind: `。/.dbus’: Permission deniedfind: `。/.cache/dconf‘: Permission denied
因为管理员用户 root 设置了某些文件夹“禁止”普通用户访问,所以普通用户在使用以上命令时会出现如下错误。
解决方案:先给出链接,一个百度文库,搜索关键字就可以看到解决方法。
/dev/null 称为 Linux 黑洞,等价于一个只写文件,所有写入它的内容都会消失,既然会消失,那么该文件也是打不开的,也无法从该文件当中读取任何内容。而解决的途径就是把含有 permission denied 的报错信息都输入该文件即可。
对于可能存在该报错信息的命令(在根目录 / 下执行 find 命令,通常都会有此报错),那么可以该 find 命令后,添加一句话,比如上面的 find 命令:
susu@ubuntu:/$ find / -name *.txt 2》/dev/null
在后面加上命令 2》/dev/null 就避免了报错问题。
1.3 find 命令忽略大小写
只需要在命令选项前加一个 i,就可忽略大小写。-name 换为 -iname,-regex 换为-iregex。
1.4 和文件访问、修改以及对应时间相关的 find 命令
主要是 -mtime 和 -ctime 命令选项:
-amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件
从上面的解释看出,文件被改变,分为两类,一类是文件状态的改变,比如权限、归属关系,这个时候的前缀是 -c.。.(比如:-cmin n,-ctime n);一类是文件数据的改变,就是修改的文件内容,前缀是 -m.。.(-mmin n,-mtime n)。
后面的 n,有两种,一种是 +n,一种是 -n,其各自含义如下:
-mtime -n 在 n 天之内改变文件数据的文件;-mtime +n 在 n 天之前改变文件数据的文件。
1.5 `-mindepth` 和 `-maxdepth` 的使用
限定搜索指定目录的深度,两者可以结合使用。其实多种命令选项都可结合使用,只要合理就行。比如:
susu@ubuntu:~/find_test$ find 。 -name “aa”。/aa./cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
检索出了 3 个符合条件的路径,如果限定搜索目录最大深度不能超过 2 层,那么可使用如下语句:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -name “aa”。/aa./cccccc/aasusu@ubuntu:~/find_test$
从上面的例子可看出,对于 maxdepth,若为 1,那么就是指只在当前目录下搜索,子目录不再搜索。如果条件限定为搜索目录深度最小是 2,最大是 3,那么命令可如下:
susu@ubuntu:~/find_test$ find 。 -mindepth 2 -maxdepth 3 -name “aa”。/cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
当然也可以只限定在某个固定搜索目录深度下搜索:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -mindepth 2 -regex “.*aa.*”。/cccccc/aaa./cccccc/aasusu@ubuntu:~/find_test$
1.6 `find` 其他命令
《1》 相反匹配:
susu@ubuntu:~/find_test$ ls1 2 aa aaa cccccc mybashprogram.sh mycprogram.c MyCProgram.c Program.csusu@ubuntu:~/find_test$ susu@ubuntu:~/find_test$ find 。 -mindepth 1 -maxdepth 1 -not -name “aa*”。/MyCProgram.c./2./1./mybashprogram.sh./Program.c./cccccc./mycprogram.csusu@ubuntu:~/find_test$
《2》 在查找到的文件上执行命令:
susu@ubuntu:~/find_test$ find 。 -maxdepth 1 -name “aa*” -exec md5sum {} ;d41d8cd98f00b204e9800998ecf8427e 。/aaad41d8cd98f00b204e9800998ecf8427e 。/aasusu@ubuntu:~/find_test$
计算 MD5 校验和。
《3》 使用 inode 编号查找文件
任何一个文件都有一个唯一的 inode 编号,先查看每个文件的 inode 编号:
susu@ubuntu:~/find_test$ ls -i1 a*804182 aa804181 aaasusu@ubuntu:~/find_test$
然后使用 -num 命令:
susu@ubuntu:~/find_test$ find -inum 804182./aasusu@ubuntu:~/find_test$
当然以上举例只是简单情况,对于名字相似(特别是末尾多一个空格,看不出来差别的时候)的可使用 inode 进行辨别。
《4》 根据文件权限查找文件:
-perm ***
可用 ls -l 查看各个文件的权限:
susu@ubuntu:~/find_test$ ls -ltotal 4-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 1-rw-rw-r-- 1 susu susu 0 Jun 15 09:34 2-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aa-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aaadrwxrwxr-x 3 susu susu 4096 Jun 15 13:48 cccccc-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mybashprogram.sh-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mycprogram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 MyCProgram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 Program.csusu@ubuntu:~/find_test$
《5》 使用 -type 查找指定文件类型的文件:
find 。 -type f 普通文件find 。 -type s socket文件find 。 -type d 目录文件find 。 -type f -name “.*” 查找所有一匿藏文件find 。 -type d -name “.*” 查找所有的隐藏目录
下面看下具体用例。
比如,在文件夹 find_test 下,有如下的文件组成:
susu@ubuntu:~/find_test$ ls -R.:a aa aaa bbbbbb bewe.sh werrw.c./bbbbbb:bae.sh ccccc readme.txt wer.txt./bbbbbb/ccccc:wer.csusu@ubuntu:~/find_test$
如果要清空该文件夹下的所有内容,可以回退到上一层,然后使用 rm -rf find_test命令。也可以使用如下命令:
susu@ubuntu:~/find_test$ find 。 -regex “.*” -exec rm -rf {} ;rm: cannot remove directory: ‘。’find: `。/bbbbbb’: No such file or directorysusu@ubuntu:~/find_test$ lssusu@ubuntu:~/find_test$
文件夹下的所有文件都已删除,包括各层子目录的文件夹。
2. `grep` 命令
主要作用:Linux 系统中一个文本搜索工具,能使用正则表达式搜索文本,并把搜索结果打印出来。
比如,a.txt 文件中如下内容:
susu@ubuntu:~/grep_test$ cat a.txttihis test1 werwr.dfsdfefwfgwerwer teststttttwesdf wtest234.susu@ubuntu:~/grep_test$
现在,要在 a.txt 中找所有包含“test”字符串的行,并显示出来:
susu@ubuntu:~/grep_test$ grep “test” a.txt tihis test1 werwr. werwer teststtttt wesdf wtest234. susu@ubuntu:~/grep_test$
其中,“test”字符串在 ubuntu 的命令行下是红色高亮显示的。
$ grep ‘test’ d*
显示所有以 d 开头的文件中含有“test”关键字的行。
如下命令:
grep “[a-z]{5}” a.txt
表示每个字符串包含至少 5 个以上连续小写字母的字符串。
除了搜索限定的文本,也可以搜索指定目录下的所有文件,如下:
susu@ubuntu:~$ grep “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
注意:默认情况下,grep 只在跟定的目录下进行搜索,不会进入子目录,所以搜索深度只有 1 层,而且会跳出来“*** is a directory”。如果想让其搜索所有子目录的文件,可以使用如下语句:
susu@ubuntu:~$ grep -r “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrgrep_test/ddddd/c.txt~:werwert testtgrep_test/ddddd/c.txt~:testgrep_test/ddddd/c.txt~:testsetwtwgrep_test/ddddd/c.txt~:sdffsddfsfftetsettest sdfgrep_test/ddddd/c.txt:werwert testtgrep_test/ddddd/c.txt:testgrep_test/ddddd/c.txt:testsetwtwgrep_test/ddddd/c.txt:sdffsddfsfftetsettest sdfsusu@ubuntu:~$
或者,使用如下语句跳过子目录:
susu@ubuntu:~$ grep -d skip “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
如果现实内容过多,可以通过管道转到 less 上阅读,语句如下:
susu@ubuntu:~$ grep -r “test” grep_test/* | less
note:less 是一个工具,用于文件或者其他输入的分页显示,是 Linux 系统查看文本内容的工具。比如可以用以下方式打开文件:
susu@ubuntu:~/grep_test$ less a.txt
然后就会转到一个新页面,只显示 a.txt 中的内容。更多关于 less 的讲解,参看链接:http://www.cnblogs.com/peida/archive/2012/11/05/2754477.html。
3. diff 命令
diff 命令可以比较文本,也可比较目录。比较文本,就是逐行比较,给出异同点,比较目录时,同名的文件会进行比较,不同名的文件,会列出各自属于哪个目录。
比较文件:
susu@ubuntu:~/grep_test$ diff a.txt c.txt3c3《 sdfef---》 wr6c6,8《 ---》 add》 wer》 rtysusu@ubuntu:~/grep_test$
比较目录:
susu@ubuntu:~$ diff grep_test/ workspace/diff grep_test/a.txt workspace/a.txt1,10d0《 tihis test1 werwr.《 df《 sdfef《 wf《 g《 《 werwer teststtttt《 《 wesdf wtest234.《 Only in grep_test/: b.txtOnly in grep_test/: c.txtOnly in grep_test/: c.txt~Only in grep_test/: dddddOnly in workspace/: .metadataOnly in workspace/: .recommendersOnly in workspace/: RemoteSystemsTempFilesOnly in workspace/: testJustOnly in workspace/: test_new_web_mavenOnly in workspace/: test_quickstart_mavensusu@ubuntu:~$
对于两个文件的比较,会有两个箭头表示:“《”和“》”符号。符号“《”表示第一个参数代表的文件,符号“》”表示第二个参数代表的文件。上面的代码中,首先给出提示:diff grep_test/a.txt workspace/a.txt,然后接下来是要比较的内容。
第一行,给出了“1,10d0”,结合下面的左侧指向箭头“《”,说明在第 0 行(最开始),第一个文本比第二个文本多了 1 ~ 10 行。
diff 命令中间可加入各个参数,比如:
susu@ubuntu:~/grep_test$ diff --brief a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$ diff -q a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$
-q 或者 --brief 简化了比较的信息,只告诉两个文本是否相同,不显示详细的不同之处。更多 diff 的命令参数可参考:http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html。
4. mount 命令
在 Linux 系统中,mount 命令用于挂在光盘镜像文件、移动硬盘、U盘等。
格式:
mount [-t vfstype] [-o options] device dir
[-t vfstype] 指定所挂载的文件系统的类型,通常 mount 可自动识别,不用人为指定。常用类型如下:
光盘或光盘镜像:iso9660DOS fat16 文件系统:msdosWindows 9x fat32 文件系统:vfatWindows NT ntfs文件系统:ntfsMount Windows 文件网络共享:smbfsUNIX(LINUX)
[-o options] 说明挂载方式,其和上面的命令,两者可互换。常用参数如下:
oop:用来把一个文件当成硬盘分区挂接上系统ro:采用只读方式挂接设备rw:采用读写方式挂接设备iocharset:指定访问文件系统所用字符集
device 表示要挂载的设备;dir 设备在系统上的挂载点(mount point)。
实践操作如下。
在插入 U 盘之前,输入以下命令:
susu@ubuntu:~$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / Solarissusu@ubuntu:~$
这地方的命令一定要加 sudo,否则什么也不会显示。
可以看到,Linux 文件系统下,有一块硬盘 sda ,硬盘中有 2 个分区 sda1 和 sda2 。另外一个 sda5 是逻辑分区。
插入 U 盘后,重新敲一遍命令,得到如下信息:
susu@ubuntu:/$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / SolarisDisk /dev/sdb: 4057 MB, 4057989120 bytes91 heads, 45 sectors/track, 1935 cylinders, total 7925760 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/sdb1 * 63 7925759 3962848+ c W95 FAT32 (LBA)susu@ubuntu:/$
会发现,下面多出来很多信息,这个信息都是描述刚刚插入的 U 盘的。系统多了一个硬盘 sdb 和一个磁盘分区 sdb1 。我们要挂载的就是磁盘分区 sdb1 。
先在 /mnt/ 目录下创建一个挂载点:
susu@ubuntu:/mnt$ sudo mkdir usbhd1susu@ubuntu:/mnt$ lsusbhd1susu@ubuntu:/mnt$
然后根据 mount 命令的语法,将 USB 添加到该挂载点:
susu@ubuntu:/$ mount -o loop dev/sdb1 mnt/usbhd1/mount: only root can do thatsusu@ubuntu:/$ sudo mount -o loop dev/sdb1 mnt/usbhd1/susu@ubuntu:/$ cd mnt/usbhd1/susu@ubuntu:/mnt/usbhd1$ ls???? EVM?????.txt???? ?? Microsoft Word ??.doc????? ???????????????????.pdf????05.06.07.09????-4.pdf Reimbursement Form for interview trip.xls??1_??.png System Volume Information???????????????(2010?).pdf Vocabulary.doc2012??????????(?????)-12.pdf VS2012_ULT_chs.iso????????.docx ????????????????.xlssusu@ubuntu:/mnt/usbhd1$
mount 挂载成功!
上述代码中,刚开始没有加 sudo,提示只有 root 可以。最后 ls ,发现是乱码,是因为 U 盘中都是中文名字,所以显示乱码。可用以下命令解决此问题:
susu@ubuntu:/$ sudo mount -o iocharset=cp936 。/dev/sdb1 。/mnt/usbhd1/
卸载就相对简单了,只需要把挂载点卸掉即可,命令如下:
susu@ubuntu:/$ sudo umount 。/mnt/usbhd1
5. ps 命令
ps 与 top 的区别:ps 是进程快照,给出了输入 ps 命令按回车时的进程,而 top 是实时动态进程。
显示所有进程信息:
susu@ubuntu:~$ ps -A PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:16 rcu_sched 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 migration/0 10 ? 00:00:00 watchdog/0 。..。..
显示指定用户信息:
susu@ubuntu:~$ ps -u susu PID TTY TIME CMD 1757 ? 00:00:00 gnome-keyring-d 1759 ? 00:00:00 init 1828 ? 00:00:04 dbus-daemon 1839 ? 00:00:00 upstart-event-b 1848 ? 00:00:00 window-stack-br 1850 ? 00:00:55 ibus-daemon 1864 ? 00:00:00 gvfsd 1874 ? 00:00:00 ibus-dconf 1875 ? 00:00:00 gvfsd-fuse 1876 ? 00:00:14 ibus-ui-gtk3 。..。..
与 grep 结合,查找特定进程:
susu@ubuntu:~$ ps -ef|grep sshsusu 5920 2409 0 17:41 pts/6 00:00:00 grep --color=auto sshsusu@ubuntu:~$
列出目前正在运行在内存中的所有程序:
susu@ubuntu:~$ ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.2 4452 2076 ? Ss 09:00 0:03 /sbin/initroot 2 0.0 0.0 0 0 ? S 09:00 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/0:0H]root 7 0.0 0.0 0 0 ? S 09:00 0:16 [rcu_sched]root 8 0.0 0.0 0 0 ? S 09:00 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S 09:00 0:00 [migration/0]root 10 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/0]root 11 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/1]root 12 0.0 0.0 0 0 ? S 09:00 0:00 [migration/1]root 13 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/1]root 14 0.0 0.0 0 0 ? S 09:00 0:03 [kworker/1:0]root 15 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/1:0H]root 16 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/2]root 17 0.0 0.0 0 0 ? S 09:00 0:00 [migration/2]。..。..
以上内容中各字段含义如下:
USER:该 process 属于那个使用者账号的PID :该 process 的号码%CPU:该 process 使用掉的 CPU 资源百分比%MEM:该 process 所占用的物理内存百分比VSZ :该 process 使用掉的虚拟内存量 (Kbytes)RSS :该 process 占用的固定的内存量 (Kbytes)TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。STAT:该程序目前的状态,主要的状态有R :该程序目前正在运作,或者是可被运作S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。T :该程序目前正在侦测或者是停止了Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态START:该 process 被触发启动的时间TIME :该 process 实际使用 CPU 运作的时间COMMAND:该程序的实际指令
6. free 命令
显示系统中使用和空存情闲的内况:包括物理区内存,交互区内存(swap)和内核缓冲区内存(buffer),无共享内存。
7 ifconfig(interface configs)
类似于 Windows 下的 ipconfig 指令,获取网络接口配置信息。
显示网络设备信息:
susu@ubuntu:/$ ifconfigeth0 Link encap:Ethernet HWaddr 00:0c:29:36:a8:68 inet addr:192.168.168.128 Bcast:192.168.168.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe36:a868/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:53539 errors:3 dropped:1 overruns:0 frame:0 TX packets:48878 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:29473130 (29.4 MB) TX bytes:8479638 (8.4 MB) Interrupt:19 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:12501 errors:0 dropped:0 overruns:0 frame:0 TX packets:12501 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1211710 (1.2 MB) TX bytes:1211710 (1.2 MB)
抄一段对以上内容的说明:
eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC 地址)是 00:50:56:BF:26:20
inet addr 用来表示网卡的 IP 地址,此网卡的 IP 地址是 192.168.120.204,广播地址, Bcast:192.168.120.255,掩码地址 Mask:255.255.255.0
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 HTTP 服务器指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架 Web 网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件 MAC 地址)
第二行:网卡的IP地址、子网、掩码
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500 字节 第四、五行:接收、发送数据包情况统计第七行:接收、发送数据字节数统计信息。
根据以上的解释说明,可用如下方式来打开和关闭网卡。
打开:
sudo ifconfig eth0 down
关闭:
sudo ifconfig eth0 up
其他功能包括:为网卡配置和删除 IPv6 地址、配置 IP 地址、启用 / 关闭 ARP 协议、设置网卡做大传输单元(ifconfig eth0 mtu 1500)等。
8. telnet 命令
主要用于远程登录。
telnet 程序是基于 Telnet 协议的远程登录客户端程序。Telnet 协议是 Internet 远程服务的标准协议也主要方式。现在很多 Linux 服务器因为安全问题不再支持 Telnet 协议,改用 SSH,部分还在支持。
telnet 不仅能够登录远程,然后进行远程操作,还能查看远程服务器状态,某端口是否可访问。
这部分内容,暂时不作深入了解,有需要的小伙伴可自行搜索了解。
9. scp(secure copy) 命令
用于远程文件(夹)拷贝的命令,基于 ssh。而类似功能的命令 cp 只能在本地拷贝。
格式:
scp [options] 《source_path》 《desti_path》
参数说明(网上摘抄):
-1 强制scp命令使用协议 ssh1;-2 强制scp命令使用协议 ssh2; -4 强制scp命令只使用 IPv4 寻址;-6 强制scp命令只使用 IPv6 寻址;-B 使用批处理模式(传输过程中不询问传输口令或短语);-C 允许压缩。(将 -C 标志传递给 ssh ,从而打开压缩功能); -p 保留原文件的修改时间,访问时间和访问权限;-q 不显示传输进度条;-r 递归复制整个目录; -v 详细方式显示输出。scp 和 ssh(1) 会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题;-c cipher 以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh;-F ssh_config 指定一个替代的 ssh 配置文件,此参数直接传递给 ssh; -i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh;-l limit 限定用户所能使用的带宽,以 `Kbit/s` 为单位;-o ssh_option 如果习惯于使用 `ssh_config(5)` 中的参数传递方式;-P port 注意是大写的P,port 是指定数据传输用到的端口号;-S program 指定加密传输时所使用的程序,此程序必须能够理解 ssh(1) 的选项。
10. zip 和 unzip 命令
压缩、解压命令。过于简单,具体使用不再描述。
11. gzip 命令
gzip 与 zip 的区别:
gzip 是一个压缩工具,适用于压缩单个文件,其压缩的文件的后缀为 .gz。而 zip 是一种数据结构,类似于 rar,其适用于压缩多个文件。在 Linux 下,下载压缩包的时候,多会看到有 tar.gz 后缀的文件,这种就是先用 tar 命令将多个文件打包成一个文件,然后再使用 gzip 命令进行压缩,得到 tar.gz 格式,更多细节见:链接。
具体命令格式:
gzip [options] 《file or dir》
各参数说明:
-a 或 --ascii 使用 ASCII 文字模式。-c 或 --stdout 或 --to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。-d 或 --decompress 或 ----uncompress 解开压缩文件。-f 或 --force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。-h 或 --help 在线帮助。-l 或 --list 列出压缩文件的相关信息。-L 或 --license 显示版本与版权信息。-n 或 --no-name 压缩文件时,不保存原来的文件名称及时间戳记。-N 或 --name 压缩文件时,保存原来的文件名称及时间戳记。-q 或 --quiet 不显示警告信息。-r 或 --recursive 递归处理,将指定目录下的所有文件及子目录一并处理。-S 《 压缩字尾字符串 》 或 ----suffix 《 压缩字尾字符串 》 更改压缩字尾字符串。-t 或 --test 测试压缩文件是否正确无误。-v 或 --verbose 显示指令执行过程。-V 或 --version 显示版本信息。-num 用指定的数字num调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或 --best 表示最慢压缩方法(高压缩比)。系统缺省值为 6。
举几个简单例子:
gzip * 是压缩当前目录下所有文件,但是不包含子目录:
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$
其逆过程(解压)为 gzip -d *
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -d *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$
若解压过程中需要列出详细信息,则为:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -dv *a.txt.gz: 18.6% -- replaced with a.txtb.txt.gz: 19.7% -- replaced with b.txtc.txt.gz: 16.7% -- replaced with c.txtgzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$
其实就是多个参数选项的结合(-d and -v -》 -dv)。
若压缩完了,想看每个压缩文件的详细信息,则用如下命令:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -l * compressed uncompressed ratio uncompressed_name 81 70 18.6% a.txt 77 66 19.7% b.txt 89 78 16.7% c.txtgzip: subDir is a directory -- ignored 247 214 -4.2% (totals)susu@ubuntu:~/grep_test$
因为有一个目录,总是跳出来一个 ignored 的信息,很讨厌啊有木有,可使用 -r 选项进行地柜压缩,压缩一个目录下所有的文件(包括子目录):
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip -r *susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ cd subDir/susu@ubuntu:~/grep_test/subDir$ lsd.txt.gz e.txt.gzsusu@ubuntu:~/grep_test/subDir$
有了递归的压缩,当然也有递归的解压,只需要把-d换成-dr即可。
12. ll 命令
每天都在使用 ls 命令,但是今天才知道 ll 和 ls 的区别,这里发个链接,可详细了解,解释的挺清楚。【linux ls和 ll 命令】:http://blog.csdn.net/cgzhello1/article/details/7839534/
13. netstat 命令
作用:
显示和各协议(TCP / IP / UDP / ICMP 等)相关的统计信息,检验本机各端口的网络连接情况。
命令较多,暂时不打算细看,详细信息,这里给出链接,netstat命令详解:http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html。
14. kill 命令
作用:
终止正在运行的进程,进程管理常用命令。
进程分为前台进程和后台进程。前台进程,可以使用 ctrl+c 来终止,后台进程,只能使用 kill 命令终止。
首先用 ps 或者 top 来获得进程的 id,然后再使用 kill 命令。通常,kill 命令通过向进程发送信号的方式来终止进程。默认情况下,使用编号为 15 的 TERM 信号,TERM 信号能杀死所有不能捕获该信号的进程,对于捕获该信号的进程,使用编号为 9 的 kill 信号,强行杀掉该进程。
命令使用方式:
kill [-options] 《PID》
更多:kill命令详解:http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html。
15. set 命令
作用:
显示系统中已经存在的 shell 变量,以及设置 shell 变量的新变量值。更多说明:linux set命令:http://man.linuxde.net/set。
16. su 命令
作用:
切换用户。
上来就碰到一个错误:
susu@ubuntu:/$ suPassword: su: Authentication failuresusu@ubuntu:/$
原因:是 root 用户默认是没有密码的,而上面的密码部分,我输入的是账户 susu 对应的密码,并不是 root 的密码。所有才会出错。
解决方式就是先给 root 设置密码,在 susu 账户下就可以设置:
susu@ubuntu:/$ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullysusu@ubuntu:/$
另外,用户切换,如果想回到 root 用户,那么使用:
susu@ubuntu:~$ sudo -i[sudo] password for susu: root@ubuntu:~#
注意:这里的 passwd,输入的是当前账户(susu)对应的密码。
也可以使用:
susu@ubuntu:/root$ su rootPassword: root@ubuntu:~#
注意:这里的 passwd,输入的是 root 账户对应的密码,而不是 susu 账户对应的密码。
如果由 root 用户切换到普通用户,那么使用 su 《 普通用户名 》 即可,而不能使用 sudo,在 root 用户下,没有 sudo 《 用户名 》 命令。
susu@ubuntu:/$ sudo -iroot@ubuntu:~# su susususu@ubuntu:/root$ cd 。.susu@ubuntu:/$ lsbin dev initrd.img media proc sbin tmp vmlinuzboot etc lib mnt root srv usrcdrom home lost+found opt run sys varsusu@ubuntu:/$
全部0条评论
快来发表一下你的评论吧 !