lsblk命令
"lsblk"就是列出块设备。除了RAM外,以标准的树状输出格式,整齐地显示块设备。
03 | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT |
04 | sda 8:0 0 232.9G 0 disk |
05 | ├─sda1 8:1 0 46.6G 0 part / |
06 | ├─sda2 8:2 0 1K 0 part |
07 | ├─sda5 8:5 0 190M 0 part /boot |
08 | ├─sda6 8:6 0 3.7G 0 part [SWAP] |
09 | ├─sda7 8:7 0 93.1G 0 part /data |
10 | └─sda8 8:8 0 89.2G 0 part /personal |
11 | sr0 11:0 1 1024M 0 rom |
“lsblk -l”命令以列表格式显示块设备(而不是树状格式)。
03 | NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT |
04 | sda 8:0 0 232.9G 0 disk |
05 | sda1 8:1 0 46.6G 0 part / |
07 | sda5 8:5 0 190M 0 part /boot |
08 | sda6 8:6 0 3.7G 0 part [SWAP] |
09 | sda7 8:7 0 93.1G 0 part /data |
10 | sda8 8:8 0 89.2G 0 part /personal |
11 | sr0 11:0 1 1024M 0 rom |
注意:lsblk是最有用和最简单的方式来了解新插入的USB设备的名字,特别是当你在终端上处理磁盘/块设备时。
md5sum命令
“md5sum”就是计算和检验MD5信息签名。md5 checksum(通常叫做哈希)使用匹配或者验证文件的文件的完整性,因为文件可能因为传输错误,磁盘错误或者无恶意的干扰等原因而发生改变。
3 | 47790ed345a7b7970fc1f2ac50c97002 teamviewer_linux.deb |
注意:用户可以使用官方提供的和md5sum生成签名信息匹对以此检测文件是否改变。Md5sum没有sha1sum安全,这点我们稍后讨论。
dd命令
“dd”命令代表了转换和复制文件。可以用来转换和复制文件,大多数时间是用来复制iso文件(或任何其它文件)到一个usb设备(或任何其它地方)中去,所以可以用来制作USB启动器。
注意:在上面的例子中,usb设备就是sdb1(你应该使用lsblk命令验证它,否则你会重写你的磁盘或者系统),请慎重使用磁盘的名,切忌。
dd 命令在执行中会根据文件的大小和类型 以及 usb设备的读写速度,消耗几秒到几分钟不等。
uname命令
"uname"命令就是Unix Name的简写。显示机器名,操作系统和内核的详细信息。
3 | Linux tecmint 3.8.0-19-generic |
注意: uname显示内核类别, uname -a显示详细信息。上面的输出详细说明了uname -a
- “Linux“: 机器的内核名
- “tecmint“: 机器的节点名
- “3.8.0-19-generic“: 内核发布版本
- “#30-Ubuntu SMP“: 内核版本
- “i686“: 处理器架构
- “GNU/Linux“: 操作系统名
history命令
“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。
03 | 1 sudo add-apt-repository ppa:tualatrix/ppa |
05 | 3 sudo apt-get install ubuntu-tweak |
06 | 4 sudo add-apt-repository ppa:diesch/testing |
08 | 6 sudo apt-get install indicator-privacy |
09 | 7 sudo add-apt-repository ppa:atareao/atareao |
11 | 9 sudo apt-get install my-weather-indicator |
13 | 11 cd && sudo cp -r unity/6 /usr/share/unity/ |
14 | 12 cd /usr/share/unity/icons/ |
15 | 13 cd /usr/share/unity |
注意:按住“CTRL + R”就可以搜索已经执行过的命令,它可以在你写命令时自动补全。
1 | (reverse-i-search)` if ': ifconfig |
cmp命令
比较两个任意类型的文件并将结果输出至标准输出。如果两个文件相同, ‘cmp‘默认返回0;如果不同,将显示不同的字节数和第一处不同的位置。
以下面两个文件为例:
file1.txt
file2.txt
3 | Hi My name is tecmint [dot] com |
比较一下这两个文件,看看命令的输出。
3 | file1.txt file2.txt differ: byte 15, line 1 |
service命令
‘service‘命令控制服务的启动、停止和重启,它让你能够不重启整个系统就可以让配置生效以开启、停止或者重启某个服务。
在Ubuntu上启动apache2 server:
3 | * Starting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName |
4 | httpd (pid 1285) already running [ OK ] |
重启apache2 server:
3 | * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName |
4 | ... waiting .apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [ OK ] |
停止apache2 server:
3 | * Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName |
注意:要想使用service命令,进程的脚本必须放在‘/etc/init.d‘,并且路径必须在指定的位置。
如果要运行“service apache2 start”实际上实在执行“service /etc/init.d/apache2 start”.
sudo !!命令
以管理员权限运行最后一个命令
3 | E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied) |
4 | E: Unable to lock directory /var/lib/apt/lists/ |
5 | E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied) |
6 | E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? |
4 | [ sudo ] password for server: |
7 | Fetched 474 kB in 16s (28.0 kB/s) |
8 | Reading package lists... Done |
python命令
下面的命令生产一个通过HTTP显示文件夹结构树的简单网页,可以通过浏览器在端口8000访问,直到发出中断信号。
Ctrl+x+e命令
这个命令对于管理员和开发者非常有用。为了使每天的任务自动化,管理员需要通过输入vi、vim、nano等打开编辑器。
仅仅从命令行快速的敲击“Ctrl-x-e”,就可以在编辑器中开始工作了。
nl命令
“nl命令”添加文件的行数。一个叫做'one.txt'的文件,其每行的内容是(Fedora、Debian、Arch、Slack和Suse),给每行添加行号。首先使用cat命令显示“one.txt”的文件内容。
现在运行“nl命令”,以添加行号的方式来显示。
shuf命令
“Shut”命令随机从一个文件或文件夹中选择行/文件/文件夹。首先使用ls命令来显示文件夹的内容。
3 | Desktop Documents Downloads Music Pictures Public Templates Videos |
注意
:你可以把‘
n1
’替换成‘
n2
’来输出两个随机选择或者使用
n3
、
n4
等数字输出其他任意的随机选择。
ss命令
“ss”表示socket统计。这个命令调查socket,显示类似netstat命令的信息。它可以比其他工具显示更多的TCP和状态信息。
3 | State Recv-Q Send-Q Local Address:Port Peer Address:Port |
4 | ESTAB 0 0 192.168.1.198:41250 *.*.*.*:http |
5 | CLOSE-WAIT 1 0 127.0.0.1:8000 127.0.0.1:41393 |
6 | ESTAB 0 0 192.168.1.198:36239 *.*.*.*:http |
7 | ESTAB 310 0 127.0.0.1:8000 127.0.0.1:41384 |
8 | ESTAB 0 0 192.168.1.198:41002 *.*.*.*:http |
9 | ESTAB 0 0 127.0.0.1:41384 127.0.0.1:8000 |
last命令
“last”命令显示的是上次登录用户的历史信息。这个命令通过搜索文件“/var/log/wtmp”,显示logged-in和logged-out及其tty‘s的用户列表。
02 | server pts/0 :0 Tue Oct 22 12:03 still logged in |
03 | server tty8 :0 Tue Oct 22 12:02 still logged in |
06 | (unknown tty8 :0 Tue Oct 22 12:02 - 12:02 (00:00) |
07 | server pts/0 :0 Tue Oct 22 10:33 - 12:02 (01:29) |
08 | server tty7 :0 Tue Oct 22 10:05 - 12:02 (01:56) |
09 | (unknown tty7 :0 Tue Oct 22 10:04 - 10:05 (00:00) |
10 | reboot system boot 3.2.0-4-686-pae Tue Oct 22 10:04 - 12:44 (02:39) |
12 | wtmp begins Fri Oct 4 14:43:17 2007 |
tree命令
以树式的格式得到当前文件夹的结构。
08 | | |-- ttf-indic-fonts_0.5.11_all.deb |
09 | | |-- ttf-indic-fonts_1.1_all.deb |
10 | | `-- wheezy-nv- install .sh |
13 | | |-- Screenshot from 2013-10-22 12:03:49.png |
14 | | `-- Screenshot from 2013-10-22 12:12:38.png |
19 | 10 directories, 23 files |
pstree
这个命令显示当前运行的所有进程及其相关的子进程,输出的是类似‘tree’命令的树状格式。
02 | init─┬─NetworkManager───{NetworkManager} |
03 | ├─accounts-daemon───{accounts-daemon} |
06 | ├─apache2───10*[apache2] |
07 | ├─at-spi-bus-laun───2*[{at-spi-bus-laun}] |
09 | ├─avahi-daemon───avahi-daemon |
12 | ├─colord-sane───2*[{colord-sane}] |
13 | ├─console-kit-dae───64*[{console-kit-dae}] |
18 | ├─dconf-service───2*[{dconf-service}] |
24 | ├─gdm3─┬─gdm-simple-slav─┬─Xorg |
25 | │ │ ├─gdm-session-wor─┬─x-session-manag─┬─evolution-a+ |
26 | │ │ │ │ ├─gdu-notific+ |
27 | │ │ │ │ ├─gnome-scree+ |
28 | │ │ │ │ ├─gnome-setti+ |
29 | │ │ │ │ ├─gnome-shell+++ |
30 | │ │ │ │ ├─nm-applet──+++ |
32 | │ │ │ │ ├─tracker-min+ |
33 | │ │ │ │ ├─tracker-sto+ |
34 | │ │ │ │ └─3*[{x-sessi+ |
35 | │ │ │ └─2*[{gdm-session-wor}] |
36 | │ │ └─{gdm-simple-slav} |
39 | ├─gnome-keyring-d───9*[{gnome-keyring-d}] |
40 | ├─gnome-shell- cal ───2*[{gnome-shell- cal }] |
41 | ├─goa-daemon───{goa-daemon} |
42 | ├─gsd-printer───{gsd-printer} |
43 | ├─gvfs-afc-volume───{gvfs-afc-volume} |
检查远程端口是否对bash开放:
echo >/dev/tcp/8.8.8.8/53 && echo "open"
让进程转入后台:
Ctrl + z
将进程转到前台:
fg
产生随机的十六进制数,其中n是字符数:
openssl rand -hex n
在当前shell里执行一个文件里的命令:
source /home/user/file.name
截取前5个字符:
${variable:0:5}
SSH debug 模式:
ssh -vvv user@ip_address
SSH with pem key:
ssh user@ip_address -i key.pem
用wget抓取完整的网站目录结构,存放到本地目录中:
wget -r --no-parent --reject "index.html*" http://hostname/ -P /home/user/dirs
一次创建多个目录:
mkdir -p /home/user/{test,test1,test2}
列出包括子进程的进程树:
ps axwef
创建 war 文件:
jar -cvf name.war file
测试硬盘写入速度:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
测试硬盘读取速度:
hdparm -Tt /dev/sda
获取文本的md5 hash:
echo -n "text" | md5sum
检查xml格式:
xmllint --noout file.xml
将tar.gz提取到新目录里:
tar zxvf package.tar.gz -C new_dir
使用curl获取HTTP头信息:
curl -I http://www.example.com
修改文件或目录的时间戳(YYMMDDhhmm):
touch -t 0712250000 file
用wget命令执行ftp下载:
wget -m ftp://username:password@hostname
生成随机密码(例子里是16个字符长):
LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
快速备份一个文件:
cp some_file_name{,.bkp}
访问Windows共享目录:
smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir
执行历史记录里的命令(这里是第100行):
!100
解压:
unzip package_name.zip -d dir_name
输入多行文字(CTRL + d 退出):
cat > test.txt
创建空文件或清空一个现有文件:
> test.txt
与Ubuntu NTP server同步时间:
ntpdate ntp.ubuntu.com
用netstat显示所有tcp4监听端口:
netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*'
qcow2镜像文件转换:
qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \
precise-server-cloudimg-amd64-disk1.raw
重复运行文件,显示其输出(缺省是2秒一次):
watch ps -ef
所有用户列表:
getent passwd
Mount root in read/write mode:
mount -o remount,rw /
挂载一个目录(这是不能使用链接的情况):
mount --bind /source /destination
动态更新DNS server:
nsupdate < <EOF
update add $HOST 86400 A $IP
send
EOF
递归grep所有目录:
grep -r "some_text" /path/to/dir
列出前10个最大的文件:
lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
显示剩余内存(MB):
free -m | grep cache | awk '/[0-9]/{ print $4" MB" }'
打开Vim并跳到文件末:
vim + some_file_name
Git 克隆指定分支(master):
git clone git@github.com:name/app.git -b master
Git 切换到其它分支(develop):
git checkout develop
Git 删除分支(myfeature):
git branch -d myfeature
Git 删除远程分支
git push origin :branchName
Git 将新分支推送到远程服务器:
git push -u origin mynewfeature
打印历史记录中最后一次cat命令:
!cat:p
运行历史记录里最后一次cat命令:
!cat
找出/home/user下所有空子目录:
find /home/user -maxdepth 1 -type d -empty
获取test.txt文件中第50-60行内容:
< test.txt sed -n '50,60p'
创建临时RAM文件系统 – ramdisk (先创建/tmpram目录):
mount -t tmpfs tmpfs /tmpram -o size=512m
Grep whole words:
grep -w "name" test.txt
在需要提升权限的情况下往一个文件里追加文本:
echo "some text" | sudo tee -a /path/file
列出所有kill signal参数:
kill -l
在bash历史记录里禁止记录最后一次会话:
kill -9 $$
扫描网络寻找开放的端口:
nmap -p 8081 172.20.0.0/16
设置git email:
git config --global user.email "me@example.com"
To sync with master if you have unpublished commits:
git pull --rebase origin master
将所有文件名中含有”txt”的文件移入/home/user目录:
find -iname "*txt*" -exec mv -v {} /home/user \;
将文件按行并列显示:
paste test.txt test1.txt
shell里的进度条:
pv data.log
使用netcat将数据发送到Graphite server:
echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000
将tabs转换成空格:
expand test.txt > test1.txt
Skip bash history:
< space >cmd
去之前的工作目录:
cd -
拆分大体积的tar.gz文件(每个100MB),然后合并回去:
split –b 100m /path/to/large/archive /path/to/output/files
cat files* > archive
使用curl获取HTTP status code:
curl -sL -w "%{http_code}\\n" www.example.com -o /dev/null
设置root密码,强化MySQL安全安装:
/usr/bin/mysql_secure_installation
当Ctrl + c不好使时:
Ctrl + \
获取文件owner:
stat -c %U file.txt
block设备列表:
lsblk -f
找出文件名结尾有空格的文件:
find . -type f -exec egrep -l " +$" {} \;
找出文件名有tab缩进符的文件
find . -type f -exec egrep -l $'\t' {} \;
用”=”打印出横线:
printf '%100s\n' | tr ' ' =