Merge branch 'master' of https://github.com/LCTT/TranslateProject into translate-MjAxOTAxMDMgSG93IHRvIHVzZSBNYWdpdCB0byBtYW5hZ2UgR2l0IHByb2plY3RzLm1kCg==

This commit is contained in:
darksun 2019-02-18 18:57:35 +08:00
commit c06ea64ce0
13 changed files with 1740 additions and 274 deletions

View File

@ -0,0 +1,80 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Top 5 podcasts for Linux news and tips)
[#]: via: (https://opensource.com/article/19/2/top-linux-podcasts)
[#]: author: (Stephen Bancroft https://opensource.com/users/stevereaver)
Top 5 podcasts for Linux news and tips
======
A tried and tested podcast listener, shares his favorite Linux podcasts over the years, plus a couple of bonus picks.
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux-penguin-penguins.png?itok=5hlVDue7)
Like many Linux enthusiasts, I listen to a lot of podcasts. I find my daily commute is the best time to get some time to myself and catch up on the latest tech news. Over the years, I have subscribed and unsubscribed to more show feeds than I care to think about and have distilled them down to the best of the best.
Here are my top five Linux podcasts I think you should be listening to in 2019, plus a couple of bonus picks.
5. [**Late Night Linux**][1]—This podcast, hosted by Joe, [Félim][2], [Graham][3], and [Will][4] from the UK, is rough, ready, and pulls no punches. [Joe Ressington][5] is always ready to tell it how it is, and Félim is always quick with his opinions. It's presented in a casual conversation format—but not one to have one with the kids around, especially with subjects they are all passionate about!
4. [**Ask Noah Show**][6]—This show was forked from the Linux Action Show after it ended. Hosted by [Noah Chelliah][7], it's presented in a radio talkback style and takes live calls from listeners—it's syndicated from a local radio station in Grand Forks, North Dakota. The podcast isn't purely about Linux, but Noah takes on technical challenges and solves them with Linux and answers listeners' questions about how to achieve good technical solutions using Linux.
3. [**The Ubuntu Podcast**][8]—If you want the latest about Ubuntu, you can't go past this show. In another podcast with a UK twist, hosts [Alan Pope][9] (Popey), [Mark Johnson][10], and [Martin Wimpress][11] (Wimpy) present a funny and insightful view of the open source community with news directly from Ubuntu.
2. [**Linux Action News**][12]—The title says it all: it's a news show for Linux. This show was spawned from the popular Linux Action Show and is broadcast by the [Jupiter Broadcasting Network][13], which has many other tech-related podcasts. Hosts Chris Fisher and [Joe Ressington][5] present the show in a more formal "evening news" style, which runs around 30 minutes long. If you want to get a quick weekly update on Linux and Linux-related news, this is the show for you.
1. [**Linux Unplugged**][14]—Finally, coming in at the number one spot is the granddaddy of them all, Linux Unplugged. This show gets to the core of what being in the Linux community is all about. Presented as a casual panel-style discussion by [Chris Fisher][15] and [Wes Payne][16], the podcast includes an interactive voice chatroom where listeners can connect and be heard live on the show as it broadcasts.
Well, there you have it, my current shortlist of Linux podcasts. It's likely to change in the near future, but for now, I am enjoying every minute these guys put together.
### Bonus podcasts
Here are two bonus podcasts you might want to check out.
**[Choose Linux][17]** is a brand-new podcast that is tantalizing because of its hosts: Joe Ressington of Linux Action News, who is a long-time Linux veteran, and [Jason Evangelho][18], a Forbes writer who recently shot to fame in the open source community with his articles showcasing his introduction to Linux and open source. Living vicariously through Jason's introduction to Linux has been and will continue to be fun.
[**Command Line Heroes**][19] is a podcast produced by Red Hat. It has a very high production standard and has a slightly different format to the shows I have previously mentioned, anchored by a single presenter, developer, and [CodeNewbie][20] founder [Saron Yitbarek][21], who presents the latest innovations in open source. Now in its second season and released fortnightly, I highly recommend that you start from the first episode of this podcast. It starts with a great intro to the O/S wars of the '90s and sets the foundations for the start of Linux.
Do you have a favorite Linux podcast that isn't on this list? Please share it in the comments.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/2/top-linux-podcasts
作者:[Stephen Bancroft][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/stevereaver
[b]: https://github.com/lujun9972
[1]: https://latenightlinux.com/
[2]: https://twitter.com/felimwhiteley
[3]: https://twitter.com/degville
[4]: https://twitter.com/8none1
[5]: https://twitter.com/JoeRessington
[6]: http://www.asknoahshow.com/
[7]: https://twitter.com/kernellinux?lang=en
[8]: http://ubuntupodcast.org/
[9]: https://twitter.com/popey
[10]: https://twitter.com/marxjohnson
[11]: https://twitter.com/m_wimpress
[12]: https://linuxactionnews.com/
[13]: https://www.jupiterbroadcasting.com/
[14]: https://linuxunplugged.com/
[15]: https://twitter.com/ChrisLAS
[16]: https://twitter.com/wespayne
[17]: https://chooselinux.show
[18]: https://twitter.com/killyourfm
[19]: https://www.redhat.com/en/command-line-heroes
[20]: https://www.codenewbie.org/
[21]: https://twitter.com/saronyitbarek

View File

@ -1,121 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Top 5 Linux Distributions for New Users)
[#]: via: (https://www.linux.com/blog/learn/2019/2/top-5-linux-distributions-new-users)
[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen)
Top 5 Linux Distributions for New Users
======
![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/deepin-main.jpg?itok=ASgr0mOP)
Linux has come a long way from its original offering. But, no matter how often you hear how easy Linux is now, there are still skeptics. To back up this claim, the desktop must be simple enough for those unfamiliar with Linux to be able to make use of it. And, the truth is that plenty of desktop distributions make this a reality.
### No Linux knowledge required
It might be simple to misconstrue this as yet another “best user-friendly Linux distributions” list. That is not what were looking at here. Whats the difference? For my purposes, the defining line is whether or not Linux actually plays into the usage. In other words, could you set a user in front of a desktop operating system and have them be instantly at home with its usage? No Linux knowledge required.
Believe it or not, some distributions do just that. I have five Id like to present to you here. Youve probably heard of all of them. They might not be your distribution of choice, but you can guarantee that they slide Linux out of the spotlight and place the user front and center.
Lets take a look at the chosen few.
### Elementary OS
The very philosophy of Elementary OS is centered around how people actually use their desktops. The developers and designers have gone out of their way to create a desktop that is as simple as possible. In the process, theyve de-Linuxd Linux. That is not to say theyve removed Linux from the equation. No. Instead, what theyve done is create an operating system that is about as neutral as youll find. Elementary OS is streamlined in such a way as to make sure everything is perfectly logical. From the single Dock to the clear-to-anyone Applications menu, this is a desktop that doesnt say to the user, “Youre using Linux!” In fact, the layout itself is reminiscent of Mac, but with the addition of a simple app menu (Figure 1).
![Elementary OS Juno][2]
Figure 1: The Elementary OS Juno Application menu in action.
[Used with permission][3]
Another important aspect of Elementary OS that places it on this list is that its not nearly as flexible as some other desktop distributions. Sure, some users would balk at that, but having a desktop that doesnt throw every bell and whistle at the user makes for a very familiar environment -- one that neither requires or allows a lot of tinkering. That aspect of the OS goes a long way to make the platform familiar to new users.
And like any modern Linux desktop distribution, Elementary OS includes and App Store, called AppCenter, where users can install all the applications they need, without ever having to touch the command line.
### Deepin
Deepin not only gets my nod for one of the most beautiful desktops on the market, its also just as easy to adopt as any desktop operating system available. With a very simplistic take on the desktop interface, theres very little in the way of users with zero Linux experience getting up to speed on its usage. In fact, youd be hard-pressed to find a user who couldnt instantly start using the Deepin desktop. The only possible hitch in that works might be the sidebar control center (Figure 2).
![][5]
Figure 2: The Deepin sidebar control panel.
[Used with permission][3]
But even that sidebar control panel is as intuitive as any other configuration tool on the market. And anyone that has used a mobile device will be instantly at home with the layout. As for opening applications, Deepin takes a macOS Launchpad approach with the Launcher. This button is in the usual far right position on the desktop dock, so users will immediately gravitate to that, understanding that it is probably akin to the standard “Start” menu.
In similar fashion as Elementary OS (and most every Linux distribution on the market), Deepin includes an app store (simply called “Store”), where plenty of apps can be installed with ease.
### Ubuntu
You knew it was coming. Ubuntu is most often ranked at the top of most user-friendly Linux lists. Why? Because its one of the chosen few where a knowledge of Linux simply isnt necessary to get by on the desktop. Prior to the adoption of GNOME (and the ousting of Unity), that wouldnt have been the case. Why? Because Unity often needed a bit of tweaking to get it to the point where a tiny bit of Linux knowledge wasnt necessary (Figure 3). Now that Ubuntu has adopted GNOME, and tweaked it to the point where an understanding of GNOME isnt even necessary, this desktop makes Linux take a back seat to simplicity and usability.
![Ubuntu 18.04][7]
Figure 3: The Ubuntu 18.04 desktop is instantly familiar.
[Used with permission][3]
Unlike Elementary OS, Ubuntu doesnt hold the user back. So anyone who wants more from their desktop, can have it. However, the out of the box experience is enough for just about any user type. Anyone looking for a desktop that makes the user unaware as to just how much power they have at their fingertips, could certainly do worse than Ubuntu.
### Linux Mint
I will preface this by saying Ive never been the biggest fan of Linux Mint. Its not that I dont respect what the developers are doing, its more an aesthetic. I prefer modern-looking desktop environments. But that old school desktop metaphor (found in the default Cinnamon desktop) is perfectly familiar to nearly anyone who uses it. With a taskbar, start button, system tray, and desktop icons (Figure 4), Linux Mint offers an interface that requires zero learning curve. In fact, some users might be initially fooled into thinking they are working with a Windows 7 clone. Even the updates warning icon will look instantly familiar to users.
![Linux Mint ][9]
Figure 4: The Linux Mint Cinnamon desktop is very Windows 7-ish.
[Used with permission][3]
Because Linux Mint benefits from being based on Ubuntu, itll not only enjoy an immediate familiarity, but a high usability. No matter if you have even the slightest understanding of the underlying platform, users will feel instantly at home on Linux Mint.
### Ubuntu Budgie
Our list concludes with a distribution that also does a fantastic job of making the user forget they are using Linux, and makes working with the usual tools a simple, beautiful thing. Melding the Budgie Desktop with Ubuntu makes for an impressively easy to use distribution. And although the layout of the desktop (Figure 5) might not be the standard fare, there is no doubt the acclimation takes no time. In fact, outside of the Dock defaulting to the left side of the desktop, Ubuntu Budgie has a decidedly Elementary OS look to it.
![Budgie][11]
Figure 5: The Budgie desktop is as beautiful as it is simple.
[Used with permission][3]
The System Tray/Notification area in Ubuntu Budgie offers a few more features than the usual fare: Features such as quick access to Caffeine (a tool to keep your desktop awake), a Quick Notes tool (for taking simple notes), Night Lite switch, a Places drop-down menu (for quick access to folders), and of course the Raven applet/notification sidebar (which is similar to, but not quite as elegant as, the Control Center sidebar in Deepin). Budgie also includes an application menu (top left corner), which gives users access to all of their installed applications. Open an app and the icon will appear in the Dock. Right-click that app icon and select Keep in Dock for even quicker access.
Everything about Ubuntu Budgie is intuitive, so theres practically zero learning curve involved. It doesnt hurt that this distribution is as elegant as it is easy to use.
### Give One A Chance
And there you have it, five Linux distributions that, each in their own way, offer a desktop experience that any user would be instantly familiar with. Although none of these might be your choice for top distribution, its hard to argue their value when it comes to users who have no familiarity with Linux.
Learn more about Linux through the free ["Introduction to Linux" ][12]course from The Linux Foundation and edX.
--------------------------------------------------------------------------------
via: https://www.linux.com/blog/learn/2019/2/top-5-linux-distributions-new-users
作者:[Jack Wallen][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linux.com/users/jlwallen
[b]: https://github.com/lujun9972
[1]: https://www.linux.com/files/images/elementaryosjpg-2
[2]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/elementaryos_0.jpg?itok=KxgNUvMW (Elementary OS Juno)
[3]: https://www.linux.com/licenses/category/used-permission
[4]: https://www.linux.com/files/images/deepinjpg
[5]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/deepin.jpg?itok=VV381a9f
[6]: https://www.linux.com/files/images/ubuntujpg-1
[7]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntu_1.jpg?itok=bax-_Tsg (Ubuntu 18.04)
[8]: https://www.linux.com/files/images/linuxmintjpg
[9]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/linuxmint.jpg?itok=8sPon0Cq (Linux Mint )
[10]: https://www.linux.com/files/images/budgiejpg-0
[11]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/budgie_0.jpg?itok=zcf-AHmj (Budgie)
[12]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux

View File

@ -1,153 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (zhs852)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Install And Use PuTTY On Linux)
[#]: via: (https://www.ostechnix.com/how-to-install-and-use-putty-on-linux/)
[#]: author: (SK https://www.ostechnix.com/author/sk/)
How To Install And Use PuTTY On Linux
======
![](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-720x340.png)
**PuTTY** is a free and open source GUI client that supports wide range of protocols including SSH, Telnet, Rlogin and serial for Windows and Unix-like operating systems. Generally, Windows admins use PuTTY as a SSH and telnet client to access the remote Linux servers from their local Windows systems. However, PuTTY is not limited to Windows. It is also popular among Linux users as well. This guide explains how to install PuTTY on Linux and how to access and manage the remote Linux servers using PuTTY.
### Install PuTTY on Linux
PuTTY is available in the official repositories of most Linux distributions. For instance, you can install PuTTY on Arch Linux and its variants using the following command:
```
$ sudo pacman -S putty
```
On Debian, Ubuntu, Linux Mint:
```
$ sudo apt install putty
```
### How to use PuTTY to access remote Linux systems
Once PuTTY is installed, launch it from the menu or from your application launcher. Alternatively, you can launch it from the Terminal by running the following command:
```
$ putty
```
This is how PuTTY default interface looks like.
![](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-default-interface.png)
As you can see, most of the options are self-explanatory. On the left pane of the PuTTY interface, you can do/edit/modify various configurations such as,
1. PuTTY session logging,
2. Options for controlling the terminal emulation, control and change effects of keys,
3. Control terminal bell sounds,
4. Enable/disable Terminal advanced features,
5. Set the size of PuTTY window,
6. Control the scrollback in PuTTY window (Default is 2000 lines),
7. Change appearance of PuTTY window and cursor,
8. Adjust windows border,
9. Change fonts for texts in PuTTY window,
10. Save login details,
11. Set proxy details,
12. Options to control various protocols such as SSH, Telnet, Rlogin, Serial etc.
13. And more.
All options are categorized under a distinct name for ease of understanding.
### Access a remote Linux server using PuTTY
Click on the **Session** tab on the left pane. Enter the hostname (or IP address) of your remote system you want to connect to. Next choose the connection type, for example Telnet, Rlogin, SSH etc. The default port number will be automatically selected depending upon the connection type you choose. For example if you choose SSH, port number 22 will be selected. For Telnet, port number 23 will be selected and so on. If you have changed the default port number, dont forget to mention it in the **Port** section. I am going to access my remote via SSH, hence I choose SSH connection type. After entering the Hostname or IP address of the system, click **Open**.
![](http://www.ostechnix.com/wp-content/uploads/2019/02/putty-1.png)
If this is the first time you have connected to this remote system, PuTTY will display a security alert dialog box that asks whether you trust the host you are connecting to. Click **Accept** to add the remote systems host key to the PuTTYs cache:
![][2]
Next enter your remote systems user name and password. Congratulations! Youve successfully connected to your remote system via SSH using PuTTY.
![](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-3.png)
**Access remote systems configured with key-based authentication**
Some Linux administrators might have configured their remote servers with key-based authentication. For example, when accessing AMS instances from PuTTY, you need to specify the key files location. PuTTY supports public key authentication and uses its own key format ( **.ppk** files).
Enter the hostname or IP address in the Session section. Next, In the **Category** pane, expand **Connection** , expand **SSH** , and then choose **Auth**. Browse the location of the **.ppk** key file and click **Open**.
![][3]
Click Accept to add the host key if it is the first time you are connecting to the remote system. Finally, enter the remote systems passphrase (if the key is protected with a passphrase while generating it) to connect.
**Save PuTTY sessions**
Sometimes, you want to connect to the remote system multiple times. If so, you can save the session and load it whenever you want without having to type the hostname or ip address, port number every time.
Enter the hostname (or IP address) and provide a session name and click **Save**. If you have key file, make sure you have already given the location before hitting the Save button.
![][4]
Now, choose session name under the **Saved sessions** tab and click **Load** and click **Open** to launch it.
**Transferring files to remote systems using the PuTTY Secure Copy Client (pscp)
**
Usually, the Linux users and admins use **scp** command line tool to transfer files from local Linux system to the remote Linux servers. PuTTY does have a dedicated client named **PuTTY Secure Copy Clinet** ( **PSCP** in short) to do this job. If youre using windows os in your local system, you may need this tool to transfer files from local system to remote systems. PSCP can be used in both Linux and Windows systems.
The following command will copy **file.txt** to my remote Ubuntu system from Arch Linux.
```
pscp -i test.ppk file.txt sk@192.168.225.22:/home/sk/
```
Here,
* **-i test.ppk** : Key file to access remote system,
* **file.txt** : file to be copied to remote system,
* **sk@192.168.225.22** : username and ip address of remote system,
* **/home/sk/** : Destination path.
To copy a directory. use **-r** (recursive) option like below:
```
pscp -i test.ppk -r dir/ sk@192.168.225.22:/home/sk/
```
To transfer files from Windows to remote Linux server using pscp, run the following command from command prompt:
```
pscp -i test.ppk c:\documents\file.txt.txt sk@192.168.225.22:/home/sk/
```
You know now what is PuTTY, how to install and use it to access remote systems. Also, you have learned how to transfer files to the remote systems from the local system using pscp program.
And, thats all for now. Hope this was useful. More good stuffs to come. Stay tuned!
Cheers!
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/how-to-install-and-use-putty-on-linux/
作者:[SK][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.ostechnix.com/author/sk/
[b]: https://github.com/lujun9972
[1]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
[2]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-2.png
[3]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-4.png
[4]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-5.png

View File

@ -0,0 +1,162 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Ampersands and File Descriptors in Bash)
[#]: via: (https://www.linux.com/blog/learn/2019/2/ampersands-and-file-descriptors-bash)
[#]: author: (Paul Brown https://www.linux.com/users/bro66)
Ampersands and File Descriptors in Bash
======
![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ampersand-coffee.png?itok=yChaT-47)
In our quest to examine all the clutter (`&`, `|`, `;`, `>`, `<`, `{`, `[`, `(`, ), `]`, `}`, etc.) that is peppered throughout most chained Bash commands, [we have been taking a closer look at the ampersand symbol (`&`)][1].
[Last time, we saw how you can use `&` to push processes that may take a long time to complete into the background][1]. But, the &, in combination with angle brackets, can also be used to pipe output and input elsewhere.
In the [previous tutorials on][2] [angle brackets][3], you saw how to use `>` like this:
```
ls > list.txt
```
to pipe the output from `ls` to the _list.txt_ file.
Now we see that this is really shorthand for
```
ls 1> list.txt
```
And that `1`, in this context, is a file descriptor that points to the standard output (`stdout`).
In a similar fashion `2` points to standard error (`stderr`), and in the following command:
```
ls 2> error.log
```
all error messages are piped to the _error.log_ file.
To recap: `1>` is the standard output (`stdout`) and `2>` the standard error output (`stderr`).
There is a third standard file descriptor, `0<`, the standard input (`stdin`). You can see it is an input because the arrow (`<`) is pointing into the `0`, while for `1` and `2`, the arrows (`>`) are pointing outwards.
### What are the standard file descriptors good for?
If you are following this series in order, you have already used the standard output (`1>`) several times in its shorthand form: `>`.
Things like `stderr` (`2`) are also handy when, for example, you know that your command is going to throw an error, but what Bash informs you of is not useful and you don't need to see it. If you want to make a directory in your _home/_ directory, for example:
```
mkdir newdir
```
and if _newdir/_ already exists, `mkdir` will show an error. But why would you care? (Ok, there some circumstances in which you may care, but not always.) At the end of the day, _newdir_ will be there one way or another for you to fill up with stuff. You can supress the error message by pushing it into the void, which is _/dev/null_ :
```
mkdir newdir 2> /dev/null
```
This is not just a matter of " _let's not show ugly and irrelevant error messages because they are annoying,_ " as there may be circumstances in which an error message may cause a cascade of errors elsewhere. Say, for example, you want to find all the _.service_ files under _/etc_. You could do this:
```
find /etc -iname "*.service"
```
But it turns out that on most systems, many of the lines spat out by `find` show errors because a regular user does not have read access rights to some of the folders under _/etc_. It makes reading the correct output cumbersome and, if `find` is part of a larger script, it could cause the next command in line to bork.
Instead, you can do this:
```
find /etc -iname "*.service" 2> /dev/null
```
And you get only the results you are looking for.
### A Primer on File Descriptors
There are some caveats to having separate file descriptors for `stdout` and `stderr`, though. If you want to store the output in a file, doing this:
```
find /etc -iname "*.service" 1> services.txt
```
would work fine because `1>` means " _send standard output, and only standard output (NOT standard error) somewhere_ ".
But herein lies a problem: what if you *do* want to keep a record within the file of the errors along with the non-erroneous results? The instruction above won't do that because it ONLY writes the correct results from `find`, and
```
find /etc -iname "*.service" 2> services.txt
```
will ONLY write the errors.
How do we get both? Try the following command:
```
find /etc -iname "*.service" &> services.txt
```
... and say hello to `&` again!
We have been saying all along that `stdin` (`0`), `stdout` (`1`), and `stderr` (`2`) are _file descriptors_. A file descriptor is a special construct that points to a channel to a file, either for reading, or writing, or both. This comes from the old UNIX philosophy of treating everything as a file. Want to write to a device? Treat it as a file. Want to write to a socket and send data over a network? Treat it as a file. Want to read from and write to a file? Well, obviously, treat it as a file.
So, when managing where the output and errors from a command goes, treat the destination as a file. Hence, when you open them to read and write to them, they all get file descriptors.
This has interesting effects. You can, for example, pipe contents from one file descriptor to another:
```
find /etc -iname "*.service" 1> services.txt 2>&1
```
This pipes `stderr` to `stdout` and `stdout` is piped to a file, _services.txt_.
And there it is again: the `&`, signaling to Bash that `1` is the destination file descriptor.
Another thing with the standard file descriptors is that, when you pipe from one to another, the order in which you do this is a bit counterintuitive. Take the command above, for example. It looks like it has been written the wrong way around. You may be reading it like this: " _pipe the output to a file and then pipe errors to the standard output._ " It would seem the error output comes to late and is sent when `1` is already done.
But that is not how file descriptors work. A file descriptor is not a placeholder for the file, but for the _input and/or output channel_ to the file. In this case, when you do `1> services.txt`, you are saying " _open a write channel to services.txt and leave it open_ ". `1` is the name of the channel you are going to use, and it remains open until the end of the line.
If you still think it is the wrong way around, try this:
```
find /etc -iname "*.service" 2>&1 1>services.txt
```
And notice how it doesn't work; notice how errors get piped to the terminal and only the non-erroneous output (that is `stdout`) gets pushed to `services.txt`.
That is because Bash processes every result from `find` from left to right. Think about it like this: when Bash gets to `2>&1`, `stdout` (`1`) is still a channel that points to the terminal. If the result that `find` feeds Bash contains an error, it is popped into `2`, transferred to `1`, and, away it goes, off to the terminal!
Then at the end of the command, Bash sees you want to open `stdout` as a channel to the _services.txt_ file. If no error has occurred, the result goes through `1` into the file.
By contrast, in
```
find /etc -iname "*.service" 1>services.txt 2>&1
```
`1` is pointing at `services.txt` right from the beginning, so anything that pops into `2` gets piped through `1`, which is already pointing to the final resting place in `services.txt`, and that is why it works.
In any case, as mentioned above `&>` is shorthand for " _both standard output and standard error_ ", that is, `2>&1`.
This is probably all a bit much, but don't worry about it. Re-routing file descriptors here and there is commonplace in Bash command lines and scripts. And, you'll be learning more about file descriptors as we progress through this series. See you next week!
--------------------------------------------------------------------------------
via: https://www.linux.com/blog/learn/2019/2/ampersands-and-file-descriptors-bash
作者:[Paul Brown][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linux.com/users/bro66
[b]: https://github.com/lujun9972
[1]: https://www.linux.com/blog/learn/2019/2/and-ampersand-and-linux
[2]: https://www.linux.com/blog/learn/2019/1/understanding-angle-brackets-bash
[3]: https://www.linux.com/blog/learn/2019/1/more-about-angle-brackets-bash

View File

@ -0,0 +1,226 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Check CPU, Memory And Swap Utilization Percentage In Linux?)
[#]: via: (https://www.2daygeek.com/linux-check-cpu-memory-swap-utilization-percentage/)
[#]: author: (Vinoth Kumar https://www.2daygeek.com/author/vinoth/)
How To Check CPU, Memory And Swap Utilization Percentage In Linux?
======
There is a lot of commands and options are available in Linux to check memory utilization but i dont see much information to check about memory utilization percentage.
Most of the times we are checking memory utilization alone and we wont think about how much percentage is used.
If you want to know those information then you are in the right page.
We are here to help you out on this in details.
This tutorial will help you to identify the memory utilization when you are facing high memory utilization frequently in Linux server.
But the same time, you wont be getting the clear utilization if you are using `free -m` or `free -g`.
These format commands fall under Linux advanced commands. It will be very useful for Linux Experts and Middle Level Linux Users.
### Method-1: How To Check Memory Utilization Percentage In Linux?
We can use the following combination of commands to get this done. In this method, we are using combination of free and awk command to get the memory utilization percentage.
If you are looking for other articles which is related to memory then navigate to the following link. Those are **[free Command][1]** , **[smem Command][2]** , **[ps_mem Command][3]** , **[vmstat Command][4]** and **[Multiple ways to check size of physical memory][5]**.
For `Memory` Utilization Percentage without Percent Symbol:
```
$ free -t | awk 'NR == 2 {print "Current Memory Utilization is : " $3/$2*100}'
or
$ free -t | awk 'FNR == 2 {print "Current Memory Utilization is : " $3/$2*100}'
Current Memory Utilization is : 20.4194
```
For `Swap` Utilization Percentage without Percent Symbol:
```
$ free -t | awk 'NR == 3 {print "Current Swap Utilization is : " $3/$2*100}'
or
$ free -t | awk 'FNR == 3 {print "Current Swap Utilization is : " $3/$2*100}'
Current Swap Utilization is : 0
```
For `Memory` Utilization Percentage with Percent Symbol and two decimal places:
```
$ free -t | awk 'NR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'
or
$ free -t | awk 'FNR == 2 {printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'
Current Memory Utilization is : 20.42%
```
For `Swap` Utilization Percentage with Percent Symbol and two decimal places:
```
$ free -t | awk 'NR == 3 {printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'
or
$ free -t | awk 'FNR == 3 {printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'
Current Swap Utilization is : 0.00%
```
If you are looking for other articles which is related to memory then navigate to the following link. Those are **[Create/Extend Swap Partition using LVM][6]** , **[Multiple Ways To Create Or Extend Swap Space][7]** and **[Shell Script to automatically Create/Remove and Mount Swap File][8]**.
free command output for better clarification:
```
$ free
total used free shared buff/cache available
Mem: 15867 3730 9868 1189 2269 10640
Swap: 17454 0 17454
Total: 33322 3730 27322
```
Details are follow:
* **`free:`** free is a standard command to check memory utilization in Linux.
* **`awk:`** awk is a powerful command which is specialized for textual data manipulation.
* **`FNR == 2:`** It gives the total number of records for each input file. Basically its used to select the given line (Here, it chooses the line number 2).
* **`NR == 2:`** It gives the total number of records processed. Basically its used to filter the given line (Here, it chooses the line number 2)..
* **`$3/$2*100:`** It divides column 2 with column 3 and its multiply the results with 100.
* **`printf:`** It used to format and print data.
* **`%.2f%:`** By default it prints floating point numbers with 6 decimal places. Use the following format to limit a decimal places.
### Method-2: How To Check Memory Utilization Percentage In Linux?
We can use the following combination of commands to get this done. In this method, we are using combination of free, grep and awk command to get the memory utilization percentage.
For `Memory` Utilization Percentage without Percent Symbol:
```
$ free -t | grep Mem | awk '{print "Current Memory Utilization is : " $3/$2*100}'
Current Memory Utilization is : 20.4228
```
For `Swap` Utilization Percentage without Percent Symbol:
```
$ free -t | grep Swap | awk '{print "Current Swap Utilization is : " $3/$2*100}'
Current Swap Utilization is : 0
```
For `Memory` Utilization Percentage with Percent Symbol and two decimal places:
```
$ free -t | grep Mem | awk '{printf("Current Memory Utilization is : %.2f%"), $3/$2*100}'
Current Memory Utilization is : 20.43%
```
For `Swap` Utilization Percentage with Percent Symbol and two decimal places:
```
$ free -t | grep Swap | awk '{printf("Current Swap Utilization is : %.2f%"), $3/$2*100}'
Current Swap Utilization is : 0.00%
```
### Method-1: How To Check CPU Utilization Percentage In Linux?
We can use the following combination of commands to get this done. In this method, we are using combination of top, print and awk command to get the CPU utilization percentage.
If you are looking for other articles which is related to memory then navigate to the following link. Those are **[top Command][9]** , **[htop Command][10]** , **[atop Command][11]** and **[Glances Command][12]**.
If it shows multiple CPU in the output then you need to use the following method.
```
$ top -b -n1 | grep ^%Cpu
%Cpu0 : 5.3 us, 0.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 5.3 si, 0.0 st
%Cpu3 : 5.3 us, 0.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 10.5 us, 15.8 sy, 0.0 ni, 73.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 5.0 sy, 0.0 ni, 95.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 5.3 us, 0.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 5.3 us, 0.0 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
```
For `CPU` Utilization Percentage without Percent Symbol:
```
$ top -b -n1 | grep ^%Cpu | awk '{cpu+=$9}END{print "Current CPU Utilization is : " 100-cpu/NR}'
Current CPU Utilization is : 21.05
```
For `CPU` Utilization Percentage with Percent Symbol and two decimal places:
```
$ top -b -n1 | grep ^%Cpu | awk '{cpu+=$9}END{printf("Current CPU Utilization is : %.2f%"), 100-cpu/NR}'
Current CPU Utilization is : 14.81%
```
### Method-2: How To Check CPU Utilization Percentage In Linux?
We can use the following combination of commands to get this done. In this method, we are using combination of top, print/printf and awk command to get the CPU utilization percentage.
If it shows all together CPU(s) in the single output then you need to use the following method.
```
$ top -b -n1 | grep ^%Cpu
%Cpu(s): 15.3 us, 7.2 sy, 0.8 ni, 69.0 id, 6.7 wa, 0.0 hi, 1.0 si, 0.0 st
```
For `CPU` Utilization Percentage without Percent Symbol:
```
$ top -b -n1 | grep ^%Cpu | awk '{print "Current CPU Utilization is : " 100-$8}'
Current CPU Utilization is : 5.6
```
For `CPU` Utilization Percentage with Percent Symbol and two decimal places:
```
$ top -b -n1 | grep ^%Cpu | awk '{printf("Current CPU Utilization is : %.2f%"), 100-$8}'
Current CPU Utilization is : 5.40%
```
Details are follow:
* **`top:`** top is one of the best command to check currently running process on Linux system.
* **`-b:`** -b option, allow the top command to switch in batch mode. It is useful when you run the top command from local system to remote system.
* **`-n1:`** Number-of-iterations
* **`^%Cpu:`** Filter the lines which starts with %Cpu
* **`awk:`** awk is a powerful command which is specialized for textual data manipulation.
* **`cpu+=$9:`** For each line, add column 9 to a variable cpu.
* **`printf:`** It used to format and print data.
* **`%.2f%:`** By default it prints floating point numbers with 6 decimal places. Use the following format to limit a decimal places.
* **`100-cpu/NR:`** Finally print the CPU Average by subtracting 100, divided by the number of records.
--------------------------------------------------------------------------------
via: https://www.2daygeek.com/linux-check-cpu-memory-swap-utilization-percentage/
作者:[Vinoth Kumar][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.2daygeek.com/author/vinoth/
[b]: https://github.com/lujun9972
[1]: https://www.2daygeek.com/free-command-to-check-memory-usage-statistics-in-linux/
[2]: https://www.2daygeek.com/smem-linux-memory-usage-statistics-reporting-tool/
[3]: https://www.2daygeek.com/ps_mem-report-core-memory-usage-accurately-in-linux/
[4]: https://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/
[5]: https://www.2daygeek.com/easy-ways-to-check-size-of-physical-memory-ram-in-linux/
[6]: https://www.2daygeek.com/how-to-create-extend-swap-partition-in-linux-using-lvm/
[7]: https://www.2daygeek.com/add-extend-increase-swap-space-memory-file-partition-linux/
[8]: https://www.2daygeek.com/shell-script-create-add-extend-swap-space-linux/
[9]: https://www.2daygeek.com/linux-top-command-linux-system-performance-monitoring-tool/
[10]: https://www.2daygeek.com/linux-htop-command-linux-system-performance-resource-monitoring-tool/
[11]: https://www.2daygeek.com/atop-system-process-performance-monitoring-tool/
[12]: https://www.2daygeek.com/install-glances-advanced-real-time-linux-system-performance-monitoring-tool-on-centos-fedora-ubuntu-debian-opensuse-arch-linux/

View File

@ -0,0 +1,99 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Two graphical tools for manipulating PDFs on the Linux desktop)
[#]: via: (https://opensource.com/article/19/2/manipulating-pdfs-linux)
[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt)
Two graphical tools for manipulating PDFs on the Linux desktop
======
PDF-Shuffler and PDF Chain are great tools for modifying PDFs in Linux.
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/tools_osyearbook2016_sysadmin_cc.png?itok=Y1AHCKI4)
With the way I talk and write about PDFs and tools for working with them, some people think I'm in love with the format. I'm not, for a variety of reasons I won't go into here.
I won't go so far as saying PDFs are a necessary evil in my personal and professional life—rather they're a necessary not-so-good. Often I have to use PDFs, even though there are better alternatives for delivering documents.
When I work with PDFs, usually at the day job and with one of those other operating systems, I fiddle with them using Adobe Acrobat. But what about when I have to work with PDFs on the Linux desktop? Let's take a look at two of the graphical tools I use to manipulate PDFs.
### PDF-Shuffler
As its name suggests, you can use [PDF-Shuffler][1] to move pages around in a PDF file. It can do a little more, but the software's capabilities are limited. That doesn't mean PDF-Shuffler isn't useful. It is. Very useful.
You can use PDF-Shuffler to:
* Extract pages from PDF files
* Add pages to a file
* Rearrange the pages in a file
Be aware that PDF-Shuffler has a few dependencies, like pyPDF and python-gtk. Usually, installing it via a package manager is the fastest and least frustrating route.
Let's say you want to extract pages from a PDF, maybe to act as a sample chapter from your book. Open the PDF file by selecting **File > Add**.
![](https://opensource.com/sites/default/files/uploads/pdfshuffler-book.png)
To extract pages 7 to 9, press Ctrl and click-select the pages. Then, right-click and select **Export selection**.
![](https://opensource.com/sites/default/files/uploads/pdfshuffler-export.png)
Choose the directory where you want to save the file, give it a name, and click **Save**.
To add a file—for example, to add a cover or re-insert scanned, signed pages of a contract or application—open a PDF file, then select **File > Add** and find the PDF file that you want to add. Click **Open**.
PDF-Shuffler has an annoying habit of adding pages at the end of the PDF file you're working on. Click and drag the page you added to where you want it to go in the file. You can only click and drag one page in a file at a time.
![](https://opensource.com/sites/default/files/uploads/pdfshuffler-move.png)
### PDF Chain
I'm a big fan of [PDFtk][2], a command-line app for doing some interesting things with and to PDFs. Since I don't use it frequently, I don't remember all of PDFtk's commands and options.
[PDF Chain][3] is a very good alternative to PDFtk's command line. It gives you one-click access to PDFtk's most frequently used commands. Without touching a menu, you can:
* Merge PDFs (including rotating the pages of one or more files)
* Extract pages from a PDF and save them to individual files
* Add a background or watermark to a PDF
* Add attachments to a file
![](https://opensource.com/sites/default/files/uploads/pdfchain1.png)
You can also do more. Click on the **Tools** menu to:
* Extract attachments from a PDF
* Compress or uncompress a file
* Extract the metadata from the file
* Fill in PDF forms from an external [data file][4]
* [Flatten][5] a PDF
* Drop [XML Forms Architecture][6] (XFA) data from PDF forms
To be honest, I only use the commands to extract attachments and compress or uncompress PDFs with PDF Chain or PDFtk. The rest are pretty much terra incognita for me.
### Summing up
The number of tools available on Linux for working with PDFs never ceases to amaze me. And neither does the breadth and depth of their features and functions. I can usually find one, whether command line or graphical, that does what I need to do. For the most part, PDF Mod and PDF Chain work well for me.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/2/manipulating-pdfs-linux
作者:[Scott Nesbitt][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/scottnesbitt
[b]: https://github.com/lujun9972
[1]: https://savannah.nongnu.org/projects/pdfshuffler/
[2]: https://en.wikipedia.org/wiki/PDFtk
[3]: http://pdfchain.sourceforge.net/
[4]: http://www.verypdf.com/pdfform/fdf.htm
[5]: http://pdf-tips-tricks.blogspot.com/2009/03/flattening-pdf-layers.html
[6]: http://en.wikipedia.org/wiki/XFA

View File

@ -0,0 +1,264 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Install, Configure And Use Fish Shell In Linux?)
[#]: via: (https://www.2daygeek.com/linux-fish-shell-friendly-interactive-shell/)
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
How To Install, Configure And Use Fish Shell In Linux?
======
Every Linux administrator might heard the word called shell.
Do you know what is shell? Do you know what is the role for shell in Linux? How many shell is available in Linux?
A shell is a program that provides an interface between a user and kernel.
kernel is a heart of the Linux operating system that manage everything between user and operating system (OS).
Shell is available for all the users when they launch the terminal.
Once the terminal launched then user can run any commands which is available for him.
When shell completes the command execution then you will be getting the output on the terminal window.
Bash stands for Bourne Again Shell is the default shell which is running on most of the Linux distribution on todays.
Its very popular and has a lot of features. Today we are going to discuss about the fish shell.
### What Is Fish Shell?
[Fish][1] stands for friendly interactive shell, is a fully-equipped, smart and user-friendly command line shell for Linux which comes with some handy features that is not available in most of the shell.
The features are Autosuggestion, Sane Scripting, Man Page Completions, Web Based configuration and Glorious VGA Color. Are you curious to test it? if so, go ahead and install it by following the below installation steps.
### How To Install Fish Shell In Linux?
Its very simple to install but it doesnt available in most of the distributions except few. However, it can be easily installed by using the following [fish repository][2].
For **`Arch Linux`** based systems, use **[Pacman Command][3]** to install fish shell.
```
$ sudo pacman -S fish
```
For **`Ubuntu 16.04/18.04`** systems, use **[APT-GET Command][4]** or **[APT Command][5]** to install fish shell.
```
$ sudo apt-add-repository ppa:fish-shell/release-3
$ sudo apt-get update
$ sudo apt-get install fish
```
For **`Fedora`** system, use **[DNF Command][6]** to install fish shell.
For Fedora 29 System:
```
$ sudo dnf config-manager --add-repo https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_29/shells:fish:release:3.repo
$ sudo dnf install fish
```
For Fedora 28 System:
```
$ sudo dnf config-manager --add-repo https://download.opensuse.org/repositories/shells:/fish:/release:/3/Fedora_28/shells:fish:release:3.repo
$ sudo dnf install fish
```
For **`Debian`** systems, use **[APT-GET Command][4]** or **[APT Command][5]** to install fish shell.
For Debian 9 System:
```
$ sudo wget -nv https://download.opensuse.org/repositories/shells:fish:release:3/Debian_9.0/Release.key -O Release.key
$ sudo apt-key add - < Release.key
$ sudo echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/3/Debian_9.0/ /' > /etc/apt/sources.list.d/shells:fish:release:3.list
$ sudo apt-get update
$ sudo apt-get install fish
```
For Debian 8 System:
```
$ sudo wget -nv https://download.opensuse.org/repositories/shells:fish:release:3/Debian_8.0/Release.key -O Release.key
$ sudo apt-key add - < Release.key
$ sudo echo 'deb http://download.opensuse.org/repositories/shells:/fish:/release:/3/Debian_8.0/ /' > /etc/apt/sources.list.d/shells:fish:release:3.list
$ sudo apt-get update
$ sudo apt-get install fish
```
For **`RHEL/CentOS`** systems, use **[YUM Command][7]** to install fish shell.
For RHEL 7 System:
```
$ sudo yum-config-manager --add-repo https://download.opensuse.org/repositories/shells:/fish:/release:/3/RHEL_7/shells:fish:release:3.repo
$ sudo yum install fish
```
For RHEL 6 System:
```
$ sudo yum-config-manager --add-repo https://download.opensuse.org/repositories/shells:/fish:/release:/3/RedHat_RHEL-6/shells:fish:release:3.repo
$ sudo yum install fish
```
For CentOS 7 System:
```
$ sudo yum-config-manager --add-repo https://download.opensuse.org/repositories/shells:fish:release:2/CentOS_7/shells:fish:release:2.repo
$ sudo yum install fish
```
For CentOS 6 System:
```
$ sudo yum-config-manager --add-repo https://download.opensuse.org/repositories/shells:fish:release:2/CentOS_6/shells:fish:release:2.repo
$ sudo yum install fish
```
For **`openSUSE Leap`** system, use **[Zypper Command][8]** to install fish shell.
```
$ sudo zypper addrepo https://download.opensuse.org/repositories/shells:/fish:/release:/3/openSUSE_Leap_42.3/shells:fish:release:3.repo
$ suod zypper refresh
$ sudo zypper install fish
```
### How To Use Fish Shell?
Once you have successfully installed the fish shell. Simply type `fish` on your terminal, which will automatically switch to the fish shell from your default bash shell.
```
$ fish
```
![][10]
### Auto Suggestions
When you type any commands in the fish shell, it will auto suggest a command in a light grey color after typing few letters.
![][11]
Once you got a suggestion then simple hit the `Left Arrow Mark` to complete it instead of typing the full command.
![][12]
Instantly you can access the previous history based on the command by pressing `Up Arrow Mark` after typing a few letters. Its similar to bash shell `CTRL+r` option.
### Tab Completions
If you would like to see if there are any other possibilities for the given command then simple press the `Tab` button once after typing a few letters.
![][13]
Press the `Tab` button one more time to see the full lists.
![][14]
### Syntax highlighting
fish performs syntax highlighting, that you can see when you are typing any commands in the terminal. Invalid commands are colored by `RED color`.
![][15]
The same way valid commands are shown in a different color. Also, fish will underline valid file paths when you type and it doesnt show the underline if the path is not valid.
![][16]
### Web based configuration
There is a cool feature is available in the fish shell, that allow us to set colors, prompt, functions, variables, history and bindings via web browser.
Run the following command on your terminal to start the web configuration interface. Simply press `Ctrl+c` to exit it.
```
$ fish_config
Web config started at 'file:///home/daygeek/.cache/fish/web_config-86ZF5P.html'. Hit enter to stop.
qt5ct: using qt5ct plugin
^C
Shutting down.
```
![][17]
### Man Page Completions
Other shells support programmable completions, but only fish generates them automatically by parsing your installed man pages.
To do so, run the below command.
```
$ fish_update_completions
Parsing man pages and writing completions to /home/daygeek/.local/share/fish/generated_completions/
3466 / 3466 : zramctl.8.gz
```
### How To Set Fish as default shell
If you would like to test the fish shell for some times then you can set the fish shell as your default shell instead of switching it every time.
If so, first get the fish shell location by using the below command.
```
$ whereis fish
fish: /usr/bin/fish /etc/fish /usr/share/fish /usr/share/man/man1/fish.1.gz
```
Change your default shell as a fish shell by running the following command.
```
$ chsh -s /usr/bin/fish
```
![][18]
`Make note:` Just verify whether the fish shell is added into `/etc/shells` directory or not. If no, then run the following command to append it.
```
$ echo /usr/bin/fish | sudo tee -a /etc/shells
```
Once you have done the testing and if you would like to come back to the bash shell permanently then use the following command.
For temporary:
```
$ bash
```
For permanent:
```
$ chsh -s /bin/bash
```
--------------------------------------------------------------------------------
via: https://www.2daygeek.com/linux-fish-shell-friendly-interactive-shell/
作者:[Magesh Maruthamuthu][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.2daygeek.com/author/magesh/
[b]: https://github.com/lujun9972
[1]: https://fishshell.com/
[2]: https://download.opensuse.org/repositories/shells:/fish:/release:/
[3]: https://www.2daygeek.com/pacman-command-examples-manage-packages-arch-linux-system/
[4]: https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/
[5]: https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/
[6]: https://www.2daygeek.com/dnf-command-examples-manage-packages-fedora-system/
[7]: https://www.2daygeek.com/yum-command-examples-manage-packages-rhel-centos-systems/
[8]: https://www.2daygeek.com/zypper-command-examples-manage-packages-opensuse-system/
[9]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
[10]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-1.png
[11]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-2.png
[12]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-5.png
[13]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-3.png
[14]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-4.png
[15]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-6.png
[16]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-8.png
[17]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-9.png
[18]: https://www.2daygeek.com/wp-content/uploads/2019/02/linux-fish-shell-friendly-interactive-shell-7.png

View File

@ -0,0 +1,89 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How to use Linux Cockpit to manage system performance)
[#]: via: (https://www.networkworld.com/article/3340038/linux/sitting-in-the-linux-cockpit.html)
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
How to use Linux Cockpit to manage system performance
======
Linux Cockpit is a web-based interface that provides graphical administrative access to a system. Here's a look at what it allows you to control.
![](https://images.idgesg.net/images/article/2019/02/cockpit_airline_airplane_control_pilot-by-southerlycourse-getty-100787904-large.jpg)
If you haven't tried the relatively new Linux Cockpit, you might be surprised by all it can do. It's a user-friendly web-based console that provides some very easy ways to administer Linux systems — _through the **web**_. You can monitor system resources, add or remove accounts, monitor system usage, shut down the system and perform quite a few other tasks — all through a very accessible web connection. It's also very easy to set up and use.
While many Linux sysadmins spend most of their time on the command line, access to a remote system using a tool like PuTTY doesn't always provide the most useful command output. Linux Cockpit provides graphs and easy-to-use forms for viewing performance measures and making changes to your systems.
Linux Cockpit allows you to view many aspects of system performance and make configuration changes, though the task list may depend on the particular flavor of Linux that you are using. Some of the categories of tasks include the following:
* Monitoring system activity (CPU, memory, disk IO and network traffics) — **System**
* Viewing system log entries — **Logs**
* Seeing how full your disk partitions are — **Storage**
* Watching networking activity (sent and received) — **Networking**
* Taking a look at user accounts — **Accounts**
* Checking the status of system services — **Services**
* Pulling up information on installed applications — **Applications**
* Viewing and installing available updates (if logged in as root) and restart the system if needed — **Software Updates**
* Opening and using a terminal window — **Terminal**
Some Linux Cockpit installations will also allow you to run diagnostic reports, dump the kernel, examine SELinux (security) settings, and list subscriptions.
Here's an example of system activity as displayed by Linux Cockpit:
![cockpit activity][1] Sandra Henry-Stocker
Linux Cockpit display of system activity
### How to set up Linux Cockpit
On some Linux installations (e.g., recent RHEL), Linux Cockpit may already be installed and ready for use. On others, you may have to take some easy steps to install it and make it accessible.
On Ubuntu, for example, these commands should work:
```
$ sudo apt-get install cockpit
$ man cockpit <== just checking
$ sudo systemctl enable --now cockpit.socket
$ netstat -a | grep 9090
tcp6 0 0 [::]:9090 [::]:* LISTEN
$ sudo systemctl enable --now cockpit.socket
$ sudo ufw allow 9090
```
Once Linux Cockpit is enabled, point your browser at **https:// <system-name-or-IP>:9090**.
A list of distributions that work with Cockpit along with installation instructions is available at [the Cockpit Project][2].
Linux Cockpit doesn't provide any recognition of **sudo** privileges without some additional configuration. If you are not allowed to make a change using the Cockpit interface, you will see one of those little red international prohibition signs imposed over the button you'd otherwise click on.
To get sudo privileges working, you need to be sure that the user is in the **wheel** (RHEL) or **adm** (Debian) group in the **/etc/group** file, that the Server Administrator checkbox has been selected for this user account when logged into Cockpit as root and that the user selects "Reuse my password" when logging into Cockpit.
It's nice to be able to get some graphical control over the Linux systems you administer even when they're thousands of miles away or lacking consoles. While I love working on the console, I like seeing a graph or a button now and then. Linux Cockpit provides a very useful interface for routine administrative tasks.
Post updated Feb. 13, 11:30am ET
Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind.
--------------------------------------------------------------------------------
via: https://www.networkworld.com/article/3340038/linux/sitting-in-the-linux-cockpit.html
作者:[Sandra Henry-Stocker][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
[b]: https://github.com/lujun9972
[1]: https://images.idgesg.net/images/article/2019/02/cockpit-activity-100787994-large.jpg
[2]: https://cockpit-project.org/running.html
[3]: https://www.facebook.com/NetworkWorld/
[4]: https://www.linkedin.com/company/network-world

View File

@ -0,0 +1,124 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Drinking coffee with AWK)
[#]: via: (https://opensource.com/article/19/2/drinking-coffee-awk)
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
Drinking coffee with AWK
======
Keep track of what your office mates owe for the coffee they drink with a simple AWK program.
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_cafe_brew_laptop_desktop.jpg?itok=G-n1o1-o)
The following is based on a true story, although some names and details have been changed.
> A long time ago, in a place far away, there was an office. The office did not, for various reasons, buy instant coffee. Some workers in that office got together and decided to institute the "Coffee Corner."
>
> A member of the Coffee Corner would buy some instant coffee, and the other members would pay them back. It came to pass that some people drank more coffee than others, so the level of a "half-member" was added: a half-member was allowed a limited number of coffees per week and would pay half of what a member paid.
Managing this was a huge pain. I had just read The Unix Programming Environment and wanted to practice my [AWK][1] programming. So I volunteered to create a system.
Step 1: I kept a database of members and their debt to the Coffee Corner. I did it in an AWK-friendly format, where fields are separated by colons:
```
member:john:1:22
member:jane:0.5:33
member:pratyush:0.5:17
member:jing:1:27
```
The first field above identifies what kind of row this is (member). The second field is the member's name (i.e., their email username without the @). The next field is their membership level (full=1 or half=0.5). The last field is their debt to the Coffee Corner. A positive number means they owe money, a negative number means the Coffee Corner owes them.
Step 2: I kept a log of inputs to and outputs from the Coffee Corner:
```
payment:jane:33
payment:pratyush:17
bought:john:60
payback:john:50
```
Jane paid $33, Pratyush paid $17, John bought $60 worth of coffee, and the Coffee Corner paid John $50.
Step 3: I was ready to write some code. The code would process the members and payments and spit out an updated members file with the new debts.
```
#!/usr/bin/env --split-string=awk -F: -f
```
**#!** ) line required some work! I used the **env** command to allow passing multiple arguments from the shebang: specifically, the **-F** command-line argument to AWK tells it what the field separator is.
The shebang () line required some work! I used thecommand to allow passing multiple arguments from the shebang: specifically, thecommand-line argument to AWK tells it what the field separator is.
An AWK program is a sequence of rules. (It can also contain function definitions, but I don't need any for the Coffee Corner.)
The first rule reads the members file. When I run the command, I always give it the members file first, and the payments file second. It uses AWK associative arrays to record membership levels in the **members** array and current debt in the **debt** array.
```
$1 == "member" {
   members[$2]=$3
   debt[$2]=$4
   total_members += $3
}
```
The second rule reduces the debt when a **payment** is recorded.
```
$1 == "payment" {
   debt[$2] -= $3
}
```
**Payback** is the opposite: it increases the debt. This elegantly supports the case of accidentally giving someone too much money.
```
$1 == "payback" {
   debt[$2] += $3
}
```
The most complicated part happens when someone buys ( **"bought"** ) instant coffee for the Coffee Club's use. It is treated as a payment and the person's debt is reduced by the appropriate amount. Next, it calculates the per-member fee. It iterates over all members and increases their debt, according to their level of membership.
```
$1 == "bought" {
   debt[$2] -= $3
   per_member = $3/total_members
   for (x in members) {
       debt[x] += per_member * members[x]
   }
}
```
The **END** pattern is special: it happens exactly once, when AWK has no more lines to process. At this point, it spits out the new members file with updated debt levels.
```
END {
   for (x in members) {
       printf "%s:%s:%s\n", x, members[x], debt[x]
   }
}
```
Along with a script that iterates over the members and sends a reminder email to people to pay their dues (for positive debts), this system managed the Coffee Corner for quite a while.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/2/drinking-coffee-awk
作者:[Moshe Zadka][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/moshez
[b]: https://github.com/lujun9972
[1]: https://en.wikipedia.org/wiki/AWK

View File

@ -0,0 +1,227 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (4 Methods To Change The HostName In Linux)
[#]: via: (https://www.2daygeek.com/four-methods-to-change-the-hostname-in-linux/)
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
4 Methods To Change The HostName In Linux
======
We had written an article yesterday in our website about **[changing hostname in Linux][1]**.
Today we are going to show you that how to change the hostname using different methods. You can choose the best one for you.
systemd systems comes with a handy tool called `hostnamectl` that allow us to manage the system hostname easily.
Its changing the hostname instantly and doesnt required reboot when you use the native commands.
But if you modify the hostname manually in any of the configuration file that requires reboot.
In this article we will show you the four methods to change the hostname in systemd system.
hostnamectl command allows to set three kind of hostname in Linux and the details are below.
* **`Static:`** Its static hostname which is added by the system admin.
* **`Transient/Dynamic:`** Its assigned by DHCP or DNS server at run time.
* **`Pretty:`** It can be assigned by the system admin. It is a free-form of the hostname that represent the server in the pretty way like, “JBOSS UAT Server”.
It can be done in the following four methods.
* **`hostnamectl Command:`** hostnamectl command is controling the system hostname.
* **`nmcli Command:`** nmcli is a command-line tool for controlling NetworkManager.
* **`nmtui Command:`** nmtui is a text User Interface for controlling NetworkManager.
* **`/etc/hostname file:`** This file is containing the static system hostname.
### Method-1: Change The HostName Using hostnamectl Command in Linux
hostnamectl may be used to query and change the system hostname and related settings.
Simple run the `hostnamectl` command to view the system hostname.
```
$ hostnamectl
or
$ hostnamectl status
Static hostname: daygeek-Y700
Icon name: computer-laptop
Chassis: laptop
Machine ID: 31bdeb7b83230a2025d43547368d75bc
Boot ID: 267f264c448f000ea5aed47263c6de7f
Operating System: Manjaro Linux
Kernel: Linux 4.19.20-1-MANJARO
Architecture: x86-64
```
If you would like to change the hostname, use the following command format.
**The general syntax:**
```
$ hostnamectl set-hostname [YOUR NEW HOSTNAME]
```
Use the following command to change the hostname using hostnamectl command. In this example, im going to change the hostname from `daygeek-Y700` to `magi-laptop`.
```
$ hostnamectl set-hostname magi-laptop
```
You can view the updated hostname by running the following command.
```
$ hostnamectl
Static hostname: magi-laptop
Icon name: computer-laptop
Chassis: laptop
Machine ID: 31bdeb7b83230a2025d43547368d75bc
Boot ID: 267f264c448f000ea5aed47263c6de7f
Operating System: Manjaro Linux
Kernel: Linux 4.19.20-1-MANJARO
Architecture: x86-64
```
### Method-2: Change The HostName Using nmcli Command in Linux
nmcli is a command-line tool for controlling NetworkManager and reporting network status.
nmcli is used to create, display, edit, delete, activate, and deactivate network connections, as well as control and display network device status. Also, it allow us to change the hostname.
Use the following format to view the current hostname using nmcli.
```
$ nmcli general hostname
daygeek-Y700
```
**The general syntax:**
```
$ nmcli general hostname [YOUR NEW HOSTNAME]
```
Use the following command to change the hostname using nmcli command. In this example, im going to change the hostname from `daygeek-Y700` to `magi-laptop`.
```
$ nmcli general hostname magi-laptop
```
Its taking effect without bouncing the below service. However, for safety purpose just restart the systemd-hostnamed service for the changes to take effect.
```
$ sudo systemctl restart systemd-hostnamed
```
Again run the same nmcli command to check the changed hostname.
```
$ nmcli general hostname
magi-laptop
```
### Method-3: Change The HostName Using nmtui Command in Linux
nmtui is a cursesbased TUI application for interacting with NetworkManager. When starting nmtui, the user is prompted to choose the activity to perform unless it was specified as the first argument.
Run the following command on terminal to launch the terminal user interface.
```
$ nmtui
```
Use the `Down Arrow Mark` to choose the `Set system hostname` option then hit the `Enter` button.
![][3]
This is old hostname screenshot.
![][4]
Just remove the olde one and update the new one then hit `OK` button.
![][5]
It will show you the updated hostname in the screen and simple hit `OK` button to complete it.
![][6]
Finally hit the `Quit` button to exit from the nmtui terminal.
![][7]
Its taking effect without bouncing the below service. However, for safety purpose just restart the systemd-hostnamed service for the changes to take effect.
```
$ sudo systemctl restart systemd-hostnamed
```
You can view the updated hostname by running the following command.
```
$ hostnamectl
Static hostname: daygeek-Y700
Icon name: computer-laptop
Chassis: laptop
Machine ID: 31bdeb7b83230a2025d43547368d75bc
Boot ID: 267f264c448f000ea5aed47263c6de7f
Operating System: Manjaro Linux
Kernel: Linux 4.19.20-1-MANJARO
Architecture: x86-64
```
### Method-4: Change The HostName Using /etc/hostname File in Linux
Alternatively, we can change the hostname by modifying the `/etc/hostname` file. But this method
requires server reboot for changes to take effect.
Check the current hostname using /etc/hostname file.
```
$ cat /etc/hostname
daygeek-Y700
```
To change the hostname, simple overwrite the file because its contains only the hostname alone.
```
$ sudo echo "magi-daygeek" > /etc/hostname
$ cat /etc/hostname
magi-daygeek
```
Reboot the system by running the following command.
```
$ sudo init 6
```
Finally verify the updated hostname using /etc/hostname file.
```
$ cat /etc/hostname
magi-daygeek
```
--------------------------------------------------------------------------------
via: https://www.2daygeek.com/four-methods-to-change-the-hostname-in-linux/
作者:[Magesh Maruthamuthu][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.2daygeek.com/author/magesh/
[b]: https://github.com/lujun9972
[1]: https://www.2daygeek.com/linux-change-set-hostname/
[2]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
[3]: https://www.2daygeek.com/wp-content/uploads/2019/02/four-methods-to-change-the-hostname-in-linux-1.png
[4]: https://www.2daygeek.com/wp-content/uploads/2019/02/four-methods-to-change-the-hostname-in-linux-2.png
[5]: https://www.2daygeek.com/wp-content/uploads/2019/02/four-methods-to-change-the-hostname-in-linux-3.png
[6]: https://www.2daygeek.com/wp-content/uploads/2019/02/four-methods-to-change-the-hostname-in-linux-4.png
[7]: https://www.2daygeek.com/wp-content/uploads/2019/02/four-methods-to-change-the-hostname-in-linux-5.png

View File

@ -0,0 +1,208 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Install Android 8.1 Oreo on Linux To Run Apps & Games)
[#]: via: (https://fosspost.org/tutorials/install-android-8-1-oreo-on-linux)
[#]: author: (Python Programmer;Open Source Software Enthusiast. Worked On Developing A Lot Of Free Software. The Founder Of Foss Post;Foss Project. Computer Science Major. )
Install Android 8.1 Oreo on Linux To Run Apps & Games
======
![](https://i2.wp.com/fosspost.org/wp-content/uploads/2019/02/android-8.1-oreo-x86-on-linux.png?resize=1237%2C527&ssl=1)
[android x86][1] is a free and an open source project to port the android system made by Google from the ARM architecture to the x86 architecture, which allow users to run the android system on their desktop machines to enjoy all android functionalities + Apps & games.
The android x86 project finished porting the android 8.1 Oreo system to the x86 architecture few weeks ago. In this post, well explain how to install it on your Linux system so that you can use your android apps and games any time you want.
### Installing Android x86 8.1 Oreo on Linux
#### Preparing the Environment
First, lets download the android x86 8.1 Oreo system image. You can download it from [this page][2], just click on the “View” button under the android-x86_64-8.1-r1.iso file.
We are going to use QEMU to run android x86 on our Linux system. QEMU is a very good emulator software, which is also free and open source, and is available in all the major Linux distributions repositories.
To install QEMU on Ubuntu/Linux Mint/Debian:
```
sudo apt-get install qemu qemu-kvm libvirt-bin
```
To install QEMU on Fedora:
```
sudo dnf install qemu qemu-kvm
```
For other distributions, just search for the qemu and qemu-kvm packages and install them.
After you have installed QEMU, well need to run the following command to create the android.img file, which will be like some sort of an allocated disk space just for the android system. All android files and system will be inside that image file:
```
qemu-img create -f qcow2 android.img 15G
```
Here we are saying that we want to allocate a maximum of 15GB for android, but you can change it to any size you want (make sure its at least bigger than 5GB).
Now, to start running the android system for the first time, run:
```
sudo qemu-system-x86_64 -m 2048 -boot d -enable-kvm -smp 3 -net nic -net user -hda android.img -cdrom /home/mhsabbagh/android-x86_64-8.1-r1.iso
```
Replace /home/mhsabbagh/android-x86_64-8.1-r1.iso with the path of the file that you downloaded from the android x86 website. For explaination of other options we are using here, you may refer to [this article][3].
After you run the above command, the android system will start:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 39 android 8.1 oreo on linux][4]
#### Installing the System
From this window, choose “Advanced options”, which should lead to the following menu, from which you should choose “Auto_installation” as follows:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 41 android 8.1 oreo on linux][5]
After that, the installer will just tell you about whether you want to continue or not, choose Yes:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 43 android 8.1 oreo on linux][6]
And the installation will carry on without any further instructions from you:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 45 android 8.1 oreo on linux][7]
Finally youll receive this message, which indicates that you have successfully installed android 8.1:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 47 android 8.1 oreo on linux][8]
For now, just close the QEMU window completely.
#### Booting and Using Android 8.1 Oreo
Now that the android system is fully installed in your android.img file, you should use the following QEMU command to start it instead of the previous one:
```
sudo qemu-system-x86_64 -m 2048 -boot d -enable-kvm -smp 3 -net nic -net user -hda android.img
```
Notice that all we did was that we just removed the -cdrom option and its argument. This is to tell QEMU that we no longer want to boot from the ISO file that we downloaded, but from the installed android system.
You should see the android booting menu now:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 49 android 8.1 oreo on linux][9]
Then youll be taken to the first preparation wizard, choose your language and continue:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 51 android 8.1 oreo on linux][10]
From here, choose the “Set up as new” option:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 53 android 8.1 oreo on linux][11]
Then android will ask you about if you want to login to your current Google account. This step is optional, but important so that you can use the Play Store later:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 55 android 8.1 oreo on linux][12]
Then youll need to accept the terms and conditions:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 57 android 8.1 oreo on linux][13]
Now you can choose your current timezone:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 59 android 8.1 oreo on linux][14]
The system will ask you now if you want to enable any data collection features. If I were you, Id simply turn them all off like that:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 61 android 8.1 oreo on linux][15]
Finally, youll have 2 launcher types to choose from, I recommend that you choose the Launcher3 option and make it the default:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 63 android 8.1 oreo on linux][16]
Then youll see your fully-working android system home screen:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 65 android 8.1 oreo on linux][17]
From here now, you can do all the tasks you want; You can use the built-in android apps, or you may browse the settings of your system to adjust it however you like. You may change look and feeling of your system, or you can run Chrome for example:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 67 android 8.1 oreo on linux][18]
You may start installing some apps like WhatsApp and others from the Google Play store for your own use:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 69 android 8.1 oreo on linux][19]
You can now do whatever you want with your system. Congratulations!
### How to Easily Run Android 8.1 Oreo Later
We dont want to always have to open the terminal window and write that long QEMU command to run the android system, but we want to run it in just 1 click whenever we need that.
To do this, well create a new file under /usr/share/applications called android.desktop with the following command:
```
sudo nano /usr/share/applications/android.desktop
```
And paste the following contents inside it (Right click and then paste):
```
[Desktop Entry]
Name=Android 8.1
Comment=Run Android 8.1 Oreo on Linux using QEMU
Icon=phone
Exec=bash -c 'pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY qemu-system-x86_64 -m 2048 -boot d -enable-kvm -smp 3 -net nic -net user -hda /home/mhsabbagh/android.img'
Terminal=false
Type=Application
StartupNotify=true
Categories=GTK;
```
Again, you have to replace /home/mhsabbagh/android.img with the path to the local image on your system. Then save the file (Ctrl + X, then press Y, then Enter).
Notice that we needed to use “pkexec” to run QEMU with root privileges because starting from newer versions, accessing to the KVM technology via libvirt is not allowed for normal users; Thats why it will ask you for the root password each time.
Now, youll see the android icon in the applications menu all the time, you can simply click it any time you want to use android and the QEMU program will start:
![Install Android 8.1 Oreo on Linux To Run Apps & Games 71 android 8.1 oreo on linux][20]
### Conclusion
We showed you how install and run android 8.1 Oreo on your Linux system. From now on, it should be much easier on you to do your android-based tasks without some other software like Blutsticks and similar methods. Here, you have a fully-working and functional android system that you can manipulate however you like, and if anything goes wrong, you can simply nuke the image file and run the installation all over again any time you want.
Have you tried android x86 before? How was your experience with it?
--------------------------------------------------------------------------------
via: https://fosspost.org/tutorials/install-android-8-1-oreo-on-linux
作者:[Python Programmer;Open Source Software Enthusiast. Worked On Developing A Lot Of Free Software. The Founder Of Foss Post;Foss Project. Computer Science Major.][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:
[b]: https://github.com/lujun9972
[1]: http://www.android-x86.org/
[2]: http://www.android-x86.org/download
[3]: https://fosspost.org/tutorials/use-qemu-test-operating-systems-distributions
[4]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-16.png?resize=694%2C548&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 40 android 8.1 oreo on linux)
[5]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-15.png?resize=673%2C537&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 42 android 8.1 oreo on linux)
[6]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-14.png?resize=769%2C469&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 44 android 8.1 oreo on linux)
[7]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-13.png?resize=767%2C466&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 46 android 8.1 oreo on linux)
[8]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-12.png?resize=750%2C460&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 48 android 8.1 oreo on linux)
[9]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-11.png?resize=754%2C456&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 50 android 8.1 oreo on linux)
[10]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-10.png?resize=850%2C559&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 52 android 8.1 oreo on linux)
[11]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-09.png?resize=850%2C569&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 54 android 8.1 oreo on linux)
[12]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-08.png?resize=850%2C562&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 56 android 8.1 oreo on linux)
[13]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-07-1.png?resize=850%2C561&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 58 android 8.1 oreo on linux)
[14]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-06.png?resize=850%2C569&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 60 android 8.1 oreo on linux)
[15]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-05.png?resize=850%2C559&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 62 android 8.1 oreo on linux)
[16]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-04.png?resize=850%2C553&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 64 android 8.1 oreo on linux)
[17]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-03.png?resize=850%2C571&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 66 android 8.1 oreo on linux)
[18]: https://i1.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-02.png?resize=850%2C555&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 68 android 8.1 oreo on linux)
[19]: https://i2.wp.com/fosspost.org/wp-content/uploads/2019/02/Android-8.1-Oreo-on-Linux-01.png?resize=850%2C557&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 70 android 8.1 oreo on linux)
[20]: https://i0.wp.com/fosspost.org/wp-content/uploads/2019/02/Screenshot-at-2019-02-17-1539.png?resize=850%2C557&ssl=1 (Install Android 8.1 Oreo on Linux To Run Apps & Games 72 android 8.1 oreo on linux)

View File

@ -0,0 +1,111 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Top 5 Linux Distributions for New Users)
[#]: via: (https://www.linux.com/blog/learn/2019/2/top-5-linux-distributions-new-users)
[#]: author: (Jack Wallen https://www.linux.com/users/jlwallen)
5 个面向新手的 Linux 发行版
======
> 5 个可使用新用户如归家般感觉的发行版。
![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/deepin-main.jpg?itok=ASgr0mOP)
从最初的 Linux 到现在Linux 已经发展了很长一段路。但是,无论你曾经多少次听说过使用 Linux 现在有多容易,仍然会表示怀疑的人。而要真的承担得其这份声明,桌面必须足够简单,以便不熟悉 Linux 的人也能够使用它。事实上大量的桌面发行版使这成为了现实。
### 无需 Linux 知识
将这个清单误解为又一个“最佳用户友好型 Linux 发行版”的清单可能很简单。但这不是我们要在这里看到的。这二者有什么不同?就我的目的而言,定义的界限是 Linux 是否真正起到了使用的作用。换句话说,你是否可以将这个桌面操作系统放在一个用户面前,并让他们应用自如而无需 Linux 知识呢?
不管你相信与否,有些发行版就能做到。这里我将介绍给你 5 个这样的发行版。这些或许你全都听说过。它们或许不是你所选择的发行版,但你可以保证它们无需过多关注,而将用户放在眼前。
我们来看看选中的几个。
### Elementary OS
Elementary OS 的理念主要围绕人们如何实际使用他们的桌面。开发人员和设计人员不遗余力地创建尽可能简单的桌面。在这个过程中,他们致力于将 Linux 去 Linux 化。这并不是说他们已经从这个等式中删除了 Linux。不恰恰相反他们所做的就是创建一个与你所发现的一样中立的操作系统。Elementary OS 是如此顺畅以确保一切都完美合理。从单个 Dock 到每个人都清晰明了的应用程序菜单,这是一个桌面,而不用提醒用户说,“你正在使用 Linux” 事实上,其布局本身就让人联想到 Mac但附加了一个简单的应用程序菜单图 1
![Elementary OS Juno][2]
*图 1Elementary OS Juno 应用菜单*
将 Elementary OS 放在此列表中的另一个重要原因是它不像其他桌面发行版那样灵活。当然,有些用户会对此不以为然,但是如果桌面没有向用户扔出各种花哨的定制诱惑,那么就会形成一个非常熟悉的环境:一个既不需要也不允许大量修修补补的环境。操作系统在让新用户熟悉该平台这一方面还有很长的路要走。
与任何现代 Linux 桌面发行版一样Elementary OS 包括 App Store也称为 AppCenter用户可以在其中安装所需的所有应用程序而无需触及命令行。
### Deepin
Deepin 不仅得到了市场上最漂亮的台式机之一的赞誉,它也像任何桌面操作系统一样容易采用。其桌面界面非常简单,对于毫无 Linux 经验的用户来说,它的上手速度非常快。事实上,你很难找到无法立即上手使用 Deepin 桌面的用户。而这里唯一可能的障碍可能是其侧边栏控制中心(图 2
![][5]
*图 2Deepin 的侧边栏控制编码*
但即使是侧边栏控制面板也像市场上的任何其他配置工具一样直观。使用移动设备的任何人对于这种布局都很熟悉。至于打开应用程序Deepin 的启动器采用了 macOS Launchpad 的方式。此按钮位于桌面底座上通常最右侧的位置,因此用户将立即就可以会心,知道它可能类似于标准的“开始”菜单。
与 Elementary OS以及市场上大多数 Linux 发行版类似Deepin 也包含一个应用程序商店(简称为“商店”),可以轻松安装大量应用程序。
### Ubuntu
你知道肯定有它。Ubuntu 通常在大多数用户友好的 Linux 列表中排名第一。为什么?因为它是少数几个不需要了解 Linux 就能使用的桌面之一。但在采用 GNOME和 Unity 谢幕)之前,情况并非如此。为什么?因为 Unity 经常需要进行一些调整才能达到不需要一点 Linux 知识的程度(图 3。现在 Ubuntu 已经采用了 GNOME并将其调整到甚至不需要懂得 GNOME 的程度,这个桌面使得对 Linux 的简单性和可用性处于次要地位。
![Ubuntu 18.04][7]
*图 3Ubuntu 18.04 桌面可使用马上熟悉起来*
与 Elementary OS 不同Ubuntu 不会让用户半路放弃。因此,任何想从桌面上获得更多信息的人都可以拥有它。但是,开箱即用的体验对于任何用户类型都是足够的。任何一个让用户不知道他们触手可及的力量有多少的桌面,肯定不如 Ubuntu。
### Linux Mint
我需要首先声明,我从来都不是 Linux Mint 的忠实粉丝。这并不是说我不尊重开发者的工作,这更多的是一种审美观点。我更喜欢现代的桌面环境。但是,旧式学校计算机桌面的隐喻(可以在默认的 Cinnamon 桌面中找到让几乎每个人使用它的人都格外熟悉。Linux Mint 使用任务栏、开始按钮、系统托盘和桌面图标(图 4提供了一个需要零学习曲线的界面。事实上一些用户最初可能会被愚弄以为他们正在使用Windows 7 的克隆。甚至是它的更新警告图标也会让用户感到非常熟悉。
![Linux Mint ][9]
*图 4Linux Mint 的 Cinnamon 桌面非常像 Windows 7*
因为 Linux Mint 受益于其所基于的 Ubuntu它不仅会让你马上熟悉起来而且具有很高的可用性。无论你是否对底层平台有所了解用户都会立即感受到宾至如归的感觉。
### Ubuntu Budgie
我们的列表将以这样一个发行版做结,它也能让用户忘记他们正在使用 Linux并且使用常用工具变得简单、美观。使 Ubuntu 融合 Budgie 桌面可以实现以令人印象深刻的易用发行版。虽然其桌面布局(图 5可能不太一样但毫无疑问适应这个环境并不会浪费时间。实际上在 Dock 外面默认为桌面的左侧Ubuntu Budgie 确实看起来像 Elementary OS。
![Budgie][11]
*图 5Budgie 桌面既漂亮又简单*
Ubuntu Budgie 中的系统托盘/通知区域提供了一些不太寻常的功能,比如:快速访问 Caffeine一种保持桌面清醒的工具、快速笔记工具用于记录简单笔记、Night Lite 开关、原地下拉菜单(用于快速访问文件夹),当然还有 Raven 小程序/通知侧边栏(与 Deepin 中的控制中心侧边栏类似但不太优雅。Budgie 还包括一个应用程序菜单(左上角),用户可以访问所有已安装的应用程序。打开一个应用程序,该图标将出现在 Dock 中。右键单击该应用程序图标,然后选择“保留在 Dock”以便更快地访问。
Ubuntu Budgie 的一切都很直观,所以几乎没有学习曲线。这种发行版既优雅又易于使用,这并没有什么坏处。
### 选择一个吧
至此介绍了 5 个 Linux 发行版,它们各自以自己的方式提供了让任何用户即刻熟悉的桌面体验。虽然这些可能不是你选择顶级发行版的选择,但对于那些不熟悉 Linux 的用户来说,很难否定它们的价值。
--------------------------------------------------------------------------------
via: https://www.linux.com/blog/learn/2019/2/top-5-linux-distributions-new-users
作者:[Jack Wallen][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linux.com/users/jlwallen
[b]: https://github.com/lujun9972
[1]: https://www.linux.com/files/images/elementaryosjpg-2
[2]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/elementaryos_0.jpg?itok=KxgNUvMW (Elementary OS Juno)
[3]: https://www.linux.com/licenses/category/used-permission
[4]: https://www.linux.com/files/images/deepinjpg
[5]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/deepin.jpg?itok=VV381a9f
[6]: https://www.linux.com/files/images/ubuntujpg-1
[7]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/ubuntu_1.jpg?itok=bax-_Tsg (Ubuntu 18.04)
[8]: https://www.linux.com/files/images/linuxmintjpg
[9]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/linuxmint.jpg?itok=8sPon0Cq (Linux Mint )
[10]: https://www.linux.com/files/images/budgiejpg-0
[11]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/budgie_0.jpg?itok=zcf-AHmj (Budgie)
[12]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux

View File

@ -0,0 +1,150 @@
[#]: collector: (lujun9972)
[#]: translator: (zhs852)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Install And Use PuTTY On Linux)
[#]: via: (https://www.ostechnix.com/how-to-install-and-use-putty-on-linux/)
[#]: author: (SK https://www.ostechnix.com/author/sk/)
在 Linux 中安装并使用 PuTTY
======
![](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-720x340.png)
PuTTY 是一个免费、开源且支持包括 SSH、Telnet 和 Rlogin 在内的多种协议的 GUI 客户端。一般来说Windows 管理员们会把 PuTTY 当成 SSH 或 Telnet 客户端来在本地 Windows 系统和远程 Linux 服务器之间建立连接。不过PuTTY 可不是 Windows 的独占软件。它在 Linux 用户之中也是很流行的。本篇文章将会告诉你如何在 Linux 中安装并使用 PuTTY。
### 在 Linux 中安装 PuTTY
PuTTY 已经包含在了许多 Linux 发行版的官方源中。举个例子,在 Arch Linux 中,我们可以通过这个命令安装 PuTTY
```shell
$ sudo pacman -S putty
```
在 Debian、Ubuntu 或是 Linux Mint 中安装它:
```shell
$ sudo apt install putty
```
### 使用 PuTTY 访问远程 Linux 服务器
在安装完 PuTTY 之后,你可以在菜单或启动器中打开它。如果你想用终端打开它,也是可以的:
```shell
$ putty
```
PuTTY 的默认界面长这个样子:
![PuTTY 默认界面](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-default-interface.png)
如你所见,许多选项都配上了说明。在左侧面板中,你可以配置许多项目,比如:
1. 修改 PuTTY 登录会话选项;
2. 修改终端模拟器控制选项,控制各个按键的功能;
3. 控制终端响铃的声音;
4. 启用/禁用终端的高级功能;
5. 设定 PuTTY 窗口大小;
6. 控制命令回滚长度(默认是 2000 行);
7. 修改 PuTTY 窗口或光标的外观;
8. 调整窗口边缘;
9. 调整字体;
10. 保存登录信息;
11. 设置代理;
12. 修改各协议的控制选项;
13. 以及更多。
所有选项基本都有注释,相信你理解起来不难。
### 使用 PuTTY 访问远程 Linux 服务器
请在左侧面板点击 **会话** 选项卡,输入远程主机名(或 IP 地址)。然后,请选择连接类型(比如 Telnet、Rlogin 以及 SSH 等。根据你选择的连接类型PuTTY 会自动选择对应连接类型的默认端口号(比如 SSH 是 22、Telnet 是 23如果你修改了默认端口号别忘了手动把它输入到 **端口** 里。在这里,我用 SSH 连接到远程主机。在输入所有信息后,请点击 **打开**
![通过 SSH 连接](http://www.ostechnix.com/wp-content/uploads/2019/02/putty-1.png)
如果这是你首次连接到这个远程主机PuTTY 会显示一个安全警告,问你是否信任你连接到的远程主机。点击 **接受** 即可将远程主机的密钥加入 PuTTY 的储存当中:
![PuTTY 安全警告][2]
接下来,输入远程主机的用户名和密码。然后你就成功地连接上远程主机啦。
![已连接上远程主机](https://www.ostechnix.com/wp-content/uploads/2019/02/putty-3.png)
#### 使用密钥验证访问远程主机
一些 Linux 管理员可能在服务器上配置了密钥认证。举个例子,在用 PuTTY 访问 AMS instances 的时候你需要指定密钥文件的位置。PuTTY 可以使用它自己的格式(**.ppk** 文件)来进行公钥验证。
首先输入主机名或 IP。之后**分类** 选项卡中,展开 **连接**,再展开 **SSH**,然后选择 **认证**,之后便可选择 **.ppk** 密钥文件了。
![][3]
点击接受来关闭安全提示。然后,输入远程主机的密码片段(如果密钥被密码片段保护)来建立连接。
#### 保存 PuTTY 会话
有些时候,你可能需要多次连接到同一个远程主机,你可以保存这些会话并在之后不输入信息访问他们。
请输入主机名(或 IP 地址),并提供一个会话名称,然后点击 **保存**。如果你有密钥文件,请确保你在点击保存按钮之前指定它们。
![][4]
现在,你可以通过选择 **已保存的会话**,然后点击 **Load**,再点击 **打开** 来启动连接。
#### 使用 <ruby>pscp<rt>PuTTY Secure Copy Client</rt></ruby> 来将文件传输到远程主机中
通常来说Linux 用户和管理员会使用 **scp** 这个命令行工具来从本地往远程主机传输文件。不过 PuTTY 给我们提供了一个叫做 <ruby>PuTTY 安全拷贝客户端<rt>PuTTY Secure Copy Client</rt></ruby>(简写为 **PSCP**)的工具来干这个事情。如果你的本地主机运行的是 Windows你可能需要这个工具。PSCP 在 Windows 和 Linux 下都是可用的。
使用这个命令来将 **file.txt** 从本地的 Arch Linux 拷贝到远程的 Ubuntu 上:
```shell
pscp -i test.ppk file.txt sk@192.168.225.22:/home/sk/
```
让我们来拆分这个命令:
* **-i test.ppk** : 访问远程主机的密钥文件;
* **file.txt** : 要拷贝到远程主机的文件;
* **sk@192.168.225.22** : 远程主机的用户名与 IP
* **/home/sk/** : 目标路径。
要拷贝一个目录,请使用 <ruby>**-r**<rt>Recursive</rt></ruby> 参数:
```shell
pscp -i test.ppk -r dir/ sk@192.168.225.22:/home/sk/
```
要使用 pscp 传输文件,请执行以下命令:
```shell
pscp -i test.ppk c:\documents\file.txt.txt sk@192.168.225.22:/home/sk/
```
你现在应该了解了 PuTTY 是什么,知道了如何安装它和如何使用它。同时,你也学习到了如何使用 pscp 程序在本地和远程主机上传输文件。
以上便是所有了,希望这篇文章对你有帮助。
干杯!
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/how-to-install-and-use-putty-on-linux/
作者:[SK][a]
选题:[lujun9972][b]
译者:[zhs852](https://github.com/zhs852)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.ostechnix.com/author/sk/
[b]: https://github.com/lujun9972
[1]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
[2]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-2.png
[3]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-4.png
[4]: http://www.ostechnix.com/wp-content/uploads/2019/02/putty-5.png