附录:常用命令
The command line is one of the most powerful features of Linux. There exists a sea of Linux command line tools, allowing you to do almost everything you can think of doing on your Linux PC. However, this usually creates a problem: with so many commands available to use, you don't know where and how to start learning them, especially when you are beginner.
本文的特点是非常简洁,将繁杂的Linux命令行筛选出100条左右,非常适合入门学习。 此外,将领域知识以“条目+示例”的方式来整理,类似编字典一样,在编辑的过程中可以促进学习者加深认识,也方便日后持续改进(增加注解、参考文献、索引等),是一种不错的学习方法。 最后,整理这些命令行的时候,我体会到操作系统最重要的工作实际就是对文件的管理,创建、移动、查看、编辑、销毁、检索,都是围绕文件的操作,事实上也是实际工作中使用最频繁的需求。对开发者来说,以Linux命令行为模版,命名风格、人机交互、小而美的实现方式,促进自己在其它领域的应用、提高大有裨益。
The adduser and addgroup commands lets you add a new user and group to a system, respectively. Here's an example for adduser:
$ sudo adduser testuser
Adding user `testuser' ...
Adding new group `testuser' (1003) ...
Adding new user `testuser' (1003) with group `testuser' ...
Creating home directory `/home/testuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
The arch command is used to print the machine's architecture. For example:
$ arch
i686
Not sure what 'i686' means? Head here.
The cal and ncal commands display a calendar in the output.
$ cal
March 2017
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
$ ncal
March 2017
Su 5 12 19 26
Mo 6 13 20 27
Tu 7 14 21 28
We 1 8 15 22 29
Th 2 9 16 23 30
Fr 3 10 17 24 31
Sa 4 11 18 25
分类:文件管理;查看文件内容 The cat command allows you to concatenate files, or data provided on standard input, and print it on the standard output. In layman terms, the command prints the information provided to it, whether through stdin or in the form a file.
$ cat test.txt
Hello...how are you?
$ cd /home/himanshu/
分类:文件管理、权限管理;切换文件所属组 The chgrp command allows you to change the group ownership of a file. The command expects new group name as its first argument and the name of file (whose group is being changed) as second argument.
$ chgrp howtoforge test.txt
分类:文件管理、权限管理;切换文件执行权限 The chmod command lets you change access permissions for a file. For example, if you have a binary file (say helloWorld), and you want to make it executable, you can run the following command:
chmod +x helloWorld
分类:文件管理、权限管理;切换文件所有者 The chown command allows you to change the ownership and group of a file. For example, to change the owner of a file test.txt to root, as well as set its group as root, execute the following command:
chown root:root test.txt
$ cksum test.txt
3741370333 20 test.txt
Not sure what checksum is? Head here.
$ clear
$ cmp file1 file2
file1 file2 differ: byte 1, line 1
分类:文件管理;文件比对 The comm command is used to compare two sorted files line-by-line. For example, if 'file1' contains numbers 1-5 and 'file2' contains number 4-8, here's what the 'comm' command produces in this case:
$ comm file1 file2
支持选项:
-1:不显示在第一个文件出现的内容;
-2:不显示在第二个文件中出现的内容;
-3:不显示同时在两个文件中都出现的内容。
$ cp test.txt /home//himanshu/Desktop/
分类:文件管理;待补充内容 The csplit command lets you split a file into sections determined by context lines. For example, to split a file into two where the first part contains 'n-1' lines and the second contains the rest, use the following command:
$ csplit file1 [n]
The two parts are saved as files with names 'xx00' and 'xx01', respectively.
$ date
Tue Feb 28 17:14:57 IST 2017
分类:文件管理;待补充内容 The dd command copies a file, converting and formatting according to the operands. For example, the following command creates an image of /dev/sda partition.
dd if=/dev/sda of=/tmp/dev-sda-part.img
$ df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 74985616 48138832 23014620 68% /
$ diff file1 file2
分类:文件管理;文件比对,三个文件 The diff3 command, as the name suggests, allows you to compare three files line by line.
diff3 file1 file2 file3
$ dir
test1 test2 test.7z test.zip
分类:文件管理;查看当前目录 The dirname command strips last component from a file name/path. In layman's terms, you can think of it as a tool that, for example, removes file name from the file's absolute path.
$ dirname /home/himanshu/file1
/home/himanshu
The dmidecode command prints a system's DMI (aka SMBIOS) table contents in a human-readable format.
$ sudo dmidecode
# dmidecode 2.12
SMBIOS 2.6 present.
50 structures occupying 2056 bytes.
Table at 0x000FCCA0.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: 080015
Release Date: 08/22/2011
...
...
...
DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。 SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOS和DMI是由行业指导机构Desktop Management Task Force (DMTF)起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。
分类:文件管理;查看指定目录磁盘利用率 The du command displays disk usage of files present in a directory as well as its sub-directories.
$ du /home/himanshu/Desktop/
92 /home/himanshu/Desktop/Downloads/meld/meld/ui
88 /home/himanshu/Desktop/Downloads/meld/meld/vc
56 /home/himanshu/Desktop/Downloads/meld/meld/matchers
12 /home/himanshu/Desktop/Downloads/meld/meld/__pycache__
688 /home/himanshu/Desktop/Downloads/meld/meld
16 /home/himanshu/Desktop/Downloads/meld/bin
328 /home/himanshu/Desktop/Downloads/meld/data/ui
52 /home/himanshu/Desktop/Downloads/meld/data/icons/svg
The echo command displays whatever input text is given to it.
$ echo hello hi
hello hi
$ ed
单行纯文本编辑器,它有命令模式(command mode)和输入模式(input mode)两种工作模式。 支持选项:
A:切换到输入模式,在文件的最后一行之后输入新的内容;
C:切换到输入模式,用输入的内容替换掉最后一行的内容;
i:切换到输入模式,在当前行之前加入一个新的空行来输入内容;
d:用于删除最后一行文本内容;
n:用于显示最后一行的行号和内容;
w:<文件名>:一给定的文件名保存当前正在编辑的文件;
q:退出ed编辑器。
$ eject
分类:系统信息;查看用户环境变量 The env command not only displays the current environment, but also lets you edit it.
$ env
$ exit
分类:文件管理;编辑器;将TAB符替换为空格符 The expand command converts tabs present in the input file(s) into spaces, and writes the file contents to standard output.
$ expand file1
$ expr 1 + 2
3
$ factor 135
135: 3 3 3 5
The fgrep command is equivalent to the grep command when executed with the -F command line option. The tool is also known as fixed or fast grep as it doesn't treat regular expression metacharacters as special, processing the information as simple string instead.
For example, if you want to search for dot (.) in a file, and don't want grep to interpret it as a wildcard character, use fgrep in the following way:
$ fgrep "." [file-name]
分类:文件管理;搜索; The find command lets you search for files in a directory as well as its sub-directories.
$ find test*
test
test1
test2
test.7z
test.c
test.txt
More examples for the Linux Find command:
* 14 Practical Examples of Linux Find Command for Beginners
* Searching For Files And Folders With The find Command
* Finding Files On The Command Line
分类:文件管理;读取文件内容并格式化输出(查看支持选项) fmt is a simple optimal text formatter. It reformats each paragraph in the file passed to it, and writes the file contents to standard output.
$ fmt file1
The fold command wraps each input line to fit in specified width.
$ fold -w 10
Hi my name is himanshu Arora
Hi my name
is himans
hu Arora
分类:系统信息;性能监测;查看内存利用情况。详细介绍 >>>more>>> The free command displays the amount of free and used memory in the system.
$ free
total used free shared buffers cached
Mem: 1800032 1355288 444744 79440 9068 216236
-/+ buffers/cache: 1129984 670048
Swap: 1832956 995076 837880
分类:文件管理;搜索; The grep command searches for a specified pattern in a file (or files) and displays in output lines containing that pattern.
$ grep Hello test.txt
Hello...how are you?
More tutorials and examples for the Linux Grep command:
* How to use grep to search for strings in files on the shell
* How to perform pattern search in files using Grep
$ groups himanshu
himanshu : himanshu adm cdrom sudo dip plugdev lpadmin sambashare
分类:文件管理;压缩 The gzip command compresses the input file, replacing the file itself with one having a .gz extension.
$ gzip file1
分类:文件管理;解压缩 Files compressed with gzip command can be restored to their original form using the gunzip command.
$ gunzip file1.gz
$ head CHANGELOG.txt
BEEBEEP (Secure Lan Messanger)
BeeBEEP
2.0.4
- Some GUI improvements (new icons, file sharing tree load faster)
- Always Beep on new message arrived (option)
- Favorite users (right click on user and enable star button) is on top of the list
- improved group usability
- Offline users can be removed from list (right click on an offline user in list and then remove)
- Clear all files shared (option)
- Load minimized at startup (option)
分类:系统信息;host name The hostname command not only displays the system's host name, but lets them set it as well.
$ hostname
himanshu-desktop
分类:系统信息;用户信息 The id command prints user and group information for the current user or specified username.
$ id himanshu
uid=1000(himanshu) gid=1000(himanshu) groups=1000(himanshu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)
分类:进程管理; The kill command, as the name suggests, helps user kill a process by sending the TERM signal to it.
$ kill [process-id]
分类:进程管理; The killall command lets you kill a process by name. Unlike kill - which requires ID of the process to be killed - killall just requires the name of the process.
$ killall nautilus
$ last
himanshu pts/11 :0 Thu Mar 2 09:46 still logged in
himanshu pts/1 :0 Thu Mar 2 09:46 still logged in
himanshu :0 :0 Thu Mar 2 09:42 still logged in
reboot system boot 4.4.0-62-generic Thu Mar 2 09:41 - 10:36 (00:54)
himanshu pts/14 :0 Wed Mar 1 15:17 - 15:52 (00:35)
himanshu pts/13 :0 Wed Mar 1 14:40 - down (08:06)
$ ldd /lib/i386-linux-gnu/libcrypt-2.19.so
linux-gate.so.1 => (0xb77df000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75da000)
/lib/ld-linux.so.2 (0x80088000)
分类:文件管理;链接 The ln command is used for creating link between files. For example, the following command would create a link named 'lnk' to a file with name 'test.txt':
$ ln test.txt lnk
$ locate [file-name]
$ logname
himanshu
$ ls progress
capture.png hlist.o progress progress.h sizes.c
hlist.c LICENSE progress.1 progress.o sizes.h
hlist.h Makefile progress.c README.md sizes.o
分类:系统信息;查看硬件信息 The lshw command extracts and displays detailed information on the hardware configuration of the machine.
$ sudo lshw
[sudo] password for himanshu:
himanshu-desktop
description: Desktop Computer
product: To Be Filled By O.E.M. (To Be Filled By O.E.M.)
vendor: To Be Filled By O.E.M.
version: To Be Filled By O.E.M.
serial: To Be Filled By O.E.M.
width: 32 bits
capabilities: smbios-2.6 dmi-2.6 smp-1.4 smp
...
...
..
分类:系统信息;查看硬件信息-CPU The lscpu command displays in output system's CPU architecture information (such as number of CPUs, threads, cores, sockets, and more).
$ lscpu
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
Vendor ID: AuthenticAMD
CPU family: 16
Model: 6
Stepping: 3
CPU MHz: 2800.234
BogoMIPS: 5600.46
Virtualization: AMD-V
L1d cache: 64K
L1i cache: 64K
L2 cache: 1024K
分类:帮助; man lets you access reference manual for commands, programs/utilities, as well as functions.
$ man ls
$ md5sum test.txt
ac34b1f34803a6691ff8b732bb97fbba test.txt
$ mkdir [dir-name]
$ mkfifo [pipe-name]
$ cat [large-file] | more
$ mv test.txt /home/himanshu/Desktop/
$ nice -n[niceness-value] [program]
$ nice -n15 vim
分类:文件管理;输出行号 The nl command writes contents of a file to output, and prepends each line with line number.
$ nl file1
1 Hi
2 How are you
3 Bye
$ nm test
0804a020 B __bss_start
0804841d T compare
0804a020 b completed.6591
0804a018 D __data_start
0804a018 W data_start
08048360 t deregister_tm_clones
080483d0 t __do_global_dtors_aux
08049f0c t __do_global_dtors_aux_fini_array_entry
0804a01c D __dso_handle
08049f14 d _DYNAMIC
0804a020 D _edata
0804a024 B _end
080484e4 T _fini
080484f8 R _fp_hw
080483f0 t frame_dummy
...
...
...
分类:进程管理 The nproc command displays the number of processing units available to the current process.
$ nproc
1
$ od /bin/ls
0000000 042577 043114 000401 000001 000000 000000 000000 000000
0000020 000002 000003 000001 000000 140101 004004 000064 000000
0000040 122104 000001 000000 000000 000064 000040 000011 000050
0000060 000034 000033 000006 000000 000064 000000 100064 004004
0000100 100064 004004 000440 000000 000440 000000 000005 000000
0000120 000004 000000 000003 000000 000524 000000 100524 004004
...
...
...
$ passwd himanshu
Changing password for himanshu.
(current) UNIX password:
分类:交互 The paste command lets you merge lines of files. For example, if 'file1' contains the following lines:
$ cat file1
Hi
My name is
Himanshu
Arora
I
Am
a
Linux researcher
and tutorial
writer
Then the following 'paste' command will join all the lines of the file:
$ paste -s file1
Hi My name is Himanshu Arora I Am a Linux researcher and tutorial writer
$ pidof nautilus
2714
分类:网络管理 The ping command is used to check whether or not a system is up and responding. It sends ICMP ECHO_REQUEST to network hosts.
$ ping howtoforge.com
PING howtoforge.com (104.24.0.68) 56(84) bytes of data.
64 bytes from 104.24.0.68: icmp_seq=1 ttl=58 time=47.3 ms
64 bytes from 104.24.0.68: icmp_seq=2 ttl=58 time=51.9 ms
64 bytes from 104.24.0.68: icmp_seq=3 ttl=58 time=57.4 ms
分类:进程管理 The ps command displays information (in the form of a snapshot) about the currently active processes.
$ ps
PID TTY TIME CMD
4537 pts/1 00:00:00 bash
20592 pts/1 00:00:00 ps
$ pstree
init???ModemManager???2*[{ModemManager}]
??NetworkManager???dhclient
? ??dnsmasq
? ??3*[{NetworkManager}]
??accounts-daemon???2*[{accounts-daemon}]
??acpid
??atop
The pwd command displays the name of current/working directory.
$ pwd
/home/himanshu
$ rm [file-name]
$ rmdir [dir-name]
$ scp [name-and-path-of-file-to-transfer] [user]@[host]:[dest-path]
分类:文件管理;文本比对 side-by-side The sdiff command lets you perform a side-by-side merge of differences between two files.
$ sdiff file1 file2
分类:文件管理;编程工具 sed is basically a stream editor that allows users to perform basic text transformations on an input stream (a file or input from a pipeline).
$ echo "Welcome to Howtoforge" | sed -e 's/Howtoforge/HowtoForge/g'
Welcome to HowtoForge
分类:计算器 The seq commands prints numbers from FIRST to LAST, in steps of INCREMENT. For example, if FIRST is 1, LAST is 10, and INCREMENT is 2, then here's the output this command produces:
$ seq 1 2 10
1
3
5
7
9
$ sha1sum test.txt
955e48dfc9256866b3e5138fcea5ea0406105e68 test.txt
The shutdown command lets user shut the system in a safe way.
$ shutdown
分类:文件管理 The size command lists the section sizes as well as the total size for an object or archive file.
$ size test
text data bss dec hex filename
1204 280 4 1488 5d0 test
The sleep command lets user specify delay for a specified amount of time. You can use it to delay an operation like:
$ sleep 10; shutdown
分类:文件管理 The sort command lets you sort lines of text files. For example, if 'file2' contains the following names:
$ cat file2
zeus
kyan
sam
adam
Then running the sort command produces the following output:
$ sort file2
adam
kyan
sam
zeus
分类:文件管理 The split command, as the name suggests, splits a file into fixed-size pieces. By default, files with name like xaa, xab, and xac are produced.
$ split [file-name]
ssh is basically OpenSSH SSH client. It provides secure encrypted communication between two untrusted hosts over an insecure network.
$ ssh [user-name]@[remote-server]
$ stat test.txt
File: ‘test.txt’
Size: 20 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 284762 Links: 2
Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-03-03 12:41:27.791206947 +0530
Modify: 2017-02-28 16:05:15.952472926 +0530
Change: 2017-03-02 11:10:00.028548636 +0530
Birth: -
分类:文件管理 The strings command displays in output printable character sequences that are at least 4 characters long. For example, when a binary executable 'test' was passed as an argument to this command, following output was produced:
$ strings test
/lib/ld-linux.so.2
libc.so.6
_IO_stdin_used
puts
__libc_start_main
__gmon_start__
GLIBC_2.0
PTRh
QVhI
[^_]
EQUAL
;*2$"
GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
....
....
....
分类:用户权限管理 The su command lets you change user-identity. Mostly, this command is used to become root or superuser.
$ su [user-name]
分类:用户权限管理 The sudo command lets a permitted user run a command as another user (usually root or superuser).
$ sudo [command]
$ sum readme.txt
45252 5
分类:文件管理 The tac command prints input files in reverse. Functionality-wise, it does the reverse of what the cat command does.
$ cat file2
zeus
kyan
sam
adam
$ tac file2
adam
sam
kyan
zeus
$ tail [file-name]
$ talk [user-name]
分类:文件管理;压缩&解压缩 tar is an archiving utility that lets you create as well as extract archive files. For example, to create archive.tar from files 'foo' and 'bar', use the following command:
$ tar -cf archive.tar foo bar
More...
$ uname | tee file2
Linux
$ cat file2
Linux
分类:计算器 The test command checks file types and compare values. For example, you can use it in the following way:
$ test 7 -gt 5 && echo "true"
true
$ time ping google.com
PING google.com (216.58.220.206) 56(84) bytes of data.
64 bytes from del01s08-in-f14.1e100.net (216.58.220.206): icmp_seq=1 ttl=52 time=44.2 ms
^C
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 44.288/44.288/44.288/0.000 ms
real 0m0.676s
user 0m0.000s
sys 0m0.000s